mysql联合查询的条件问题

例如:
SELECT DISTINCT table1.id FROM table1 LEFT OUTER JOIN table2 ON table2.table1_id = table1.id LEFT OUTER JOIN table3 ON table3.table2_id = table2.id WHERE table1.id = 1 AND (table3.name='name')

如果table2是空的,或者table3是空的,即使table1有id = 1那条记录,由于后面的条件(table3.name='name')不成立,那么返回结果是空,我想要的结果是如果table2是空的或者table3是空的,也要返回table1的记录,这样的语句该怎么写?

这种要用外连接来实现,其实你已经写出来了,只是你的where筛选条件要写到left outer join那里面去,因为你的and table3.name='name'会让前面的外连接失效:
[code="sql"]
SELECT DISTINCT table1.id
FROM table1
LEFT OUTER JOIN table2
ON table2.table1_id = table1.id
LEFT OUTER JOIN table3
ON table3.table2_id = table2.id
AND table3.name = 'name'
WHERE table1.id = 1
[/code]