2013-03-19 89 views
0

这是我的查询:ORDER BY和LIMIT不工作时使用UNION

mysql_query("SELECT userid FROM messages WHERE userid<>'$myid' AND friendid='$myid' AND status=1 UNION SELECT friendid FROM messages WHERE userid='$myid' AND friendid<>'$myid' AND status=1"); 

我想添加分页,所以我需要限制的朋友,我的消息的数量。但是每当我添加LIMIT时,它都会显示错误。另外,我想先显示最新消息ORDER BY time DESC但这不起作用。帮帮我 ?

回答

6

附上一个子查询和ORDER BY ... LIMIT...内部的查询外一个:

SELECT * 
FROM 
(
    SELECT userid 
    FROM messages 
    WHERE userid <> '$myid' 
     AND friendid = '$myid' 
     AND status = 1 
    UNION 
    SELECT friendid 
    FROM messages 
    WHERE userid = '$myid' 
     AND friendid <> '$myid' 
     AND status = 1 
) AS sub 
ORDER BY ... 
LIMIT ...; 
+0

一切都很好,除了它显示:未知列的时间才能条款。我尝试了'按时间降序排列'和'排序排列子时间降序'呢! – Adil 2013-03-19 15:40:09

+0

@Adil - 没有选定的名称为'time'的列,将其添加到子查询中:SELECT * FROM(SELECT userid,time FROM ... UNION SELECT friendid,time from ...)AS sub ... ' – 2013-03-19 17:22:01

1

尝试也许

SELECT DISTINCT userid FROM...