我有2个表 - 用户,区域和用于连接用户和区域的连接/连接表。
我需要在连接表中插入用户尚未拥有的所有区域值,我不确定如何解决这个问题。
我尝试过这么多种方法,但我不完全确定如何只将表中已存在的值放入连接表中。有没有人有任何想法或建议?
SELECT
CONVERT( CONCAT('INSERT INTO user_region VALUES(',
user.id,
',',
reg.id,
');') USING UTF8)
FROM
user user
JOIN
user_region user_reg ON user_reg.id = user.id
JOIN
region reg ON reg.id = user_reg.id
WHERE
(user.email_address LIKE '%gmail%'
OR user.email_address LIKE '%hotmail%');
User Table User Region Region
----------- ----------- ------
1 1 2 1
2 3 2 2
3 3 4 3
4 4 3 4
答案 0 :(得分:0)
有点
INSERT INTO user_region (userID, regionID)
SELECT u.userID, r.regionID
FROM
(SELECT DISTINCT userId
FROM user
WHERE user.email_address LIKE '%gmail%'
OR user.email_address LIKE '%hotmail%') u
JOIN region r ON NOT EXISTS (
SELECT 1
FROM user_region ur
WHERE ur.userID = u.userID AND ur.regionID = r.regionID )