我在編寫查詢時遇到了一些麻煩,並想知道是否有人可以提供幫助。我將表格信息簡化到最低限度,試着讓我很容易理解我在做什麼。 我有兩個表A和B. A有一個BId列和一個值字段。 B的信息與問題無關。 我想要做的是返回一組基於任意布爾邏輯的B存在的A,它包含一個BId並匹配某個值。另外,我想返回匹配的值。下面是什麼,我想在我的查詢中幾乎工作示例:MySQL查詢時遇到問題
SELECT * FROM B
WHERE
(
(
EXISTS (
SELECT a1.Value FROM A as a1 WHERE a1.BId = B.Id AND a1.Value = "X"
)
AND EXISTS (
SELECT a2.Value FROM A as a2 WHERE a2.BId = B.Id AND a2.Value = "Y"
)
)
OR EXISTS (
SELECT a3.Value FROM A as a3 WHERE a3.BId = B.Id AND a3.Value = "Z"
)
);
這正是我想要儘可能B的恢復,但是我需要能夠返回相匹配的值。所以如果有一個A的值爲X,另一個A的值爲Y,我會希望a1和a2的值爲X和Y。如果沒有值爲Z的A,則該行將返回NULL。我不確定這樣做的語法或可能性。 我試圖用另一種方法JOIN:
SELECT *, a1.Value, a2.Value FROM B
INNER JOIN A AS a1 ON a1.BId = B.Id
INNER JOIN A AS a2 on a2.BId = B.Id
WHERE
(
(
a1.Value = "X" AND a2.Value = "Y"
)
OR
(
a1.Value = "Z"
)
);
這正常返回值,但它只有在X和Y匹配工作。如果Z匹配,由於有兩個JOIN語句來完成第一部分,我得到了重複的結果。出於這個原因,我對使用這種方法持懷疑態度。這樣使用JOIN似乎不太合適。 如果任何人都能理解我想要做的事情,並且指出我會朝着正確的方向發展,那將是非常值得讚賞的。謝謝!
哇,這是非常完美的。得到它幾乎沒有修改工作,謝謝! – 2013-04-04 19:56:19