我的表設置如此。選擇與不同值相匹配的行來檢索公共字段
id plan_id name rule
1 3 dep 4
2 3 sta 3
5 4 pri 7
6 1 dep 4
可讀的傳說; dep =部門,sta =狀態,pri =優先
想法是我想檢索符合指定條件的'plan_id'。我試過了許多我認爲可行的查詢。這是最接近的。我試圖找出如何最好地構建查詢。雖然我想知道是否有更好的方法來編寫此查詢。在某些情況下,只有部門可能需要匹配。在其他情況下,我可能需要匹配所有三個或兩個。
在這種情況下,我想找到包含狀態和部門的計劃。我需要它匹配狀態== 3和部門== 4.下面的代碼應該爲plan_id返回'3'。
SELECT o.plan_id AS s_id
FROM `plan_criteria` o
LEFT JOIN plan_criteria pc
ON pc.plan_id=o.plan_id
WHERE (o.name IN ('sta') AND o.rule_match=3)
AND (pc.name IN ('dep') AND pc.rule_match=4)
編輯 -
一個計劃也可以包含多個部門/狀態/優先級。
我做了一個編輯。例如;我想找到包含狀態和部門的計劃。我需要它匹配狀態== 3和部門== 4.因此,(name ='sta'AND rule ='3')AND(name ='dep'AND rule ='4') – tywsge