2011-12-03 33 views
14

Tôi có một cơ sở dữ liệu SQLITE với hai bảng. Bảng A có một dấu thời gian nguyên và một cột số nguyên khác có chứa một id hàng đề cập đến một hàng trong bảng B có hai dấu thời gian.SQLITE - xóa các hàng có tham gia bên trong?

Tôi muốn xóa tất cả các hàng trong bảng A, nơi nó là dấu thời gian không nằm giữa hai timestamps trong bảng B, và các ROWID bằng X.

Dưới đây là những gì tôi có vào lúc này nhưng tôi gặp lỗi cú pháp:

DELETE FROM network 
WHERE ROWID in (
    SELECT ROWID 
    FROM track 
    INNER JOIN network ON (track.ROWID = network.trackId) 
    WHERE network.timestamp > track.stopTime OR network.timestamp < track.startTime 
     AND network.trackId = X 

Trả lời

16

Bạn không có dấu đóng ngoặc đơn để chọn lựa. Hãy thử điều này:

DELETE FROM network 
WHERE ROWID in (
    SELECT ROWID 
    FROM track 
    INNER JOIN network ON (track.ROWID = network.trackId) 
    WHERE network.timestamp > track.stopTime OR network.timestamp < track.startTime 
     AND network.trackId = X 
) 

Nếu cách này không hiệu quả, hãy thử đăng lỗi cú pháp thực tế của bạn.

+0

Xin chào, cảm ơn bài đăng. Bạn đã đúng, đã sắp xếp lỗi cú pháp đầu tiên. Ngoài ra WHERE ROWID nên đã được WHERE trackId, và SELECT ROWID nên đã được SELECT track.ROWID. Kịch bản bây giờ dường như đang hoạt động. Cảm ơn bạn đã giúp đỡ! :) –

+0

DELETE FROM tblRecipe ĐÂU CategoryID trong ( CHỌN CategoryID TỪ tblSubCategories INNER JOIN tblRecipe ON (tblSubCategories.categoryID = tblRecipe.categoryID) ĐÂU tblRecipe.categoryID = 9; – Raju

+0

lỗi ::: :(gần ";" : lỗi cú pháp) – Raju

Các vấn đề liên quan