ORDER BY和LIMIT不工作时使用UNION
问题描述:
这是我的查询: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
但这不起作用。帮帮我 ?
答
附上一个子查询和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 ...;
答
尝试也许
SELECT DISTINCT userid FROM...
一切都很好,除了它显示:未知列的时间才能条款。我尝试了'按时间降序排列'和'排序排列子时间降序'呢! – Adil 2013-03-19 15:40:09
@Adil - 没有选定的名称为'time'的列,将其添加到子查询中:SELECT * FROM(SELECT userid,time FROM ... UNION SELECT friendid,time from ...)AS sub ... ' – 2013-03-19 17:22:01