त्रुटि के बजाय तालिका को साफ़ करता है मेरे पास SQL का एक टुकड़ा है (जो आपको लगता है) संकलित नहीं करेगा, लेकिन इसके बजाय लक्ष्य तालिका से सभी पंक्तियों को हटा देता है।एसक्यूएल हटाएं
create table TableA (ColumnA varchar(200));
create table TableB (ColumnB varchar(200));
insert TableA values ('A'),('B'),('C');
insert TableB values ('A');
तो निम्नलिखित एसक्यूएल:
--Returns all rows from TableA
select * from TableA;
--Does not error (ColumnA does not exist on TableB)
delete TableA where ColumnA in (select ColumnA from TableB)
--No Rows are returned
select * from TableA;
हटाने बयान से ऊपर का कारण बनता है सभी पंक्तियों बल्कि erroring कि ColumnA
में मौजूद नहीं है की तुलना में, TableA
से निकाले जाने का
इस स्थापना पर विचार करें TableB
यहां एक एसक्यूएल फिडल इसे नियंत्रित कर रहा है: http://www.sqlfiddle.com/#!3/9d883/6
ऐसा लगता है कि ColumnA
TableA
से उठाया जा रहा है, लेकिन उम्मीद है कि यह "दायरे से बाहर" होगा।
यह क्यों है?
निश्चित रूप से टेबल नामों के साथ अपने कॉलम नामों को उपसर्ग न करें, वह आदमी जो कुछ बदसूरत स्कीमा होगा, लेकिन निश्चित रूप से Aliases का उपयोग करें ... – emalamisura