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

Câu lệnh truy vấn SQL

SELECT sid, 'Math' as subject, math as mark
FROM your_table
UNION ALL
SELECT sid, 'English' as subject, english as mark
FROM your_table
UNION ALL
SELECT sid, 'French' as subject, french as mark
FROM your_table

Nhưng nguyên nhân gốc rễ của vấn đề của bạn là một thiết kế cơ sở dữ liệu sai. Những chủ đề đó ngay từ đầu không nên là cột và nên được lưu trữ trong một bảng giống như kết quả mong muốn của bạn.

Chỉnh sửa

Vậy nó làm gì?

SELECT sid, 'Math' as subject, math as mark
FROM your_table

Trả về sid , một cột "ảo" có giá trị được mã hóa cứng 'Math' được đặt tên subject . Vì bạn chưa lưu trữ giá trị 'Math' ở đâu đó, điều này phải được mã hóa cứng. Sau đó, cuối cùng nó cũng chọn cột math sử dụng tên mark thay vì. Lưu ý sự khác biệt giữa math'Math' - một là cột, còn lại là một chuỗi ký tự do các dấu nháy đơn.

Điều này được thực hiện cho cả ba môn học (nếu bạn có bốn môn học, bạn cần bốn phần trong UNION)

UNION ALL kết hợp cả ba lựa chọn vào một truy vấn duy nhất. giải pháp andr (đã bị phản đối bởi một người không hiểu nó) làm cho điều này trở nên rõ ràng hơn bằng cách đưa rõ ràng nó vào một bảng dẫn xuất (hoặc chế độ xem nội tuyến).

Tự chạy từng phím CHỌN để xem các bộ phận riêng lẻ đang làm gì.

Phần as mark được gọi là "bí danh cột" và cũng có thể được sử dụng để truy xuất các cột có cùng tên từ các bảng khác nhau trong một phép nối và vẫn có tên duy nhất trong tập kết quả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để truy vấn trường ngày tháng so với trường ngày là gì?

  2. Lớp đăng nhập PHP

  3. Tạo Id tiếp theo theo id tối đa trong cơ sở dữ liệu bằng Java

  4. Kết nối với Cơ sở dữ liệu Perl

  5. Làm cách nào để hàm SUM trong MySQL trả về '0' nếu không tìm thấy giá trị nào?