我正在设计一个评论系统,用户首先看到他们的评论(最新的评论),然后是其他任何用户评论(最新的评论)。所以最后它看起来像:
我的评论1(12月3日)
我的评论2(12月2日)
所以从我所拥有的表中提取信息:
SELECT * FROM ( SELECT * FROM testTable WHERE me='1' ORDER BY `lastReply` DESC ) DUMMY1
UNION
SELECT * FROM (SELECT * FROM testTable ORDER BY `lastReply` DESC) DUMMY2
这就是我想要的,而不是通过lastReply降序排序(所以用户最新评论是第一个),而是通过lastReply升序排序(因此用户最早的评论是第一个)。 对于我的生活,我无法弄清楚为什么会这样。有什么建议吗?
您可以在此处查看表格的简化版本:
mysqli_query($con," CREATE TABLE testTable( text varchar(255), me varchar(255), lastReply varchar(255) ) ");
mysqli_query($con,"INSERT INTO testTable (text, me , lastReply) VALUES ('A',1,3),('E',0,2),('C',1,1) , ('D',0,1) , ('B',1,2) ,('F',0,3) ");
echo '<table border="1">';
while($arrayrow = mysqli_fetch_array($result)) {
echo '<tr><td>'.$arrayrow['text'].'</td><td>'.$arrayrow['me'].'</td><td>'.$arrayrow['lastReply'].'</td></tr>';
};
echo '</table>';
答案 0 :(得分:1)
SELECT * from (
SELECT *,0 as sort_order FROM table WHERE IP='userIP'
UNION
SELECT *,1 as sort_order FROM table WHERE IP <>'userIP'
)tmp
ORDER by sort_order asc, lastReply Desc