Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql &引用;从“原因所在的表”中选择*=&燃气轮机;但结果总是重新排序_Mysql - Fatal编程技术网

Mysql &引用;从“原因所在的表”中选择*=&燃气轮机;但结果总是重新排序

Mysql &引用;从“原因所在的表”中选择*=&燃气轮机;但结果总是重新排序,mysql,Mysql,在中,从视图中选择*表格结果始终为 ----------------------- || id || author || ----------------------- || 1 || a || <-- || 1 || c || <-- || 1 || b || <-- || 2 || d || || 3 || e || 或 或 或 。 我想SELECT*F

中,从视图中选择*表格
结果始终为

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

我想
SELECT*FROM view\u table,其中id=1
,并以与
SELECT*FROM view\u table
相同的顺序获得结果。如何解决


谢谢。

关于
订购人的研究

SELECT * FROM view_table WHERE id=1 order by author DESC

除非使用
orderby
子句,否则结果的顺序永远不会得到保证。你想怎么点,由你决定

比如说,

选择*
从视图_表
其中id=1
按作者排序
这将根据作者的姓名对其进行排序(从A到Z,或者如果使用
按作者描述排序
),则从Z到A)


或者,您可以添加一个
Created
列,然后按该列排序,该列保存创建时的时间戳。这可以模仿你想要保持的秩序

要获取有序值吗?这很简单,如下所示:

select * from view_table order by id,author
select * from view_table where id = 1 order by author

您看到的是表中的行并没有隐含顺序这一事实的函数。如果希望结果以特定方式排序,则必须在查询中描述这一点。因此,对于第一个查询,您将按
id
author
排序,对于第二个查询,您将按
author
排序:

SELECT * 
FROM view_table
ORDER BY id, author
问题2:

SELECT *
FROM view_table
WHERE id = 1
ORDER BY author

基于作者姓名的排序

从A到Z

SELECT * FROM view_table WHERE id = 1 ORDER BY author ASC
从Z到A

SELECT * FROM view_table WHERE id = 1 ORDER BY author DESC

如果要按字母顺序对数据排序,请使用“从视图中选择*”表格,其中id=1“按作者排序”

当您每次运行代码时都会得到不同的结果。因为在您的表中,您不使用聚集索引。另外,如果您使用pramery键,它还可以在表上创建聚集索引。而不是每次都得到相同的结果。因为没有聚集索引数据库不会保存任何订单


注意:一个表中只能使用一个聚集索引。但是您可以使用非聚集索引大约999次。

我建议您查看
ORDER BY
SQL子句

使用ORDER BY可以执行以下操作:

SELECT * FROM view_table WHERE id=1 ORDER BY author
您还可以使用ASC和DESC对列进行进一步排序。

试试这个

对于带限制的升序

SELECT * FROM view_table WHERE id=1 ORDER BY author ASC [LIMIT 3]
SELECT * FROM view_table WHERE id=1 ORDER BY author DESC [LIMIT 3]

对于带限制的降序

SELECT * FROM view_table WHERE id=1 ORDER BY author ASC [LIMIT 3]
SELECT * FROM view_table WHERE id=1 ORDER BY author DESC [LIMIT 3]

简单地说,你不能,只要你不要求一个精确的顺序(通过order by),你就不能期望在不同的select查询中有相同的顺序通读我想得到像select*from view\u table这样的结果顺序当你执行“select*from view\u table”时,顺序实际上也是随机的,所以您只需要使用ORDERBY子句来修复订单。谢谢先生。但我可以在视图表中添加时间戳吗?您可以直接将它添加到您的表中。将其设为默认值
当前时间戳
。这样,您将看到行是何时创建的。按这个顺序排列你的结果。
SELECT * FROM view_table WHERE id=1 ORDER BY author DESC [LIMIT 3]