Sql 在左+右联合联接表中按日期排序
我有两个表,其中包含大量相同的数据,用于以两种语言制作名片 据我所知,我模拟完全外部联接,进行左联合右联接,以并排显示数据,便于复制Sql 在左+右联合联接表中按日期排序,sql,sorting,join,Sql,Sorting,Join,我有两个表,其中包含大量相同的数据,用于以两种语言制作名片 据我所知,我模拟完全外部联接,进行左联合右联接,以并排显示数据,便于复制 table a has data in language1 table b has data in language2 并不是每个人都同时拥有language1和language2数据,所以只有language1或language2 我会这样做: SELECT <long list of selected rows from table a and tab
table a has data in language1
table b has data in language2
并不是每个人都同时拥有language1和language2数据,所以只有language1或language2
我会这样做:
SELECT
<long list of selected rows from table a and table b as afiled,bfield>
FROM tablelanguage1 a
LEFT JOIN tablelanguage2 b
ON a.email=b.email
UNION
SELECT<long list of selected rows from table a and table b as afiled,bfield>
FROM tablelanguage1 a
RIGHT JOIN tablelanguage2 b
ON b.email = a.email
ORDER BY adatetime DESC, bdatetime DESC
这显示了我需要的所有内容,但我在排序方面遇到了问题:它正确地显示了除language2之外的所有内容。仅限Language2表格b条目始终是最后一个条目,即使日期晚于language1+Language2或仅限language1条目中的某些条目
在这种情况下,有没有关于如何正确地进行代码排序的建议?非常感谢 您可以使用合并功能解决此问题:
ORDER BY COALESCE(adatetime,bdatetime) DESC
COALESCE返回集合中的第一个非空值。您得到的结果是有意义的,因为对于所有那些“language2 only”记录,adatetime为空。ORDER BY中的多个字段被视为继承人,因此所有这些空值都被排序在一起,然后它将考虑bdatetime值。COALESCE将按填充的日期对所有记录进行排序,而不是先一个再另一个。您使用的是哪种RDBMS?为什么要模拟完全连接而不是使用完全连接?使用libmysql-5.5.31。模拟原因是它在完全连接时给了我“无法解析查询”和yeeeeeah,我在sql Stuff中非常不在行我知道这很简单。。。非常感谢,工作起来很有魅力!是的,我得到的结果对我来说是有意义的,我只是不知道如何得到我想要的结果!