Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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 以下SQL查询可以返回多少行?_Mysql_Sql_Join_Group By_Count - Fatal编程技术网

Mysql 以下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

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 cnt from T
) as TB on TB.cnt = T.id;
我有一些选择:

  • 只有N行

  • 从0到N行

  • 从2N到4N行


或者您可以指定一些其他选项吗?

此查询不返回任何行或返回两行(所有三列的值相同)

理由:

  • union all
    子查询(别名为
    TA
    )返回两行,每行包含相同的值,即
    T
    中的记录计数

  • union
    子查询将删除其结果并返回一条记录,其中还包含表的行数

  • 接下来会发生什么取决于表中是否有
    id
    等于该数字的记录

    • 如果存在这样的记录,那么查询将返回2行:
      union all
      子查询生成的每行一行

    • 如果没有这样的记录,查询将不返回任何行

假设这个数据集:

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:是的,你的评论是对的。波希米亚的观点修正了答案,使之与您的测试一致。