Php 在对照另一个表检查单词后,如何将其插入表中?

Php 在对照另一个表检查单词后,如何将其插入表中?,php,mysql,join,Php,Mysql,Join,我有两个表:搜索和常用词。给定用户输入Q,如果在常用词中找不到Q,我想将其插入搜索 老实说,我只是完全不知道我该怎么做。如何将INSERT INTO与整个SELECT结合起来。。什么东西 我知道我可以通过两个查询来完成: $db->query('SELECT * FROM commonWords WHERE word = ?', $q); if ($db->affectedRows() > 0) $db->query('INSERT INTO searches (se

我有两个表:
搜索
常用词
。给定用户输入Q,如果在
常用词中找不到Q,我想将其插入
搜索

老实说,我只是完全不知道我该怎么做。如何将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 = ?
但是你必须小心,因为你必须为搜索设置一个唯一的索引 如果没有,则可以插入具有相同值的多行

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

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

“给定用户输入Q,如果在commonWords中找不到Q”-我想当
commonWords中没有行时,他需要在
搜索中插入一行
是的,我读到了,但他的语句
如果($db->affectedRows()>0)
正在讲述另一个故事。。。我编辑了我的答案,现在您有两个解决方案;-)插入null可能会导致错误(如果他没有null约束)或大量垃圾行,这就是他必须为搜索设置唯一索引的原因。search;-)