1

私の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つのコレクションとして返したいと思います。

4

1 に答える 1

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;
于 2012-05-13T00:54:32.993 に答える