0

我正在努力应对以下情况:

我有一个用户表,其中包含插件的作者。我有一个插件表,其中包含插件(名称和 ID)。我也有一个版本表。此版本表包含已发布插件的所有版本,例如 1.0、1.1 等。现在版本记录还包含 mcversions,这是插件所针对的引擎的版本。

这是我提出的查询:

SELECT
`plugins`.`name`,
users.username,
versions.version,
mcversions.version
FROM
users
INNER JOIN `plugins` ON `plugins`.author = users.id
INNER JOIN versions ON versions.id = `plugins`.id AND versions.time
INNER JOIN mcversions ON versions.mcversion = mcversions.id

现在有一个问题:我只想获取版本和属于versions.time最高的版本的mcversion(它是一个时间戳)。所以我想要一个插件列表,其中包含名称、作者、最新版本和最新版本的 mcversion。

任何人都可以帮助我,我会很高兴!

~巴斯

4

1 回答 1

1
SELECT
`plugins`.`name`,
users.username,
maxvers.version,
mcversions.version
FROM
users
INNER JOIN `plugins` ON `plugins`.author = users.id

INNER JOIN (SELECT version, MAX(time), id FROM versions) AS maxvers  ON maxvers.id = `plugins`.id 

INNER JOIN mcversions ON versions.mcversion = mcversions.id

我还没有对此进行测试,但是如果您使用该子查询来查找最大行(就像您通常那样),请仅从该子查询而不是整个版本表中进行绘制以执行您想要的操作。

于 2012-07-13T13:49:30.873 回答