SQL:在相同的条件输出中使用的条件结果

时间:2016-02-24 08:31:55

标签: mysql sql

我想知道如何处理SQL比较而不在语句中重复两次相同的查询。 这就是我要找的东西:

SELECT columnName10,
IF( SELECT columnName20 
    FROM OtherExampleTable 
    WHERE id = 15 IS NULL, 'nothing', SELECT columnName20 
                                      FROM OtherExampleTable 
                                      WHERE id = 15
   ) AS AliasColumn 
FROM ExampleTable

如您所见,查询 SELECT columnName20 FROM OtherExampleTable WHERE id = 15 进行了2次。

如果没有重复的查询,我怎么能做同样的事情呢?

谢谢你们。

3 个答案:

答案 0 :(得分:1)

试试这个

SELECT columnName10,
IFNULL(SELECT columnName20
    FROM OtherExampleTable 
    WHERE id = 15 LIMIT 1,'nothing') AS AliasColumn      
FROM ExampleTable;
如果LIMIT 1不是id,则此查询中的

也会写primary key

答案 1 :(得分:1)

您可以使用COALESCE

SELECT column10, COALESCE(
   (SELECT columnName10 
   FROM OtherExampleTable WHERE id=15), 'nothing') 
FROM ExampleTable;

答案 2 :(得分:1)

两种解决方案。

  

使用IFNULL()

SELECT columnName10,
IFNULL( SELECT columnName20 
        FROM OtherExampleTable 
        WHERE id = 15, 'nothing' ) AS AliasColumn 
FROM ExampleTable
  

使用用户变量

SELECT columnName10,
IF( @value IS NULL, 'nothing', @value:=(SELECT columnName20 
                                        FROM OtherExampleTable 
                                        WHERE id = 15)
   ) AS AliasColumn 
FROM ExampleTable