在统计查询中定义别名

时间:2011-08-17 12:48:27

标签: mysql aliases

我需要这样做:

SELECT COUNT(*)
  FROM some_table
 WHERE someAlias1 = someValue1 
   AND someAlias2 = someValue2;

someAliassome_table中列的别名。就我而言,我不能直接命名列;我需要使用别名。

问题是我只知道在select子句中定义别​​名,在这种情况下我不知道如何做。

在这种情况下,有没有办法完成我需要的东西?

编辑:为什么我需要别名?我正在构建来自备用部分的查询,并且上述条件适用于来自不同表的不同列,但具有相同的逻辑角色。所以我需要一种方法来关联具有相同名称的不同替代列。

如果你只是在知道答案的情况下回答这个问题,我将不胜感激,即使你不明白我为什么需要别名

3 个答案:

答案 0 :(得分:2)

我无法弄清楚你不能直接命名列的场景。如果列名重复,则在表名前加上:

WHERE someTable1.someColumn1 = someValue1

如果列名是保留关键字或包含空格,请引用它:

WHERE `some Column1` = someValue1

您甚至可以将两者结合起来:

WHERE someTable1.`some Column1` = someValue1

答案 1 :(得分:2)

你可以做一个嵌套的SELECT语句,然后从内部查询中抽出计数,我真的没有看到使用列名转义的方法

SELECT COUNT(*) 
  FROM(
        SELECT col1 as someAlias1, 
               col2 as someAlias2
        FROM   some_table
        WHERE  someAlias1 = someValue1
        AND    someAlias2 = someValue2
       ) as inner

答案 2 :(得分:0)

为什么需要使用别名?在您的查询中使用别名的唯一原因是在例如重复使用一个“有”的条款,如:

select count(*)  as C 
  from some_table 
 where someAlias1=someValue1 
   and someAlias2=someValue2
having C > someLimit1;