好的,我现在正在一个网站上工作,该网站显示有关电子设备部件的信息。这些部分有时会得到修订。零件编号保持不变,但它们在零件编号后附加了 A、B、C 等,因此字母“越高”,越新。还添加了日期。所以表格看起来像这样:
------------------------------------------------------------
| Partcode | Description | Partdate |
------------------------------------------------------------
| 12345A | Some description 1 | 2009-11-10 |
| 12345B | Some description 2 | 2010-12-30 |
| 17896A | Some description 3 | 2009-01-12 |
| 12345C | Some description 4 | 2011-08-06 |
| 17896B | Some description 5 | 2009-07-10 |
| 12345D | Some description 6 | 2012-05-04 |
------------------------------------------------------------
我现在需要的是来自零件最新版本的数据。所以对于这个例子,我需要:
12345D 和 17896B
有些人在我面前建立的查询是这样的:
SELECT substring(Partcode, 1, 5) AS Part,
(
SELECT pt.Partcode
FROM Parttable pt
WHERE substring(pt.PartCode, 1, 5) = Part
ORDER BY pt.Partdate DESC
LIMIT 0,1
),
(
SELECT pt.Description
FROM Parttable pt
WHERE substring(pt.PartCode, 1, 5) = Part
ORDER BY pt.Partdate DESC
LIMIT 0,1
),
(
SELECT pt.Partdate
FROM Parttable pt
WHERE substring(pt.PartCode, 1, 5) = Part
ORDER BY pt.Partdate DESC
LIMIT 0,1
)
FROM Parttable
GROUP BY Part
正如您将理解的,这个查询非常慢并且感觉非常低效。但我就是不知道如何优化这个查询。
所以我真的希望有人能提供帮助。
提前致谢!
PS。我正在研究 MySQL 数据库,在有人问之前,我无法更改数据库。