一个SQL问题。求救......

暴走的车轮 2010-08-17 02:34:22
数据库结构
id name1 name2 ......

现在我要筛选出如下记录

比如数据
1 张三 李四
2 张三 李四
3 李四 王五
4 李四 赵六
5 张三 王五
6 李四 赵六

我需要的数据如下
2 张三 李四
3 李四 王五
5 张三 王五
6 李四 赵六


也就是说我要查找如果name1 和 name2 在数据库里存在都对应相等的记录,就选择ID最大的那个出来,如果没有对应相等的就直接读出来就好了。就是去掉name1 和name2 对应相等的重复记录......

不知道表达明白没有?各位帮帮,我SQL菜鸟!!
...全文
214 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
z050301402 2010-08-17
  • 打赏
  • 举报
回复
都很好
冰岛男孩 2010-08-17
  • 打赏
  • 举报
回复
学习中……
村长_乐 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 huminghua 的回复:]
引用 6 楼 q107770540 的回复:

SQL code

CREATE TABLE t1
(
id INT ,
name1 NVARCHAR(20),
name2 NVARCHAR(20)
)

INSERT INTO t1 VALUES(1,'张三','李四')
INSERT INTO t1 VALUES(2,'张三','李四')
INSERT INTO t1……
[/Quote]
+
yongjay 2010-08-17
  • 打赏
  • 举报
回复
菜鸟来学习!
银-魂 2010-08-17
  • 打赏
  • 举报
回复
其他可以偷懒点,直接加个group by 就行了。
如:SELECT [name],[name2]
FROM text group by name,name2
wang15072732418 2010-08-17
  • 打赏
  • 举报
回复
学习了 很好
klyh1207 2010-08-17
  • 打赏
  • 举报
回复
很好 很强大
hua_nan_she 2010-08-17
  • 打赏
  • 举报
回复
支持下一楼
继续泛泛 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 leftie 的回复:]
select * from 表名 as t1
where not exists
(select * from 表名 as t2 where t2.name1=t1.name1 and t2.name2=t1.name2 and t1.id<t2.id)
[/Quote]
w87875252l 2010-08-17
  • 打赏
  • 举报
回复
2楼的正确
huminghua 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]

SQL code

CREATE TABLE t1
(
id INT ,
name1 NVARCHAR(20),
name2 NVARCHAR(20)
)

INSERT INTO t1 VALUES(1,'张三','李四')
INSERT INTO t1 VALUES(2,'张三','李四')
INSERT INTO t1 VALUES(3,'李四','王五')
INSERT INTO……
[/Quote]+
somuns8 2010-08-17
  • 打赏
  • 举报
回复
学习了。。。
gongsun 2010-08-17
  • 打赏
  • 举报
回复
select * from table1 where id in (select max(id) from table1 group by name1,name2) order by id
SK_Aqi 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
SQL code

CREATE TABLE t1
(
id INT ,
name1 NVARCHAR(20),
name2 NVARCHAR(20)
)

INSERT INTO t1 VALUES(1,'张三','李四')
INSERT INTO t1 VALUES(2,'张三','李四')
INSERT INTO t1 VALUES(3,'李四','王五')
I……
[/Quote]
正解
lishuai1030 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
SQL code

CREATE TABLE t1
(
id INT ,
name1 NVARCHAR(20),
name2 NVARCHAR(20)
)

INSERT INTO t1 VALUES(1,'张三','李四')
INSERT INTO t1 VALUES(2,'张三','李四')
INSERT INTO t1 VALUES(3,'李四','王五')
I……
[/Quote]

++
Aquarius娜吖 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
SQL code

CREATE TABLE t1
(
id INT ,
name1 NVARCHAR(20),
name2 NVARCHAR(20)
)

INSERT INTO t1 VALUES(1,'张三','李四')
INSERT INTO t1 VALUES(2,'张三','李四')
INSERT INTO t1 VALUES(3,'李四','王五')
I……
[/Quote]
正解!
q107770540 2010-08-17
  • 打赏
  • 举报
回复

CREATE TABLE t1
(
id INT ,
name1 NVARCHAR(20),
name2 NVARCHAR(20)
)

INSERT INTO t1 VALUES(1,'张三','李四')
INSERT INTO t1 VALUES(2,'张三','李四')
INSERT INTO t1 VALUES(3,'李四','王五')
INSERT INTO t1 VALUES(4,'李四','赵六')
INSERT INTO t1 VALUES(5,'张三','王五')
INSERT INTO t1 VALUES(6,'李四','赵六')


SELECT * FROM t1 WHERE id NOT IN (
SELECT a.id FROM t1 a,t1 b
WHERE a.name1=b.name1 AND a.name2=b.name2 AND a.id<b.id)

id name1 name2
----------- -------------------- --------------------
2 张三 李四
3 李四 王五
5 张三 王五
6 李四 赵六

(4 行受影响)



even0220 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 leftie 的回复:]

select * from 表名 as t1
where not exists
(select * from 表名 as t2 where t2.name1=t1.name1 and t2.name2=t1.name2 and t1.id<t2.id)
[/Quote]
+3
lilin8905 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 leftie 的回复:]

select * from 表名 as t1
where not exists
(select * from 表名 as t2 where t2.name1=t1.name1 and t2.name2=t1.name2 and t1.id<t2.id)
[/Quote]
+2
Peter200694013 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 leftie 的回复:]
select * from 表名 as t1
where not exists
(select * from 表名 as t2 where t2.name1=t1.name1 and t2.name2=t1.name2 and t1.id<t2.id)
[/Quote]
+1
加载更多回复(2)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧