开发者

Another SELECT if the first SELECT returned an empty set

This is my table:

  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 

I am in need of a SQL that, if there are no rows with id_1 of "x", it should return those with id_1 of 0. For example, if I wer开发者_运维问答e to select id_1 = 2, it would return the select * whereid_1= 0.

Could this be done in one statement? I had little luck using IF EXISTS or CASE. Syntax...

Thanks, as always


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;


  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
        )


Don't ignore a way to implement this logic in your code instead of SQL.


If there are no rows with id_1 of "x", it should return those with id_1 of 0. You can try this -

IF EXISTS ( SELECT * FROM mytable WHERE id_1 = 2 ) 
    SELECT * FROM mytable WHERE id_1 = 2 
ELSE
    SELECT * FROM mytable WHERE id_1 = 0
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜