我有这张桌子:
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
关系数据库的原则之一是表中的行没有隐式顺序。他们是set in the mathematical sense。
因此,如果您想以某种特定顺序查询它们,则只能通过使用存储在每行中的值并在ORDER BY
子句中引用它们来实现。
如果此表中没有列,您可以使用订单行,然后您无法订购。
作为一个类比,如果你的手稿有一堆页面,没有页码,你就把它堆放在地板上,祝你好运。
这是绝对正确的,已经解释过(如果你没有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'。