Php SQL查询:如果存在,则更新,否则插入,然后向链接表添加ID
我正在尝试创建一个SQL查询,它执行以下伪代码。其目的是解析URL,并将其组成词添加到词表中。如果它们已经存在,则增加它们的计数器。最后,将URL的ID和每个组成单词ID添加到一个表中,该表将它们作为外键链接Php SQL查询:如果存在,则更新,否则插入,然后向链接表添加ID,php,mysql,sql,Php,Mysql,Sql,我正在尝试创建一个SQL查询,它执行以下伪代码。其目的是解析URL,并将其组成词添加到词表中。如果它们已经存在,则增加它们的计数器。最后,将URL的ID和每个组成单词ID添加到一个表中,该表将它们作为外键链接 if (existsInTable(form, lemma, category)) occurenceCount++; else insertInTable(form, lemma, category); insertInLinkTable(urlID, getIDinT
if (existsInTable(form, lemma, category))
occurenceCount++;
else
insertInTable(form, lemma, category);
insertInLinkTable(urlID, getIDinTable(form, lemma, category));
我希望这是有道理的。请注意,我已经将URL的ID值保存为前面的PHP变量,但是我需要获取刚刚插入的单词的ID,以便将其添加到链接表中
我写了一个查询来说明我的意思,但它不可能是一个函数式查询,甚至可能在语法上没有意义。我该怎么做呢
IF EXISTS
(
SELECT * FROM Words_Table
WHERE
word LIKE '{$input[0]}' and
lemma LIKE '{$input[1]}' and
category LIKE '{$input[2]}'
LIMIT 1
)
UPDATE Words_Table
SET occurrenceCount = occurrenceCount + 1
WHERE
word LIKE '{$input[0]}' and
lemma LIKE '{$input[1]}' and
category LIKE '{$input[2]}'
ELSE
INSERT INTO Words_Table
(word, lemma, category, occurrenceCount)
VALUES('{$input[0]}', '{$input[1]}', '{$input[2]}', 1)
INSERT INTO Linking_Table (url_id, word_id)
VALUES
(
$URLid,
(
SELECT id FROM Word_Table
WHERE
word LIKE '{$input[0]}' and
lemma LIKE '{$input[1]}' and
category LIKE '{$input[2]}'
LIMIT 1
)
)
我很确定我不能像在最后那样使用SELECT查询来代替值,而且我确信有一种方法可以做到这一点,而不必重复相同的WHERE查询三次。这应该可以满足您的需要: