我想我的計劃的飯菜: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實例,他們都給出了垃圾結果。 –