2016-05-11 5 views
1

Ich habe diese Tabelle:Wie wählen Sie verwandte Spalten aus, indem Sie nur eine ID-Nummer haben?

// mytable 
+----+---------+ 
| id | related | 
+----+---------+ 
| 1 | 1  | 
| 2 | 1  | 
| 3 | 2  | 
| 4 | 1  | 
| 5 | 3  | 
| 6 | 2  | 
| 7 | 4  | 
| 8 | 4  | 
| 9 | 2  | 
+----+---------+ 

Ich mag $id = 6 nur eine ID-Nummer haben. Und ich möchte alle Zeilen auswählen, die identische related haben. So wird dies erwartet Ergebnis:

// newmytable 
+----+---------+ 
| id | related | 
+----+---------+ 
| 3 | 2  | 
| 6 | 2  | 
| 9 | 2  | 
+----+---------+ 

Wie kann ich das tun?

Hier Abfrage meine aber nicht funktioniert:

SELECT * 
FROM mytable m 
WHERE (SELECT related 
      FROM mytable 
      WHERE id = :id) t m.related = t.related 

Antwort

1
select m2.id, m2.related 
from 
mytable m1 
join mytable m2 
on m2.related = m1.related 
where m1.id = 6 

SQL Fiddle sample

+0

Danke ... upvote – stack

+0

Kann ich 'm1' auch zur Auswahl verwenden? wie das 'm1.id, m1.related' – stack

+0

Auch warum nicht' LINKE VERBINDEN'? – stack

1

Dies wird

SELECT * FROM mytable WHERE related = (SELECT releated FROM mytable WHERE id = 6) 
+0

Es ist keine Zeile, die '= hat im Zusammenhang 6'. '6' ist die ID-Nummer. – stack

1
SELECT * FROM mytable 
WHERE related = (SELECT related FROM mytable WHERE id = 6) 

Nicht getestet ... arbeiten

+0

Scheint korrekt .. danke .. upvote – stack

1

Versuchen Sie, diese

select *from mytable 
where related = (select related from mytable where id = 6) 
+0

Korrekt .. danke upvote – stack

1

Hallo bitte Ihre Abfrage mit folgenden Abfrage ersetzen Sie Ihre erwartete Ausgabe erhalten wird.

SELECT * FROM mytable WHERE = (von Mytable bezogen SELECT WHERE ID =: id)

+0

Korrekt, danke upvote – stack

Verwandte Themen