SQL-选择两列中具有相同值的行

该主题的解决方案使我不知所措。

我有一个看起来像的表格(除与我的问题无关的其他字段之外):

名称,卡号,会员类型

现在,我想要一个显示卡号和成员类型相同的行的视图。这两个字段都是整数。名称为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小提琴示例

以上是 SQL-选择两列中具有相同值的行 的全部内容, 来源链接: utcz.com/qa/402028.html

回到顶部