我有一个包含查询中所有列的表格,我使用的查询越来越长,因为我会复制/粘贴。
您可以在此处找到表格和查询:
http://sqlfiddle.com/#!9/672a8f/1
请注意,查询中的某些列可能不存在于表中,因为我必须删除一些列才能构建架构。
以下是我所谈论的更简单的例子:
SELECT
//First Alias.
IF(HW="Yes", "Great", "Not Great") AS Nested1,
//Second Alias.
IF( IF(HW="Yes", "Great", "Not Great") ="Great",1,0) AS Nestedd2
FROM table_name
因此,我不想复制/粘贴第一个别名Nested1
,而是使用以下内容:
SELECT
IF(HW="Yes", "Great", "Not Great") AS Nested1,
IF( Nested1 ="Great",1,0) AS Nestedd2
FROM table_name
怎么做?在同一个查询中使用另一个别名?
答案 0 :(得分:0)
您可以使用子查询:
SELECT
Nested1,
IF( Nested1 ="Great",1,0) AS Nestedd2
FROM
(
SELECT
IF(HW="Yes", "Great", "Not Great") AS Nested1
FROM table_name
) as t
答案 1 :(得分:0)
我会把它写成:
SELECT (CASE WHEN HW = 'Yes' THEN 'Great' ELSE 'Not Great' END) AS Nested1,
(HW = 'Yes') as Nestedd2
FROM table_name;
注意:
IF()
是MySQL扩展,CASE
是标准。嵌套的IF()
特别令人不愉快。当然,更一般的答案是使用子查询,视图或MySQL 8.0,CTE。
答案 2 :(得分:0)
或者,如果您在php中准备语句,则可以执行以下操作:
$Nested1 = "IF(HW='Yes', 'Great', 'Not Great')";
$Nestedd2 = "IF( $Nested1 ='Great',1,0)";
$query = "SELECT $Nested1 AS Nested1, $Nestedd2 AS Nestedd2 FROM table_name";