2015-10-18 85 views
0

我想從select語句中的多列中僅選擇一列。如何從多個列中選擇一列從mysql中的select語句返回

select 
    A, sum(B) paid 
from 
    T 
where 
    K LIKE '2015%' 
group by A 
having B >= 100 

此查詢將返回兩列,但如何從select查詢中選擇第一列?如果我做這樣的事情:

select A from (select 
    A, sum(B) paid 
from 
    T 
where 
    K LIKE '2015%' 
group by A 
having B >= 100) 

它運行錯誤?有沒有辦法在MySQL中選擇唯一的第一列?

+0

如果你不想要這筆錢,你爲什麼要查詢它? – Mureinik

+0

如何做你在做什麼,但在前端,只使用其中的一個! – Drew

+0

很抱歉更新了我的問題。有一個條款與總和 – python

回答

1

你可以做兩者之一:

一個

select A from (
    select A, sum(B) paid from T where K LIKE '2015%' 
group by A having sum(B) >= 100 
) m 

兩個

select A from T where K like '2015%' group by A having sum(B)>=100 
+0

第一個會拋出這個錯誤'錯誤代碼:1248.每個派生表都必須有自己的別名' – python

+0

哦等等! 'm'在這裏有什麼意義? :)這是工作 – python

+1

'm'是別名。不要忽視它。子括號/ paranthesis中的子查詢'select A ...'需要有別名。 'm'是別名。 – zedfoxus

1

你只是想你說的。

select distinct A 
from T 
where k like '2015%' and B >= 100 

順便說一句,我們不知道什麼數據類型k爲(即:見戈登的評論)

Mysql的year function的日期/日期時間

所以這將是year(k)=2015

1

你第二個查詢是正確的,只是您沒有在b之前添加sum

試試這個

select A from (select 
    A, sum(B) paid 
from 
    T 
where 
    K LIKE '2015%' 
group by A 
having sum(B) >= 100) As temp 
+0

你必須在@zedfoxus中追加'm',否則它會拋出一個錯誤。 – python

+1

檢查更新 –

1

我在猜測K是日期。日期不應使用like。編寫查詢的最好方法是:

select A 
from T 
where K >= '2015-01-01' and K < '2016-01-01' 
group by A 
having sum(B) >= 100; 

這可以在T(K, A, B)採取指數的優勢。

+0

謝謝戈登分享這個。 – python

相關問題