我有2个表,我想根据条件将数据从一个表插入另一个表:
表1:
user_id,
agency_user_id,
表1的输出:
user_id agency_user_id
330 20
330 21
239 10
... ..
239 10
239 12
239 9
表2: 与目前我不需要的其他一些列相同......
一旦用户登录,他就有2个下拉菜单,其中一个是我列出的user_id(不是id,而是基于id的信息),另一个是agency_user_id ......
所以问题是我不想有2次:
239 10
239 10
表2中的......我只想要一次(独一无二)...... 这是我使用的查询,它不能正常工作:
INSERT INTO table2
(`user_id`,`agency_user_id`)
SELECT `user_id`,`agency_user_id`
FROM table2
WHERE `user_id` AND `agency_user_id` NOT IN (
SELECT `user_id`
FROM table1
);
现在当我检查表2中有重复的条目时...... 我知道我在那里做错了什么......不是部分......
有什么建议吗?
感谢。
编辑: 我也尝试过这个:
INSERT INTO table2
(`user_id`,`agency_user_id`)
SELECT DISTINCT `user_id`,`agency_user_id`
FROM table2
WHERE `user_id` AND `agency_user_id` NOT IN (
SELECT `user_id`
FROM table1
);
不工作......
表2的当前输出
user_id agency_user_id
330 20 => ok
330 21 => ok
239 10 => ok
239 10 => not ok
239 12 => ok
239 9 => ok
依旧......
答案 0 :(得分:0)
我认为你要找的是DISTINCT
:
INSERT INTO table2
(`user_id`,`agency_user_id`)
SELECT DISTINCT `user_id`,`agency_user_id`
FROM table2
WHERE `user_id` NOT IN (
SELECT `user_id`
FROM table1
) AND `agency_user_id` NOT IN (
SELECT `user_id`
FROM table1
);
我删除了created_at
和updated_at
以避免重复,并修复NOT IN
以适用于user_id
和agency_user_id
。
答案 1 :(得分:0)
您可以尝试使用临时表:
如下例所示:
select * from TABLE1;
+------+------+
| a | b |
+------+------+
| 1 | 2 |
| 3 | 4 |
| 1 | 2 |
| 4 | 5 |
+------+------+
如你所见
1 2
1 2
重复
创建临时表:
create temporary table temp1 (a text, b text, c text);
插入此内容:
insert into temp1 select a,b,count(*) from TABLE1 group by a,b;
select * from temp1;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 2 | 2 |
| 3 | 4 | 1 |
| 4 | 5 | 1 |
+------+------+------+
3 rows in set (0.00 sec)
最后
insert into table2 (a ,b) select a,b from temp;
select * from table2;
+------+------+
| a | b |
+------+------+
| 1 | 2 |
| 3 | 4 |
| 4 | 5 |
+------+------+
3 rows in set (0.00 sec)
帮我一次!!!
答案 2 :(得分:0)
你应该尝试这样的事情:
INSERT INTO table2(`user_id`,`agency_user_id`)
SELECT DISTINCT `user_id`,`agency_user_id`
FROM table1
WHERE `user_id` + `-` + `agency_user_id` NOT IN (SELECT `user_id` + `-` + `agency_user_id` FROM table2);
这将选择Table1
中尚未包含的Table2
中的不同值。
您拥有insert
的方式是从user_id
中提取Table2
以内的所有Table1
。所以,如果user_id
中Table2
Table1
以外的{{1}}不在{{1}},您将获得重复。