mysql - "SELECT * FROM view_table WHERE cause"=> 但结果总是重新排序

标签 mysql

SELECT * FROM view_table中,结果总是

-----------------------
|| id  ||   author   ||
-----------------------
||  1  ||    a       || <--
||  1  ||    c       || <--
||  1  ||    b       || <--
||  2  ||    d       ||
||  3  ||    e       ||

但是当 SELECT * FROM view_table WHERE id=1 结果是

-----------------------
|| id  ||   author   ||
-----------------------
||  1  ||    a       ||
||  1  ||    b       ||
||  1  ||    c       ||

或者

-----------------------
|| id  ||   author   ||
-----------------------
||  1  ||    b       ||
||  1  ||    c       ||
||  1  ||    a       ||

或者

-----------------------
|| id  ||   author   ||
-----------------------
||  1  ||    a       ||
||  1  ||    c       ||
||  1  ||    b       ||

或者

..

我想SELECT * FROM view_table WHERE id=1 并以与SELECT * FROM view_table 相同的顺序获取结果。如何解决

谢谢。

最佳答案

除非您使用 ORDER BY 子句,否则永远无法保证结果的顺序。你想如何订购,由你决定。

例如,

SELECT * 
FROM view_table 
WHERE id = 1
ORDER BY author

这将根据作者姓名对其进行排序(如果您使用 ORDER BY author DESC,则从 A 到 Z,或者从 Z 到 A)。

或者,您可以添加一个 Created 列,然后按该列排序,该列包含创建时的时间戳。这可以模仿您想要保留的顺序。

关于mysql - "SELECT * FROM view_table WHERE cause"=> 但结果总是重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56164113/

相关文章:

c# - mysql 搜索多个字段

php - foreach 循环没有得到下一个结果

mysql - 如果子查询连接列(如果存在),则显示行

java - OpenShift EGIT Eclipse

python - 使用 HAproxy 时出现 Flask-SQLAlchemy "MySQL server has gone away"

mysql - 数据库表可以排序以使 NULL 值出现在底部吗?

mysql - 当绑定(bind)参数为空时,视为 "select all"

php - 使用 SQL 查询单个值

php - 后端+数据库设计

php - PHP 脚本中的这条 MySQL 语句有多安全?