[英]Insert one column from a table to another based on another column matching
我一直在嘗試使此查詢正常工作,但它拋出錯誤:
UPDATE property_image PI
SET PI.property_id = (SELECT PTPI.property_id
FROM property_to_property_image PTPI
WHERE PI.id = PTPI.property_image_id)
這是說:
Column 'property_id' cannot be null
但是該列中有值。
使用INNER JOIN
子句:
UPDATE property_image PI
INNER JOIN property_to_property_image PTPI
ON PI.id = PTPI.property_image_id)
SET PI.property_id;
失敗是因為property_image中的條目在property_to_property_image表中沒有條目,並且mysql嘗試將property_id更新為null,這對於該列是不允許的。
問題是,你想要什么。
如果只想更新具有匹配條目的條目,請使用內部聯接。
UPDATE property_image pi
INNER JOIN property_to_property_image ptpi ON pi.id = ptpi.property_image_id
SET pi.property_id = ptpi.property_id
否則,您的查詢就可以了,但是需要一個COALESCE(value, replacement)
語句。
UPDATE property_image PI
SET PI.property_id = COALESCE(
SELECT PTPI.property_id
FROM property_to_property_image PTPI
WHERE PI.id = PTPI.property_image_id), 0)
但效率不高,因為它將對property_image中的每一行進行新選擇。 更好:修改UPDATE查詢以使用左聯接
UPDATE property_image pi
LEFT JOIN property_to_property_image ptpi ON pi.id = ptpi.property_image_id
SET pi.property_id = COALESCE(ptpi.property_id, 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.