使用select in select限制mysql查询

时间:2011-10-15 20:02:45

标签: php mysql

我有MySQL查询:

SELECT * FROM messages 
    WHERE msg_id IN(SELECT msg_id FROM messages_tags WHERE tags = 'grusiin') 
    ORDER BY msg_id LIMIT 5"

它显示错误:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   在第1行'5'附近

如果我删除“ORDER BY msg_id LIMIT 5”,则没有错误。我做错了什么?我需要用5行限制查询。

1 个答案:

答案 0 :(得分:3)

作为一般规则,MySQL在使用JOIN语法而不是IN语法时表现更好。

参见:

试试这个:

  SELECT * 
  FROM messages 
  JOIN messages_tags tags ON tags.msg_id = messages.msg_id
  WHERE tags.tags = 'grusiin' 
  GROUP BY messages.msg_id
  ORDER BY messages.msg_id 
  LIMIT 5;