为了账号安全,请及时绑定邮箱和手机立即绑定

如果从数据库获取数据不存在记录,则需要插入到sql中

如果从数据库获取数据不存在记录,则需要插入到sql中

PHP
大话西游666 2023-08-19 16:37:05
如果从数据库获取数据时记录不存在,则需要插入到sql中,我尝试这样做:    INSERT INTO database.wp_usermeta(user_id, meta_key, meta_value)    SELECT (user_id, 'ur_form_id' , 210)        FROM database.wp_usermeta ORDER BY user_id DESC LIMIT 1    WHERE NOT EXISTS (SELECT user_id, 'ur_form_id' , 210        FROM v.wp_usermeta ORDER BY user_id DESC LIMIT 1);    但不行,工作分支说“这个职位无效”
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

你的 SQL 有点乱;ORDER BY 会在 WHERE 之后


INSERT INTO database.wp_usermeta(user_id, meta_key, meta_value)

SELECT user_id, 'ur_form_id' , 210

FROM database.wp_usermeta

WHERE NOT EXISTS (SELECT 1 FROM v.wp_usermeta); 

ORDER BY user_id DESC LIMIT 1

您不需要内部排序依据 - 存在查询只是用于确定 v.wp_usermeta 中是否存在任何行 - 它不需要排序。反过来,这会导致外部查询仅在 v.wp_usermeta 中没有行时才返回行,并且仅当表中已有行时才会插入行。如果表是空的,它将永远是空的。如果不为空,则具有最高 ID 的用户将与这些固定属性重复。这真的是你想要的吗?


如果您的需求是“查找database.wp_usermeta表中没有'ur_form_id'/210键值对的所有用户,并给他们一个”,它可能更简单地表达为:


INSERT INTO database.wp_usermeta(user_id, meta_key, meta_value)

SELECT DISTINCT user_id, 'ur_form_id' , 210

FROM database.wp_usermeta

WHERE user_id NOT IN (SELECT user_id FROM database.wp_usermeta WHERE meta_key = 'ur_form_id' and meta_value = 210); 



查看完整回答
反对 回复 2023-08-19
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

ORDER BY 位于 WHERE 子句之后:


INSERT INTO database.wp_usermeta(user_id, meta_key, meta_value)

SELECT user_id, 'ur_form_id' , 210

FROM database.wp_usermeta 

WHERE NOT EXISTS (SELECT user_id, 'ur_form_id' , 210

                  FROM v.wp_usermeta 

                  ORDER BY user_id DESC 

                  LIMIT 1)

ORDER BY user_id DESC 

LIMIT 1;


查看完整回答
反对 回复 2023-08-19
  • 2 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信