根据mysql中的不同标准对结果进行排序

时间:2013-09-17 11:16:59

标签: mysql sql sorting

我有一个Mysql表引用,用户和关注者。

Quote(id,user_id,quote)
Users (id,username)
followers (follower,following_id)

我想要做的是获取所有引号,问题是关于如何对引号进行排序,其方式是引用我正在关注的用户是第一个,然后是跟随我的用户,然后引用其他用户

这是我的SQL查询:

$sql='Select
    id,
    quote
FROM 
   quote
WHERE
    quote like '.$pdo->quote('%'.$item.'%');

我的意思是,如果你正在使用脸谱网,并且你开始为你的朋友做研究,你会发现那些与你有朋友的人是第一个展示,然后是那些你可能知道的人,那么那些你可能已经和...谈过了。

我发现在ORDER BY之后构建查询时遇到问题。我也在网上查找了这个,但我没有找到它,我想我没有在这个问题上使用正确的关键字。

提前致谢。

2 个答案:

答案 0 :(得分:2)

表格之间的关系尚不清楚。但你可以试试这样的事情

SELECT Quote
  FROM Quote q, Users u, Followers f
  WHERE q.user_id = u.id
  AND q.user_id = f.follower
UNION
SELECT Quote
  FROM Quote q, Users u, Followers f
  WHERE q.user_id = u.id
  AND q.user_id <> f.follower

答案 1 :(得分:1)

我认为这可以通过查询您关注的用户的引用然后引用您的关注者和其他人的引用来完成,并加入这样的结果。

SELECT A.QUOTE FROM QUOTE  A WHERE A.USER_ID IN ( SELECT B.ID FROM USER B WHERE B.USERNAME IN ( SELECT FOLLOWER FROM FOLLOWERS WHERE FOLLOWING_ID=<YOUR ID> ) )
UNION
SELECT A.QUOTE FROM QUOTE A WHERE A.ID IN 
(SELECT B.ID FROM USERS B , FOLLOWERS WHERE FOLLOWING_ID=B.ID AND B.ID=<YOUR ID>)
UNION
SELECT A.QUOTE FROM QUOTE A WHERE A.ID NOT IN
( ( SELECT B.ID FROM USERS B , FOLLOWERS WHERE FOLLOWING_ID=B.ID AND B.ID=<YOUR ID>) UNION
 (SELECT B.ID FROM USER B , FOLLOWERS WHERE FOLLOWER=B.USERNAME AND B.USERNAME=<YOUR USERNAME))

由于 Niraj Rathi