感谢狡猾(对我来说)查询的帮助。我非常喜欢mysql初学者。
表(v3_community_fields_values)包含以下列:
我一直在摸不着如何编写一个为每个用户插入一行的查询: a)没有这样的行已经存在,并且 b)存在另一个用户行,[field_id]为45(45 =用户配置文件类型),值为5或6
新行应包含:[id],[user_id],'75','foobar'
非常感谢你的帮助。
答案 0 :(得分:1)
这样做(测试过):
insert into v3_community_fields_values
(user_id, field_id, value)
select user_id, 75, 'foo'
from v3_community_fields_values
where field_id = 45
and value in ('5', '6')
and user_id not in (
select user_id
from v3_community_fields_values
where field_id = 75)
请参阅SQLFiddle上的live demo。
答案 1 :(得分:0)
我不知道如何使用一个sql语句实现,但这个存储过程可能有所帮助:
delimiter //
drop procedure if exists insert_something//
create procedure insert_something ()
begin
DECLARE v_user_id int default 0;
DECLARE stop int default 0;
DECLARE cursor1 CURSOR FOR select DISTINCT user_id from v3_community_fields_values where field_id = 45;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop=1;
OPEN cursor1;
FETCH cursor1 INTO v_user_id;
while stop <> 1 do
insert into v3_community_fields_values (user_id, field_id, `value`) values (v_user_id, '75', 'foobar');
FETCH cursor1 INTO v_user_id;
end while;
CLOSE cursor1;
end //
call insert_something()//