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

CHỌN nội dung của Bảng, là kết quả của một giá trị khác

sử dụng CASE WHEN:

SELECT *, (
    SELECT `TableName` FROM `TableNames` WHERE `TableID`=`IndexType`
) AS `IndexTypeName`, 
CASE 
    WHEN IndexType=1 THEN (SELECT Username FROM Users WHERE IndexRowID=UserID) 
    WHEN IndexType=2 THEN (SELECT MessageContent FROM Messages WHERE IndexRowID=MessageID) 
    WHEN IndexType=3 THEN (SELECT CommentContent FROM Comments WHERE IndexRowID=CommentID) END TableValue
ORDER BY `IndexTime` DESC;

Giải pháp tốt hơn là đặt dữ liệu từ các bảng khác nhau đó vào một bảng và sử dụng typeid để phân tách chúng




  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ó cách nào [đơn giản] để sắp xếp các kết quả * đầu tiên *, * sau đó * nhóm theo cột khác, với SQL không?

  2. MySQL đầy đủ có gốc

  3. Cách tốt nhất để xử lý việc lưu trữ / hiển thị ngày tháng ở các múi giờ khác nhau trong PHP?

  4. Làm cách nào để tạo và lưu trữ mật khẩu md5 trong mysql

  5. Codeigniter, mysql, select_max và thêm 1 trước khi chèn một bản ghi khác