Size: a a a

2020 December 02

RG

Ruslan (exarus) Guna... in MySQL
Ilia Zviagin
Delete posts as p
Where not exists (
SELECT *
FROM comments c
WHERe c.post_id = p.id
)
Спасибо большое!
источник
2020 December 03

RG

Ruslan (exarus) Guna... in MySQL
Ilia Zviagin
Delete posts as p
Where not exists (
SELECT *
FROM comments c
WHERe c.post_id = p.id
)
в 5.7 не заработало! Но я сумел поправить запрос:
DELETE p FROM posts p
WHERE NOT EXISTS (
 SELECT *
 FROM comments c
 WHERE p.post_id = c.id
);
источник

S

Syntax Highlight Bot in MySQL
Ruslan (exarus) Gunawardana
в 5.7 не заработало! Но я сумел поправить запрос:
DELETE p FROM posts p
WHERE NOT EXISTS (
 SELECT *
 FROM comments c
 WHERE p.post_id = c.id
);
источник

IZ

Ilia Zviagin in MySQL
Ruslan (exarus) Gunawardana
в 5.7 не заработало! Но я сумел поправить запрос:
DELETE p FROM posts p
WHERE NOT EXISTS (
 SELECT *
 FROM comments c
 WHERE p.post_id = c.id
);
Ну да, Алиас там не проставить ...
источник

IZ

Ilia Zviagin in MySQL
Ruslan (exarus) Gunawardana
в 5.7 не заработало! Но я сумел поправить запрос:
DELETE p FROM posts p
WHERE NOT EXISTS (
 SELECT *
 FROM comments c
 WHERE p.post_id = c.id
);
Можно ещё

DELETE posts
WHERE NOT EXISTS (
 SELECT *
 FROM comments c
 WHERE posts.post_id = c.id
);
источник

t

trickster in MySQL
Кто то шарит за mysql репликации бд?
В режиме master - master постоянно слетает position и отваливается репликация в обе стороны, хотя никаких сложных манипуляций не производится, просто пробую добавлять\удалять записи по 1 на разных серверах
источник

AD

Alex Demidov in MySQL
trickster
Кто то шарит за mysql репликации бд?
В режиме master - master постоянно слетает position и отваливается репликация в обе стороны, хотя никаких сложных манипуляций не производится, просто пробую добавлять\удалять записи по 1 на разных серверах
мастер-мастер это для храбрых
источник

G

Grigorij in MySQL
Это весьма нетривиальная задача - разобратся, почему мастер-мастер развалтвается)
источник

G

Grigorij in MySQL
Поэтому мастер-мастер для храбрых и опытных
источник

t

trickster in MySQL
ужос, как будет правильно перевести назад в режим master - slave, ежели не просто в одном выставить позицию, а на второй забить ?
источник

AD

Alex Demidov in MySQL
trickster
ужос, как будет правильно перевести назад в режим master - slave, ежели не просто в одном выставить позицию, а на второй забить ?
самое простое перезалить одну из нод дампом с другой
источник

A

Alex in MySQL
привет всем, есть таблица у которой много уровней дочерних элементов, задача в том, что, хочется при выполнении некого запроса все fk сделать ON DELETE CASCADE, решение которое нашел: https://stackoverflow.com/questions/868620/sql-script-to-alter-all-foreign-keys-to-add-on-delete-cascade но оно кажется слишком громоздким, есть у кого идеи и вообще насколько это плохая практика?
источник

G

Grigorij in MySQL
Это не скрипт, это sql-запрос. Какая разница что он громоздкий, если он работает?
Там обычный select, запусти и посмотри что он тебе выведет)
источник

IZ

Ilia Zviagin in MySQL
Переслано от Ilia Zviagin
On delete cascade --ВООБЩЕ плохая практика.

Я так понял, ты хочет только для одного запроса это применить?
Это как вообще ты представляешь? На лету менять схему - это совсем порохая практика.
источник

IZ

Ilia Zviagin in MySQL
Alex
привет всем, есть таблица у которой много уровней дочерних элементов, задача в том, что, хочется при выполнении некого запроса все fk сделать ON DELETE CASCADE, решение которое нашел: https://stackoverflow.com/questions/868620/sql-script-to-alter-all-foreign-keys-to-add-on-delete-cascade но оно кажется слишком громоздким, есть у кого идеи и вообще насколько это плохая практика?
Ап
источник

IZ

Ilia Zviagin in MySQL
Alex
привет всем, есть таблица у которой много уровней дочерних элементов, задача в том, что, хочется при выполнении некого запроса все fk сделать ON DELETE CASCADE, решение которое нашел: https://stackoverflow.com/questions/868620/sql-script-to-alter-all-foreign-keys-to-add-on-delete-cascade но оно кажется слишком громоздким, есть у кого идеи и вообще насколько это плохая практика?
Я бы тебе предложил вместо этого написать небольшую процедуру, которая сначала удаляет некоторые дочерние записи, а затем удаляет головные записи нужной таблицы. Это можно даже сделать в одной транзакции.
источник

U

Ustin_LVO in MySQL
если у меня есть несколько субзапросов, допустим
(
SELECT product_id
FROM oc_product_option_value
WHERE option_id = 5
AND option_value_id IN (39,40)
)

(
SELECT product_id
FROM oc_product_option_value
WHERE option_id = 2
AND option_value_id IN (24)
)
первый дает 42,42,30,30
второй дает 42
мне надо вывести те product_id, которые есть во всех выдачах (их может быть больше чем 2)
то есть 42
источник

DP

Dmitry Paziy in MySQL
SELECT product_id
FROM oc_product_option_value
WHERE
(option_id = 5 AND option_value_id IN (39,40))
or
(option_id = 2 AND option_value_id IN (24))
источник

DP

Dmitry Paziy in MySQL
ну и группировку:
group by product_id
источник

DP

Dmitry Paziy in MySQL
но лучше вот так:
option_id in (2,5) AND option_value_id IN (24,39,40)
источник