繁体   English   中英

子查询返回值,但我的查询为零行

[英]Subquery return value but my query zero rows

我在t1中有表t1和t2没有记录,但是t2有行。

表脚本是

create table t1 ( n1 integer,n3 integer,n4 integer);

create table t2 (n2 integer);

insert into t2 value(1);

select n1,t22.n2 from t1 ,(select n2 from t2) t22;
null

select n2 from t2;
10

我应该得到价值观

select n1,n3,n4,t22.n2 from t1 ,(select n2 from t2) t22;

output :- 0,0,0,10

您似乎想要的是从t2返回的值,无论t1上是否有(匹配?)行。

如果是这样,它将做到:-

SELECT t1.n1, t1.n3, t1.n4, t22.n2 
FROM (SELECT n2 FROM t2) t22
LEFT OUTER JOIN t1;

但是,如果您希望从t1获得项目(如果t2没有匹配行),并且从t2获得任何项目(如果t1没有匹配行),则通常需要完全外部联接。 MySQL不支持完整的外部联接,但是您可以使用2个LEFT JOINs和UNIONing结果一起模拟它们。

像这样的东西:

SELECT t1.n1, t1.n3, t1.n4, t22.n2 
FROM (SELECT n2 FROM t2) t22
LEFT OUTER JOIN t1
UNION 
SELECT t1.n1, t1.n3, t1.n4, t22.n2 
FROM t1
LEFT OUTER JOIN (SELECT n2 FROM t2) t22;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM