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条经验 获得超7个赞
我认为你想使用 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 关注
- 136 浏览
添加回答
举报