我想以這種形式使用MySQL:子查詢是重用變量的唯一選項嗎?
SELECT 1 AS one, one*2 AS two
,因爲它是更短的和甜比
SELECT one*2 AS two FROM (SELECT 1 AS one) AS sub1
但前者似乎並沒有工作,因爲它預計,一個是一列。
有沒有更簡單的方法來完成沒有子查詢的效果?
而且不,SELECT 2 AS two
不是一個選項。 ;)
我想以這種形式使用MySQL:子查詢是重用變量的唯一選項嗎?
SELECT 1 AS one, one*2 AS two
,因爲它是更短的和甜比
SELECT one*2 AS two FROM (SELECT 1 AS one) AS sub1
但前者似乎並沒有工作,因爲它預計,一個是一列。
有沒有更簡單的方法來完成沒有子查詢的效果?
而且不,SELECT 2 AS two
不是一個選項。 ;)
select @one := 1 as one, 2 * @one as two;
考慮從SQL的角度來看,這SQL代碼
SELECT 1 AS one, one*2 AS two
語言(爲什麼不,MySQL已經符合ISO/ANSI的良好記錄SQL標準),您的one
不是一個變量;而是列相關名稱。您不能使用SELECT
子句中的相關名稱具有相同的範圍,因此是錯誤。
FWIW當你使用MS Access數據庫引擎時,你的「更短更甜」的語法確實有用 - 是你學習它的地方嗎?可悲的是,Access數據庫引擎在遵守標準方面的記錄很差。據說需要很長時間去學習Access-speak並學習SQL代碼;)
不,我其實很討厭Access-speak,所以我不必忘記它 - 但我的假設來自編程語言,這引起了這種誤解。謝謝您的回答!在接受答案後很難看到富有洞察力的帖子。 – pestaa 2009-11-04 12:00:40
太好了,謝謝。沒有學習新事物就沒有一天過去了。 – pestaa 2009-11-03 19:23:53