Heim > Fragen und Antworten > Hauptteil
Ich habe einen Zahlungsbeleg. Es gibt eine Spalte mit den Namen user_id und payment_type. Für jede Zahlung können Benutzer mehrere Zahlungsarten haben. Ich möchte Benutzer finden, die in ihrem Leben nur einen Zahlungstyp verwendet haben.
Lassen Sie es mich anhand eines Beispiels klar erklären: Nehmen wir an, ich habe folgende Daten:
user_id payment_type 1 UPI 1 NB 2 UPI 2 UPI
Für das Obige möchte ich nur user_id
2 als Ausgabe, da für diese beiden Zahlungen nur 1 Zahlungstyp verwendet wird.
Kann jemand helfen?
P粉3373859222024-02-04 21:29:33
一个简单的 HAVING 和 COUNT 应该可以解决问题:
select user_id from my_table group by user_id having count(distinct payment_type)=1;
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=65f673a7df3ac0ee18c13105a2ec17ad一个>
如果您想在结果集中包含 payment_type,请使用:
select my.user_id,my.payment_type from my_table my inner join ( select user_id from my_table group by user_id having count(distinct payment_type)=1 ) as t1 on t1.user_id=my.user_id group by my.user_id,my.payment_type ;
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=cc4704c9e51d01e4e8fc087702edbe6e 一个>