我正在尝试创建符合以下内容的输出:
days_since, item_count
7, 0
30, 1
90, 2
我想提供值days_since
作为列表,例如:
SELECT d.days, d.item_count
FROM (
VALUES (7, 0), (30, 1), (90, 2)
) d (days, item_count)
除了item_count
我需要days
用作对某些条件(is_a_thing
)的结果进行计数的查询的一部分外,例如:
SELECT COUNT(CASE WHEN is_a_thing THEN 1 END) AS item_count
FROM items
WHERE created >= CURRENT_DATE - 30
但是比较日期(此处为30)应该days
来自列表。
不幸的是,我不确定如何加入VALUES
,SELECT
并能够在后者中使用前者。
MySQL不支持该语法(即,您不能使用来创建派生表VALUES()
。
最新版本具有以下VALUES(ROW ...)
语法:
SELECT d.days, d.item_count
FROM (VALUES ROW(7, 0), ROW(30, 1), ROW(90, 2)) d (days, item_count)
在早期版本中,我们必须重新排序UNION ALL
:
SELECT d.days, d.item_count
FROM (
SELECT 7 days, 0 item_count
UNION ALL SELECT 30, 1
UNION ALL SELECT 90, 2
) d
我怀疑您想要的查询是:
SELECT d.days, SUM(CASE WHEN is_a_thing THEN 1 ELSE 0 END)item_count
FROM (VALUES ROW(7), ROW(30), ROW(90)) d (days)
LEFT JOIN items i
ON i.created >= CURRENT_DATE - INTERVAL d.days
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句