0

我需要去做:

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

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

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

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

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

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

4

3 回答 3

2

我想不出你不能直接命名列的场景。如果列名重复,请在表名前添加:

WHERE someTable1.someColumn1 = someValue1

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

WHERE `some Column1` = someValue1

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

WHERE someTable1.`some Column1` = someValue1
于 2011-08-17T12:53:17.940 回答
2

您可以执行嵌套的 SELECT 语句,然后从内部查询中提取计数,我真的没有看到使用列名进行转义的方法

SELECT COUNT(*) 
  FROM(
        SELECT col1 as someAlias1, 
               col2 as someAlias2
        FROM   some_table
        WHERE  someAlias1 = someValue1
        AND    someAlias2 = someValue2
       ) as inner
于 2011-08-17T12:57:21.010 回答
0

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

select count(*)  as C 
  from some_table 
 where someAlias1=someValue1 
   and someAlias2=someValue2
having C > someLimit1;
于 2011-08-17T12:56:31.307 回答