在另一个字段中查找字段值

时间:2014-08-19 09:55:25

标签: sql sql-server-2008

我必须加入两个表(比如说A和B)。现在需要搜索字段的A值是否存在于B的特定字段中。

例如CLASS是A表的字段,其值为PROD。现在SCHOOL是任何记录的B表的字段,其中值为PRAD,PROD,PRUD。然后,B的记录以及A的记录将在查询1中返回。

A的PROD值以外的记录将在查询2中返回

SERVER :: SQL SERVER 2008

4 个答案:

答案 0 :(得分:1)

您的数据结构确实存在问题,因为您要在列中存储值列表。 SQL有这种存储列表的好方法 - 它被称为表,而不是字符串列。您应该有一个单独的联结/关联表,每个实体和每个值一行,一个更规范化的数据结构。

但是,有时候,我们无法修复我们给出的数据。如果是这样,您可以使用like

select
from tablea a join
     tableb b
     on ',' + b.school + ',' like '%,' + a.class + ',%';

请注意两边使用分隔符。这可以防止AABC匹配。

答案 1 :(得分:0)

您的第一个查询是........

 select * from tbl_A, tbl_B Where tbl_A.CLASS = tbl_B.SCHOOL

第二个问题是......

select * from tbl_A, tbl_B Where tbl_A.CLASS <> tbl_B.SCHOOL

答案 2 :(得分:0)

您可以尝试以下查询

         SELECT
              * FROM (SELECT [name]
                            ,[Amount]
                            ,[unit] FROM [group_by_tbl])  P PIVOT (SUM([Amount]) FOR [unit] IN (A,B)) AS piv

答案 3 :(得分:0)

您可以尝试以下查询

                 SELECT
                * FROM (SELECT [name]
                              ,[Amount]
                              ,[unit] FROM [group_by_tbl])  P PIVOT (SUM([Amount]) FOR [unit] IN (A,B)) AS piv