gpt4 book ai didi

mysql - 插入到值具有子查询的表中并返回多行

转载 作者:行者123 更新时间:2023-11-30 23:14:51 25 4
gpt4 key购买 nike

所以我有两个表(table_userstable_values)

table_users 具有由 id(主要自动递增)、usernamelogitude 组成的列纬度

table_values 由列 user_idotherUser_id 组成。主键或唯一或自动递增都不是。

table_value 的目的是存储所有与登录用户具有相同logitudelatitude 的用户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 方法传递

最佳答案

您想使用 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);

我不确定你是否想以不同的顺序检查它们。

鉴于您的问题的性质,我不确定“value_1 = 12 AND value_2 = 3”是什么意思。

关于mysql - 插入到值具有子查询的表中并返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18393170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com