2 回答

TA貢獻1155條經驗 獲得超0個贊
首先,當你使用SELECT *mysql時,會加載from和join中所有表的所有字段。MySQL表中的同名字段會互相覆蓋,那么mysql將只返回最后一個表的字段(即您查詢中的Table6)。如果您執行該查詢:
SELECT * FROM `Table1` WHERE `product_code` = 100001
UNION SELECT * FROM `Table2` WHERE `product_code` = 100001
UNION SELECT * FROM `Table3` WHERE `product_code` = 100001
UNION SELECT * FROM `Table4` WHERE `product_code` = 100001
UNION SELECT * FROM `Table5` WHERE `product_code` = 100001
UNION SELECT * FROM `Table5` WHERE `product_code` = 100001
Mysql 將返回(不完全按照該順序):
product_code - product_price
100001 - 100
100001 - 200
100001 - 300
100001 - 400
100001 - 500
100001 - 600
如果需要,您可以添加ORDER BY product_price ASC LIMIT 1;或。DESC
但僅當您正在學習時才這樣做,在實際應用程序中,不建議在不同表的字段中使用相同的名稱。

TA貢獻1725條經驗 獲得超8個贊
我認為你想使用 UNION 語句來獲取所有價格,然后你可以排序并將第一個結果作為最低價格:
SELECT `product_price` FROM `Table1` WHERE `product_code` = 100001
UNION SELECT `product_price` FROM `Table2` WHERE `product_code` = 100001
UNION SELECT `product_price` FROM `Table3` WHERE `product_code` = 100001
UNION SELECT `product_price` FROM `Table4` WHERE `product_code` = 100001
UNION SELECT `product_price` FROM `Table5` WHERE `product_code` = 100001
UNION SELECT `product_price` FROM `Table5` WHERE `product_code` = 100001
ORDER BY 1 ASC LIMIT 1;
- 2 回答
- 0 關注
- 163 瀏覽
添加回答
舉報