2016-11-11 8 views
2

これらの2つのステートメントを1つのクエリに組み合わせることは可能ですか?2つのキーを持つ重複レコードのSQLチェック

2つの列(a_idとb_id)があり、他の2つの列を一意にする必要があります。

SELECT * FROM cases WHERE a_id=:a_id AND case_form=:case_form AND case_type=:case_type 
UNION ALL 
SELECT * FROM cases WHERE b_id=:b_id AND case_form=:case_form AND case_type=:case_type 

または(しゃれ意図!)

SELECT * FROM cases 
WHERE (a_id=:a_id AND case_form=:case_form AND case_type=:case_type) 
    OR (b_id=:b_id AND case_form=:case_form AND case_type=:case_type) 
+0

ORステートメントまたはUNIONを使用しますか?しかし、おそらく私は期待した結果といくつかのサンプルデータを投稿することができます理解していないのですか?だから... case_formとcase_typeがa_idとB_Idに重複しているすべての出現を返すか? – xQbert

答えて

4

二つの迅速なアプローチをして、アラートをユーザーに返さ

SELECT * FROM cases WHERE a_id=:a_id AND case_form=:case_form AND case_type=:case_type 
UNION ALL 
SELECT * FROM cases WHERE b_id=:b_id AND case_form=:case_form AND case_type=:case_type 

またはあなたが使用することができOR

SELECT * FROM cases 
WHERE (a_id=:a_id OR b_id=:b_id) 
AND case_form=:case_form AND case_type=:case_type 
2

あなたは労働組合を行うことができます任意の結果..if

SELECT * FROM cases WHERE a_id=:a_id AND case_form=:case_form AND case_type=:case_type 

SELECT * FROM cases WHERE b_id=:b_id AND case_form=:case_form AND case_type=:case_type 

はケースに複製

+0

これは実際には、exampleまたはwhereのwhere句を単純化するので、これは実際には優れています。組合は組合でなければならないと思いますが、あなたは別個のパフォーマンスにぶつかることはありません。 – xQbert

+0

@xQbert。すべてのユニオンのために正しい.. – scaisEdge

+0

@xQbert回答は削除されていません..ありがとう..(私は削除しました..なぜ奇妙な状況だったと私は理由を考えていた)..礼儀のためのupvote – scaisEdge

関連する問題