如何将这两个MySQL SELECT语句组合在一起?

时间:2012-05-13 00:51:33

标签: mysql sql

在我的users表格中有一个名为featured的列。如果它的值为1则表示用户为特色,如果为0,则不显示。

在我的主页上,我想显示我网站上的所有用户。但我想要特色的那些在非特色之前展示。

声明1:

SELECT *
FROM `users`
JOIN `profiles` ON users.user_id = profiles.user_id
JOIN `geo` ON users.zip = geo.zip_code
JOIN `user_activity` ON users.user_id = user_activity.user_id
WHERE users.featured = '1'
ORDER BY users.user_id DESC
LIMIT ". ($page_num - 1) * $per_page .", ". $per_page;

声明2:

SELECT *
FROM `users`
JOIN `profiles` ON users.user_id = profiles.user_id
JOIN `geo` ON users.zip = geo.zip_code
JOIN `user_activity` ON users.user_id = user_activity.user_id
WHERE users.featured != '1'
ORDER BY users.user_id DESC
LIMIT ". ($page_num - 1) * $per_page .", ". $per_page;

两个语句除了where子句外是相同的。如何合并这些2个特色用户首先显示,然后显示非特色的。

修改

我应该提到,我希望将结果集作为一个集合返回。

1 个答案:

答案 0 :(得分:3)

SELECT *
FROM `users` u
JOIN `profiles` p ON u.user_id = p.user_id
JOIN `geo` g ON u.zip = g.zip_code
JOIN `user_activity` ua ON u.user_id = ua.user_id
ORDER BY u.featured DESC,
    u.user_id DESC
LIMIT ". ($page_num - 1) * $per_page .", ". $per_page;