MYSQL - 在左表中加入2个表,其中包含完整行

时间:2013-01-30 09:40:48

标签: mysql sql select join

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

我有两张表格如下:

属性

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

ATTRIBUTE_VALUES

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

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

例如,用于选择用户ID 1

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

用户ID 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      |

有一个查询获得结果的最佳方法是上面的例子吗?

感谢。

1 个答案:

答案 0 :(得分:2)

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