永发信息网

sql多表联合查询 数据不正确。

答案:2  悬赏:60  手机版
解决时间 2021-03-15 03:40
  • 提问者网友:你挡着我发光了
  • 2021-03-15 00:08
四张表联合在一起查询,但查询出来的有多列中生成了重复数据,比如A表(c_id,name)、B表(c_id,d_id,b_f,b_d)、C表(id,phone)、D表(id,y)
我想通过A表的name查询到name对应的c表中的phone,d表的y,b表中的b_f,b_d,但我自己写的始终会多出来很多的数据,要么就是数据不全,请大神帮忙。
SELECt (SELECT user_name FROM xp_users WHERe id = xup.user_id) mobile,(SELECt packet_value FROM xp_redpacket WHERe id = xup.packet_id) packet,xup.valid_start timestart,xup.valid_end timeend,CASE WHEN ISNULL(xup.order_id) AND xup.use_time IS NOT NULL THEN '2' WHEN ISNULL(xup.use_time) THEN '0' ELSE '1' END isUse,xup.use_time timeuse FROM xp_user_packet xup,xp_order xpo WHERe xup.user_id=(SELECt user_id FROM xp_order WHERe order_sn='HL1440766295435') AND xup.user_id = xpo.user_id GROUP BY xup.packet_id
以上的是我实际的sql语句。查出来的数据不正确。
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-03-15 00:35
SELECt c.phone, d.y, b.b_f, b.b_d
FROM A
LEFT JOIN C ON A.c_id = C.id
LEFT JOIN B ON C.id = B.c_id
LEFT JOIN D ON B.d_id = D.id
全部回答
  • 1楼网友:骨子里都是戏
  • 2021-03-15 01:33
create view_ticket as select id,ticket from a group by id,ticket union select id,ticket from b group by id,ticket union select id,ticket from c group by id,ticket 首先,在每句里去掉重复的,这样能保证三个查询中,每个子查询无重复 然后union 本身就是能自动去重,也就是如果a,b,c中三个查询中有互相重复的数据,会过滤掉 顺便解释一下,union all是不会去重的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯