SQL-选择两列中具有相同值的行
该主题的解决方案使我不知所措。
我有一个看起来像的表格(除与我的问题无关的其他字段之外):
名称,卡号,会员类型
现在,我想要一个显示卡号和成员类型相同的行的视图。这两个字段都是整数。名称为VARCHAR。名称不是唯一的,并且相同的名称也应显示重复的卡号,会员类型。
即,如果下表是表格:
JOHN | 324 | 2PETER | 642 | 1
MARK | 324 | 2
DIANNA | 753 | 2
SPIDERMAN | 642 | 1
JAMIE FOXX | 235 | 6
我想要:
JOHN | 324 | 2MARK | 324 | 2
PETER | 642 | 1
SPIDERMAN | 642 | 1
只需按卡号排序即可使其对人类有用。
最有效的方法是什么?
回答:
由于您提到的名称可以重复,并且重复的名称仍然表示另一个人,并且应该显示在结果集中,因此我们需要使用GROUP BY HAVING COUNT(*)>
1来真正检测重复。然后将其返回主表以获取完整的结果列表。
另外,由于您的评论听起来像是将其包装到视图中,因此您需要将子查询分开。
CREATE VIEW DUP_CARDSAS
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小提琴示例
以上是 SQL-选择两列中具有相同值的行 的全部内容, 来源链接: utcz.com/qa/402028.html