我有两个表:searchescommonWords。给定用户输入Q,如果在commonWords中找不到Q,我想将其插入searches

老实说,我只是完全困惑我该怎么做。如何将INSERT INTO与整个SELECT..WHERE结合起来?

我知道我可以通过两个查询来做到这一点:

$db->query('SELECT * FROM commonWords WHERE word = ?', $q);
if ($db->affectedRows() > 0)
  $db->query('INSERT INTO searches (search) VALUES (?)', $q);


但是,我想将此操作限制为一个查询。

谢谢你的帮助!

最佳答案

如果要插入commonWords中存在的行,请尝试此操作

insert into searches (search) select word from commonWords where word = ?


但您必须谨慎,因为必须为searchs.search设置唯一索引
如果没有,您可以插入多个相同值的行

如果要在搜索中插入不存在的单词,则必须尝试执行此操作

$db->query('insert into searches (search) select case when count(word) = 0 then \'?\' else NULL end as word from commonWords where word = ?', $q);

10-06 05:40