mysql - JOIN或UNION - 不确定哪个,也许两个

时间:2012-01-21 01:19:39

标签: mysql sql left-join

我想要合并来自两个文件的数据,但我无法表达排序。我想排序第一个文件的CREATED日期和第二个文件的SHARED_DATE(如果它存在且更大)。

    file 1 : NODE# 
    fields: CREATED, CHANGED

    file 2 : SHARE_CONTENT   
    fields:  SHARED_DATE ,  NODE# (foreign key)


select * from NODE as n left join SHARE_CONTENT as s on (s.NODE#=n.NODE#)
ORDER BY [higher of n.CREATED  and s.SHARED_DATE]

3 个答案:

答案 0 :(得分:1)

按LastDate排序

SELECT n.*,s.*,
(CASE WHEN n.CREATED > s.SHARED_DATE then n.CREATED else s.SHARED_DATE end) as LastDate
FROM node as n LEFT JOIN share_conten as s on (s.NODE#=n.NODE#)
ORDER BY LastDate DESC

答案 1 :(得分:0)

我的SQL技能有点生疏,但似乎你想在一个查询中组合这两个表,在匹配返回的行时显示所有信息?我认为这是一个完全的外部联盟。

以下是SQL joins

的精彩视觉参考

答案 2 :(得分:0)

你可以使用ORDER BY MAX(n.CREATED,s.SHARED_DATE);由FULL OUTER JOIN引入的NULLS将被MAX忽略(即任何东西的MAX和NULL就是那个东西)。