我很难找到正确的MySQL声明。
记录就像
id leadid fieldnumber value
1 1 100 AAA
2 1 101 yes
3 1 102 email1
4 2 100 AAA
5 2 101 no
6 2 102 email2
7 3 100 BBB
8 3 101 yes
9 3 102 email3
10 4 100 AAA
11 4 101 yes
12 4 102 email4
现在我想从记录中使用fieldnumber = 102从每个唯一的leadid收集值列,其中具有相同leadid的相应记录满足:
(fieldnumber = 100 AND value = "AAA") AND
(fieldnumber = 101 AND value = "yes")
在此示例中,结果为:email1,email4
我已经使用第一个选择语句(fieldnumber = 100 AND value = "AAA"
)获得了结果,但是当我添加第二个语句(fieldnumber = 101 AND value = "yes"
)时,结果总是为零记录。
我认为这是一个愚蠢的事情,但我无法弄清楚或找到正确的陈述。
答案 0 :(得分:1)
这里的关键是要认识到您正在同时使用同一个表中的三个记录。你必须自己加入表,两次 - 这些被称为自连接。
您需要以下内容:
SELECT a3.value
FROM Anonymous_Table AS a1
JOIN Anonymous_Table AS a2 ON a1.leadid = a2.leadid
JOIN Anonymous_Table AS a3 ON a1.leadid = a3.leadid
WHERE (a1.fieldnumber = 100 AND a1.value = "AAA")
AND (a2.fieldnumber = 101 AND a2.value = "yes")
AND (a3.fieldnumber = 102)