这是我的 table 。现在我必须找出每个 user_id 的最新 company_name。事实是,如果 exp_to 为 null 那么它将被认为是最新的,或者如果 exp_from 和 exp_to 都不为 null 那么我必须使用 exp_to date 找到最新的公司名称。请注意,user_id 在给定表中多次出现。
这是我想要的:
id | company_name
-----------------
14 | Deltalife Insurance Company Ltd.
1 | Orbital Software
25 | MMTV
18 | Noakhali Science & Technology University
等等…… 我怎样才能用mysql做到这一点?提前致谢。
最佳答案
这是一个非常简单的聚合问题。您可能已经发现,空值会导致 some interesting behavior在 SQL 中。您可以使用 CASE WHEN 检查 null 并替换为不同的值。
在你的情况下:
SELECT
data.*
FROM (
SELECT
*,
CASE WHEN exp_to is null THEN 1 ELSE exp_to END max_date
FROM your_table
) data
INNER JOIN (
SELECT
user_id,
CASE WHEN MAX(exp_to is null) = 1 THEN 1 ELSE MAX(exp_to) END max_date
FROM
your_table
GROUP BY user_id
) j
ON data.user_id = j.user_id AND data.max_date = j.max_date
希望这对您有所帮助,祝您好运!
关于Mysql查询使用日期获取最新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39426845/