MYSQL - 连接 2 个表,左表上有完整的行

标签 mysql sql select join

你能帮我解决这个问题吗?

我有如下 2 个表:

属性

| id | name         |
|----+--------------|
| 1  | first_name   |
| 2  | last_name    |
| 3  | email        |

属性值

| uid   | attr_id   | value     |
|-------+-----------|-----------|
| 1     | 1         | Hello     |
| 1     | 2         | world     |
|-------+-----------|-----------|
| 2     | 1         | A         |   
| 2     | 2         | B         |
| 2     | 3         | a@xzy.com |

即使表 attribute_values 中不存在属性,我也想编写一个查询来选择用户的属性。然后,我想得到空值的结果。

例如选择用户id 1

| name          | value     |
|---------------|-----------|
| first_name    | Hello     |
| last_name     | world     |
| email         | NULL      |

用户编号 2

| name          | value     |
|---------------|-----------|
| first_name    | A         |
| last_name     | B         |
| email         | a@xzy.com |

用户 id 3 (不存在于 attribute_values 中)

| name          | value     |
|---------------|-----------|
| first_name    | NULL      |
| last_name     | NULL      |
| email         | NULL      |

是否有通过一个查询获得上述 3 个示例结果的最佳方法?

谢谢。

最佳答案

SELECT  a.*, b.value
FROM    attributes a
        LEFT JOIN attribute_values b
            ON a.ID = b.attr_id AND b.uid = 1

关于MYSQL - 连接 2 个表,左表上有完整的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600755/

相关文章:

mysql - 将多个sql查询连接成一行

php - 在php中显示数组中的部分数据

mysql - 带条件的 select 语句内的 select 查询

sql - 在不必要时防止 Django 模型调用中的慢速 INNER JOIN

php mysql日期/时间问题

angularjs - Angular ng-options 根据ajax数据添加选择

mysql - 从 docker-compose 中的 ASP.NET Core 2 Web 应用程序连接到 MySql 8

mysql - 使用连接列的 Match() Against()

mysql - 哪种数据库方案在性能方面更好?

mysql - 无法在终端中运行命令?