簡體   English   中英

帶有Typo的SQL查詢在MySQL中不起作用(按計算字段排序)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM