SQL - 跨2行匹配数据

时间:2018-05-03 11:22:58

标签: sql sql-server

我在MS SQL服务器Db中有以下表格:

CREATE TABLE [dbo].[testTable](
    [Sequence] [int] NULL,
    [Text] [nchar](10) NULL
) ON [PRIMARY]

这是我的数据

Sequence    Text
1           Hello     
2           World     
3           Hello     
4           Dave      
5           Hello     
6           Suzanne   

要求:如果我的数据集包含一系列单词,我需要返回True或false,例如:

  • 搜索" Hello Dave"返回True
  • 搜索" Hello Foo"返回False

我来到这里:

SELECT [sequence] ,[Text]
FROM [dbo].[testTable]

where text in ('hello', 'dave')

给了我:

Sequence Text
1        Hello     
3        Hello     
4        Dave      
5        Hello 

我的问题是如何查询此数据集以检查它们旁边的数字

谢谢!

2 个答案:

答案 0 :(得分:1)

一种方法是join

select (case when count(*) = 0 then 1 else 0 end)
from testtable w1 join
     testtable w2
     on w1.sequence = w2.sequence + 1
where w2.text = 'Hello' and w2.text = 'Dave';

答案 1 :(得分:1)

我真的认为这是两个单独的问题,一个是回答单词是否存在,另一个是查找可能的id值。首先,我们可以汇总整个表格:

SELECT
    CASE WHEN COUNT(DISTINCT text) = 2 THEN 'True' ELSE 'False' END AS status
FROM testTable
WHERE text IN ('hello', 'dave');

如果您想要匹配关键字的序列号,假设上述查询显示这些词都存在,您可以使用:

SELECT Sequence
FROM testTable
WHERE text IN ('hello', 'dave');

Demo