2

这是我的桌子:

  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_10 的行。例如,如果我选择id_1= 2,它将返回select * whereid_1 = 0

这可以在一个声明中完成吗?我在使用 IF EXISTS 或 CASE 时运气不佳。句法...

Thanks, as always

4

4 回答 4

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;
于 2011-01-25T09:26:21.940 回答
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
        )
于 2011-08-24T23:35:06.843 回答
0

不要忽略在代码中而不是 SQL 中实现此逻辑的方法。

于 2010-10-31T08:29:49.047 回答
-3

如果没有 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
于 2010-10-31T08:20:41.923 回答