2015-10-18 50 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

相关问题