[英]SQL Query with Typo not working in MySQL (Order by on calculated field)
我有此查詢,其中列之一是計算的。 一切正常,除了在查詢中使用該計算列時不對結果進行排序。 該查詢是一個很大的查詢,因此我在下面進行了簡化以方便理解。 這里計算的列是“剩余”
SELECT t1.id, t1.name, t2.duration - datediff(now(), t1.posting_time) as "remaining"
FROM table1 t1, table2 t2
WHERE td.id = t1.timefield
ORDER BY id, name, remaining DESC
即使我從order by子句中刪除了該“剩余”或與asc或desc一起使用,也沒有任何反應,並且順序保持不變。
“剩余”更改排序順序的唯一時間是兩行的ID和名稱相同時。 否則,它對訂購沒有影響。
您需要將“ td.id
”的拼寫錯誤修正為“ t2.id
”。
您還應該學習JOIN表示法:
SELECT t1.id, t1.name, t2.duration - datediff(now(), t1.posting_time) as "remaining"
FROM table1 t1
JOIN table2 t2 ON t2.id = t1.timefield
ORDER BY id, name, remaining DESC
使用技巧:
SELECT *
FROM (
SELECT
t1.id,
t1.name,
t2.duration - datediff(now() , t1.posting_time) as "remaining"
FROM table1 t1, table2 t2
WHERE t2.id = t1.timefield
) AS i
ORDER BY id, name, remaining DESC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.