Как сделать SELECT с несколькими условиями?

У меня есть две разные таблицы (t1, t2), и мне нужно сделать DELETE в t1 всех строк, которые гарантируют, что одно из его полей имеет определенное значение, а также удалить все t1 линии, которые удовлетворяют условию в t2. Что-то вроде:

DELETE * FROM t1 JOIN t2 WHERE t1.c1=0 OR (t1.c2=t2.c1 AND t2.c3=3)

innoDB BD engine

0
задан 18.01.2017, 18:33
0 ответов

С EXISTS оно ты было бы должно функционировать:

DELETE FROM t1 WHERE t1.c1=0 OR EXISTS (SELECT 1 FROM t2 WHERE t1.c2=t2.c1 AND t2.c3=3)
0
ответ дан 03.12.2019, 17:38
DELETE * FROM t1 JOIN t2 WHERE t1.c1=0 OR t1.c2=t2.c1 AND t2.c3=3

Скобки не необходимы ввиду того, что OR у него есть первенство на AND.

Probá используя INNER JOIN вместо JOIN.

0
ответ дан 03.12.2019, 17:38

когда ты пошлешь вопрос, ты был бы должен давать больше деталь. я сделал бы что-то как это

    DELETE FROM t1 WHERE t1.id IN (SELECT id
                                     FROM t1 
                                     INNER JOIN t2 u on t1.id_externo = t1.id
                                   WHERE COLOCA TU CONDICION AQUI)

Мог бы добавлять OR в после WHERE

DELETE FROM t1 WHERE t1.id IN (CONSULTA) OR t1.id IN (CONSULTA)

Завись от механизма возможно оптимизировать я надеюсь, что он подает тебя

0
ответ дан 03.12.2019, 17:38