Mysql 将两个表合并为完整的
假设我有下面两张表Mysql 将两个表合并为完整的,mysql,Mysql,假设我有下面两张表 id| price id| qty 1 | 1000 1 | 0.5 2 | 1020 3 | 1 3 | 1040 6 | 1.5 4 | 1050 5 | 1070 6 | 1090 对于结果,我想使用最后的可用数量来计算每个值 id| price| qty | value (qty * price) 1 | 1000 | 0.5 | 500 2 | 1020 | 0.5 |
id| price id| qty
1 | 1000 1 | 0.5
2 | 1020 3 | 1
3 | 1040 6 | 1.5
4 | 1050
5 | 1070
6 | 1090
对于结果,我想使用最后的可用数量来计算每个值
id| price| qty | value (qty * price)
1 | 1000 | 0.5 | 500
2 | 1020 | 0.5 | 510
3 | 1040 | 1 | 1040
4 | 1050 | 1 | 1050
5 | 1070 | 1 | 1070
6 | 1090 | 1.5 | 1635
我找不到办法。你能帮忙吗 只需使用一个参数,但您将无法获得所需的确切结果,因为您的第二个表中没有项目的完整值集
SELECT id, price, qty, qty*price as value from qtys LEFT JOIN prices on id
内部联接也可以
SELECT id, price, qty, qty*price as value from qtys INNER JOIN prices on id
这将产生如下结果:
id| price| qty | value (qty * price)
1 | 1000 | 0.5 | 500
3 | 1040 | 1 | 1040
6 | 1090 | 1.5 | 1635
无法在ID 2、4和5上进行联接。为了产生准确的输出,您必须为缺失项目的数量内插一些值。但是,您似乎期望某些缺失值为0.5,另一个为1.0
SQL JOIN子句用于组合两个或多个表中的行,
基于它们之间的公共字段
最常见的联接类型是:SQL内部联接简单联接。SQL语句
内部联接返回联接所在的多个表中的所有行
条件满足
来源:您可以使用相关子查询查找数量值,然后使用聚合:
select id, price, qty, qty * price as value
from (select t1.*,
(select t2.qty
from t2
where t2.id <= t1.id
order by t2.id desc
limit 1
) as qty
from t1
) t;
我理解答案,但不理解投票结果。第一个查询将返回一组空值。第二个将返回3行。@GordonLinoff oops,西部最快的枪对我的回应:希望编辑能挽救它,但如果你认为答案值得删除,会很高兴地删除它。不,编辑并没有改善答案,因为OP的问题是围绕的。