2016-11-11 34 views
2

是否可以將這兩個語句組合成單個查詢?SQL使用兩個鍵檢查重複記錄

有兩列(a_id和b_id),其他兩列需要對齊。

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

使用一個或陳述或某個工會嗎?但是,也許我不明白你是否可以發佈一些樣本數據和預期結果?所以...你是否想返回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 

或(沒有雙關語意!)

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) 
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 OR b_id=:b_id) 
AND case_form=:case_form AND case_type=:case_type 
+0

這實際上更好,因爲它簡化了示例上的where子句;儘管我認爲工會應該是一個工會,所以你不會採取不同的表現。 – xQbert

+0

@xQbert。正確的工會所有.. – scaisEdge

+0

@xQbert答案undeleted ..謝謝..(我已經刪除.. becase是一個奇怪的情況..我想到爲什麼。)..讚賞禮貌 – scaisEdge