sql >> Databasteknik >  >> RDS >> Mysql

MySQL unionsfråga, ordning efter 2 variabler

Vad du verkligen behöver göra är att överväga ditt schema mer noggrant. Överväg att namnge datum- och tidskolumnerna på samma sätt och sedan köra en fråga som denna - 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

I SQL-fiolen ger detta resultaten närmare det du letar efter. Jag är fortfarande inte säker på varför du behöver INNER JOINS på den andra frågan - det finns inget du gör här som kräver dem.

Här är en annan metod som inte kräver en ändring av kolumnnamnen, utan kräver ett alias för de sorterbara kolumnerna - 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. PHP PDF-genereringsproblem

  2. Unicode-normalisering i PostgreSQL 13

  3. Är hakparenteser giltiga i en SQL-fråga?

  4. ActiveModel::MissingAttributeError:kan inte skriva okänt attribut `user_id`