【发布时间】:2020-02-16 20:39:12
【问题描述】:
sql。有一个包含 N 行的 id 字段(可选唯一)的表 T。下面的 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 行
或者你能说出一些其他的选择吗?
【问题讨论】:
-
如果不知道T表的schéma,没有人可以确定。id是如何生成的......
-
考虑一下:
select * from T inner join (one_row) inner join (two_rows)。现在,如果 假定 T.id 是唯一的.. 那应该达到一些界限。让它“可选地”唯一会改变答案:选择它是否是唯一的。 -
什么是“TA.cnt = T.id”或“TB.cnt = T.id”?对吗?
-
@db1975 是的
-
它只能是 0 到 2,因为 ta 和 TB 一样最多有两行,每行都可以匹配 T 中的 id
标签: mysql sql join group-by count