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

63lcw9qa  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(278)

需要插入sql如果从db获取数据时不存在记录,我尝试以下操作:

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);

但不是工作,工作部门说“在这个职位上什么是无效的”

2mbi3lxu

2mbi3lxu1#

您的sql有点不正常;点菜的人会去哪儿

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

您不需要内部orderby-exists查询只是用来决定v.wp\u usermeta中是否存在任何行-它不需要排序。反过来,这将导致外部查询仅在v.wp\u usermeta中没有行时返回一行,并且仅在表中已有行时插入一行。如果table是空的,它将永远是空的。如果它不是空的,那么具有最高id的用户将使用这些固定属性进行复制。这真的是你想要的吗?
如果您需要的是“查找database.wp\u 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);
wgx48brx

wgx48brx2#

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;

相关问题