MySQL 查询:在具有 OUTER JOIN 的 table 列上使用 LIMIT
MySQL query: use LIMIT on one table column having an OUTER JOIN
我有一个主用户数据库 table 和一个 "meta" table 外部连接。
基本上基本查询是
SELECT * FROM users_table
LEFT OUTER JOIN meta_table ON users_table.id = meta_table.user_id
ORDER BY users_table.id ASC
但我必须限制 users_table ID 列的结果。如果我使用标准的 LIMIT 子句,查询也会计算元值。
是否可以限制用户的 table ID 列并将元数据与连接相关联?
您可以尝试使用子查询。例如
SELECT * FROM meta_table
RIGHT OUTER JOIN (SELECT * FROM users_table
WHERE status = 1
ORDER BY users_table.id ASC LIMIT 10) as tbl_user
ON meta_table.user_id = tbl_user.id
感谢@mergenchik 为我指明了正确的方向。
我最终得到了一个略有不同的查询,以在开始时保留用户 table 数据并能够在将来加入新的 table
SELECT * FROM
(SELECT * FROM users_table ORDER BY id ASC LIMIT 15) as users_table
LEFT OUTER JOIN meta_table
ON meta_table.user_id = users_table.id
我有一个主用户数据库 table 和一个 "meta" table 外部连接。 基本上基本查询是
SELECT * FROM users_table
LEFT OUTER JOIN meta_table ON users_table.id = meta_table.user_id
ORDER BY users_table.id ASC
但我必须限制 users_table ID 列的结果。如果我使用标准的 LIMIT 子句,查询也会计算元值。
是否可以限制用户的 table ID 列并将元数据与连接相关联?
您可以尝试使用子查询。例如
SELECT * FROM meta_table
RIGHT OUTER JOIN (SELECT * FROM users_table
WHERE status = 1
ORDER BY users_table.id ASC LIMIT 10) as tbl_user
ON meta_table.user_id = tbl_user.id
感谢@mergenchik 为我指明了正确的方向。
我最终得到了一个略有不同的查询,以在开始时保留用户 table 数据并能够在将来加入新的 table
SELECT * FROM
(SELECT * FROM users_table ORDER BY id ASC LIMIT 15) as users_table
LEFT OUTER JOIN meta_table
ON meta_table.user_id = users_table.id