Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
mySQL查询——按日期排序_Mysql_Sql_Union - Fatal编程技术网

mySQL查询——按日期排序

mySQL查询——按日期排序,mysql,sql,union,Mysql,Sql,Union,我正在合并两个表,每个表都有不同的事件数据。每个表都有事件的日期 如何组合这些事件以按日期无缝排序 SELECT t1.eventName, t1.eventTime, t2.evntName, t2.evntTime FROM t1 LEFT JOIN t2 ON (t1.eventID = t2.eventID) ORDER BY ??? DESC LIMIT 10 不是100%确定您在这里想要做什么,但可能是: ORDER BY GREATEST(t1.e

我正在合并两个表,每个表都有不同的事件数据。每个表都有事件的日期

如何组合这些事件以按日期无缝排序

SELECT 
   t1.eventName, 
   t1.eventTime, 
   t2.evntName, 
   t2.evntTime
FROM t1
LEFT JOIN t2 ON (t1.eventID = t2.eventID)
ORDER BY ??? DESC
LIMIT 10

不是100%确定您在这里想要做什么,但可能是:

ORDER BY GREATEST(t1.eventTime, t2.eventTime) DESC
预计到达时间:

看起来您无法直接将日期与最大日期进行比较,因此您可能需要执行以下操作:

ORDER BY GREATEST(UNIX_TIMESTAMP(t1.eventTime), UNIX_TIMESTAMP(t2.eventTime)) DESC

不是100%确定您在这里想要做什么,但可能是:

ORDER BY GREATEST(t1.eventTime, t2.eventTime) DESC
预计到达时间:

看起来您无法直接将日期与最大日期进行比较,因此您可能需要执行以下操作:

ORDER BY GREATEST(UNIX_TIMESTAMP(t1.eventTime), UNIX_TIMESTAMP(t2.eventTime)) DESC

您正在联接表,这将导致两个表的记录合并在一行中。如果您真的想这样合并表,您必须做的是联合查询。大概是这样的:

SELECT eventName, eventTime FROM (
    SELECT eventName, eventTime
    FROM t1

    UNION

    SELECT eventName, eventTime
    FROM t2
)
ORDER BY eventTime
因此,将两个表的结果合并到子查询中,然后对其进行排序


祝你好运

您正在加入表,这将导致两个表的记录合并在一行中。如果您真的想这样合并表,您必须做的是联合查询。大概是这样的:

SELECT eventName, eventTime FROM (
    SELECT eventName, eventTime
    FROM t1

    UNION

    SELECT eventName, eventTime
    FROM t2
)
ORDER BY eventTime
因此,将两个表的结果合并到子查询中,然后对其进行排序


祝你好运

@冈萨洛离这里很近,但不太近。您需要将每个表放入子查询中,并在最终结果中为所需的每个列别名。如果一个表没有您需要从另一个表中获取的列,请使用文字并为其别名

(SELECT eventName, eventTime, foo FROM t1)
UNION ALL
(SELECT evntName AS eventName, evntTime AS eventTime, NULL AS foo FROM t2)
ORDER BY eventTime DESC

将WHERE子句放入子查询中。

@Gonzalo很接近,但不太接近。您需要将每个表放入子查询中,并在最终结果中为所需的每个列别名。如果一个表没有您需要从另一个表中获取的列,请使用文字并为其别名

(SELECT eventName, eventTime, foo FROM t1)
UNION ALL
(SELECT evntName AS eventName, evntTime AS eventTime, NULL AS foo FROM t2)
ORDER BY eventTime DESC

将WHERE子句放在子查询中。

什么id时间标签不同?另外,我需要将它们放在一行中。我使用一个表来获取事件的id,然后从其他表中提取部分来构建一个要显示的字符串。id时间标签有什么不同?而且,我需要将它们放在一行中。我使用一个表来获取事件的ID,然后从其他表中提取部分来构建要显示的字符串。这看起来很有趣,但我一直在获取错误函数myDb.magest不存在。。。我用的是MySQL 5.0.77…@santa-很有趣,不知道为什么这样不行。函数应该存在:可能是因为我在比较日期和时间吗?手册中还显示了用于选择的信息;不确定我是否得到了错误,因为我试图按顺序使用它…@圣诞老人-那可能是。用另一个选项编辑了我的答案在比较之前将日期转换为时间戳这看起来很有趣,但我一直得到错误函数myDb.GREATEST不存在。。。我用的是MySQL 5.0.77…@santa-很有趣,不知道为什么这样不行。函数应该存在:可能是因为我在比较日期和时间吗?手册中还显示了用于选择的信息;不确定我是否得到了错误,因为我试图按顺序使用它…@圣诞老人-那可能是。使用另一个选项编辑我的答案在比较之前将日期转换为时间戳