这是我的表:
id id_1 camp
1 0 x1
2 0 x2
3 0 x3
4 1 x4
5 1 x5
6 1 x6
7 3 x7
8 3 x8
9 3 x9
我需要一个SQL,如果没有id_1
为“x”的行,它应该返回id_1
为0的那些。例如,如果我要选择{ {1}} = 2,它会返回id_1
id_1 select * where
。
这可以在一个声明中完成吗?我没有运气使用IF EXISTS或CASE。语法...
谢谢,一如既往地
答案 0 :(得分:2)
SELECT SQL_CALC_FOUND_ROWS id, id_1, camp
FROM your_table
WHERE id_1 = 2
UNION ALL
SELECT id, id_1, camp
FROM your_table
WHERE
FOUND_ROWS() = 0 AND id_1 = 0;
答案 1 :(得分:2)
SELECT *
FROM mytable
WHERE id_1 = 2
UNION ALL
SELECT *
FROM mytable
WHERE id_1 = 0
AND NOT EXISTS
( SELECT *
FROM mytable
WHERE id_1 = 2
)
答案 2 :(得分:0)
不要忽略在代码中而不是SQL中实现此逻辑的方法。
答案 3 :(得分:-2)
如果没有id_1为“x”的行,则应返回id_1为0的行。您可以尝试此操作 -
IF EXISTS ( SELECT * FROM mytable WHERE id_1 = 2 )
SELECT * FROM mytable WHERE id_1 = 2
ELSE
SELECT * FROM mytable WHERE id_1 = 0