我已经阅读了其他问题,但我并不认为他们恰好是'确切地说'喜欢我的情况。
我想要做的是类似于SELECT ... WHERE some_field_to_compare IN (CASE WHEN something something THEN ('1','2','3') ELSE ('0'))
根据SELECT ... WHERE some_field_to_compare IN ('1','2','3')
,查询可以变成SELECT ... WHERE some_field_to_compare IN ('0')
或something something
。如何才能做到这一点?非常感谢你......
SELECT cake FROM cakes WHERE cake_magic_number IN (CASE WHEN cake_frosty = 'no_frosty' THEN ('1','2','3') WHEN cake_frosty = 'is_frosty' THEN ('1','2') WHEN cake_frosty = 'wow... good frosty!' THEN ('2') ... END)
答案 0 :(得分:1)
您可以使用javax.json
:
json
答案 1 :(得分:0)
http://sqlfiddle.com/#!9/fa3aa/1
SELECT *
FROM cakes
WHERE
CASE
WHEN cake_frosty = 'no_frosty' AND cake_magic_number IN (1,2,3) THEN 1
WHEN cake_frosty = 'is_frosty'AND cake_magic_number IN (1,2) THEN 1
WHEN cake_frosty = 'wow... good frosty!' AND cake_magic_number = 2 THEN 1
ELSE 0
END
或imho更紧凑的变体我更喜欢:
SELECT *
FROM cakes
WHERE
IF(cake_frosty = 'no_frosty' AND cake_magic_number IN (1,2,3),1,
IF(cake_frosty = 'is_frosty'AND cake_magic_number IN (1,2),1,
IF(cake_frosty = 'wow... good frosty!' AND cake_magic_number = 2,1,
0)
)
)
甚至只是正如戈登林诺夫所说的那样:
http://sqlfiddle.com/#!9/fa3aa/3
SELECT *
FROM cakes
WHERE
(cake_frosty = 'no_frosty' AND cake_magic_number IN (1,2,3))
OR (cake_frosty = 'is_frosty'AND cake_magic_number IN (1,2))
OR (cake_frosty = 'wow... good frosty!' AND cake_magic_number = 2);