writetoandy Postad 15 september, 2021 Share Postad 15 september, 2021 Hej, Jag har två tabeller i SQL Server som jag vill jämföra: tmpUser och UnitGebruikers. Jag kör följande SQL-skript för att se vad som skiljer sig mellan tabellerna: SELECT t.HSAId AS HSAIDtmpUsers, u.HSAId AS HSAIDGebruikers, u.UserInitialen AS UserGebruikers, t.UserInitialen AS UsertmpUsers FROM tmpUsers AS t RIGHT JOIN UnitGebruikers AS u ON t.HSAId = u.HSAId Resultat Rad 1-2: Användare som finns i båda tabellerna Rad 3: Användaren finns endast i UnitGerbuikers Jag vill göra följande: Om en användare inte finns i tmpUser, men finns i UnitGebruikers vill jag ta bort användaren i UnitGebruikers. Testade följande SQL-skript: DELETE UnitGebruikers FROM UnitGebruikers AS u RIGHT JOIN tmpUsers AS t ON t.HSAId = u.HSAId WHERE t.HSAId ISNULL Resultat: Citat Msg 4145, Level 15, State 1, Line 3 An expression of non-boolean type specified in a context where a condition is expected, near 'ISNULL'. Datatypen för kolumnen HSAID är nvarchar(50) Länk till kommentar Dela på andra webbplatser More sharing options...
.M Postad 15 september, 2021 Share Postad 15 september, 2021 Det är inte så ISNULL fungerar om jag minns rätt, du behöver ett mellanslag när det är i en where. DELETE UnitGebruikers FROM UnitGebruikers AS u RIGHT JOIN tmpUsers AS t ON t.HSAId = u.HSAId WHERE t.HSAId IS NULL Länk till kommentar Dela på andra webbplatser More sharing options...
writetoandy Postad 15 september, 2021 Trådskapare Share Postad 15 september, 2021 (redigerade) 14 minuter sedan, skrev .M: Det är inte så ISNULL fungerar om jag minns rätt, du behöver ett mellanslag när det är i en where. DELETE UnitGebruikers FROM UnitGebruikers AS u RIGHT JOIN tmpUsers AS t ON t.HSAId = u.HSAId WHERE t.HSAId IS NULL Testade det också och då fick jag faktiskt (0 rows affected). En rad borde påverkats med tanke på att rad 3 i enligt tidigare inlägg skiljer sig. Redigerad 15 september, 2021 av writetoandy Länk till kommentar Dela på andra webbplatser More sharing options...
Solution .M Postad 15 september, 2021 Solution Share Postad 15 september, 2021 Har du provat att använda sub-select för din delete istället? https://beginner-sql-tutorial.com/sql-not-in.htm writetoandy och Cluster reagerade på detta 2 Länk till kommentar Dela på andra webbplatser More sharing options...
writetoandy Postad 15 september, 2021 Trådskapare Share Postad 15 september, 2021 30 minuter sedan, skrev .M: Har du provat att använda sub-select för din delete istället? https://beginner-sql-tutorial.com/sql-not-in.htm Tack det funkade bättre. Tusen tack för hjälpen! Skriptet jag använde: DELETE u FROM UnitGebruikers u WHERE u.HSAId NOT IN (SELECT t.HSAId FROM tmpUsers t) Länk till kommentar Dela på andra webbplatser More sharing options...
Rekommendera Poster