加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:12:22 所属栏目:PHP教程 来源:网络整理
导读:我有这样的’用户’SQL表结构(ID是随机生成的,不是自动递增的): ID name deleted lastActive3242 Joe 0 20-6-2012 23:142234 Dave 0 20-6-2012 23:132342 Simon 1 20-6-2012 23:029432 Joe 1 20-6-2012 22:58 可以有多个具有相同名称的已删除(已删除= 1)用
我有这样的’用户’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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读