【问题标题】:MYSQL - Join 2 tables with full rows on left tableMYSQL - 在左表上加入 2 个完整行的表
【发布时间】:2013-01-14 01:50:58
【问题描述】:

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

我有两张表如下:

属性

|编号 |姓名 | |----+--------------| | 1 |名字 | | 2 |姓氏 | | 3 |电子邮件 |

属性值

| uid | attr_id |价值 | |-------+-----------|------------| | 1 | 1 |你好 | | 1 | 2 |世界| |-------+-----------|------------| | 2 | 1 |一个 | | 2 | 2 |乙| | 2 | 3 | a@xzy.com |

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

例如用于选择用户 id 1

|姓名 |价值 | |---------------|------------| |名字 |你好 | |姓氏 |世界| |电子邮件 |空 |

用户 ID 2

|姓名 |价值 | |---------------|------------| |名字 |一个 | |姓氏 |乙| |电子邮件 | a@xzy.com |

用户 ID 3 (attribute_values 中不存在)

|姓名 |价值 | |---------------|------------| |名字 |空 | |姓氏 |空 | |电子邮件 |空 |

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

谢谢。

【问题讨论】:

    标签: mysql sql select join


    【解决方案1】:
    SELECT  a.*, b.value
    FROM    attributes a
            LEFT JOIN attribute_values b
                ON a.ID = b.attr_id AND b.uid = 1
    

    【讨论】:

    • 不确定 ` AND b.uid ` 它有什么作用? - 编辑 - 没关系。
    • @GolezTrol 是的,这是一个错字
    猜你喜欢
    • 1970-01-01
    • 2015-09-22
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    相关资源
    最近更新 更多