Php SQL查询:如果存在,则更新,否则插入,然后向链接表添加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

我正在尝试创建一个SQL查询,它执行以下伪代码。其目的是解析URL,并将其组成词添加到词表中。如果它们已经存在,则增加它们的计数器。最后,将URL的ID和每个组成单词ID添加到一个表中,该表将它们作为外键链接

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查询三次。

这应该可以满足您的需要: