SQL搜索记录以查找另一个表

时间:2018-03-05 21:33:50

标签: sql sql-server

我有两个表Client_Type和Client_Data

     Client_Type                             Client_Data
  Type    Description                ID   Type      Files
  -------------------               -----------------------------------
   A       AGREEMENT                 1   Student  PDF-Report Card.pdf
   E       EXAM PAPER                2   Teacher  PDF- Contract Agreement.pdf
   L       LETTER                    3   Student  word- Final exam paper.doc
   R       REPORT                    4   Student  PDF-Letter.pdf

我想根据以上两个表制作第三个表格,如

 ID   Client_Type.Type       Files
 ----------------------------------- 
  1      R                PDF-Report Card.pdf
  3      E                word- Final exam paper.doc
  4      L                PDF-Letter.pdf

我想搜索[Client_Data]。[Type],如果是Student,那么我想将[Client_Type]。[Description]与[Client_Data]匹配。[Files],如果有匹配的单词描述我想将类型分配给第三个表中的该记录

2 个答案:

答案 0 :(得分:1)

这可能不会很快(取决于你的数据的大小),但它应该做你想要的:

SELECT
    cd.id,
    ct.type,
    cd.files
FROM
    client_data cd
    INNER JOIN client_type ct
        ON cd.Files LIKE '%' + ct.description + '%'
WHERE
    cd.Type = 'Student';

答案 1 :(得分:1)

你想要这样的东西:

SELECT cd.*, ct.type AS client_type
FROM client_data cd JOIN
     client_type ct
     ON cd.files LIKE '%' + ct.description + '%'
WHERE cd.type = 'Student';

如果您具有区分大小写的排序规则,则可以小写ON子句的列:

     on lower(cd.files) like '%' + LOWER(ct.description) + '%'

而且,如果要安全,您希望保留所有学生,然后使用LEFT JOIN而不仅仅JOIN