【发布时间】:2020-07-17 15:07:35
【问题描述】:
我有一张桌子,比如buchas,其中包含产品列表。我必须创建另一个表buchas_type,其中包含buchas 中产品的类型(如果您愿意,可以使用类)。
现在我必须通过添加type_id 列来引用buchas 中的产品类别。
所以,我的问题可以分为两部分:
我需要一个子查询来通过名称“猜测”产品类型。这应该有点容易,因为产品的名称在某处包含其类型的名称。示例:
-----------------Name----------------- | ---Type---
BUCHA GOB 1600 GOB
问题是我有一个类型 GOB(2) 会与类型 GOB 混淆。 (我也有其他相似的类型提出了同样的问题)。
到目前为止,我得到了这个:
SELECT buchas_type.id
FROM buchas_type
JOIN buchas ON buchas.description LIKE '%' || buchas_type.type || '%'
ORDER BY length(type) desc LIMIT 1;
这将解决外观相似类型的问题,因为它返回最长的匹配。但是,我需要一个WHERE 子句,否则我得到的总是相同的buchas_type_id。例如,如果我尝试Where buchas.id = 50,我会得到正确的结果。
问题的第二部分是UPDATE 命令本身。我需要从我在 (1) 中显示的子查询中填写最近创建的 buchas_type_id。因此,对于buchas 中的每一行,它必须使用当前行的描述作为参数来搜索buchas_type 中的类型。
如何实现?
【问题讨论】:
标签: postgresql sql-update subquery