我想知道如何处理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次。
如果没有重复的查询,我怎么能做同样的事情呢?
谢谢你们。
答案 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