举例
table1
id, 主键自增
state 状态
table2
id, 主键自增
table1Id table1的外键
name
要求:要查询所有table1状态为1对应table2中name信息
第一种写法
SELECT table2.name FROM table1, table2 WHERE table1.id = table2.table1Id AND table1.state = 1
第二种写法
SELECT table2.name FROM (SELECT id FROM table1 WHERE table1.state = 1) table1, tbale2 WHERE tbale1.Id = table2.table1Id
第三种写法
;WITH table3 AS (SELECT id FROM table1 WHERE table1.state = 1) SELECT table2.name FROM table2, table3 WHERE table2.table1Id = table3.id
总结:
第一种写法适合较少的表关联,优点:易懂,写法简单 ;缺点:多张表关联时,自身逻辑比较容易混乱
第二种写法适合中等量的表关联,优点:where后面不会跟太多表的查询语句; 缺点:查询语句复杂时,不容易找到问题
第三种写法适合多张表关联,优点:写法具有逻辑性,可以一步步筛选出自己想要的数据 缺点:语句较长
原文:http://www.cnblogs.com/town-code-farmers/p/4980710.html