Я хочу удалить строки из таблицы на основе столбца из другой таблицы как таковой:
Table1: Table2:
value value, i
Если table2.i меньше 1, удалите соответствующую строку из table1 (но оставьте ее в table2).
Проблема в том, что значение не уникальное, поэтому, если у меня есть это, например:
Table1 table2
+-------+ +-----------+
| value | | value | i |
+-------+ +-----------+
| 5 | | 5 | 0 |
| 3 | | 5 | 3 |
+-------+ | 3 | 0 |
| 3 | 0 |
+-----------+
Значение 3 должно быть удалено из таблицы1 (поскольку все вхождения в таблице2 имеют i ‹1), но значение 5 должно остаться (из-за того, что строка i = 3 в таблице2)
Мой код пока (не работает):
DELETE FROM Table1, Table2
WHERE (SELECT MIN(Table2.i) FROM Table1, Table2
WHERE Table1.value = Table2.value) < 1;
Проблема: поскольку мой подзапрос возвращает min для ВСЕХ строк, все удаляется.
И я не могу использовать «группировать по» в моем подзапросе, потому что тогда мое сравнение не разрешено.
RDBMS
означает Система управления реляционными базами данных.RDBMS is the basis for SQL
, и для всех современных систем баз данных, таких как MS SQL Server, IBM DB2, Oracle, MySQL и т. Д. - person John Woo   schedule 14.06.2013