MySQL查询问题

时间:2010-10-12 00:19:40

标签: mysql

如何在不弄乱查询的情况下将以下代码示例1添加到示例2中。

示例1

INNER JOIN users ON users_articles.user_id = users.user_id

示例2。

SELECT users.*
FROM users_articles
INNER JOIN articles_comments ON users_articles.id = articles_comments.article_id
INNER JOIN users ON articles_comments.user_id = users.user_id
WHERE users.active IS NULL
AND users.deletion = 0
ORDER BY articles_comments.date_created DESC
LIMIT 50

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你想加入表users两次,一次是评论,一次是文章?在这种情况下,您需要对表进行别名。为了简洁,我通常使用单字母或双字母别名,即使我没有双桌,但这并不重要。

SELECT ...
FROM users_articles UA
INNER JOIN articles_comments AC ON UA.id = AC.article_id
INNER JOIN users UC ON AC.user_id = UC.user_id
  AND UC.active IS NULL
  AND UC.deletion = 0
INNER JOIN users UA ON UA.user_id = users.user_id
  AND UA.active IS NULL
  AND UA.deletion = 0
ORDER BY AC.date_created DESC
LIMIT 50

顺便说一句,不要使用SELECT *,几乎总是更好地列出你想要的东西。

免责声明:我可能误解了你要做的事;在代码中发布一些上下文通常是个好主意。在这种情况下,表名给我一点点(如果这是我认为的那样,我刚刚使用usersarticlescomments)。