我将XML存储在名为tbl_products的表中,我想从此XML <id>
中提取ID,如果ID出现在另一个表中,则返回ID。
我知道这可能措辞严厉,但我发现很难解释。
SELECT *, cast(xpath('/objects/id/text()', objectsXML) as text[])
FROM "productData".tbl_products
WHERE personId = 314
AND EXISTS (SELECT * FROM prids)
LIMIT 15
示例XML
<objects>
<id>
521GT67
</id>
</objects>
'521GT67'是否出现在表tbl_products中的任何位置?
所以我想检查第二个表中的ID是否出现在任何地方。
第二个表包含每列的产品,并且ID在行中向下。
此语句不返回任何内容,但我确信它应该返回至少10行。 无论
如何,它的行为都是一样的AND EXISTS (SELECT * FROM prids)
我想要的输出只是第二个表格(在任何一列)中出现的id列表
基于@G_H的评论,这似乎很合乎逻辑。 我现在有以下
SELECT *, cast(xpath('/objects/id/text()', objectsXML) as text[])
FROM "productData".tbl_products p
WHERE personId = 314
AND EXISTS (SELECT ids FROM prids r WHERE p.cast(xpath('/objects/id/text()', objectsXML) = r.ids)
LIMIT 15
返回错误
ERROR: syntax error at end of input
LINE 5: LIMIT 15
似乎更有希望