选择具有多个记录的正确MySQL记录

时间:2014-04-07 14:40:22

标签: mysql

我很难找到正确的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")时,结果总是为零记录。

我认为这是一个愚蠢的事情,但我无法弄清楚或找到正确的陈述。

1 个答案:

答案 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)