MySQL: Bagaimana cara memilih nilai berbeda dari tabel?

Saya memiliki tabel besar dengan banyak baris dan kolom, tetapi saya hanya akan menjelaskan yang penting saja:

+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| id        | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name      | varchar(255)     | NO   |     | NULL    |                |
| artikel   | int(10) unsigned | NO   | IDX | NULL    |                |
| color     | varchar(255)     | NO   |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+

Contoh datanya:

 1    apple        1000      red
 2    apple        1000      yellow
 3    lemon        2000      blue
 4    lem on       2000      green
 5    lemon        2000      black
 6    apple        1000      white
 7    cherry       3000      lime
 8    cherry       3000      pink
 9    lemon        2000      silver
10    apple        1000      gold

Seperti yang Anda lihat, indeks ada di artikel, setiap artikel memiliki beberapa name (untuk setiap artikel ada name yang sama) dan color yang berbeda. Semuanya OK, tapi baris 4 ada masalah, ada yang salah name = lem on, seharusnya lemon.

Saya ingin memilih baris ini (GROUP BY artikel), di mana tidak ada name yang unik, tetapi HAVING COUNT(name) > 1. Jadi pilihan saya akan mengembalikan satu baris, dimana akan menjadi artikel = 2000.

Saya mencoba HAVING, DISTINCT, tetapi tidak berhasil.

Bagaimana cara melakukan hal tersebut?


person Legionar    schedule 25.03.2015    source sumber


Jawaban (1)


Gunakan group by dan having:

select artikel
from exampledata
group by artikel
having min(name) <> max(name);

Anda juga dapat menggunakan count(distinct) di klausa having. Namun count(distinct) biasanya memerlukan lebih banyak pekerjaan daripada sekadar membandingkan nilai minimum dan maksimum.

person Gordon Linoff    schedule 25.03.2015