为了账号安全,请及时绑定邮箱和手机立即绑定

获取相同产品id的6张表的最低价格

获取相同产品id的6张表的最低价格

PHP
DIEA 2023-07-01 13:01:16
这是表的结构:Table1product_code - product_price100001 - 100Table2product_code - product_price100001 - 200Table3product_code - product_price100001 - 300Table4product_code - product_price100001 - 400Table5product_code - product_price100001 - 500Table6product_code - product_price100001 - 600这个查询显然没问题$price = DB::queryFirstRow("select * from Table1, Table2, Table3, Table4, Table5, Table6where Table1.product_code = Table2.product_code AND Table1.product_code = 100001");根据数据库内的顺序最后一个表的价格echo $price['product_price']; // 600 the price of the last table according to the order within the db我尝试按最低价格订购以获得 100 个结果$price = DB::queryFirstRow("select * from Table1, Table2, Table3, Table4, Table5, Table6where Table1.product_code = Table2.product_code AND Table1.product_code = 100001 ORDER BY product_price");我收到这个错误// ERROR: Column 'product_price' in order clause is ambiguous任何如何解决它的想法,非常感谢您的帮助!
查看完整描述

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


但仅当您正在学习时才这样做,在实际应用程序中,不建议在不同表的字段中使用相同的名称。


查看完整回答
反对 回复 2023-07-01
?
qq_遁去的一_1

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;


查看完整回答
反对 回复 2023-07-01
  • 2 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号