mysql - 选择具有多条记录的正确MySQL记录

标签 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

现在我想从每个唯一的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/

相关文章:

Java - 如何将数据从 mysql 数据库转换为 JSON 数组?

mysql - Eloquent laravel 有 raw join with where 子句

java - Spring 查询在整个对象上不同

php - 获取所有带有使用权重的标签

php - 开奖号码分析

php - 如何在 MySQL 中的 if (like) 条件下使用不同的表

php - 匹配mysql中split后的精确子串

php - SQL JOIN 结果不断重复

php - 在特定用户的状态页面中显示特定用户选择的项目

javascript - 表单在 php while 循环中呈现相同的数据