2013-02-10 3 views
1

Помогите мне написать удалить заявление для БД SQLiteсоздать ВЕЬЕТЕ для нескольких строк и не уникальных столбцов

'rating' table schema (rID, mID, rate, pub) 

Этот запрос возвращает только один кортеж

select * from rating 
where rID = 101 and mID=678 and rate = 34.5 and pub='2012-11-03' 

Все столбцы в таблице не являются уникальными

Эти запросы не работают

delete from rating where rID,mID, rate, pub in 
    (select * from rating where rID = 101 and mID=678 and rate = 34.5 and pub='2012-11-03') 

delete from rating where rID=G.rID,mID=G.mID, rate=G.rate, pub=G.pub 
    (select * from rating where rID = 101 and mID=678 and rate = 34.5 and pub='2012-11-03') as G 

ответ

1

Что-то не так с этим?

delete from rating 
where rID = 101 
and mID=678 
and rate = 34.5 
and pub='2012-11-03' 

Любой оператор select может быть преобразован в оператор удаления, который влияет на те же строки, что и те, которые возвращаются из выбора. На самом деле, это хороший способ проверить, какие строки будут удалены.

+0

Это неправильно, потому что первый оператор «выберите», второй «удалить», и мне нужно сделать это в одном выражении. позволяет сделать это сложным, например, я изменю запрос ** select * from rating где rID = 101 и mID = 678 и rate = 34.5 **, и он вернет 3 кортежа с другим пабом. как удалить все эти кортежи в одном выражении. – simar

+0

Как я уже сказал, любой выбор может быть преобразован в delete; просто замените 'select *' на 'delete', и вы удалите те же 3 варианта:' delete from rating, где rID = 101 и mID = 678 и rate = 34.5'. Кажется, вы сопротивляетесь чему-то очень простому - какова ваша оговорка? – Bohemian

Смежные вопросы