@Ibishka

Insert if not exist MYSQL?

mysqli_query($connect, "INSERT INTO wishlist (user_id, product_id) VALUES (12, 3) WHERE NOT EXISTS (SELECT id FROM wishlist WHERE user_id = 12 AND product_id = 3)");

В таблицу wishlist ничего не добавляется хотя нет строки с значениями user_id = 12 и product_id = 3
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
insert с WHERE как бы не сосуществуют. Вы можете либо использовать if, либо сделать эту пару ключей уникальной, и использовать insert on duplicate key ignore.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vilinyh
@vilinyh
insert into wishlist(user_id, product_id)
select t.user_id, t.product_id
from (
    select 12 as user_id, 3 as product_id
) t
left outer join wishlist w on t.product_id = w.product_id and t.user_id = w.user_id
where w.user_id is null and w.product_id is null


Если данных для загрузки много, то вместо "immediate" создайте временную таблицу (create temporary table) и грузите через нее:
start transaction;

create temporary table tempWishlist as select * from wishlist where 0 = 1;

# temporary table load:
# insert into tempWishlist(...) values(...)

insert into wishlist(user_id, product_id)
select t.user_id, t.product_id
from tempWishlist t
left outer join wishlist w on t.product_id = w.product_id and t.user_id = w.user_id
where w.user_id is null and w.product_id is null

commit;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы