You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中如何关联唯一字段查询非唯一值并验证结果行数?

解决两个SQL问题:保留同名不同ID的name,以及验证结果行数

一、获取每个唯一ID对应的name(同名不合并)

你提到用SELECT DISTINCT name FROM Names;会合并同名结果,这很正常——DISTINCT是对查询返回的字段整体去重,这里只选了name,所以所有重复的name自然会被合并。

要实现“不同ID对应的同名name分别显示”的需求,其实非常简单:直接去掉DISTINCT,查询所有name即可:

SELECT name FROM Names;

因为你的表中每个id都是唯一的,每一行对应一个唯一的id和它绑定的name,所以这个查询会返回每一行的name,包括重复的(比如例子里的两个Jack),完全匹配你想要的目标输出。

二、验证结果行数是否为18013行

要验证目标结果的总行数,你可以用以下几种实用方法:

方法1:直接统计原表总行数

因为你的目标结果是每一个唯一id对应一行name,而原表中每个id都是唯一的,所以原表的总行数就是目标结果的行数。执行这条语句就能得到数值:

SELECT COUNT(*) FROM Names;

把返回的数字和18013对比即可。

方法2:直接统计查询结果的行数

如果想直接验证你最终查询(比如SELECT name FROM Names;)的返回行数,可以把它嵌套成子查询,外层用COUNT(*)统计:

SELECT COUNT(*) FROM (
    SELECT name FROM Names
) AS result_set;

这个查询的结果就是目标结果的总行数,直接和18013核对就行。

方法3:统计唯一ID的数量

因为每个id都是唯一的,所以唯一id的数量等于目标结果的行数,你也可以用这条语句来验证:

SELECT COUNT(DISTINCT id) FROM Names;

如果返回结果是18013,就说明你的目标结果行数完全正确。

内容的提问来源于stack exchange,提问作者Dinoman44 - 101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:17:29