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 

id_1「x」の行がない場合、0 の行を返す必要がある SQL が必要ですid_1。たとえば、選択id_1= 2 の場合、select * whereid_1が返され= 0ます。

これは 1 つのステートメントで実行できますか? 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

「x」のid_1を持つ行がない場合、0のid_1を持つ行を返す必要があります.これを試すことができます-

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 に答える