2009-07-13 7 views
1

PHPでMySQL 5.1を使用していて、プライマリキーを使用して特定の行を選択するクエリを実行することが可能かどうかは疑問でしたが、存在しない場合は、別の行を返します。SQLフォールバック行?

たとえば:ID = "" 他のid = "B"

答えて

1
select * 
    from table1 
    where id="a" 
union all 
select * 
    from table1 
    where id="b" 
    and no exists (
    select * 
     from table1 
     where id="a"); 
+0

は、この実際に3つのSELECT文を実行しTABLE1から*を選択します。 2つのSELECTSの間でUNIONを実行し、最後のセットでLIMIT 1を実行する方が速くなります。 –

+0

@Artem:いいえ、UNIONの順序は保証されていないため、LIMITは "b"になります。 –

+0

3つ未満のセレクトは素晴らしいボーナスですが、それでも完全に動作します!ありがとう=) –

関連する問題