這裏是二一見鍾情等於查詢:MySQL的工會不確定性
SELECT obj_id
FROM obj t JOIN joined_a a ON t.`id` = a.`obj_id`
UNION
SELECT obj_id
FROM obj t JOIN joined_b b ON t.`id` = b.`obj_id`;
和
SELECT obj_id
FROM obj t JOIN joined_b b ON t.`id` = b.`obj_id`
UNION
SELECT obj_id
FROM obj t JOIN joined_a a ON t.`id` = a.`obj_id`;
他們只用選擇的順序不同。
結果行數量來自這兩個查詢是不同的!
這怎麼可能?
如果我將DISTINCT添加到每個SELECT ...行數量將具有NEW值,最大值!
如果我加括號每個選擇像
(select ...)
UNION
(select ...)
行數量將有DISTINCT的價值。
請您發表您的疑問,正是因爲他們是和一些示例數據(足以重現) – Quassnoi
我認爲這是確定的 - 在至少如果'obj_id'在兩個表中都有完全相同的類型,那麼你的測試有些問題。可以想象,類型可能取決於語句的順序,但MySQL文檔聲稱所有子查詢都用於確定輸出類型。你意識到對結果排序沒有保證,除非你使用'order by'。 –