Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从一个表检索所有记录,从另一个表检索特定记录_Mysql_Sql - Fatal编程技术网

Mysql 从一个表检索所有记录,从另一个表检索特定记录

Mysql 从一个表检索所有记录,从另一个表检索特定记录,mysql,sql,Mysql,Sql,tbl\U 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_状态为1的字段 我试过这个 SELECT * FROM tbl_cmp JOIN tbl_usr ON tbl_usr.cmp_id = tbl_cmp.usr_id WH

tbl\U 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_状态为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的记录,而不是第一个表中的所有记录

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
请参见左外连接的示例尝试此操作

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

您真正想要的是交叉联接,因为表之间没有联接条件:

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_用户的条件非常明显。在更复杂的查询中,WHERE子句可能与from子句中表格的显示位置完全分离。

它只显示cnt_状态为1的记录。要从tbl_用户添加列检索所有记录,与cnt_状态为1的记录相比,如果cnt_状态不是1,则必须显示0以澄清,在join子句中,您在cmd_id和usr_id上进行连接,那么cmp_usr_id是什么?在我看来,您正在尝试比较两个不同的字段,而这两个字段并不相同related@Anu如果你认为这个答案适合你,请接受。看见