使用 INNER JOIN 时如何使 MySQL select 随机获胜
How to make MySQL select a random winner when using INNER JOIN
SELECT * FROM `surveys` INNER JOIN `surveyusers` ON `surveyusers`.`survID` = `surveys`.`survID` WHERE `surveyusers`.`hasWon` = 0 ORDER BY RAND();
UPDATE surveys SET winner = email;
这是一项学校作业,要求我们select并更新调查获胜者。
我使用 PHP 管理和显示调查,我希望 SQL 选出获胜者。 PHP 集 survID
我想随机选择一个获胜者并将调查 table 中的获胜者列设置为调查用户 table 中的电子邮件。但是我真的很苦恼。
更新可以采用与 Select.
相同的语法
您可以将这两个查询合二为一。
UPDATE `surveys` `s` SET `s`.`winner` = (
SELECT email FROM `surveyusers`
WHERE `surveyusers`.`hasWon` = 0
AND `survID` = 1
ORDER BY RAND()
LIMIT 1
) WHERE `survID` = 1;
当然,您必须从 PHP 设置 survID。
您可以在 UPDATE 查询中嵌套 SELECT 查询:
UPDATE surveys SET winner = (
SELECT `surveyusers`.email FROM `surveys`
INNER JOIN `surveyusers` ON `surveyusers`.`survID` = `surveys`.`survID`
WHERE `surveyusers`.`hasWon` = 0 ORDER BY RAND() LIMIT 1
) WHERE `survID` = xxx
其中 xxx 是要更新的调查。
SELECT * FROM `surveys` INNER JOIN `surveyusers` ON `surveyusers`.`survID` = `surveys`.`survID` WHERE `surveyusers`.`hasWon` = 0 ORDER BY RAND();
UPDATE surveys SET winner = email;
这是一项学校作业,要求我们select并更新调查获胜者。
我使用 PHP 管理和显示调查,我希望 SQL 选出获胜者。 PHP 集 survID
我想随机选择一个获胜者并将调查 table 中的获胜者列设置为调查用户 table 中的电子邮件。但是我真的很苦恼。
更新可以采用与 Select.
相同的语法您可以将这两个查询合二为一。
UPDATE `surveys` `s` SET `s`.`winner` = (
SELECT email FROM `surveyusers`
WHERE `surveyusers`.`hasWon` = 0
AND `survID` = 1
ORDER BY RAND()
LIMIT 1
) WHERE `survID` = 1;
当然,您必须从 PHP 设置 survID。
您可以在 UPDATE 查询中嵌套 SELECT 查询:
UPDATE surveys SET winner = (
SELECT `surveyusers`.email FROM `surveys`
INNER JOIN `surveyusers` ON `surveyusers`.`survID` = `surveys`.`survID`
WHERE `surveyusers`.`hasWon` = 0 ORDER BY RAND() LIMIT 1
) WHERE `survID` = xxx
其中 xxx 是要更新的调查。