SELECT * FROM `surveys` INNER JOIN `surveyusers` ON `surveyusers`.`survID` = `surveys`.`survID` WHERE `surveyusers`.`hasWon` = 0 ORDER BY RAND();
UPDATE surveys SET winner = email;
这是一项学校作业,要求我们选择并更新调查获胜者。
我使用PHP来管理和显示调查,我希望SQL选择胜利者。 PHP设置survID
我想挑选一个随机的获胜者,并将调查表中的获胜者coloumn设置为surveyusers表中的电子邮件。但我真的遇到了很多麻烦。
答案 0 :(得分:1)
更新可以采用与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设置的幸存者。
答案 1 :(得分:-1)
您可以在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是要更新的调查。