如何在对另一个表进行检查后将单词插入表中?

时间:2011-09-21 00:33:08

标签: php mysql join

我有两个表: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);

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果要插入commonWords中存在的行

,请尝试此操作
insert into searches (search) select word from commonWords where word = ?

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

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

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