sql >> Database teknologi >  >> RDS >> Mysql

MySQL union forespørgsel, rækkefølge efter 2 variabler

Hvad du virkelig skal gøre er at overveje dit skema mere omhyggeligt. Overvej at navngive dato og klokkeslætskolonner det samme og derefter køre en forespørgsel som denne - 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 violinen giver dette resultaterne tættere på det, du leder efter. Jeg er dog stadig ikke sikker på, hvorfor du har brug for INNER JOINS på den anden forespørgsel - der er intet, du laver her, som kræver dem.

Her er en anden metode, der ikke kræver en ændring af kolonnenavnene, men kræver et alias for de sorterbare kolonner - 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. MySQL-forespørgsel baseret på brugerinput

  2. Mysql viser tilfældige 4 brugere med mere end 5 artikler

  3. Fjern efterfølgende tom plads i et feltindhold

  4. Hvorfor er det indtastede nøgleord ikke gemt i databasen?