Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL:loại bỏ các giá trị trùng lặp khỏi một lựa chọn dựa trên 2 trường

Đối với câu hỏi cụ thể này max(language) nên hoạt động vì d nhỏ hơn e.

CHỈNH SỬA (Sự cẩn thận sẽ không bị vỡ):

Thêm max(case language when 'default' then 0 else 1 end)

Edit2 (Thậm chí tốt hơn):

Thêm max(case language when 'english' then 1 else 0 end) vì vậy bạn thậm chí sẽ không nhận được các giá trị trùng lặp nếu bạn thêm nhiều ngôn ngữ hơn vào in() của mình phần

CHỈNH SỬA Nr. 2:

Như tôi đã hứa, tôi ở đây với một tâm trí mới vào thứ hai và có truy vấn phù hợp với nhu cầu của bạn :-)

Hãy thử

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;

Giải thích: GROUP_CONCAT 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. Giá trị null của PHP không bằng giá trị null của MySQL?

  2. CodeIgniter / PHP / MySQL:Truy xuất dữ liệu bằng JOIN

  3. Chuyển ứng dụng Ruby / Rails / MRI sang JRuby

  4. Tự động hóa triển khai cơ sở dữ liệu MySQL

  5. Sự khác biệt giữa CASE và IF trong mysql là gì