【问题标题】:How to select one column from multiple columns returning from a select statement in mysql如何从mysql中的select语句返回的多列中选择一列
【发布时间】:2015-10-18 16:57:21
【问题描述】:

我想从 select 语句的多列中只选择一列。

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

此查询将返回两列,但如何从选择查询中仅选择第一列?如果我这样做:

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

它遇到错误了吗? mysql中有没有办法选择唯一的第一列?

【问题讨论】:

  • 如果你不想要总和,你为什么要查询它?
  • 如何做你正在做的事情,但在前端,只使用其中一个!
  • 抱歉更新了我的问题。有一个有 sum 子句
  • 你要A还是不要?
  • 日期不要使用like

标签: mysql sql mysql-workbench


【解决方案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

【讨论】:

  • 您必须像@zedfoxus 回答中一样附加m,否则会引发错误。
【解决方案2】:

您可以选择以下两种方法之一:

一个

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

【讨论】:

  • 第一个会抛出这个错误Error Code: 1248. Every derived table must have its own alias
  • 哦等等! m 这里有什么意义? :) 这是有效的
  • m 是别名。不要忽视它。括号/括号内的子查询select A... 需要有一个别名。 m 是别名。
  • 我错过了这部分。谢谢你:)
【解决方案3】:

你只想要你说的A。

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

顺便说一句,我们不知道 k 是什么数据类型(即:参见 Gordon 的评论)

Mysql year function 用于日期/日期时间

所以应该是year(k)=2015

【讨论】:

    【解决方案4】:

    我猜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) 上的索引。

    【讨论】:

    • 感谢 Gordon 的分享。
    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2018-07-29
    相关资源
    最近更新 更多