我想检索没有重复记录的数据..问题是重复的记录在所有列中都有类似的值,除了一个名为seq_id的特定列,所以我不能使用distinct ...我的select必须有seq_id ... this是代码
SELECT x.seq_id,
y.name,
x.user,
x.time_1,
y.acc_num
FROM table1 y,
table2 x
WHERE y.c_id=x.m_id;
结果如下所示
╔════════════════════════════════════════════════════╗
║ Seq_id |name |user |time |acc_n ║
╠════════════════════════════════════════════════════╣
║ 100 jim. Ali. 10:11:30 0098 ║
║ 101 jim. Ali. 10:11:30 0098 ║
║ 102 john sam 04:19:30 0097 ║
╚════════════════════════════════════════════════════╝
我希望它像
╔═════════════════════════════════════════╗
║ Seq_id |name |user |time |acc_n ║
╠═════════════════════════════════════════╣
║ 100 jim. Ali. 10:11:30 0098 ║
║ 102 john sam 04:19:30 0097 ║
╚═════════════════════════════════════════╝
答案 0 :(得分:5)
"选择哪个[seq_id]并不重要..我只想要其中一个"
在这种情况下,简单聚合将为您解决此问题。
SELECT min(x.seq_id) as seq_id,
y.name,
x.user,
x.time_1,
y.acc_num
FROM table1 y,
table2 x
WHERE y.c_id=x.m_id
group by y.name,
x.user,
x.time_1,
y.acc_num;
答案 1 :(得分:1)
首先,请避免使用旧的连接语法。请改用INNER JOIN
。
现在除了APC的答案之外,您还可以使用分析功能来实现相同的目标。
Select * from
(SELECT x.seq_id,
y.name,
x.user,
x.time_1,
y.acc_num,
Row_number() over (partition by
y.name, x.user, x.time_1,y.acc_num
order by x.seq_id) as rno
FROM
table1 y
INNER JOIN
table2 x
ON y.c_id=x.m_id
) where rno=1