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

Bảng xoay vòng chỉ trả về 1 hàng

Thứ nhất:bạn có hai thuộc tính cho cùng một product_id =1, hãy thay đổi bảng product_attributes theo cách này -

INSERT INTO `product_attributes` (`product_id`,`type`,`value`) VALUES
  (1,1,'blue'),
  (1,2,'shirt'),
  (2,1,'green'),
  (2,2,'pants');

Sau đó, hãy thử cái này -

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(pat.name = ''', name, ''', pa.value, NULL)) AS ', name
    )
  ) INTO @sql
FROM product_attribute_types;

SET @sql = CONCAT('SELECT pa.product_id, ', @sql, ' FROM product_attributes pa INNER JOIN product_attribute_types pat ON pa.type = pat.id GROUP BY pa.product_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Kết quả:

+------------+-------+-------+
| product_id | color | name  |
+------------+-------+-------+
|          1 | blue  | shirt |
|          2 | green | pants |
+------------+-------+-------+

Thêm bộ lọc WHERE nếu cần.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mã hóa chuỗi thử thách trong Python

  2. Cách lặp lại tiêu đề cột bảng trong mỗi trang

  3. Quầy khách Laravel

  4. Class.forName (com.mysql.jdbc.Driver) không tìm kiếm trong tệp jar cho lớp

  5. Làm thế nào để so sánh một ngày từ mySQL với ngày hiện tại trong java?