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

Truy vấn liên hợp MySQL, sắp xếp theo 2 biến

Những gì bạn thực sự cần làm là xem xét lược đồ của mình một cách cẩn thận hơn. Cân nhắc đặt tên các cột ngày giờ giống nhau và sau đó chạy một truy vấn như sau - http:/ /sqlfiddle.com/#!2/a3b4c/7/0

SELECT selection, id, datetimefoo, user FROM (
  SELECT 
    1 AS selection, 
    table1.id, table1.datetimefoo, 
    table3.user 
    FROM table1 
    LEFT OUTER JOIN table2 
    ON table1.id = table2.table1id
    LEFT OUTER JOIN table3
    ON table1.id = table3.id


  UNION

  SELECT 
    2 AS selection, 
    table1.id, table1.datetimefoo, 
    table3.user 
    FROM table1 
    INNER JOIN table2 
    ON table1.id = table2.table1id
    INNER JOIN table3
    ON table1.id = table3.id

  ) AS T2
ORDER BY datetimefoo DESC

Trong SQL fiddle, điều này tạo ra kết quả gần hơn với những gì bạn đang tìm kiếm. Mặc dù vậy, tôi vẫn không chắc tại sao bạn lại cần INNER JOINS - không có gì mà bạn đang làm ở đây mà lại yêu cầu chúng.

Đây là một phương pháp khác không yêu cầu thay đổi tên cột, nhưng yêu cầu bí danh cho các cột có thể sắp xếp - http://sqlfiddle.com/#!2/ec4bc/3/0

SELECT * FROM (
  SELECT 
    1 AS selection, 
    table1.id, table1.datetimefoo AS sort_date, -- alias on first table's date
    table2.datetimebar,
    table3.user 
    FROM table1 
    LEFT OUTER JOIN table2 
    ON table1.id = table2.table1id
    LEFT OUTER JOIN table3
    ON table1.id = table3.id


  UNION

  SELECT 
    2 AS selection, 
    table1.id, table1.datetimefoo,
    table2.datetimebar AS sort_date, -- alias on second table's date
    table3.user 
    FROM table1 
    INNER JOIN table2 
    ON table1.id = table2.table1id
    INNER JOIN table3
    ON table1.id = table3.id

  ) AS T2
ORDER BY sort_date DESC


  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ìm nạp dữ liệu bảng với một truy vấn

  2. mã hóa json ký hiệu €

  3. MySQL có ghi đè lên một cột có cùng giá trị khi cập nhật không?

  4. WorkbenchJ - Lỗi:không được phép tổng hợp trong mệnh đề GROUP BY

  5. Mysql_real_escape_string () có bảo vệ HOÀN TOÀN khỏi SQL injection không?