我有一张名为tbl_users
================================================================================
system_name | user_id | username | password | system_id | group_id | user_level
================================================================================
Demo | 12345 | demo | demo | 99999 | 54321 | Admin
================================================================================
Demo | 78794 | demo2 | demo2 | 99999 | | Employee
================================================================================
第二个表格为tbl_groups
=================================
system_id | group_id | group_name
=================================
99999 | 54321 | engine
=================================
使用此查询:
SELECT username, user_level, system_name, tbl_users.system_id, tbl_users.user_id, tbl_users.group_id, group_name
FROM tbl_users JOIN tbl_groups
WHERE tbl_users.group_id = tbl_groups.group_id
AND system_name = 'demo'
AND tbl_users.system_id = '99999'
但是使用上面的查询只是得到一行Demo User
,我也想要Demo 2但是无法完成它,如果我删除了tbl_users.group_id = tbl_groups.group_id
我得到了两行但是{{1}它在group_name
Demo2 User
列中打印引擎,这是错误的,因为他当前没有任何组,所以如何查询我获取所有用户和组的名称如果用户不在组中,则我希望group_name列为空。
答案 0 :(得分:1)
您正在寻找OUTER JOIN:
FROM tbl_users
LEFT OUTER JOIN tbl_groups
ON tbl_users.group_id = tbl_groups.group_id
WHERE ...
答案 1 :(得分:1)
如果要返回左表中的所有行,请使用LEFT JOIN而不是JOIN。
此外,在指定ON
条件时,您应使用WHERE
代替JOIN
。
SELECT username, user_level, system_name, tbl_users.system_id, tbl_users.user_id, tbl_users.group_id, group_name
FROM tbl_users LEFT JOIN tbl_groups
ON tbl_users.group_id = tbl_groups.group_id