gpt4 book ai didi

mysql - 如何将一个表中存在重复值的数据合并到一行中?

转载 作者:可可西里 更新时间:2023-11-01 08:39:56 26 4
gpt4 key购买 nike

我已经尝试了我认为非常简单的 sql 和 php 来执行以下操作,但结果不正确,我找不到“谷歌”解决方案的好方法。我有一个表 valoreguide2,它包含超过 200,000 条记录,该表中的多个列是重复的行,在某些列中具有不同的值但在其他列中具有相同的值。我想获取所有值并将它们放入一个新表中,同时我想合并标有 isbn 的列中具有相同值的行,并将这些行的所有值保留在新表中的一行中 table 。

example is picture of table

如果您看不到图像,它是一个包含 20 列的表格,其中包括一个自动递增字段。我想从这个表中获取所有信息并将其插入到另一个具有不同列标题的表中,但根据 isbn 将它们组合起来。我写的代码如下:

`$results = $conn->query("select * from valoreguide2 group by isbn");
while ($row12 = $results->fetch_assoc()) {
$isbn = $row12['isbn'];
$APrice =$row12['Acomm'];
$AQty=$row12['Aqty'];
$IPrice =$row12['Icomm'];
$IQty=$row12['Iqty'];
$SPrice =$row12['Scomm'];
$SQty=$row12['Sqty'];
$TPrice =$row12['Tcomm'];
$TQty=$row12['Tqty'];
$NPrice =$row12['Ncomm'];
$NQty=$row12['Nqty'];
$BBPrice =$row12['BBcomm'];
$BBQty=$row12['BBqty'];



$guide_prices = array('amtext'=>(float)($APrice), 'ingram'=>(float)($IPrice), 'sterling'=>(float)($SPrice), 'tichenor'=>(float)($TPrice), 'nebraska'=>(float)($NPrice), 'BB'=>(float)($BBPrice), );

$bestGuidePrice = max($guide_prices);
$bestGuidePrice = number_format($bestGuidePrice,2,'.','');

foreach ($guide_prices as $key => $val) {
if ($val == max($guide_prices))
{
$bestGuide = $key;
}

}

$valoreprice=(($bestGuidePrice/1.15)-5);

$conn->query("insert into valorebest2 (isbn, aprice, iprice, sprice, tprice, nprice, bookbyte, bestprice, valore, bestguide) values ('$isbn','$APrice','$IPrice','$SPrice','$TPrice','$NPrice','$BBPrice','$bestGuidePrice','$valoreprice','$bestGuide') ");
}`

但结果并没有合并行,它只是选择了一个。如果我提供的不够,请告诉我。我不想在有人要说嘿你错过了一个逗号时不停地打字.

编辑:

使用MySQL

已编辑:这是我正在寻找的输出 enter image description here

最佳答案

您能否具体说明您使用的数据库:Oracle、MS SQL、MySql ..?

这是一个基于 ansi SQL 的答案。希望对你有帮助

测试数据。
创建表 tbs_test(ID、ISBN、A、B、C、D)AS
从 DUAL UNION ALL 中选择 1,'0001','A','B','C',10
SELECT 2,'0002','A',null,null,null FROM DUAL UNION ALL
SELECT 3,'0002',null,'B',null,null FROM DUAL UNION ALL
SELECT 4,'0002',null,null,'C',null FROM DUAL UNION ALL
SELECT 5,'0003','A',null,'C',10 FROM DUAL UNION ALL
从 DUAL UNION ALL 中选择 6,'0003',null,null,null,10
SELECT 7,'0004',null,null,'C',10 FROM DUAL;

此选择按 isbn 分组,取位于具有相同 isbn 的行中的每一列的最小值。
选择 isbn、min(A)、min(B)、min(C)、min(D)
来自 tbs_test
按 isbn 分组
按 isbn 排序;

此选择按 isbn 分组,取 A、B、C 的最小值并求和 D
选择 isbn、min(A)、min(B)、min(C)、sum(D)
来自 tbs_test
按 isbn 分组
按 isbn 排序;

希望这有帮助:-)

关于mysql - 如何将一个表中存在重复值的数据合并到一行中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36180327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com