该主题的解决方案使我不知所措。
我有一个看起来像的表格(除与我的问题无关的其他字段之外):
名称,卡号,会员类型
现在,我想要一个显示卡号和成员类型相同的行的视图。这两个字段都是整数。名称为VARCHAR。名称不是唯一的,并且相同的名称也应显示重复的卡号,会员类型。
即,如果下表是表格:
JOHN | 324 | 2 PETER | 642 | 1 MARK | 324 | 2 DIANNA | 753 | 2 SPIDERMAN | 642 | 1 JAMIE FOXX | 235 | 6
我想要:
JOHN | 324 | 2 MARK | 324 | 2 PETER | 642 | 1 SPIDERMAN | 642 | 1
只需按卡号排序即可使其对人类有用。
最有效的方法是什么?
由于您提到的名称可以重复,并且重复的名称仍然表示另一个人,并且应该显示在结果集中,因此我们需要使用GROUP BY HAVING COUNT(*)> 1来真正检测重复。然后将其返回主表以获取完整的结果列表。
另外,由于您的评论听起来像是将其包装到视图中,因此您需要将子查询分开。
CREATE VIEW DUP_CARDS AS SELECT CARDNUMBER, MEMBERTYPE FROM mytable t2 GROUP BY CARDNUMBER, MEMBERTYPE HAVING COUNT(*) > 1 CREATE VIEW DUP_ROWS AS SELECT t1.* FROM mytable AS t1 INNER JOIN DUP_CARDS AS DUP ON (T1.CARDNUMBER = DUP.CARDNUMBER AND T1.MEMBERTYPE = DUP.MEMBERTYPE )
SQL小提琴示例