Php mysql-仅插入来自其他表的唯一数据
我有两个表,我想根据以下条件将数据从一个表插入到另一个表: 表1:Php mysql-仅插入来自其他表的唯一数据,php,mysql,Php,Mysql,我有两个表,我想根据以下条件将数据从一个表插入到另一个表: 表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: 有相同的加上一些其他专栏,我现在不需要 一旦用户登录,他有两个下拉菜单,在其中一个我列出的是用户id不是id而是基于id的信
user_id,
agency_user_id,
表1的产出:
user_id agency_user_id
330 20
330 21
239 10
... ..
239 10
239 12
239 9
表2:
有相同的加上一些其他专栏,我现在不需要
一旦用户登录,他有两个下拉菜单,在其中一个我列出的是用户id不是id而是基于id的信息,在另一个机构中列出的是用户id
所以问题是我不想有两次:
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
等等 我认为你要找的是不同的:
其中我删除了created_at并更新了_at以避免重复,并修复了NOT IN以同时应用于用户id和机构用户id。您可以尝试使用临时表: 如以下示例所示:
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)
曾经帮助过我 您可能应该尝试以下方法:
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);
这将从表1中选择不在表2中的不同值
插入的方式是从表2中提取所有不在表1中的用户id。因此,如果表2中的用户id不在表1中,则会得到重复的用户id。不应将创建的和更新的用户id从一个表插入到另一个表中。你试过了吗?谢谢你的建议但我需要。。。是的,我有,但我仍然得到重复的条目…或尝试插入忽略。。。和主键这部分正确吗?其中用户id和机构用户id不在表1中选择用户id;您正在将代理\用户\ id与用户\ id连接起来,这在当时对一个组没有意义。DISTINCT并不总是有效的。一旦用户登录,他有2个下拉菜单-那么所有这些的HTML在哪里呢?人们如何知道这是否失败?这部分正确吗?其中用户id和机构用户id不在表1中选择用户id;您正在将代理用户id与用户id连接起来,这是不合理的。我猜您已经在不同位置创建了和/或更新了不同的用户id和代理用户id的不同条目。您需要这些吗?它们没有在您想要的输出中指定…现在我添加了更少的行,但仍然有重复的行。。。也请查收edit@Krishnakumar我什么都没有,0行受影响,0errors@Krishnakumar即使在第一次从表2=>表1更改之后,最后选择将用户id替换为机构用户id
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);