在两列中搜索特定组合(nvarchar)

时间:2016-05-08 04:02:53

标签: sql-server select where-in

我正在尝试在表格中搜索具有两个特定列的特定值组合的条目。

我在使用一个条件执行搜索时没有问题:

SELECT *
FROM Table
WHERE [artist_id] IN ('ID1', 'ID2', etc)

但我想补充第二个条件,如下:

AND WHERE [track_name] IN (NAME1', 'NAME2', etc)

一些注意事项:

  1. " artist_id"和" track_name"都被格式化为nvarchar," track_name"采取单个词或短语的形式。

  2. 每个" artist_id"有多个条目。和" track_name,"但两者的所有组合都是独一无二的。

  3. 那么,我如何将这些条件组合成一个查询?

    以下是代码片段:

    SELECT * 
    FROM [Music].[dbo].[echonest_tracks]
    WHERE [artist_id] IN ('AR03U0G1187B9B1D35', 'AR03U0G1187B9B1D35', etc)
    AND [track_title] IN ('Location', 'Cape Vibes Got 'em?', 'Feeling Good (Instrumental Remix)', 'How my heart by you', etc)
    

2 个答案:

答案 0 :(得分:1)

我认为这是您正在寻找的组合:

SELECT * 
FROM [Music].[dbo].[echonest_tracks]
WHERE 
([artist_id] = 'AR03U0G1187B9B1D35' AND [track_title] IN ('Location', 'Cape Vibes Got 'em?', 'Feeling Good (Instrumental Remix)')
OR 
([artist_id] = 'AR03U0G1187B9B1D35' AND [track_title] IN ('How my heart by you', etc))

答案 1 :(得分:0)

你快到了。

SELECT *
FROM Table
WHERE [artist_id] IN ('ID1', 'ID2', etc)
AND [track_name] IN ('NAME1', 'NAME2', etc)

应该这样做。

对于查询字符串中的单引号,请参阅以下答案: How do I escape a single quote in SQL Server?

您需要将单引号加倍才能将其置于查询字符串中。