sql IN运算符

时间:2010-09-17 09:46:55

标签: sql sql-server

我有下面的sql,但无法让它工作

select product_category, 
       (
        select top 1 sub_category 
          from sub_categories 
         where product_category IN (keywords)
       ) as s 
  from products;

产品类别是Baby Gift Baskets,关键字字段是Baby Gift Baskets,Baby Gifts

在关键字列表中找到product_category时,基本上想获得sub_category?

3 个答案:

答案 0 :(得分:4)

您需要使用

where ',' + keywords + ',' like '%,'+ product_category + ',%'

使用规范化的数据库结构,这将更容易,更有效。 (您在单个列中包含多个关键字的当前结构会违反first normal form

答案 1 :(得分:0)

这对您不起作用,因为keywords被视为单个项目。

您必须从关键字中拆分值才能使用IN

看看

Split Function

Split XML style

答案 2 :(得分:0)

这不起作用。您可以将其更改为使用LIKE -

select top 1 sub_category 
  from sub_categories 
 where keywords like '%' + product_category + '%';