tbl_cmp
usr_id | cmp_name | usr_fname |cmp_addr
tbl_usr
cmp_usr_id |cmp_id | cmp_usr_fname | cnt_status
我正在尝试从两个查询检索数据: 从tbl_cmp中检索所有数据 但 仅从tbl_usr中检索cnt_status = 1
的字段我试过这个
SELECT *
FROM tbl_cmp
JOIN tbl_usr ON tbl_usr.cmp_id = tbl_cmp.usr_id
WHERE tbl_usr.cnt_status =1
但它只显示cnt_status = 1的记录而不是第一张表中的所有记录
答案 0 :(得分:0)
使用 LEFT OUTER JOIN
SELECT *
FROM tbl_users
Left outer JOIN tbl_cmp_user
ON tbl_cmp_user.cmp_id = tbl_users.usr_id
and tbl_cmp_user.cnt_status =1
请参阅左外连接here
的示例答案 1 :(得分:0)
试试这个
SELECT * FROM tbl_users LEFT JOIN tbl_cmp_user
ON tbl_cmp_user.cmp_id = tbl_users.usr_id
AND tbl_cmp_user.cnt_status =1
答案 2 :(得分:0)
您真正想要的是交叉连接,因为表之间没有连接条件:
select c.*, u.*
from tbl_cmp c cross join
(select *
from tbl_users u
where u.cnt_status = 1
) u
您可以在没有子查询的情况下表达:
select c.*, u.*
from tbl_cmp c cross join
tbl_users u
where u.cnt_status = 1
我更喜欢子查询版本,因为它使tbl_users上的条件非常明显。在更复杂的查询中,WHERE子句可能与表在FROM子句中出现的位置完全分开。