我正在尝试生成随机的唯一用户名。我有两个表 syllable1 和 syllable2。两者都有两个列id,word。我从两个表中选择随机单词并将它们连接起来。现在我想检查这个串联名称不在我的用户表中,例如
SELECT CONCAT((SELECT word FROM syllable1 ORDER BY RAND() LIMIT 1), (SELECT word FROM syllable2 ORDER BY RAND() LIMIT 1)) WHERE NOT IN (SELECT username FROM user)
在 WHERE 子句之前,它可以很好地生成随机名称。请帮忙完成第二步。
最佳答案
我更喜欢在 FROM
子句中使用子查询:
SELECT CONCAT(s1.word, s2.word)
FROM (SELECT word FROM syllable1 ORDER BY RAND() LIMIT 1) s1 CROSS JOIN
(SELECT word FROM syllable2 ORDER BY RAND() LIMIT 1) s2
WHERE NOT EXISTS (SELECT 1
FROM user u
WHERE u.username = CONCAT(s1.word, s2.word)
);
关于mysql - 如何在mysql的where子句中设置随机连接项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55943203/