[英]Join Tables On Two Columns
我一直在尝试加入一个表,但使用两个不同的列。 好的,所以我有下表:
使用者:
--------------------------------------------------
| user_id | name |
--------------------------------------------------
| 1 | Bob |
--------------------------------------------------
| 2 | John |
--------------------------------------------------
表2:
--------------------------------------------------
| user_one | user_two | field3 |
--------------------------------------------------
| 1 | 2 | something here |
--------------------------------------------------
他们使用这两个字段来联接用户表的任何方式。 像这样:
SELECT
table2.*,
users.name
FROM table2
INNER JOIN users
ON users.user_id = table2.user_one AND users.user_id = table2.user_two
我已经尝试了上面的查询,但没有返回任何内容。 提前致谢。
编辑我想返回如下内容:
--------------------------------------------------
| user_one_name | user_two_name | field3 |
--------------------------------------------------
| Bob | John | something here|
--------------------------------------------------
您需要两个联接。 如果一个或两个用户ID不匹配,通常使用left join
联接完成此操作:
SELECT t2.*, u1.name as user1name, u2.name as user2name
FROM table2 t2 LEFT JOIN
users u1
ON u1.user_id = t2.user_one LEFT JOIN
users u2
ON u2.user_id = t2.user_two;
听起来您想在一行中同时获得两个用户的名称。 假设这样,那么您可以多次join
到users
表:
SELECT
table2.*,
u1.name user1name,
u2.name user2name
FROM table2 t2
INNER JOIN users u1 ON u1.user_id = t2.user_one
INNER JOIN users u2 ON u2.user_id = t2.user_two
作为在评论中提到,如果有可能,你有用户ID在table2
中不存在的users
表(或在允许null
将被存储的值),您可以使用outer join
,而不是得到您想要的结果。
但是,在这种情况下,您的数据库设计可能会遇到更大的问题。 除非foreign keys
可能为空,否则您不应有没有相应primary keys
外primary keys
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.