mysql - 如何在mysql的where子句中设置随机连接项?

标签 mysql sql database

我正在尝试生成随机的唯一用户名。我有两个表 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/

相关文章:

mysql - 如何获取为Null的表的列名?

mysql - 用于存储用户多种爱好的关系数据库结构

php - 使用 Laravel 5.3 和 Codeigniter 的多数据库设计应用程序

php - MySQL ORDER BY 最近的区域

Mysql 显示拥有超过 1 本书的作者的书名

php - 如何在 Laravel 中链接数据库关系(多个 has_many?)

sql - Microsoft SQL - 无法永远删除表, "preparing update script"

sql - Hive - 计算数据库中每天的记录数

java - 设计工具的架构

MySQL 错误 1215 (HY000) : Cannot add foreign key constraint