假设我有这张桌子。假设它看起来像这样:
table values (
- id (int, primary key, auto increment)
- object_id (foreign key on a
different table. Used to search for specific object values)
- year
(varchar, because in someone's infinite wisdom using "1981-1982" in
addition to 1981 and 1982 values is a good idea)
- high_price
- low_price
)
现在,如果只是在最后添加数据并更新价格,这将是一件容易的事情。但是,数据并不好看。例如,让我们看一下三年的范围:
(id, object_id, year, high_price, low_price)
- 259, 60, 1976, 34000, 29000
- 260, 60, 1977, 35000, 31000
- 261, 60, 1978, 36000, 35000
- 1103, 60, 1976, 29000, 25000
- 1104, 60, 1977, 36000, 32000
- 1105, 60, 1978, 38000, 33000
- 2634, 60, 1976, 34000, 30000
- 2635, 60, 1977, 37000, 33000
- 2636, 60, 1978, 40000, 35000
如果我想获取特定年份的 18 个最新条目,我将如何做呢?它还需要以相反的顺序排列,这样当我绘制它时,最近的年份就在右边。我不一定知道最近的一年,也可能不是当年(很可能不是当年)。
我的 php 中有一条 SQL 语句,如下所示:
$sql = "SELECT * FROM `values` WHERE `object_id`='$id'
ORDER BY `year` DESC, `id` DESC LIMIT 18"
$result = $mysqli->query($sql);
这似乎获得了正确的值,但将它们置于错误的顺序。我可以简单地通过反向循环遍历列表,但我想知道是否有一个 SQL 语句可以为我执行此操作。
谢谢!
编辑:我已经用ORDER BY year ASC, id DESC
and尝试了 SQL ORDER BY year DESC, id ASC
。这些都不起作用。第一个仍然向后吐出它们,而第二个从第一年而不是最后一年吐出它们。