Mysql 以下SQL查询可以返回多少行?
sql。有一个表T,其id字段(可选唯一)包含N行。以下SQL查询可以返回多少行Mysql 以下SQL查询可以返回多少行?,mysql,sql,join,group-by,count,Mysql,Sql,Join,Group By,Count,sql。有一个表T,其id字段(可选唯一)包含N行。以下SQL查询可以返回多少行 select * from T inner join ( select count(*) as cnt from T union all select count(*) as cnt from T ) as TA on TA.cnt = T.id inner join ( select count(*) as cnt from T union select count(*) as
select * from T
inner join (
select count(*) as cnt from T
union all select count(*) as cnt from T
) as TA on TA.cnt = T.id
inner join (
select count(*) as cnt from T
union select count(*) as cnt from T
) as TB on TB.cnt = T.id;
我有一些选择:
- 只有N行
- 从0到N行
- 从2N到4N行
或者您可以指定一些其他选项吗?此查询不返回任何行或返回两行(所有三列的值相同) 理由:
子查询(别名为union all
)返回两行,每行包含相同的值,即TA
中的记录计数T
子查询将删除其结果并返回一条记录,其中还包含表的行数union
- 接下来会发生什么取决于表中是否有
等于该数字的记录id
- 如果存在这样的记录,那么查询将返回2行:
子查询生成的每行一行union all
- 如果没有这样的记录,查询将不返回任何行
- 如果存在这样的记录,那么查询将返回2行:
id
--
1
2
表中有两行,并且存在id
2
,因此查询将提供两行具有该id的数据
如果我们将此更改为:
id
--
1
2
3
5
共有四行,但没有
id
4
。查询结果为空。0行,如果T.Id不包含值2。
2行id t.id包含值2 没有人可以知道,如果不知道表T的SCHEMA,那么ID是如何生成的……请考虑一下:<代码>从T内部连接(OnSyLo)内部连接(两行)< /COD> >选择*。现在,假设T.id是唯一的。。这应该是有限度的。使其“可选”唯一更改回答:选择它是否唯一。什么是“TA.cnt=T.id”或“TB.cnt=T.id”?是吗?@db1975是的,它只能是0到2,因为ta和TB最多有两行,每个行都可以在TSmall error中找到id。您说的是“每个
union-all
查询”,但只有一个union-all
。另一个是一个普通的并集
,由于它的两边是相同的,所以它总是只返回1行。我仍然得到4行。T值为2的一行,子查询1乘以2,子查询2乘以2。现在我看到union[distinct]。。。是的,有两行。@jarlh:是的,你的评论是对的。波希米亚的观点修正了答案,使之与您的测试一致。