我很难找到正确的 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
现在我想从每个唯一的leadid收集fieldnumber = 102的记录中的值列,其中具有相同leadid的相应记录满足:
(fieldnumber = 100 AND value = "AAA") AND
(fieldnumber = 101 AND value = "yes")
在此示例中,结果为:email1、email4
我已经通过第一个选择语句 (fieldnumber = 100 AND value = "AAA"
) 得到了结果,但是当我添加第二个选择语句时 (fieldnumber = 101 AND value = "yes"
),结果始终为零记录。
我认为这是一件愚蠢的事情,但我无法弄清楚或找到正确的说法来这样做。
最佳答案
这里的关键点是要认识到您正在同时处理同一个表中的三个记录。您必须将表与自身连接两次 - 这些称为自连接。
你需要这样的东西:
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)
关于mysql - 选择具有多条记录的正确MySQL记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915609/