Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在左+右联合联接表中按日期排序_Sql_Sorting_Join - Fatal编程技术网

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中非常不在行我知道这很简单。。。非常感谢,工作起来很有魅力!是的,我得到的结果对我来说是有意义的,我只是不知道如何得到我想要的结果!