SQL übergeben, variable aus wählen Sie zunächst auf den zweiten wählen
Ich habe eine Tabelle things
voller items aufgelistet, die von ItemID
. Angesichts einer ItemID, ich brauche, um den Datensatz mit der ItemID und alle anderen Elemente mit der gleichen name
.
In der Beispiel-Daten, die unten gegeben, die ItemID 1, muss ich auswählen, um alle Datensätze mit dem gleichen Namen (in diesem Fall "poptarts") als ItemID 1, einschließlich der Aufzeichnung mit der ItemID 1.
ItemID = 1 name = poptarts
ItemID = 7 name = poptarts
ItemID = 8 name = cheddar
ItemID = 323 name = poptarts
select a.ItemID, a.name from things where a.ItemID = '1'
UNION
select b.ItemID, b.name from things where b.name = a.name
SQL die ich oben geschrieben hab aber nicht passieren eine.name der zweiten wählen. Gibt es eine Möglichkeit, übergeben Sie das erste name-Wert, auf der zweiten select? Ich möchte für die Anweisung return itemid = 1 die erste Zeile und die 7 und 323 als die anderen Zeilen.
- wo müssen Sie versuchen, diese?
Du musst angemeldet sein, um einen Kommentar abzugeben.
UNION
ist wirklich nur zum verketten von zwei unterschiedlichen sets. Basierend auf deinem Beispiel, könnten Sie wahrscheinlich etwas wie das hier tun:Gibt es viele Möglichkeiten, zu schreiben diese Art von Abfrage und abhängig davon, welche Variante von SQL, die Sie verwenden, aber diese sollten mehr oder weniger universal.
name
Wert, d.h.SELECT a.itemID, A.name FROM Things a WHERE Name = 'poptarts'
HINWEIS: diese wählt auch die diese Zeilen, dass keine twin records; in diesem Fall die, dass.id NULL sein wird. Wenn Sie möchten, zu unterdrücken, um die Datensätze ohne doppelte Datensätze entfernen, die
LEFT
.UPDATE: es wurde die id <> id Klausel suppres die offensichtliche übereinstimmung.
Wenn du wirklich nur eine Tabelle, keine Notwendigkeit, bringen Sie es zweimal
UNION
oder etwas Phantasie wie htat.