期望的结果:
仅返回第一个真正遇到的 SELECT 表达式的结果。
解释:
所以,我有三种不同的 SELECT 表达式:
- SELECT * FROM table WHERE column1 = 'sometext' AND column2='1'
- SELECT * FROM table WHERE column1 = 'someothertext' AND column2='2'
- SELECT * FROM table WHERE column1 = 'somethirdtext' AND column2='3'
我希望得到 1 的结果。如果 1. 返回 NULL,我想要选择编号 2 的结果。如果选择编号 2. 返回 NULL,我想使用选择编号 3。等等。
请注意,对于每个为真的条件,我期望返回多于一行 - 我只想要来自 SELECT 1) 2) 或 3) 的结果(按此顺序)
只从一个 SELECT 表达式返回结果很重要,所以即使 2. 和 3. 会返回一些东西,我也只想要来自 1 的结果。
我现在拥有的代码遵循预期的逻辑,但是当我有多个行被以下某些 SELECTS 返回时,它给了我错误:
1242 - 子查询返回多于 1 行
现在的代码:
SELECT IFNULL( (SELECT * FROM table WHERE column = 'sometext'), IFNULL( (SELECT * FROM table WHERE column = 'someothertext'), IFNULL( (SELECT * FROM table WHERE column = 'somethirdtext'), 0 ) ) )