2011-12-04 52 views
26

Bảng innodb của tôi có cấu trúc sau: 4 cột (CountryID, Year, %Change, Source), với 2 cột (CountryID, Year) làm khóa chính. Làm cách nào để xóa nhiều hàng khác ngoài việc sử dụng vòng lặp for để xóa từng hàng?Làm thế nào để xóa nhiều hàng với 2 cột làm khóa chính kết hợp trong MySQL?

Tôi đang tìm một cái gì đó tương tự như

DELETE FROM CPI 
WHERE CountryID AND Year IN (('AD', 2010), ('AF', 2009), ('AG', 1992)) 

Tìm thấy câu trả lời sau khi các bước tiếp theo:

DELETE FROM CPI 
WHERE (CountryID, Year) IN (('AD', 2010), ('AF', 2009), ('AG', 1992)) 

Hope this helps ai ra khỏi đó trong dưa cùng.

+0

Bạn có thể đăng thông báo lỗi không? Cái gì không hoạt động? Có vẻ như nó sẽ làm việc với tôi. Bạn có bảng phụ thuộc không? –

+0

hi carl. hmm .. tôi chỉ làm rõ câu hỏi của tôi sau khi nhìn thấy bình luận của bạn. hy vọng chỉnh sửa tốt hơn sẽ giải thích nó. –

+0

vòng, tìm thấy nó. đã chỉnh sửa câu hỏi để phản ánh câu trả lời. cảm ơn mọi người! –

Trả lời

29

Câu trả lời trong Oracle là:

delete from cpi 
where (countryid, year) in (('AD', 2010), ('AF', 2009), ('AG', 1992)) 

Đó là cú pháp SQL khá chuẩn và tôi nghĩ rằng MySQL là như nhau.

+0

ahaha, chỉ cần chỉnh sửa câu hỏi của tôi cho tương tự. cảm ơn ben! –

+2

Điều này hoạt động trong MySQL –

+1

cảm ơn! cũng đã thử trong MySQL và nó hoạt động như một sự quyến rũ! –

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