所以我有两个表(table_users
和table_values
)
table_users
的列包含id
(主要自动增量),username
,logitude
,latitude
table_values
由user_id
列和otherUser_id
列组成。主键或唯一或自动增量都不会。
table_value
的目的是存储与登录用户具有相同logitude
和latitude
的所有用户ID。但是我不想添加主用户本身,只想添加与他/她的位置值匹配的用户。此外,如果已添加其他用户而不管其位置值如何,我也不想添加其他用户。
下面以bob为例。我想查询table_users并将所有匹配bob的经度和纬度的用户id插入table_values但不是bob自己。
Table_users
id username longitude latitude
1 bob 1 2
2 sam 1 2
3 fred 3 4
4 alex 1 2
Table_values
user_id otherUserId
1 2
1 4
2 1
2 4
4 1
4 2
所以目前我可以添加具有相同位置的用户而无需添加主用户,但我无法在table_values
中添加多行。此外,当我运行当前的mysql查询时,我添加了重复项,这不是我想要的。
到目前为止,这是我的查询
INSERT INTO `table_values` (`user_id`, `otherUser_id`) VALUES ((Select `id` FROM `users` WHERE `username` = 'bob'), (Select `id` FROM `users` where `longitude` = 'bobs logitude AND `latitude` = bobs latitude AND `username` != 'bob'))
值bob,12和3只是示例。这些将基于它是哪个用户。值正在通过php post方法传递
答案 0 :(得分:0)
您想使用insert . . . select
,而不是insert . . . values
。以下插入所有对应于“bob”的对:
INSERT INTO `table_values` (`user_id`, `otherUser_id`)
Select `id`
FROM `users` u1 join
`users` u2
on u1.value_1 = u2.value_2
WHERE u1.`username` = 'bob' and u2.username <> 'bob';
以下内容将它们插入尚不存在的位置:
INSERT INTO `table_values` (`user_id`, `otherUser_id`)
Select u1.`id`, u2.id
FROM `users` u1 join
`users` u2
on u1.value_1 = u2.value_2
WHERE u1.`username` = 'bob' and u2.username <> 'bob' and
not exists (select 1 from table_values where u1.id = user_id and u2.id = otherUser_id);
我不确定你是否想以不同的顺序检查它们。
考虑到问题的性质,我不确定“value_1
= 12 AND value_2
= 3”是什么意思。