1

我有下面的 sql,如果我取出表的内部连接并对值进行硬编码,我会得到 2 条记录。但是当我使用内部连接语句时,我只得到 1 条记录。我知道对于 MYSQL,like 子句不区分大小写。这是下面的sql。我不知道为什么它只返回行。

SELECT 
      a.project_code as projectCode, 
      a.project_name as projectName, 
      a.project_creation_date as projectCreationDate, 
      a.project_end_date as projectEndDate, 
      a.project_status as projectStatus      
from projects a 
inner join tmp_rec_naren8 b 
    on a.project_name like concat("%",b.expertise_desc,"%") 
    OR a.project_description like concat("%",b.expertise_desc,"%") ;

如果我将以上内容更改为:

select *
from projects
where project_name like '%java%'
OR project_description like '%java%';

我得到 2 行而不是 1 行。

tmp_rec_naren8只有一列expertise_desc并包含以下数据:

expertise_desc
--------------
XML
Python
DWH
Java

projects有很多列:.. 但下面这些是相关的

    project_code sr_user_name project_name project_descriiption ..
    -----------------------------------------------------------
    1             naren5      POS          C++, XML,Java
    2             naren7      INV          Networking
    3             naren9      CCV          Java, Unix         

第一个查询返回 1 行:

    project_code sr_user_name project_name project_descriiption ..
    ---------------------------------------------------------------
     1            naren5       POS         C++,XML,Java

第二个查询返回 2 行

    project_code sr_user_name project_name project_descriiption ..
    -----------------------------------------------------------
    1             naren5      POS          C++, XML,Java
    3             naren9      CCV          Java, Unix         
4

3 回答 3

0

Can you try the following:

SELECT 
      a.project_code as projectCode, 
      a.project_name as projectName, 
      a.project_creation_date as projectCreationDate, 
      a.project_end_date as projectEndDate, 
      a.project_status as projectStatus      
from projects a, tmp_rec_naren8 b
where a.project_name like concat("%",b.expertise_desc,"%") 
    OR a.project_description like concat("%",b.expertise_desc,"%") ;
于 2012-06-08T13:19:16.077 回答
0

一种解释是 in 的值是否expertise_desc包含尾随空格,即'Java '(not 'Java')。那么 concat 值将是'%java %',而不是'%java%',有所作为。

如果您的一个项目名称以 .结尾java而另一个java 名称中,则只有一个会使用联接匹配,但两个会与非联接匹配。

于 2012-06-08T13:18:59.130 回答
0

试试看:

SELECT        
a.project_code as projectCode,        
a.project_name as projectName,        
a.project_creation_date as projectCreationDate,        
a.project_end_date as projectEndDate,        
a.project_status as projectStatus       
from projects,tmp_rec_naren8
where LOCATE(TRIM(tmp_rec_naren8.expertise_desc),projects.project_name) > 0
or
LOCATE(TRIM(tmp_rec_naren8.expertise_desc),projects.project_description) > 0 
于 2012-06-08T13:26:42.647 回答