gpt4 book ai didi

sql - 如何使用 `select` 的结果作为 `insert into` 的参数

转载 作者:行者123 更新时间:2023-12-03 18:37:53 27 4
gpt4 key购买 nike

我正在用 sqlite3 破解我的 Zotero 数据库,因为 Zotero gui 仍然不支持一次编辑多个记录。当前的任务是查找特定期刊中的所有项目,分离出那些还没有 journalAbbreviation 值的项目。 ,并添加正确的缩写。以下是相关表格:

fields (fieldID, fieldName, fieldFormatID)
itemData (itemID, fieldID, valueID)
itemDataValues (valueID, value)

这是我的查询以查找我想要的所有记录:
SELECT itemData.itemID
FROM fields JOIN itemData JOIN itemDataValues
WHERE (fields.fieldname IN ('publicationTitle'))
AND (fields.fieldID = itemData.fieldID)
AND (itemData.valueID = itemDataValues.valueID)
AND (itemDataValues.value IN ('The Journal of the Acoustical Society of America'));

现在我有了 itemID 的列表s,我想在 itemData 中添加一堆条目 table 。示意图我想这样做:
INSERT INTO itemData (itemID, fieldID, valueID)
VALUES (A,X,Y),(B,X,Y),(C,X,Y), ... (W,X,Y);

其中 X 是 fieldID对于“journalAbbreviation”,Y 是 valueID对于'J。声学。社会党。是。' (我知道如何获得这些值)。我该怎么写 INSERT INTO替换声明 A , B , C等与 itemID来自我的 SELECT上面查询?

注意:一些记录中已经有期刊缩写。我一直在写 SQL用了几天,不知道会不会出问题试试 INSERT表中已经存在的记录(我假设它会存在,基于对主键的模糊理解以及 itemData 表中的架构部分包含一行 PRIMARY KEY (itemID, fieldID) 的事实)。所以可能需要先排除那些 itemIDitemData 中已有记录的 s包括 X 为 fieldID .

最佳答案

与@drammock 几乎没有讨论,发现一个有效的查询。此查询的主要部分是 EXCEPT关键词。

INSERT INTO itemData (itemID, fieldID, valueID) 
SELECT itemData.itemID, 25, 8356
FROM fields JOIN itemData JOIN itemDataValues
WHERE (fields.fieldname IN ('publicationTitle'))
AND (fields.fieldID = itemData.fieldID)
AND (itemData.valueID = itemDataValues.valueID)
AND (itemDataValues.value IN ('The Journal of the Acoustical Society of America'))
EXCEPT SELECT itemData.itemID, 25, 8356
FROM fields JOIN itemData JOIN itemDataValues
WHERE (fields.fieldname IN ('journalAbbreviation'))
AND (fields.fieldID = itemData.fieldID)
AND (itemData.valueID = itemDataValues.valueID)
AND (itemDataValues.value IN ('J. Acoust. Soc. Am.', 'J Acoust Soc Am'));

关于sql - 如何使用 `select` 的结果作为 `insert into` 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15208598/

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