2

我正在尝试从两个表中选择数据并将其插入另一个表中。当每个表中的某些内容匹配时,我想选择数据。问题是其中一个比较需要是类似的,而我不知所措。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 + '%';

我曾尝试使用程序,但无法弄清楚,甚至无法判断这是否会有所帮助。

4

2 回答 2

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 等。

于 2010-03-05T15:52:27.987 回答
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 + '%'
于 2010-03-05T15:50:37.777 回答