请问查询一个A表字段的字符串是否包含另一个B表字段的字符串,急,在线等

Carrie_spinfo 2018-07-19 02:37:59
表:Finalscore 决赛分

employeeID number
6024 A344A1531975312940,A344A1531975362963,A344A1531975490965
9956 A344A1531975312940,A344A1531975362963,A344A1531975490965
1441 A344A1531975312940,A344A1531975362963,A344A1531975490965
2573 A344A1531975312940,A344A1531975362963,A344A1531975490965

employeeID 代表参赛人编号 number代表全部比赛分数,用 , 分隔
---------------------------------------------------------------------------------------------------
表:Singlescore 队长比赛分

employeeID number
9956 A344A1531975312940

employeeID 代表参赛人编号 number代表比赛分数

注意此处 9956 的 比赛值 A344A1531975312940 是包含在Finalscore 决赛分中的

目前需要列出 Finalscore.number 中包含 Singlescore.number 的人 并标记出队长,如下面

employeeID number captain
6024 A344A1531975312940,A344A1531975362963,A344A1531975490965
9956 A344A1531975312940,A344A1531975362963,A344A1531975490965 Yes
1441 A344A1531975312940,A344A1531975362963,A344A1531975490965
2573 A344A1531975312940,A344A1531975362963,A344A1531975490965

captain 代表 队长

上面只是举例,实际数据量比较大 不只是单纯一个值做对比
mysql查询应该如何写?
...全文
823 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
_ITFarmer 2018-07-21
  • 打赏
  • 举报
回复
-- 测试数据

Create table Finalscore(employeeID int , number varchar(76))


Insert Finalscore
select 6024,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 9956,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 1441,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 2573,N'A344A1531975312940,A344A1531975362963,A344A1531975490965'

Create table Singlescore( employeeID int, number nvarchar(38))
Insert Singlescore
select '9956',N'A344A1531975312940'


--测试数据结束
SELECT Finalscore.* ,
CASE WHEN Singlescore.employeeID = Finalscore.employeeID THEN 'Yes' ELSE '' END captain
FROM Finalscore
JOIN Singlescore ON instr( Finalscore.number,Singlescore.number ) >0
Carrie_spinfo 2018-07-20
  • 打赏
  • 举报
回复
引用 6 楼 sinat_28984567 的回复:
[quote=引用 5 楼 zhi11wei 的回复:]
请教这个如何使用全文索引的方法实现


额,全文搜索是什么意思?[/quote]


没有效果,可能是CASE WHEN Singlescore.number IS NOT NULL这句不对吧

我的意思是大哥有没有其他的方法
我所说的全文索引是指这个https://blog.csdn.net/u011734144/article/details/52817766/
二月十六 2018-07-20
  • 打赏
  • 举报
回复
引用 5 楼 zhi11wei 的回复:
请教这个如何使用全文索引的方法实现


额,全文搜索是什么意思?
Carrie_spinfo 2018-07-20
  • 打赏
  • 举报
回复
引用 3 楼 sinat_28984567 的回复:
--测试数据
if not object_id(N'Tempdb..#Finalscore') is null
drop table #Finalscore
Go
Create table #Finalscore([employeeID] int,[number] nvarchar(76))
Insert #Finalscore
select 6024,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 9956,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 1441,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 2573,N'A344A1531975312940,A344A1531975362963,A344A1531975490965'
GO
if not object_id(N'Tempdb..#Singlescore') is null
drop table #Singlescore
Go
Create table #Singlescore([employeeID] int,[number] nvarchar(38))
Insert #Singlescore
select '9956',N'A344A1531975312940'
Go
--测试数据结束
SELECT #Finalscore.*,
CASE
WHEN #Singlescore.number IS NOT NULL THEN
'Yes'
ELSE
''
END captain
FROM #Finalscore
LEFT JOIN #Singlescore
ON #Singlescore.employeeID = #Finalscore.employeeID;




请教这个如何使用全文索引的方法实现
Carrie_spinfo 2018-07-19
  • 打赏
  • 举报
回复
楼上两位给出的答案 看样子都没问题,但是在实际环境里无法响应,一直无限查询中 头疼
二月十六 2018-07-19
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#Finalscore') is null
drop table #Finalscore
Go
Create table #Finalscore([employeeID] int,[number] nvarchar(76))
Insert #Finalscore
select 6024,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 9956,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 1441,N'A344A1531975312940,A344A1531975362963,A344A1531975490965' union all
select 2573,N'A344A1531975312940,A344A1531975362963,A344A1531975490965'
GO
if not object_id(N'Tempdb..#Singlescore') is null
drop table #Singlescore
Go
Create table #Singlescore([employeeID] int,[number] nvarchar(38))
Insert #Singlescore
select '9956',N'A344A1531975312940'
Go
--测试数据结束
SELECT #Finalscore.*,
CASE
WHEN #Singlescore.number IS NOT NULL THEN
'Yes'
ELSE
''
END captain
FROM #Finalscore
LEFT JOIN #Singlescore
ON #Singlescore.employeeID = #Finalscore.employeeID;


楓VS痕 2018-07-19
  • 打赏
  • 举报
回复

SELECT fs.*, IF(fs.employeeID=ss.employeeID,'Yes','') captain
FROM Finalscore fs, Singlescore ss
where FIND_IN_SET(ss.number, fs.number)
Carrie_spinfo 2018-07-19
  • 打赏
  • 举报
回复
@二月十六 求教

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧