我的数据库中有一个很多表,每小时都有数千次推送。让我们说它看起来像:
+-----------------------+
| pageNotes |
+-----+--------+--------+
| id | pageid | noteid |
+-----+--------+--------+
| 1 | 37583 | 385839 |
| 2 | 37583 | 385840 |
| ... | ... | ... |
+-----+--------+--------+
当我想要更新表时,我只有页面URL(位于表“pages”中,其pageid为pageNotes表中的FK)。我真的想避免在我的代码中缓冲数以万计的记录来进行PK查找,所以我有点好奇,除了子查询之外还有另一种方法来实现这一点。
目前,查询如下:
INSERT INTO
`pageNotes ` (id,pageid,noteid)
VALUES ('',
(SELECT id FROM pages WHERE url='http://www.test.com/index.html')
,385841);
当然这不可用,因为如果页面不存在,查询将失败。我正在寻找的是获取pk或在FK表中插入行的方法。
答案 0 :(得分:1)
您可以将查询简化为:
INSERT INTO `pageNotes` (id, pageid, noteid)
SELECT '', p.id, 385841
FROM pages p
WHERE url = 'http://www.test.com/index.html';