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
相同的问题。什么之后会发生什么? (我知道起初会生成笛卡尔积)
答案 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 ...