使用WHERE = $ var进行mysql_query排序

时间:2014-07-25 15:44:25

标签: mysql sorting

这可能是重复的。我不确定要搜索什么,所以我找不到任何东西。

$get_feed_p=mysql_query("SELECT followed FROM follow WHERE user='$_COOKIE[PC_ID]'");
while($feed_p=mysql_fetch_assoc($get_feed_p)){
    $get_feed=mysql_query("SELECT * FROM status WHERE to_user='$feed_p[followed]' ORDER BY id DESC LIMIT 20");
}

所以首先查询选择跟随的配置文件(比如在推特上) 第二个选择状态更新。

我遇到的问题是订购。因为我使用WHERE to_user = $ feed_p [follow]所有状态都按用户排序,而不是我需要的id。

如何仅按ID对行进行排序?

3 个答案:

答案 0 :(得分:2)

如果我已经解释了您正在尝试正确执行的操作(列出用户发布的所有状态,请按照状态ID列出,最近的第一个?),然后您要执行此操作:

$get_feed = mysql_query("SELECT status.* FROM follow
RIGHT JOIN status ON status.to_user = follow.followed
WHERE follow.user = '" . $_COOKIE[PC_ID . "' ORDER BY status.id DESC LIMIT 20")

真的希望这是你所寻找的,因为这是我的第一个答案。

答案 1 :(得分:0)

使用连接而不是多次选择怎么样? 有点像(我在我的手机上,因此无法尝试,我可能会在周末深入了解):

SELECT
    follow.followed, status.id
FROM
    follow
    LEFT JOIN status ON status.id IN (
        SELECT
            id
        FROM
            status
        WHERE
            follow.user = status.to_user
        ORDER BY id LIMIT 20 )
WHERE
    followed.user = '$_COOKIE[PC_ID]'

答案 2 :(得分:0)

假设包含用户的表是user_tbl(user和ids):

"SELECT * FROM status WHERE
 to_user='$feed_p[followed]' ORDER BY
(select id from users_tbl where username='$feed_p[followed]') DESC LIMIT 20"