SELECT查询中MySQL内部操作顺序

时间:2018-08-21 16:24:35

标签: mysql

MySQL SELECT查询和关系查询中操作的内部顺序是什么?

例如,对单个表进行SELECT查询:

SELECT `name`
FROM `users` 
WHERE `publication_count`>0
ORDER BY `publication_count` DESC

我知道首先要提取所有表字段,然后最后只剩下name字段。它是在应用WHERE中的条件之前还是之后发生?何时应用ORDER BY

使用两个表的关系查询:

SELECT `users`.`name`, `post`.`text` 
FROM `users`, `posts` 
WHERE `posts`.`author_id`=`user`.`id` 
ORDER BY `posts`.`date` DESC

相同的问题。什么之后会发生什么? (我知道起初会生成笛卡尔积)

1 个答案:

答案 0 :(得分:0)

有关简化示例的示例的处理如下:

 1. FROM     -- all elements in list (including multiple tables)
 2. WHERE    -- discard rows not matching conditions
 3. SELECT   -- output rows are computed (not fetched)
 4. ORDER BY -- sort output rows

此外,您不应该在WHERE条件下使用老式的隐式联接语法。相反,请使用JOIN

SELECT ...
FROM users
INNER JOIN posts ON users.id = posts.author_id
ORDER BY ...