我有这样的数据:选择不重复的行
Name Age
-------------------
HieuDoan 15
LinhNa 16
HieuDoan 20
NamL 17
我要选择没有重复数据的所有行,结果我需要:
Name Age
-------------
LinhNa 16
NamL 17
如何查询呢?数据源是Redshift。
谢谢大家。
我有这样的数据:选择不重复的行
Name Age
-------------------
HieuDoan 15
LinhNa 16
HieuDoan 20
NamL 17
我要选择没有重复数据的所有行,结果我需要:
Name Age
-------------
LinhNa 16
NamL 17
如何查询呢?数据源是Redshift。
谢谢大家。
根据你的榜样,而不是考虑的事实,使得这样的查询是错误的,因为名称和年龄可以是相同的不同的人,在甲骨文我会做这样的事情,使用窗口功能
SELECT *
FROM
(SELECT A.*,
count(name) over (partition by name order by name) as cnt
FROM MY_TABLE A)
WHERE cnt = 1
试试这个嵌套查询:
select name, age from (select *, count(*) as no from student group by name) where no = 1;
在sqlite3的,从我的实验返回记录集:
LinhNa|16
NamL|17
如果您只需选择没有重复数据的所有行,则可以采用以下方法。
SELECT name, age from
(SELECT name, age,
(SELECT count(*)
FROM table1 t1
WHERE t1.name = t2.name
GROUP BY t1.name) AS c1
FROM table1 t2) table2
WHERE c1 = 1;
内查询将返回name
,age
和count of names
和外部查询会过滤掉与count=1
名称。
以下是输出。
您可以查看演示here
你尝试过什么?向我们显示您的查询 –
2人拥有相同的姓名很常见,您的要求背后的商务逻辑是什么? – tibetty
也指定你正在使用的DBMS – Hatik