簡體   English   中英

如何在MYSQL查詢中的另一個計算中立即使用計算結果

[英]how to immediately use the result of computation in another computation within MYSQL query

所以我有這個查詢:

SELECT SUM(x) AS s, s + 600 AS y FROM table;

但是然后mysql抱怨...“字段列表”中的未知列“ s”,我想它來自s + 600表達式。

如何格式化查詢,以便可以在緊隨其后的計算中立即使用SUM(x)計算別名“ s”?

SELECT SUM(x) AS s, SUM(x) + 600 AS y FROM table;

您不能在選擇列表中重復使用別名。 它不像編程語言中的“變量聲明”。

SQL語句按以下順序執行:

  1. FROM(聯接源表)
  2. WHERE(過濾結果集)
  3. GROUP BY(組數據)
  4. HAVING(過濾結果組)
  5. SELECT(選擇/計算結果列)
  6. ORDER BY(排序數據)

這意味着您可以在ORDER BY中使用SELECT中的別名,而不能在其他地方使用。

嘗試

SELECT s, s + 600 AS y FROM (SELECT SUM(x) AS s FROM table);

為什么要在MySQL中生成第二列? 只需在PHP中創建第二部分; 這樣,您可以在共享資源(數據庫服務器)上花費更少的時間,並將其余時間轉移到通常是可伸縮資源(您的Web服務器)上。

$row = mysql_fetch_assoc($result_id);
$row['y'] = $row['s'] + 600;

我真正想要創建第二列的唯一真實原因是,此查詢是否是較大查詢中子表達式的一部分(例如,您正在為另一個查詢或類似查詢生成邊界)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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