webentwicklung-frage-antwort-db.com.de

Bestellen Sie in Inner Join

Ich stelle Inner Join in meine Abfrage ein. Ich habe das Ergebnis erhalten, wusste aber nicht, wie die Daten in der Ausgabe erscheinen zwei tisch (ein oder zwei tisch).

alt text

Nach meiner Meinung sollte diese erste Reihe Mohit sein, aber die Ausgabe ist anders. Bitte sagen Sie es mir.

Danke im Voraus.

17
Mohit Kumar

Sie müssen es sortieren, wenn Sie möchten, dass die Daten auf eine bestimmte Weise zurückkommen. Wenn Sie sagen, Sie erwarten "Mohit" als erste Zeile, nehme ich an, dass Sie sagen, dass "Mohit" die erste Zeile in der Tabelle [One] ist. Wenn SQL Server jedoch Tabellen verknüpft, wird die Verknüpfung nicht notwendigerweise in der Reihenfolge eingefügt, in der Sie denken.

Wenn Sie möchten, dass die erste Zeile aus [One] zurückgegeben wird, versuchen Sie, nach [One].[ID] zu sortieren. Alternativ können Sie auch eine beliebige andere Spalte order by eingeben.

4
dotariel

In SQL ist die Reihenfolge der Ausgabe nicht definiert, es sei denn, Sie geben sie in der ORDER BY-Klausel an.

Versuche dies:

SELECT  *
FROM    one
JOIN    two
ON      one.one_name = two.one_name
ORDER BY
        one.id
11
Quassnoi

Vermeiden Sie SELECT * in Ihrer Hauptabfrage. 

Vermeiden Sie doppelte Spalten: Die JOIN-Bedingung stellt sicher, dass One.One_Name und two.One_Name gleich sind. Sie müssen also nicht beide in der SELECT-Klausel zurückgeben.

Vermeiden Sie doppelte Spaltennamen: Benennen Sie One.ID und Two.ID mit 'alias' um.

Fügen Sie eine ORDER BY-Klausel unter Verwendung der Spaltennamen (ggf. 'alises') aus der SELECT-Klausel hinzu.

Vorgeschlagenes Umschreiben:

SELECT T1.ID AS One_ID, T1.One_Name, 
       T2.ID AS Two_ID, T2.Two_name
  FROM One AS T1
       INNER JOIN two AS T2
          ON T1.One_Name = T2.One_Name
 ORDER 
    BY One_ID;
5
onedaywhen

Fügen Sie am Ende Ihrer ersten Abfrage einen ORDER BY ONE.ID ASC hinzu.

Standardmäßig gibt es keine Bestellung.

3
JNK

SQL gibt standardmäßig keine Reihenfolge zurück, da es auf diese Weise schneller ist. Es muss nicht zuerst Ihre Daten durchgehen und dann entscheiden, was zu tun ist.

Sie müssen eine order by-Klausel hinzufügen und wahrscheinlich nach der ID, die Sie erwarten. (Es gibt ein Duplikat von Namen, daher würde ich davon ausgehen, dass Sie One.ID möchten.)

select * From one
inner join two
ON one.one_name = two.one_name
ORDER BY one.ID
1
Tyug

Ich habe festgestellt, dass dies ein Problem beim Beitritt ist, aber dieses Blog könnte hilfreich sein, um zu verstehen, wie Joins im Hintergrund funktionieren . So funktioniert Joins ..

[Editiert] @ Shree Vielen Dank, dass Sie darauf hingewiesen haben . Auf dem Absatz von Merge Join. Es wird erwähnt, wie Joins funktionieren ...

Mögen Hash Join, Merge Join besteht aus zwei Schritten. Zuerst beide Tabellen der join wird nach dem join-Attribut sortiert. Dies ist mit nur zwei .__ möglich. durchläuft jede Tabelle über eine externe Zusammenführungssortierung. Endlich, das Ergebnis-Tupel werden generiert, wenn das nächste geordnete Element aus .__ abgerufen wird. Jede Tabelle und die Join-Attribute werden verglichen

.

0
Muzamir