mysql查询-怎么判断一个用户在多个表中是否有值

场景如下,
有一张用户表user,主键用户编号user_id ,类型int; 三张业务表 a_record,b_record,c_record,分别都含有外键user_id.

在方法中,别人传给我一串user_id ,字符串的,逗号分割的,如“1001,2001,2003,98”;
我需要去数据库中判断这些user_id串中的用户是否有三种业务中至少一条的记录,
(只要这个user_id字符串中的有一个人有其中之一业务记录,我就可以返回true,否则返回false )

这个sql语句怎么写?

5个回答

如果user中 的user_id 是字符串的,如“1001,2001,2003,98”:
select count(*) from user u,a_record a,b_record b,c_record c
when a.user_id in (u.user_id) or a.user_id in (u.user_id) or a.user_id in (u.user_id)

huxiaohuahua
huxiaohuahua 回复深蓝色的风: 客气了
大约 5 年之前 回复
panwei321
深蓝色的风 3Q!
大约 5 年之前 回复

select num(user,id) from user,a_record where user_id = a_record
union
select num(user,id) from user,a_record where user_id = b_record
union
select num(user,id) from user,a_record where user_id = c_record

select count(1) from user u,a_record a,b_record b,c_record c where u.user_id=a.user_id and u.user_id=b.user_id and u.user_id=c.user_id

select count(*) from user u,a_record a,b_record b,c_record c
when u.user_id=a.user_id or u.user_id=b.user_id or u.user_id=c.user_id

panwei321
深蓝色的风 这个可以,不过数据量大了后性能下降的厉害!不过还是谢谢!
大约 5 年之前 回复

select user,id from user,a_record where user_id in(1000,1001,1002)
union
select user,id from user,a_record where user_id in (1000,1001,1002)
union
select user,id from user,a_record where user_id in (1000,1001,1002)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问