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

时间:2010-03-05 15:42:37

标签: 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 + '%';

我试图使用程序,但无法弄清楚,甚至不知道这是否会有所帮助。

2 个答案:

答案 0 :(得分:5)

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

SELECT DISTINCT 
       u.user_id, 
       t.num 
  FROM temp t, users u 
 WHERE t.name like '%' + u.l_name + '%'

...正在使用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 ,'%')

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

答案 1 :(得分:0)

试试这个:

INSERT INTO hr_numbers(`user_id`, `hr_number`)
SELECT DISTINCT U.user_id, T.num
FROM temp T
INNER JOIN users U ON T.NAME LIKE '%' + U.l_name + '%'