MySQLでは、WHERE句のセットから空ではない最初の結果を返すクエリを設定できますか?これらの列が一意である、私はOR文節のいずれかにマッチする最初の行を返すALMOSTMySQL - 複数のwhere句から空でない最初の結果を取得する
SELECT * FROM t
WHERE id = NULL OR a = 2 OR b = 6
ようなクエリしたいと思う例えば、私はテーブルを持っている場合
|id |a |b |
----------------
1 2 3
4 5 6
7 8 9
id
a
b
の順で、ほぼCOALESCEのようです。ここで
SELECT * FROM t WHERE id = 7 OR a = 99 OR b = 3 --> (7, 8, 9)
SELECT * FROM t WHERE id = 7 OR a = NULL OR b = NULL --> (7, 8, 9)
SELECT * FROM t WHERE id = NULL OR a = 5 OR b = 77 --> (4, 5, 6)
SELECT * FROM t WHERE id = NULL OR a = NULL OR b = 6 --> (4, 5, 6)
SELECT * FROM t WHERE id = 1 OR a = 5 OR b = 9 --> (1, 2, 3)
これが可能であるですか?
id
は、あなたのテーブルの主キーである場合は、合体によってそれを行うことができます
あなたのデータには 'id = NULL'がありませんので、あなたの質問は何ですか?あなたはもっと多くの行を追加して、希望の出力とより多くのテストケースを指定できますか? –
@JuanCarlosOropezaもっと良い結果がいくつか追加されました – shane
。あなたの3番目の例では、 'ID IS NULL OR a = 5 OR b = 77'という行があります。' {NULL、5、NULL} 'と' {NULL、NULL、77}ショー? –