首页 > 解决方案 > MySQL View Order By 在 Select * FROM view WHERE 中不起作用

问题描述

我在使用 where 条件的视图运行查询时遇到问题,其中按内部视图的顺序不再起作用。我已尽力用下面的一个简单示例来解释我的情况。
说,我有一个名为users2 列的表:namegroup 一个创建的视图: CREATE VIEW view_name AS SELECT name, group FROM users order by name
现在,如果我运行查询SELECT * FROM view_name WHERE group = 'somegroup',我不会得到按以下顺序排序的结果name

标签: mysqlview

解决方案


除非您使用物化视图,否则 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;

推荐阅读