现在我已知两个点的ID(2,3),需要查询出对应的线路,这里应该查询出1,2两条线路.求查询语句

蜜友 2017-03-21 10:52:46
先来看看表与数据


CREATE TABLE [dbo].[Places] (
[ID] int NULL,
[placeName] nvarchar(50) NULL
)
ON [PRIMARY]
GO

BEGIN TRANSACTION
GO
INSERT INTO [dbo].[Places] VALUES ('1', N'马街');
INSERT INTO [dbo].[Places] VALUES ('2', N'鸡街');
INSERT INTO [dbo].[Places] VALUES ('3', N'狗街');
GO
COMMIT
GO

CREATE TABLE [dbo].[Lines] (
[ID] int NULL,
[lineName] nvarchar(40) NULL,
[placeIDs] nvarchar(100) NULL
)
ON [PRIMARY]
GO
BEGIN TRANSACTION
GO
INSERT INTO [dbo].[Lines] VALUES ('1', N'马街=鸡街=狗街', '1,2,3');
INSERT INTO [dbo].[Lines] VALUES ('2', N'鸡街=狗街', '2,3');
INSERT INTO [dbo].[Lines] VALUES ('3', N'狗街', '3');
GO
COMMIT
GO


问题:
现在我已知两个点的ID(2,3),需要查询出对应的线路,这里应该查询出1,2两条线路.求查询语句
...全文
126 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2017-03-21
  • 打赏
  • 举报
回复
连第一范式(原子性)都不符合的数据,你还想怎么快?
蜜友 2017-03-21
  • 打赏
  • 举报
回复
引用 3 楼 Tiger_Zhao 的回复:
SELECT *
  FROM Lines
 WHERE ','+placeIDs+',' LIKE '%,2,%'
   AND ','+placeIDs+',' LIKE '%,3,%'
感谢你的回复,这样确实可以解决问题,但大家都知道like查询是最慢的解决方案,不知有没有更好的.
蜜友 2017-03-21
  • 打赏
  • 举报
回复
感谢你的回复,你这个会有一个问题,就是在维护lines时可能存在顺序不确定的情况
引用 2 楼 sinat_28984567 的回复:

SELECT  *
FROM    dbo.Lines
WHERE   placeIDs LIKE '%' + ( SELECT    STUFF(( SELECT  ',' + RTRIM(ID)
                                                FROM    dbo.Places
                                                WHERE   ID IN ( 2, 3 )
                                              FOR
                                                XML PATH('')
                                              ), 1, 1, '')
                            ) + '%'

Tiger_Zhao 2017-03-21
  • 打赏
  • 举报
回复
SELECT *
FROM Lines
WHERE ','+placeIDs+',' LIKE '%,2,%'
AND ','+placeIDs+',' LIKE '%,3,%'

二月十六 2017-03-21
  • 打赏
  • 举报
回复

SELECT *
FROM dbo.Lines
WHERE placeIDs LIKE '%' + ( SELECT STUFF(( SELECT ',' + RTRIM(ID)
FROM dbo.Places
WHERE ID IN ( 2, 3 )
FOR
XML PATH('')
), 1, 1, '')
) + '%'






蜜友 2017-03-21
  • 打赏
  • 举报
回复
其实与第一张表没什么关系,只是为了好说明问题

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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