我有两个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