select * from (
SELECT * FROM tablea
UNION ALL
SELECT * FROM tableb
UNION ALL
SELECT * FROM tablec
) x where id='123'
已知:id='123’这条记录在tableb中是存在的
但是三个表union之后再查就查不到了
原因是union使用的是*
tablea结构: id,name
tableb结构:name,id
tablec结果:id,name
union之后字段错位,所以查不到,需要改成
select * from (
SELECT id,name FROM tablea
UNION ALL
SELECT id,name FROM tableb
UNION ALL
SELECT id,name FROM tablec
) x where id='123'
这样就可以查出来了