Ich verwende Microsoft SQL Server 2012. Ich muss überprüfen, ob Tabelle SiteObjects
in Datenbank mit dem Namen mindestens einen Datensatz hat, wo Spalte mit dem Namen SiteRegionId
‚s-Wert 22
gleich ist.Wie überprüft man, ob SQL-Spalte Wert hat?
Wenn es hat eine gewisse Logik imlpement, wenn es nicht eine andere Logik zu implementieren.
Hier meine Implementierung:
IF EXISTS (SELECT * FROM SiteObjects WHERE SiteRegionId = 22)
BEGIN
----do what you need if exists
RETURN '0'; --not deleted
END
ELSE
BEGIN
--do what needs to be done if not
DELETE FROM SiteRegions
WHERE Id = 22;
RETURN '1';
END
Ich denke, dass diese Zeile:
SELECT * FROM SiteObjects WHERE SiteRegionId = 22
nicht wirksam ist, weil, wie ich es läuft auf allen Tabellenzeilen verstehen und wählt alle Zeilen, in denen SiteRegionId
gleich 22. Gibt es eine Möglichkeit, es effektiver zu machen? Und zu überprüfen, ob jeder der Reihe Bedingungen erfüllt, wenn es geht.
So gibt es keinen Unterschied zwischen diesen beiden: 'IF EXISTS (SELECT 1 FROM SiteObjects WHERE SiteRegionId = 22)' 'IF EXISTS (SELECT * FROM SiteObjects WHERE SiteRegionId = 22)' ??? – Michael
@Michael - wenn Sie Pläne vergleichen, sollten Sie feststellen, dass sie identisch sind. –