gpt4 book ai didi

mysql select 从一个特定行插入两个值,并从某个随机行中插入两个值(成对)

转载 作者:行者123 更新时间:2023-11-29 00:04:29 28 4
gpt4 key购买 nike

这个问题Mysql Select some random rows and plus one specific row非常接近我想要的,只是我不知道如何将 ORDER BY 应用于我的情况。

当有人接受邀请加入我的网站时,我想将该受邀者添加到与他们的邀请者相关联的“ friend ”列表中,但我也想添加 1 或 2 个随机受邀者以让他们开始发展网络。以下是添加受邀者的工作:

INSERT INTO friends (user, friend) VALUES (SELECT users.user as user1, invited.user as user2 FROM users INNER JOIN invited ON users.email=invited.invitee

我选择邀请人的用户名加上被邀请人的用户名,然后加入并将其插入 friend 表中。到目前为止对邀请者来说一切顺利,但我如何添加随机好友?有没有一种方法可以附加到这个语句上,从用户表中添加 1 或 2 个随机用户名?

我真的想插入以下内容(其中 user1 始终是同一个人):

(user1, inner join发现的好友)(user1,随机用户)(user1,另一个兰德用户)

这是我想做但没有用的:

INSERT INTO friends (user, friend) VALUES (SELECT users.user as user1, invited.user as user2 FROM users INNER JOIN invited ON users.email=invited.invitee), (user1, SELECT user FROM users ORDER BY RAND() LIMIT 1),  (user1, SELECT user FROM users ORDER BY RAND() LIMIT 1);

但这只会给我以下不是很有帮助的错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT users.user as user1, invited.user as user2 FROM users INNER JOIN invited ' at line 1

是否有另一种方法可以通过单个函数调用来做到这一点?或者,如果没有,使用准备好的语句执行此操作的最有效方法是什么?

谢谢!

最佳答案

我觉得你们很接近。

在这种情况下,您可以使用简单的 variable assignment 而不是陷入连接(除了您需要的第一个连接)和子查询中和一个 UNION 子句。唯一导致问题的另一件事是您需要使用 INSERT INTO...SELECT 语法与 INSERT INTO...VALUES 语法(Reference ).

INSERT INTO friends (user, friend) 
SELECT @user1:=users.user as user1, invited.user as user2
FROM users
INNER JOIN invited
ON users.email=invited.invitee
WHERE invited.invitee = 'baz@bar.com'
UNION ALL
(SELECT @user1 as user1, user
FROM users
ORDER BY RAND() LIMIT 2)

关于mysql select 从一个特定行插入两个值,并从某个随机行中插入两个值(成对),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184390/

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