2016-04-16 8 views
0

Ich habe 2 Tabellen, products und originsMySQL mit LIMIT Abfrage JOIN führt

Produkte:

p_id | name | origin_id 
------------------------ 
    1 | P1 | 1 
    2 | P2 | 2 
    3 | P3 | 1 

Origins:

o_id | name 
------------- 
    1 | O1 
    2 | O2 

ich die folgende Abfrage verwenden:

SELECT * FROM `products` LEFT OUTER JOIN `origins` 
ON (`products`.`origin_id` = `origins`.`o_id`) LIMIT 2 

habe ich die folgenden Ergebnisse bin immer

p_id | name | origin_id | o_id | name 
----------------------------------------- 
    1 | P1 | 1  | 1 | O1 
    3 | P3 | 1  | 1 | O1 

Ich habe mich gefragt, wie die LEFT OUTER JOIN das Ergebnis beeinflusst, wo ich die erste bin immer und die dritte Zeile anstatt der ersten und der zweiten Reihe?

Antwort

1

Sie steuern nicht die inhärente Reihenfolge von Zeilen in einer Tabelle. Es verhält sich wie ein Set. Wenn Sie es bestellen möchten, verwenden Sie die Order by-Klausel.

SELECT * FROM `products` p LEFT OUTER JOIN `origins` o 
ON (p.`origin_id` = o.`o_id`) ORDER BY p.`name` LIMIT 2 

Ausgang:

p_id | name | origin_id | o_id | name 
----------------------------------------- 
    1 | P1 | 1  | 1 | O1 
    2 | P2 | 2  | 2 | O2