多个表中的多个ORDER BY

时间:2014-09-19 19:57:34

标签: mysqli

好吧,我一直在努力奋斗这个问题,任何帮助都会感激不尽。

我有两张桌子:

表名:列名。 (仅显示相关的列名称)

Topics: topic_id, topic_cat, topic_stick

Replies: reply_id, reply_date, reply_topic

我试图获取所有(topic_id)的= = 1,但在此我希望它排序,以便我得到最新的(reply_date),并将所有(topic_stick)放在顶部。

Reply_topic = topic_id

我一直在努力声明声明但没有成功: 这是我最接近的尝试,但没有根据我的意愿对表格进行排序。

SELECT topic_id 
FROM topics, replies 
WHERE 
reply_topic = topic_id and 
topic_cat = 1 
GROUP BY topic_id 
ORDER BY reply_date DESC, topic_stick ASC

3 个答案:

答案 0 :(得分:1)

您应该使用JOIN语句来执行此操作。例如,如何使用它,请查看以下链接:

http://www.w3schools.com/sql/sql_join.asp

答案 1 :(得分:1)

SELECT 
    t.topic_id,
    t.topic_cat,
    t.topic_stick,
    r.reply_id,
    r.reply_date,
    r.reply_topic    
FROM replies r
INNER JOIN topics t on t.topic_id = r.reply_topic
WHERE 
t.topic_cat = 1
GROUP BY r.reply_topic 
ORDER BY r.reply_date DESC

答案 2 :(得分:0)

颠倒ORDER BY子句的顺序。你想要:

ORDER BY Topics.topic_stick, Replied.reply_date DESC

你提及"如果他们说1" - 如果您使用0来表示非粘性,那么您也必须制作一个DESC。