在我的页面中,我使用以下查询来显示从当前时间开始到旧时间的选项。但它选择从旧时间选择到当前时间选择的行。
我想显示从当前时间到旧时间的选项
$result=mysql_query("(SELECT choice_id,poll_id,choicecreationtime from je_addchoice ORDER BY choicecreationtime DESC)
UNION
(SELECT choice_id,poll_id,datetime_voted from je_user_vote ORDER BY datetime_voted DESC)");
我不知道为什么会出现这个问题。如果我不使用 UNION 意味着它工作正常。例如。下面的查询显示了当前时间到旧时间的顺序
$result = mysql_query("SELECT * FROM je_addchoice, je_addpoll where je_addpoll.privacy='0' AND je_addpoll.start_date <= '$check_date' AND je_addpoll.end_date >='$check_date' AND je_addpoll.poll_id=je_addchoice.poll_id order by je_addchoice.choicecreationtime desc");
谁能帮我解决这个问题
最佳答案
通过子查询包装联合
查询,并在外部查询上对它们进行排序
SELECT *
FROM
(
SELECT choice_id, poll_id, choicecreationtime AS TIME
FROM je_addchoice
UNION
SELECT choice_id, poll_id, datetime_voted AS TIME
FROM je_user_vote
) s
ORDER BY TIME DESC
更新 1
SELECT choice_id, poll_id, choicecreationtime AS TIME
FROM je_addchoice
UNION
SELECT choice_id, poll_id, datetime_voted AS TIME
FROM je_user_vote
ORDER BY Time DESC
关于php - 在带有 UNION 关键字的 mysql 查询中使用按 DESC 或 ASC 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040886/