我想我的计划的饭菜:MySQL的加入给不一致的结果
select * from
(select floor(rand() * 3) + 1 as rand_id, days1.* from (
select 'Monday' as dy from dual
union select 'Tuesday' from dual
union select 'Wednesday' from dual
union select 'Thursday' from dual
union select 'Friday' from dual
) days1) days
left join
(select id as rand_id, meals1.* from (
select 1 as id, 'Pizza' as dinner from dual
union select 2, 'Hotdogs' from dual
union select 3, 'Spaghetti' from dual)meals1) meals
on days.rand_id = meals.rand_id;
当我SQL Fiddle it works fine运行此查询,但是当我跟我的本地MySQL实例尝试它,我得到总乱码结果:随机
+---------+-----------+---------+------+---------+
| rand_id | dy | rand_id | id | dinner |
+---------+-----------+---------+------+---------+
| 1 | Wednesday | 2 | 2 | Hotdogs |
| 1 | Monday | NULL | NULL | NULL |
| 3 | Tuesday | NULL | NULL | NULL |
| 3 | Friday | NULL | NULL | NULL |
+---------+-----------+---------+------+---------+
或
+---------+-----------+---------+------+-----------+
| rand_id | dy | rand_id | id | dinner |
+---------+-----------+---------+------+-----------+
| 3 | Wednesday | 1 | 1 | Pizza |
| 1 | Wednesday | 3 | 3 | Spaghetti |
| 2 | Thursday | NULL | NULL | NULL |
| 3 | Friday | NULL | NULL | NULL |
+---------+-----------+---------+------+-----------+
我希望看到的是:用随机加入的行数5行,每行在rand_id中的随机数在1到3之间,days.rand_id和meals.rand_id都是相同的。我希望每次运行查询时,我都会随机抽取一餐,为每周的每一天提供一行。我的本地mysql(但不是sqlfiddle的mysql)会给我这个输出有什么问题?
(注:最初的目标是随机用假客户数据来生成测试数据链路真正的客户记录,但我已经简化了这个例子)
我看不到汉堡。我认为这是根本缺陷 – Strawberry
我在我的机器上试过了,它看起来是文件,不是吗? https://ibb.co/c82XxF – Ali
@aAli看起来不错,但我在我的办公室尝试了几个MySQL实例,他们都给出了垃圾结果。 –