如果你意思是你要包括只爲lead_id行如存在與field_number=9
和value=111
爲lead_id
一行。否則,對於lead_id
所有行應被排除在外......
你可以做這樣的事情:
SELECT d.id
, d.lead_id
, d.form_id
, d.field_number
, d.value
FROM (SELECT e.lead_id
FROM lead_detail e
WHERE e.form_id = 1
AND e.field_number = 9
AND e.value = 111
GROUP BY e.lead_id
) f
JOIN lead_detail d
ON d.lead_id = f.lead_id
AND d.form_id = 1
ORDER BY d.lead_id DESC
內聯視圖(別名爲f
)返回符合特定標準的lead_id
明顯名單。我們可以引用來自表格的結果,並在JOIN
操作中使用該結果來返回lead_detail
表中的「匹配」行。 (如果有特定lead_id
沒有行與value=111
,field_number=9
和form_id=1
,然後線視圖不會在列表返回lead_id
。)
又或者,我們可以使用一個EXISTS
謂詞相關子查詢,但是這可能不執行,以及:
SELECT d.id
, d.lead_id
, d.form_id
, d.field_number
, d.value
FROM lead_detail d
WHERE d.form_id = 1
AND EXISTS
(SELECT 1
FROM lead_detail e
WHERE e.form_id = 1
AND e.field_number = 9
AND e.value = 111
AND e.lead_id = d.lead_id
)
ORDER BY d.lead_id DESC
這實際上是說,從lead_detail
每一行運行存在的關鍵字之後的子查詢...如果子查詢返回一個(或多個)行,然後E XISTS謂詞返回TRUE,否則返回FALSE。通過WHERE子句中的謂詞,該子查詢與外部查詢「關聯」,從外部查詢的行中將lead_id
與值lead_id
相匹配。
你能澄清一下你的意思嗎?'field_number' 9對於'lead_id'必須是111「? – adriann
Ahhh ....使用SQL使用EAV模型的*喜歡*。 – spencer7593