是否可以将多个查询合并为一个?
我有 2 个:
SELECT DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff
FROM Table
WHERE Color = 'Red'
和
SELECT DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff
FROM Table
WHERE Color = 'Blue'
现在我想在一个查询中同时进行
也可以这样尝试:
SELECT
(
SELECT DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff
FROM Table
WHERE Color = 'Red'
)
(
SELECT DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff2
FROM Table
WHERE Color = 'Blue'
)
但确实有效 :(
最佳答案
您可以使用带有 IN
运算符的单个查询。这是多个 OR
条件的缩写:
SELECT DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff
FROM Table
WHERE Color IN ( 'Red', 'Blue' )
如果你真的坚持(气馁)有两个查询,然后使用 UNION ALL
来组合它们:
SELECT DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff
FROM Table
WHERE Color = 'Red'
UNION ALL -- does not remove duplicates from output
SELECT DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff
FROM Table
WHERE Color = 'Blue'
如果要删除重复项,请使用 UNION
而不是 UNION ALL
。
如果您需要在评论中提到的不同列中产生结果,则为此使用 CASE
语句。不过,我真的没有看到这样做的原因。
SELECT
CASE WHEN Color = 'Red' THEN DATEDIFF(CURRENT_DATE, cl.updated_at) END AS Diff,
CASE WHEN Color = 'Blue' THEN DATEDIFF(CURRENT_DATE, cl.updated_at) END AS Diff2,
FROM Table
WHERE Color IN ( 'Red', 'Blue' )
对于第二种方法:
SELECT
CASE WHEN Color = 'Red' THEN Diff END AS Diff,
CASE WHEN Color = 'Blue' THEN Diff END AS Diff2
FROM (
SELECT Color, DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff
FROM Table
WHERE Color = 'Red'
UNION ALL -- does not remove duplicates from output
SELECT Color, DATEDIFF(CURRENT_DATE, cl.updated_at) AS Diff
FROM Table
WHERE Color = 'Blue'
) t
关于mysql - 将多个查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50896389/