php – 如果不存在不同的结果,则INSERT到表中

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如果不存在不同的结果,则INSERT到表中脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的’用户sql表结构(ID是随机生成的,不是自动递增的):

ID    name     deleted    lastActive
3242  Joe      0          20-6-2012 23:14
2234  Dave     0          20-6-2012 23:13
2342  Simon    1          20-6-2012 23:02
9432  Joe      1          20-6-2012 22:58

可以有多个具有相同名称的已删除(已删除= 1)用户,但只有1个具有相同名称的未删除用户(因此添加Simon很好,但Dave不是).如果在一个SQL查询中没有已经具有相同名称且已删除= 0的记录,我该如何插入?我需要这样的东西:

INSERT INTO users (ID,name) VALUES ($id,$name) 
    WHERE NOT EXISTS (SELECT 1 From users WHERE name = $name AND deleted = 0)

但这不是正确的语法.

解决方法

设置LEFT JOIN

>子查询A,其中包含别名为ID的随机数和名称别名的$name.
>子查询B选择未删除的name = $name.
> LEFT JOIN A到B并返回A. *如果LEFT JOIN没有右侧对应物

这是查询

INSERT INTO users (ID,name)
SELECT A.* From
(SELECT RAND() ID,'$name' name) A LEFT JOIN
(SELECT name FROM users WHERE name='$name' AND deleted=0) B
USING (name) WHERE B.name IS NULL;

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如果不存在不同的结果,则INSERT到表中全部内容,希望文章能够帮你解决php – 如果不存在不同的结果,则INSERT到表中所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。