Skip to content

SELECT 查 ​

sql
SELECT id, name, email
FROM users
WHERE status = 1
ORDER BY id DESC
LIMIT 10 OFFSET 0;

条件、排序和分页 ​

sql
SELECT *
FROM users
WHERE age BETWEEN 18 AND 30
  AND email LIKE '%@example.com'
ORDER BY created_at DESC, id DESC
LIMIT 20 OFFSET 0;

聚合和分组 ​

sql
SELECT status, COUNT(*) AS total
FROM users
GROUP BY status
HAVING COUNT(*) > 1
ORDER BY total DESC;

WHERE 在分组前过滤行,HAVING 在分组后过滤聚合结果。

关联查询 ​

sql
SELECT u.id, u.name, o.id AS order_id, o.amount
FROM users AS u
INNER JOIN orders AS o ON o.user_id = u.id
WHERE u.id = 1;

常用连接:

  • INNER JOIN:只返回两边都匹配的数据。
  • LEFT JOIN:保留左表全部数据,右表没有匹配时为 NULL。
  • RIGHT JOIN:保留右表全部数据,左表没有匹配时左侧字段为 NULL。

基于 MIT 许可发布