如何将一个单词插入到表中,然后与另一个表进行比对?


How can I insert a word into a table after checking it against another table?

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

老实说,我完全不知道该怎么做。我如何结合INSERT INTO与整个SELECT ..东西在哪里?

我知道我可以用两个查询:

$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 = ?

但是你必须小心,因为你必须为search。search设置一个唯一的索引如果没有,则可以插入相同值

的多行。

如果你想在搜索中插入一个不存在的单词,那么你必须尝试这个

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