mysql - 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
。
解决方案
您可以使用串联来做到这一点。
$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';
推荐阅读
- java - MiniMax 算法的一个非常有趣的问题。什么可能导致这种行为?
- docker - 在不运行镜像的情况下显示安装在 docker 镜像中的包
- c# - ASP.net MVC problem in Controller managing a [HttpPost] : renders Layout and Page twice
- ios - vImageMatrixMultiply_ARGB8888ToPlanar8 在构建发布模式 iOS 应用程序时不起作用
- r - 为什么在 R 中建模比返回的对象消耗更多的内存
- sql-server - 从 SQL 的列中选择不同出现的子字符串
- java - 使用 Feign @RequestLine 添加 decodeSlash
- amazon-web-services - 同一VPC的不同cidr块中的资源是否可以相互访问aws
- oracle - Oracle 中的函数。需要使用 Oracle Function 搜索并找到传递的参数
- css - 为文本制作带有渐变的底部边框