GitHub上有很多有意思的sql查询语句和项目。
使用自连接查询找出同一表中具有相同值的记录:
SELECT A.column_name, B.column_name
FROM table_name A, table_name B
WHERE A.column_name = B.column_name
AND A.id <> B.id;
在查询结果中使用 CASE 表达式进行条件判断和转换:
SELECT name, age,
CASE
WHEN age < 18 THEN '未成年'
WHEN age >= 18 AND age < 65 THEN '成年'
ELSE '老年'
END AS age_group
FROM customers;
使用窗口函数计算累积和(Cumulative Sum):
SELECT date, revenue,
SUM(revenue) OVER (ORDER BY date) AS cumulative_sum
FROM sales;
利用交叉连接(CROSS JOIN)生成所有可能的组合:
SELECT A.column_name, B.column_name
FROM table_A A
CROSS JOIN table_B B;
使用递归查询处理树状结构数据:
WITH RECURSIVE tree_path AS (
SELECT id, name, CAST(name AS VARCHAR(255)) AS path
FROM categories
WHERE parent_id IS NULL
UNION ALL
SELECT c.id, c.name, CONCAT(tp.path, ' > ', c.name)
FROM categories c
INNER JOIN tree_path tp ON c.parent_id = tp.id
)
SELECT id, name, path
FROM tree_path;
要遵循一些最佳实践,一张图就可以知道高质量SQL是怎么写的:
保持简洁:
使用正确的数据类型:
格式化:
为表和列取有意义的名称:
使用别名:
注释:
避免使用 SELECT *:
优化查询性能:
使用事务:
测试和审查: