首先显示最新图像 - 没有ID或日期的表格?

问题描述 投票:0回答:2

我有这张桌子:

CREATE TABLE IF NOT EXISTS `profile_picture` (
  `user` int(11) UNSIGNED NOT NULL,
  `photo` varchar(400) NOT NULL,
  PRIMARY KEY (`user`),
  FOREIGN KEY (`user`) REFERENCES users (`id`)
);

这个选择首先向我显示最老的帖子,我想展示最新的帖子。但我没有id或日期行。我可以这样做吗?

SELECT p.user, p.photo, c.user from profile_picture p
join users c on c.id=p.user
limit 400
mysql sql-order-by
2个回答
2
投票

关系数据库的原则之一是表中的行没有隐式顺序。他们是set in the mathematical sense

因此,如果您想以某种特定顺序查询它们,则只能通过使用存储在每行中的值并在ORDER BY子句中引用它们来实现。

如果此表中没有列,您可以使用订单行,然后您无法订购。

作为一个类比,如果你的手稿有一堆页面,没有页码,你就把它堆放在地板上,祝你好运。


0
投票

这是绝对正确的,已经解释过(如果你没有ORDER BY子句,那么订单没有被定义,并且由SQL服务器来返回行)。

但是,如果没有GROUP BY / ORDER BY子句,MySQL通常会按照添加的顺序返回值。所以你可以试着破解一下:

SELECT * FROM (
    SELECT (@i := @i + 1) AS i, table.* FROM table
) AS s
ORDER BY i DESC;

警告:我不建议您使用它。它可能会或可能不会在您的系统中工作。有一天它可能会停止工作

我自己永远不会用它。我将添加列'插入TIMESTAMP DEFAULT CURRENT_TIMESTAMP'。

© www.soinside.com 2019 - 2024. All rights reserved.