# WITH 子句

__*WITH 子句*__

+ 针对有复杂逻辑的 SQL 语句, `WITH` 可以大幅减少临时表的数量, 提升 SQL 代码的可读性和可维护性

```
~!@WITH low_g_planets as (@!~
SELECT
  p.id, p.name, p.gravity
 FROM stars s
 JOIN planets p
 ON p.sun_id = s.id
 WHERE s.name = 'Sun'
  AND p.gravity < 10~!@)@!~
SELECT v1.name, v1.gravity, m.name
 FROM ~!@low_g_planets@!~ as v1
  LEFT JOIN moons m
  ON v1.id = m.planet_id;
```
----------------------------------------------

临时表我们会在 201.3 课程里讲解。