我正在尝试从两个表中选择数据并将其插入另一个表中。我希望在每个表中的某些内容匹配时选择数据。问题是其中一个比较需要是一样的,我不知所措。 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 + '%';
我试图使用程序,但无法弄清楚,甚至不知道这是否会有所帮助。
答案 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 + '%'