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

MySQL nhận các hàng nhưng thích một giá trị cột hơn giá trị khác

Điều này nên làm điều đó:

SELECT
     T1.id,
     T1.name,
     T1.value,
     T1.priority
FROM
     My_Table T1
LEFT OUTER JOIN My_Table T2 ON
     T2.name = T1.name AND
     T2.priority > COALESCE(T1.priority, -1)
WHERE
     T2.id IS NULL

Điều này cũng cho phép bạn có nhiều mức ưu tiên với mức cao nhất là mức bạn muốn trả lại (nếu bạn có 1 và 2, thì mức 2 sẽ được trả lại).

Tôi cũng sẽ nói rằng có vẻ như có một số vấn đề thiết kế trong DB. Cách tiếp cận của tôi sẽ là:

My_Table (id, tên) My_Values ​​(id, ưu tiên, giá trị) với một FK trên id đến id. PK trên id trong My_Table và id, ưu tiên trong My_Values. Tất nhiên, tôi cũng sẽ sử dụng các tên bảng thích hợp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa kết quả lặp lại khỏi truy vấn MySQL

  2. Đếm các chữ cái viết hoa trong chuỗi

  3. Cách cung cấp kết nối cơ sở dữ liệu mysql trong một tệp duy nhất trong nodejs

  4. Làm cách nào để đặt AUTO_INCREMENT trong Laravel với Eloquent?

  5. Lỗi kết nối MySQL mà tôi chưa từng thấy