我有一个联合查询来从两个表中获取最大日期记录
SELECT
id,
MAX(mx) AS max_date,
`assigned_user_id`
FROM (SELECT
id,
MAX(date_due) AS mx,
`assigned_user_id`
FROM tasks
WHERE `deleted` = 0
AND `parent_id` = 'aa6f0330-7a17-572f-94b5-4a5db1a1201f'
AND `parent_type` = 'Accounts'
AND date_due >= CURDATE() UNION SELECT
id,
MAX(date_start) AS mx,
`assigned_user_id`
FROM calls
WHERE `deleted` = 0
AND `account_id` = 'aa6f0330-7a17-572f-94b5-4a5db1a1201f'
AND date_start >= CURDATE()) s
这会查看调用和任务并获取未来调用或任务,但是当我运行此操作并且我有一个未来调用且任务较旧时,我在id
和{{1}中获得NULL }} 列。我如何获取MAX日期记录的整个信息。
当我运行单个查询时,第一个获取为空,而第二个中为记录。
答案 0 :(得分:1)
也许我误解了这个问题,或者我错过了一些东西 - 在这种情况下,请给我发表评论让我知道,我可以完全删除这篇文章。
但是,我理解你所写的内容的方式,你想:
tasks
和parent_id
以及具有最新parent_type
值 date_due >= CURDATE()
表中获取相同类型的记录(使用date_due
代替calls
)。date_start
,日期(date_due
)和id
。您的查询(和子查询)可以按降序排序,只获取第一条记录。
我在想这样的事情......
max_date
答案 1 :(得分:0)
使用UNION ALL
。要允许重复值,请将ALL
关键字与UNION
一起使用。
答案 2 :(得分:0)
从
中选择Max(max_date)(SELECT
ID,
MAX(mx)AS max_date,
assigned_user_id
从
(选择
ID,
MAX(date_due)AS mx,
assigned_user_id
从任务
WHERE deleted
= 0
AND parent_id
='aa6f0330-7a17-572f-94b5-4a5db1a1201f'
和parent_type
='帐户'
AND date_due> = CURDATE()按ID UNION SELECT分组
ID,
MAX(date_start)AS mx,
assigned_user_id
来自电话
WHERE deleted
= 0
AND account_id
='aa6f0330-7a17-572f-94b5-4a5db1a1201f'
AND date_start> = CURDATE())s group by id)
as temp