W SQL Server Compact Edition w Visual Studio 2010 (może SQL Server i ogólnie SQL, nie wiem), to polecenie działa:
DELETE FROM foods WHERE (name IN ('chickens', 'rabbits'))
ale to polecenie powoduje błąd: Error near identifier f. Expecting OUTPUT.
DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))
sql
sql-server
sql-server-ce
Ricardo Altamirano
źródło
źródło
Odpowiedzi:
Aby utworzyć alias tabeli, musisz powiedzieć:
Nie widzę sensu tworzenia aliasów dla tego konkretnego
DELETE
stwierdzenia, zwłaszcza że (przynajmniej IIRC) nie jest ono już zgodne ze ścisłymi normami ANSI. Ale tak, jak sugerują komentarze, może być konieczne w przypadku innych formularzy zapytań (np. Korelacja).źródło
SELECT
i innych takich stwierdzeń, więc instynktownie zrobiłem to, do czego jestem przyzwyczajony i zastanawiałem się, dlaczego nie działa poprawnie.in
lubnot in
nie działa:DELETE f from dbo.foods as f where not exists (select top 1 1 from animalDiets a where a.AnimalId = f.AnimalId and a.DietId = f.DietId)
delete o from Order as o inner join Customer as c on c.CustomerID = o.CustomerID where c.ArchiveOrders = 1
Instrukcja delete ma dziwną składnię. To wygląda tak:
źródło