我有兩個MySQL查詢從幾乎相同的查詢中查找MAX()值。我希望有一種方法可以將查詢結合起來以獲得更好的性能。結合想要不同過濾的最大值的sql查詢
SELECT name, MAX(version) AS highest
FROM publish
WHERE name IN ('alpha', 'beta') AND deprecated = TRUE
GROUP BY name;
SELECT name, MAX(version) AS closed
FROM publish
WHERE name IN ('alpha', 'beta') AND open = FALSE
GROUP BY name;
該模式非常簡單。對於這個簡單的例子,它看起來像
CREATE TABLE publish
(
name CHAR(36) NOT NULL,
version INT NOT NULL,
deprecated TINYINT NOT NULL,
open TINYINT DEFAULT 0 NOT NULL,
PRIMARY KEY (name, version),
);
CREATE INDEX open ON publish (open);
CREATE INDEX deprecated ON publish (deprecated);
這正是我對這個問題的想法,我只是不知道「CASE」語法存在。 – 2014-09-29 18:19:43