MySql:在一个查询中从多个未连接的表中进行选择

时间:2014-03-05 11:23:01

标签: mysql sql

当所有3个表都具有状态为“1”的行时,以下查询正常工作,但如果其中一个表没有状态为“1”的行,则整个查询将返回空,即使其他表包含行要求的状态。

SELECT
table1.row_id as rowsone,
table2.row_id as rowstwo,
table3.row_id as rowsthree 

FROM
table1,
table2,
table3

WHERE table1.status = 1 AND table2.status = 1 AND table3.status = 1

2 个答案:

答案 0 :(得分:1)

我认为你的文件有什么不对,我们都知道所有的表都是单独运行的,但是所有的表都有相同的字段名“status”,使用AND条件就是所有的条件必须如果一个人不满足条件,那么整个会导致错误的价值,或者在你的情况下是0,所以我建议的是:

选择 table1.row_id为rowsone, table2.row_id为rowstwo, table3.row_id为rowsthree

这 表格1, 表2, 表3

WHERE status = 1

使用此代码检查表1,2和3,如果它们的状态为1。

答案 1 :(得分:0)

如果您知道只有一行,则可以使用子查询

SELECT ( SELECT title from table1 WHERE status =1),
       ( SELECT title from table2 WHERE status =1),
       ( SELECT title from table3 WHERE status =1)
 FROM DUAL;

如果所有表格都有不同数量的记录......您必须考虑所需的结果类型。可能类似于full outer join,MySQL不支持。进行多次查询会更快,更优雅。