这是我的表数据
表名是Obat
+---------+---------+----------------+-------+ | merek | formula | nm_obat | harga | +---------+---------+----------------+-------+ | am001 | 1x1 | Antimo | 3500 | | gp002 | 1x1 | Glimipirid | 20000 | | if001 | 1x1 | Inzaflu | 4500 | | mf500 | 3x1 | Metformin500mg | 10000 | | mixg001 | 1x1 | Mixagrip | 5000 | +---------+---------+----------------+-------+
如何将Harga
列中的值与Harga
的平均值相加?
这就是我一直在尝试的:
UPDATE obat SET
harga = harga + (select avg(harga) from obat);
答案 0 :(得分:0)
创建仅包含平均值的数据集。然后将其交叉连接到基本集,允许您将两个值一起添加。由于数据表中的1 *#记录将等于数据表中的相同记录,因此您将获得相同的行数。
此方法选择平均一次。您可以通过将其移动到选择中来每次运行此选择,但这通常较慢..
最佳方法IMO。 (在我看来)
SELECT A.merek, A.formula, A.nm_obat, A.harga, harga+B.mAvg as newCol
FROM DataTable A
CROSS JOIN (SELECT avg(harga) mAvg FROM dataTable) B
替代方法但速度要慢得多。
SELECT A.merek
, A.formula
, A.nm_obat
, A.harga
, harga+(SELECT avg(harga) mAvg
FROM dataTable) as newCol
FROM DataTable A
更新它应该是这么简单: (其他例子)mysql update column with value from another table
update obat A
cross join (select avg(harga) mavg from obat) b
Set A.harga = A.Harga+B.Mavg;