views:

35

answers:

2

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 were 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

A: 

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
Pavanred
That didn't work for some reason. But this did:`SELECT * FROM myTable WHERE id_1 = IF(EXISTS(SELECT id_1 FROM myTable WHERE id_1 = 2 LIMIT 1), 2, 0)`. Thanks.
nush
I tried it using sql server before posting. But, I the syntax is different for mysql.
Pavanred
A: 

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

Lavir the Whiolet