"Wo IN" mit mehreren Spalten (SQL Server)
Ich bin mit SQL Server 2005.
Die Abfrage würde wie folgt Aussehen
Select col1, col2, col3 from <subquery> where (col1,col2) in <subquery>
SQL Server scheint nicht zu mögen. Jede Art und Weise der Umsetzung, dass jemand weiß, dass nicht die Umstellung auf varchars oder sonst etwas chaotisch?
Dies ist die eigentliche Abfrage.
SELECT *
FROM
(
SELECT NEWID() AS guid, UserID, RoleId, ClubId, 0 AS GroupRole
FROM dbo.Portal_UserRoles
UNION
SELECT NEWID() AS guid, dbo.Portal_UserGroups.UserId,
dbo.Portal_GroupRoles.RoleId, dbo.Portal_UserGroups.ClubId,
dbo.Portal_GroupRoles.GroupId AS GroupRole
FROM dbo.Portal_GroupRoles
INNER JOIN dbo.Portal_UserGroups
ON dbo.Portal_GroupRoles.GroupId = dbo.Portal_UserGroups.GroupId
) AS derivedtbl_1
WHERE (derivedtbl_1.RoleId,derivedtbl_1.ClubId) IN
(
SELECT Portal_GroupRoles.RoleId, Portal_ClubGroups.ClubId
FROM Portal_GroupRoles
INNER JOIN Portal_ClubGroups
ON Portal_GroupRoles.GroupId = Portal_ClubGroups.GroupId
)
Würde es helfen, Menschen zu helfen, wenn Sie formatiert diese mehr lesbar.
Sorry, keine Ahnung, wie das geht.
Es ist seltsam, diese Frage ist mittlerweile fast 3k views und nicht ein einziger upvote.
Sorry, keine Ahnung, wie das geht.
Es ist seltsam, diese Frage ist mittlerweile fast 3k views und nicht ein einziger upvote.
InformationsquelleAutor | 2009-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie getrennt in zwei Klauseln
oder Sie umgestalten könnte es ein wenig
vielleicht, das ist, warum ich fügte hinzu, einige Refactoring code
schöne Arbeit, aber ich habe keine Ahnung, wie das "WIE derivedtbl_1, Portal_GroupRoles, Portal_ClubGroup" Ding funktioniert. Haben Sie einen link oder einen Namen für es?
Dies ist nicht eine gute Antwort: es scheitert an Griff die Forderung auf, dass col1 und col2 gleichzeitig entsprechen der gleichen Zeile, und ermöglicht es zu entsprechen, wenn der col1 übereinstimmt, die 1 Zeile und col2 entspricht der 1.Zeile.
Ich bin OK mit dem nicht verwenden von joins; ich lernte, SQL, bevor die join-notation existiert auch. Ich habe vorübergehend meine down-vote da lange Abfrage nicht das tut, was der kurze Kommentar zu zwei Punkten schlägt. Den Vorschlag, obwohl, ist einfach falsch. Bitte entfernen Sie es, lassen Sie nur die OK-bit.
InformationsquelleAutor Eduardo Molteni
Den standard -, klassischen Weg, das zu tun, was Sie wollen, ist eine EXISTS-Klausel:
Vorsichtig sein, die Aufteilung der zwei-Säulen-Zustand in zwei separate IN-Klauseln; es gibt Ihnen nicht die gleiche Antwort (im Allgemeinen) als die Anwendung des zwei-Säulen-Zustand in einem EXISTS-Klausel.
InformationsquelleAutor Jonathan Leffler
Verknüpfen, auf die abgeleitete Tabelle, anstatt die
in
Ich habe einige Formatierungen für ihn
Leider benötige ich eine where-Klausel vorhanden ist. Eigentlich hätte ich dies geschrieben, aber es sollte so Aussehen Select col1, col2, col3 from (Unterabfrage) where (col1,col2) in (Unterabfrage) ODER col2 Null IST, funktioniert nicht mit einer Verknüpfung.
InformationsquelleAutor cmsjr
InformationsquelleAutor Michael Buen
Deins ist nützlich, syntax und unterstützt standard-SQL. Es ist noch nicht implementiert in SQL Server, aber Sie kann das Stimmrecht für seine Aufnahme hier.
InformationsquelleAutor onedaywhen