【发布时间】:2017-01-08 05:58:18
【问题描述】:
我正在尝试通过加入 2 个这样的表在 MySQL 中创建一个视图:
用户表:
+----+------+
| id | name |
+----+------+
| 1 | Joy |
+----+------+
| 2 | Roy |
+----+------+
| 3 | Tony |
+----+------+
技能表:
+---------+---------+------------+
| auto_id | user_id | skill |
+---------+---------+------------+
| 1 | 1 | PHP |
+---------+---------+------------+
| 2 | 1 | CSS |
+---------+---------+------------+
| 3 | 2 | Ruby |
+---------+---------+------------+
| 4 | 2 | Javascript |
+---------+---------+------------+
这里Skills表中的user_id是Users表中id的外键。
创建视图的查询:
CREATE OR REPLACE VIEW user_view AS SELECT u.id, u.name, GROUP_CONCAT(s.skill) as
skills FROM users u, skills s WHERE u.id = s.user_id GROUP BY u.id
现在的问题是创建的视图只有 2 行,我知道这是因为 user_id 3 的技能表中没有值。现在我想要的是将所有具有 Tony 的 技能的 3 行设置为 Null 值,如下所示:
+---------+------+-----------------+
| user_id | name | skills |
+---------+------+-----------------+
| 1 | Joy | PHP,CSS |
+---------+------+-----------------+
| 2 | Roy | Ruby,Javascript |
+---------+------+-----------------+
| 3 | Tony | Null or empty |
+---------+------+-----------------+
【问题讨论】: