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

Nhiều số lượng trong một truy vấn SQL duy nhất

câu trả lời của @ VoteyDisciple đang đi đúng hướng, nhưng truy vấn của anh ấy cần một số cải tiến:

SELECT c.id, c.title,
    SUM(ts1.section_id = 1) AS doc1,
    SUM(ts1.section_id = 2) AS doc2,
    SUM(ts1.section_id = 3) AS doc3,
    SUM(ts1.section_id = 4) AS doc4
FROM category AS c
  LEFT JOIN category_link_section AS ts1
    ON (c.id = ts1.category_id)
GROUP BY c.id;

Giải thích:

  • IF() biểu thức là dư thừa vì đẳng thức đã trả về 1 hoặc 0.
  • Lấy ts1.section_id=1 ra khỏi điều kiện tham gia hoặc bạn sẽ không bao giờ nhận được section_id khác giá trị.
  • Nhóm theo c.id chỉ có. Tôi giả sử OP chỉ muốn một hàng cho mỗi danh mục và các cột cho số lượng của mỗi section_id giá trị cho danh mục tương ứng. Nếu truy vấn được nhóm theo c.id, ts1.section_id thì sẽ có tối đa bốn hàng cho mỗi danh mục.
  • Di chuyển dấu phẩy trong danh sách chọn. Dấu phẩy nổi ở đầu dòng trông xấu xí.;-)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao kết quả của `select 'a' =0;` 1?

  2. Docker php:5.6-Apache Development Environment thiếu quyền trên volume mount

  3. MySQL SELECT DISTINCT phải phân biệt chữ hoa chữ thường?

  4. Cảnh báo:mysql_num_rows () mong đợi tham số 1 là tài nguyên, đối tượng được cung cấp

  5. Hướng dẫn xếp hạng sao jquery bằng php và mysql