首页 > 解决方案 > MySQL Insert 如果不存在,否则返回 id

问题描述

我有以下查询;

INSERT INTO table (full_name)
SELECT * FROM (SELECT 'John') AS tmp
WHERE NOT EXISTS (
    SELECT * FROM table WHERE full_name = 'John'
) LIMIT 1;

SELECT id FROM table WHERE full_name = 'John';

它有效,但如您所见,查询分为两部分。只能在单个查询中完成吗?

full_name如果它不存在,我想插入一个新的。否则,返回id现有的full_name

标签: mysql

解决方案


您可以使用串联来做到这一点。

$sql = INSERT INTO table (full_name)
SELECT * FROM (SELECT 'John') AS tmp
WHERE NOT EXISTS (
    SELECT * FROM table WHERE full_name = 'John'
) LIMIT 1;

$sql .= SELECT id FROM table WHERE full_name = 'John';

推荐阅读