mysql - MySQL View Order By 在 Select * FROM view WHERE 中不起作用
问题描述
我在使用 where 条件的视图运行查询时遇到问题,其中按内部视图的顺序不再起作用。我已尽力用下面的一个简单示例来解释我的情况。
说,我有一个名为users
2 列的表:name
和group
一个创建的视图:
CREATE VIEW view_name AS SELECT name, group FROM users order by name
现在,如果我运行查询SELECT * FROM view_name WHERE group = 'somegroup'
,我不会得到按以下顺序排序的结果name
解决方案
除非您使用物化视图,否则 MySQL 中的视图只是在基础表上执行的查询。而且,在 MySQL 中,表没有排序,因此将ORDER BY
子句放入视图中不会“排序”那里的数据。相反,您应该ORDER BY
在使用视图时使用子句:
CREATE VIEW view_name AS
SELECT name, `group`
FROM users
SELECT *
FROM view_name
WHERE `group` = 'somegroup'
ORDER BY name;
推荐阅读
- javascript - 试图让函数返回带有推送数据的 arr,但由于某种原因它没有在那里返回它
- c# - 我开始使用 NUnit 进行单元测试,(不运行测试)为什么?
- reactjs - 在支架上安装 React?
- javascript - 循环遍历对象并将其推入新数组 JavaScript
- java - Wildfly 将参数传递给部署
- c# - Visual Studio C# 隐形朋友游戏代码
- java - 创建高级 HashMap、ArrayList、List
- r - 是否有可以接受附加参数的 magrittr::freduce 替代方案?
- angular - 无法从 POST 访问公开的响应标头
- android - 有人知道 Google Pixel 3 xl 的布局吗?