Mysql 在值具有子查询的表中插入并返回多行

Mysql 在值具有子查询的表中插入并返回多行,mysql,sql,database,Mysql,Sql,Database,所以我有两个表table_users和table_value 表_用户的列由idprimary auto increment、username、logitude和latitude组成 表_值由列user_id和otherUser_id组成。它们都不是主键、唯一或自动递增 表_值的目的是存储与登录用户具有相同登录度和纬度的所有用户id。但是,我不想添加主用户本身,只想添加与他/她的位置值匹配的用户。另外,我不想添加其他用户,如果他们已经被添加,不管他们的位置值如何 下面让我们以bob为例。我想查询

所以我有两个表table_users和table_value

表_用户的列由idprimary auto increment、username、logitude和latitude组成

表_值由列user_id和otherUser_id组成。它们都不是主键、唯一或自动递增

表_值的目的是存储与登录用户具有相同登录度和纬度的所有用户id。但是,我不想添加主用户本身,只想添加与他/她的位置值匹配的用户。另外,我不想添加其他用户,如果他们已经被添加,不管他们的位置值如何

下面让我们以bob为例。我想查询表_用户,并将与bob的经度和纬度匹配的所有用户id插入表_值中,而不是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
因此,目前我可以添加具有相同位置的用户,而无需添加主用户,但我无法将多行添加到表_值中。另外,当我运行当前的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方法传递

您要使用的insert。选择,而不是插入。价值观以下插入所有等效于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);
我不确定你是否想按不同的顺序检查


鉴于您的问题的性质,我不确定值1=12和值2=3的用途。

很抱歉,我仔细阅读了我的问题,但我的问题与我的实际要求不符。我已经编辑了我的问题,希望现在能更清楚一点,我明白了,谢谢。对代码做了一些小的更改。多谢各位