В SQLite, как я могу удалить строки в одной таблице в соответствии с индексом в другой таблице - PullRequest
0 голосов
/ 10 июля 2019

У меня есть две таблицы A и B. A содержит целые данные.B содержит только индекс, который должен быть удален.Как я могу удалить соответствующие данные в A с таким же индексом в B.

Например, A - это таблица типа:

TABLE A

B - этотаблица как:

TABLE B

Я должен удалить строки в A со всеми (x, y) парами в B и сделать A похожим на это:

OUTPUT

Ответы [ 3 ]

1 голос
/ 10 июля 2019

В MySQL (так как вопрос был изначально помечен) вы можете использовать join:

delete a
    from a join
         b
         using (x, y);

В SQLite или почти любой другой базе данных вы можете использовать:

delete 
    from a
    where exists (select 1 from b where b.x = a.x and b.y = a.y)
0 голосов
/ 11 июля 2019

Спасибо всем.Я нашел решение, что-то, как показано ниже, работает для меня в этом вопросе.

DELETE FROM a       
WHERE EXISTS (SELECT *
              FROM b
              WHERE b.x = a.x and b.y = a.y)
0 голосов
/ 11 июля 2019

@ yixizhou Этот запрос выполнит то, что вы просите (скопируйте и вставьте готово):

DELETE FROM a WHERE CONCAT(x,y) IN (
SELECT * FROM (
SELECT CONCAT(aTable.x,aTable.y) 
FROM a AS aTable
JOIN b AS bTable ON CONCAT(bTable.x,bTable.y) = CONCAT(aTable.x,aTable.y)) AS derTable)
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...