Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL:hapus nilai duplikat dari pilihan berdasarkan 2 bidang

Untuk pertanyaan khusus ini max(language) harus bekerja karena d lebih kecil dari e.

EDIT (Solusi yang tidak akan rusak):

Tambahkan max(case language when 'default' then 0 else 1 end)

Sunting2 (Bahkan lebih baik):

Tambahkan max(case language when 'english' then 1 else 0 end) jadi Anda bahkan tidak akan mendapatkan nilai duplikat jika Anda menambahkan lebih banyak bahasa ke in() bagian

EDIT No. 2:

Seperti yang saya janjikan, inilah saya dengan pikiran baru di senin pagi dan mendapatkan pertanyaan yang tepat untuk kebutuhan Anda :-)

Coba

SELECT value,
       CASE group_concat(language)
         WHEN 'default' then 'default'
         ELSE LTRIM(REPLACE(group_concat(language SEPARATOR ' '),'default',''))
       END as language,
       externID
FROM demo
WHERE externID = 10
AND   language in ('default','english')
GROUP BY value;

Penjelasan:GROUP_CONCAT dan LTRIM




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat kolom jumlah kumulatif di MySQL

  2. Menemukan id berikutnya yang tersedia di MySQL

  3. Optimasi Kinerja Kueri di MySQL

  4. Bagaimana cara mengaktifkan ekstensi mysql php di wadah buruh pelabuhan?

  5. ON DUPLICATE KEY UPDATE dengan kondisi WHERE