mySQL 仅返回 1 个结果的情况
mySQL case when only returning 1 result
不知道为什么只返回第一个结果。日期是日期格式而不是日期时间。我只是从使用 ORACLE 开始使用 MySQL,这让我很头疼。
SELECT *,
CASE d_date
WHEN max(d_date) THEN 'Today'
WHEN date_add(max(d_date), interval -1 day) THEN 'Yesterday'
ELSE 'other'
END dateID
FROM mike.Tble
当像 MAX 这样的聚合函数使用它时 returns 具有最大值的单条记录。因此我的理解需要一个子查询。我找不到如何针对大记录优化此查询,但我有以下内容并让我们针对大记录优化此查询。
set @today = (SELECT max(d_date) FROM mike.Tble);
set @yesterday = (SELECT date_add(max(d_date), interval -1 day) FROM mike.Tble);
SELECT *, CASE d_date
WHEN @today THEN 'Today'
WHEN @yesterday THEN 'Yesterday'
ELSE 'other'
END AS dateID
FROM mike.Tble
注意:我编辑了查询,它的性能比上次查询更好
不知道为什么只返回第一个结果。日期是日期格式而不是日期时间。我只是从使用 ORACLE 开始使用 MySQL,这让我很头疼。
SELECT *,
CASE d_date
WHEN max(d_date) THEN 'Today'
WHEN date_add(max(d_date), interval -1 day) THEN 'Yesterday'
ELSE 'other'
END dateID
FROM mike.Tble
当像 MAX 这样的聚合函数使用它时 returns 具有最大值的单条记录。因此我的理解需要一个子查询。我找不到如何针对大记录优化此查询,但我有以下内容并让我们针对大记录优化此查询。
set @today = (SELECT max(d_date) FROM mike.Tble);
set @yesterday = (SELECT date_add(max(d_date), interval -1 day) FROM mike.Tble);
SELECT *, CASE d_date
WHEN @today THEN 'Today'
WHEN @yesterday THEN 'Yesterday'
ELSE 'other'
END AS dateID
FROM mike.Tble
注意:我编辑了查询,它的性能比上次查询更好