我有4张表,做一个历史记录查询,每张表里都有一个对应的外键。
一般的多表连接查询数据都以一条跟着后面的,我要的是每个表的数据按ID一行一行来显示。
如
表1
ID
XXXXXXX 紧跟着下一行是表 2 的ID
XXXXXXX 紧跟着下一行是表 3 的ID 以此类推。
没明白你描绘的意思...你有四个表,然后每个表之间是怎么关联的?你的查询结果的描述也好难理解啊,说详细点吧
每个表都有一个相对的外键
我要查出所有4张表的数据,但是显示方式是按所有的表的ID列来显示,而不是一行记录显示4张表的数据
显示结果就是要没行记录只显示一张表的单一数据
比如 select * from A,B,C,D where ID=XX
1行会4张表的数据,我要查出来显示4行记录,一行记录,就是一张表的数据。
@土匪吃黄瓜: 哦,懂了,就是取数据集合,那么你可以用union all 关键字,代码如下:
select a.id from a where a.id = 'xxxxxx' union all select b.id from b where b.id = 'xxxxxx' union all select c.id from c where c.id = 'xxxxxx' union all select d.id from d where d.id = 'xxxxxx'
这样你查询出来的结果就是以4个表的ID所组合成的结果
@车上有首长: 试试,可以就给分!
@土匪吃黄瓜: 对了,你不可以用select * ,因为你这4个表的字段可能不是完全相同,使用select * 是肯定不行的,你只能搜索相同字段名称的列去进行组合,如果名称不相同,那么你如果想把他们组合到一起,必须使用 as 关键字创建别名比如
select b.id,b.state from hcc_s_posauditing b where b.id = 111 union all select c.ID,c.caseno as state from hcc_CasePending c where c.ID = 111
这样的话才能进行组合,但是并不是任意字段你给他们创建别名就可以组合了,必须是字段的数据类型一致的,否则会出现转换不成功的异常,比如上面代码,都是varchar类型,就没关系
@车上有首长: 再次感谢