mysql - SQL 查询选择多行

标签 mysql sql join

我有下表:

projects: id, name, language
          1 |test | php
          2 |test | java
          3 |hello| php


attrs:  id, name,      value,   tb1_id
        1  | status    | finish | 1
        2  | reference | 2      | 1

我需要一个查询来选择所有项目,这些项目具有对另一个项目的“引用”属性和“状态”完成。

示例输出:

id, name      
1 |test 

你能帮我吗?

最佳答案

您可以:

  • 对连接表进行分组,并在 HAVING 子句中使用合适的聚合函数过滤此类组:

    SELECT   projects.id, projects.name
    FROM     projects
        JOIN attrs ON attrs.tb1_id = projects.id
    GROUP BY projects.id
    HAVING   SUM(attrs.name='reference')
         AND SUM(attrs.name='status' AND attrs.value='finish')
    
  • 或者多次加入attrs:

    SELECT   p.id, p.name
    FROM     projects AS p
        JOIN attrs    AS r ON  r.tb1_id = p.id
                           AND r.name   = 'reference'
        JOIN attrs    AS s ON  s.tb1_id = p.id
                           AND s.name   = 'status'
    WHERE    s.value = 'finish'
    

关于mysql - SQL 查询选择多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20419782/

相关文章:

Mysql从两个表中选择,获取所有数据,如果不存在则num 0

MySQL主从复制 "Unknown database"错误

mysql - 通过 MySQL 中的 bool 值查找 JSON 对象路径

mysql - 无法使用arduino连接到数据库服务器发送一些数据

sql - Postgres 中的时间序列查询

mysql - mysql查询中如何从多条记录中获取记录总数

mysql - 如何在不选择整个结果集中的情况下获取结果集中的 "next row"和 "previous row"?

SQL(postgres)在插入/更新后从多个表返回数据

performance - sql连接查询中表别名的重要性是什么?

mysql - mysql中不同表id的相同列名