MySQL查询:对具有外部联接的一个表列使用限制

MySQL查询:对具有外部联接的一个表列使用限制,mysql,left-join,limit,outer-join,Mysql,Left Join,Limit,Outer Join,我有一个主用户数据库表和一个要外部连接的元表。 基本上,基本查询是 SELECT * FROM users_table LEFT OUTER JOIN meta_table ON users_table.id = meta_table.user_id ORDER BY users_table.id ASC 但是我必须限制users\u table ID列上的结果。如果我使用标准LIMIT子句,查询也将计算元值 是否可以限制用户的表ID列并将Meta与联接关联?您可以尝试使用子查询。比如说

我有一个主用户数据库表和一个要外部连接的元表。 基本上,基本查询是

SELECT * FROM users_table 
LEFT OUTER JOIN meta_table ON users_table.id = meta_table.user_id 
ORDER BY users_table.id ASC
但是我必须限制users\u table ID列上的结果。如果我使用标准LIMIT子句,查询也将计算元值


是否可以限制用户的表ID列并将Meta与联接关联?

您可以尝试使用子查询。比如说

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为我指明了正确的方向

最后,我使用了一个稍微不同的查询,以在开始时保留用户表数据,并在将来能够加入一个新表

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

您所说的查询也将计算元值是什么意思?您可以从users\u表中进行限制,然后离开join meta\u表,但结果看起来是一样的。请举例说明。如果我在查询结束时使用LIMIT 5,它会将第一行计算为user+first meta。但其他4个结果将是第一个用户的元数据,不会获取其他用户。我希望获取5个用户+他们对代码段的Metasthank。然而,它现在获取所有元,而不是超出限制的匹配用户。与前10个用户相关的Meta已获得相关用户数据。然后只包含NULL@a-编码器:抱歉,使用了不正确的连接,请尝试使用正确的外部连接,也更新了应答几乎在那里:现在正确获取,但不适用于WHERE子句。例如,状态为1的第二个用户是15。即使在条款中,该查询也不会返回他。如果您使用用户表上的where,然后将其添加到子查询中,例如,将子查询更改为SELECT*FROM users\u table where status=1 ORDER BY users\u table.id ASC LIMIT 10