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

MYSQL:CHỌN tổng các giá trị trường đồng thời CHỌN các giá trị duy nhất?

Nếu tôi hiểu đúng thì did_i_buy cột có nghĩa là "Tom đã mua". Bạn có thể làm như thế này:

SELECT
  Items.item_id,
  item_name,
  COUNT(CASE WHEN purchase_status='bought' THEN 1 END) as number_bought,
  MAX(CASE WHEN purchase_status='bought' AND user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
GROUP BY Items.item_id

Ngoài ra (một CASE tuyên bố, xem nhận xét bên dưới)

SELECT
  Items.item_id,
  item_name,
  COUNT(purchase_status='bought') as number_bought,
  MAX(CASE WHEN user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
WHERE purchase_status='bought'
GROUP BY Items.item_id

Và một tinh chỉnh nữa:WHERE mệnh đề COUNT sẽ chỉ xem các hàng mà purchase_status='bought' , vì vậy có thể bỏ qua biểu thức kiểm tra trạng thái (thay đổi duy nhất ở trên là ở dòng 4):

SELECT
  Items.item_id,
  item_name,
  COUNT(*) as number_bought,
  MAX(CASE WHEN user_name='Tom' THEN 'yes' ELSE 'no' END) AS did_i_buy
FROM Purchases
JOIN Items ON Purchases.item_id=Items.item_id
WHERE purchase_status='bought'
GROUP BY Items.item_id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tối ưu hóa hàm ORDER BY RAND () của MySQL?

  2. Tôi cần kết quả mysql đặt hàng bất thường

  3. máy chủ php ERR_CONNECTION_REFUSED

  4. Không tìm thấy cột Doctrine:1054 Cột không xác định 's.features' trong 'danh sách trường' '

  5. Python:Chuyển đổi tuple thành Chuỗi được phân tách bằng dấu phẩy