MySQL:两个无关联表如何查询得到包含各自随机值的单行结果
解决方案
方法1:子查询作为返回字段(单字段场景首选)
直接将两个返回单行单值的子查询放在SELECT字段列表中即可,无需关联条件:
SELECT (SELECT column_a FROM table_x ORDER BY rand() LIMIT 1) AS column_a, (SELECT column_b FROM table_y ORDER BY rand() LIMIT 1) AS column_b;
方法2:交叉连接拼接结果集(多字段场景首选)
如果需要从每张表中获取多个随机字段,可使用CROSS JOIN拼接两个仅返回1行的子查询,1行*1行的笛卡尔积最终结果就是1行:
SELECT a.column_a, b.column_b FROM (SELECT column_a FROM table_x ORDER BY rand() LIMIT 1) AS a CROSS JOIN (SELECT column_b FROM table_y ORDER BY rand() LIMIT 1) AS b;
原方案问题说明
UNION是用于纵向合并多个结果集(会新增行数),你需要的是横向拼接字段(新增列数),因此UNION不匹配你的需求。
内容的提问来源于stack exchange,提问作者aaxiom
相关产品推荐
相关产品推荐

