MySql搜索两个表并将列与like和%进行比较

snu*_*130 2 mysql sql search sql-like

我试图从两个表中选择数据并将其插入另一个表中.我希望在每个表中的某些内容匹配时选择数据.问题是其中一个比较需要是一样的,我不知所措.sql语句在下面,我相信它至少会显示我想要做的事情.

insert into hr_numbers 
  (`user_id`, `hr_number`) 
  select distinct u.user_id, t.num 
    from temp t, users u 
   where t.name like '%' + u.l_name + '%';
Run Code Online (Sandbox Code Playgroud)

我试图使用程序,但无法弄清楚,甚至告诉这是否有帮助.

OMG*_*ies 5

首先,确保SELECT在尝试插入之前返回您想要的内容.这个:

SELECT DISTINCT 
       u.user_id, 
       t.num 
  FROM temp t, users u 
 WHERE t.name like '%' + u.l_name + '%'
Run Code Online (Sandbox Code Playgroud)

...正在使用ANSI-89 JOIN语法.ANSI-92连接语法是更好的选择:

SELECT DISTINCT
       u.user_id,
       t.num
  FROM USERS u
  JOIN TEMP t ON t.name LIKE CONCAT('%', u.l_name ,'%')
Run Code Online (Sandbox Code Playgroud)

...但是加入标准看起来有缺陷.它将链接行的最后一个名称出现在t.name值中,导致史密斯问题:如果姓氏是"史密斯",则所有行都将链接起来 - 即使名称是John,Jim等.