MySQL CROSS JOIN används för att kombinera alla möjligheter för de två eller flera tabellerna och returnerar resultatet som innehåller varje rad från alla bidragande tabeller. CROSS JOIN är också känd som CARTESIAN JOIN, som tillhandahåller den kartesiska produkten för alla tillhörande tabeller. Den kartesiska produkten kan förklaras som alla rader som finns i den första tabellen multiplicerat med alla rader som finns i den andra tabellen. Det liknar Inner Join, där anslutningsvillkoret inte är tillgängligt med denna klausul.
Vi kan förstå det med följande visuella representation där CROSS JOIN returnerar alla poster från tabell1 och tabell2, och varje rad är kombinationen av rader i båda tabellerna.
MySQL CROSS JOIN Syntax
Nyckelordet CROSS JOIN används alltid med SELECT-satsen och måste skrivas efter FROM-satsen. Följande syntax hämtar alla poster från båda sammanfogningstabellerna:
SELECT column-lists FROM table1 CROSS JOIN table2;
I ovanstående syntax är kolumnlistorna namnet på kolumnen eller fältet som du vill returnera och tabell1 och tabell2 är tabellnamnet från vilket du hämtar posterna.
MySQL CROSS JOIN Exempel
Låt oss ta några exempel för att förstå hur Left Join eller Left Outer Join-klausulen fungerar:
hur man tar bort det första tecknet i excel
CROSS JOIN-sats för sammanfogning av två tabeller
Här ska vi skapa två tabeller 'kunder' och 'kontakter' som innehåller följande data:
Tabell: kunder
Tabell: kontakter
För att hämta alla poster från båda tabellerna, kör följande fråga:
SELECT * FROM customers CROSS JOIN contacts;
Efter framgångsrik exekvering av frågan kommer den att ge följande utdata:
När CROSS JOIN-satsen körs kommer du att se att den visar 42 rader. Det betyder att sju rader från kundtabellen multipliceras med de sex raderna från kontakttabellen.
OBS: För att undvika resultatet av upprepade kolumner två gånger, rekommenderas att använda individuella kolumnnamn istället för SELECT *-satsen.
Problem med tvetydiga kolumner i MySQL CROSS JOIN
Ibland måste vi hämta de valda kolumnposterna från flera tabeller. Dessa tabeller kan innehålla några liknande kolumnnamn. I så fall ger MySQL CROSS JOIN-satsen ett fel: kolumnnamnet är tvetydigt. Det betyder att namnet på kolumnen finns i båda tabellerna, och MySQL blir förvirrad över vilken kolumn du vill visa. Följande exempel förklarar det tydligare:
SELECT customer_id, cust_name, income, order_id, price FROM customer CROSS JOIN orders;
Ovanstående CROSS JOIN ger ett fel som anges i bilden nedan:
Det här problemet kan lösas genom att använda tabellnamnet före kolumnnamnet. Ovanstående fråga kan skrivas om som:
SELECT customer.customer_id, customer.cust_name, customer.income, orders.order_id, orders.price FROM customer CROSS JOIN orders;
Efter att ha kört ovanstående fråga får vi följande utdata:
VÄNSTER GÅ MED MED WHERE-klausulen
WHERE-satsen används för att returnera filtrera resultat från tabellen. Följande exempel illustrerar detta med CROSS JOIN-satsen:
java konvertera heltal till sträng
SELECT customers.customer_id, customers.cust_name, customers.income, orders.order_id, orders.price FROM customers CROSS JOIN orders USING(customer_id) WHERE price>1500 AND price<5000; < pre> <p>This statement gives the below result:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-7.webp" alt="MySQL CROSS JOIN"> <h3>MySQL CROSS JOIN Multiple Tables</h3> <p>We have already created two tables named ' <strong>customers'</strong> and ' <strong>orders'</strong> . Let us create one more table and name it as ' <strong>contacts' that contains the following data:</strong> </p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-8.webp" alt="MySQL CROSS JOIN"> <p>Here, we are going to explain CROSS JOIN with LEFT JOIN using three tables. Execute the following statement to join the three table customers, orders, and contacts. In this statement, first CROSS JOIN completed between orders and contacts, and then LEFT JOIN executes according to the specified condition.</p> <pre> SELECT * FROM customer LEFT JOIN(orders CROSS JOIN contacts) ON customer.customer_id=contact_id ORDER BY income; </pre> <p>After successful execution of the above query, it will give the following output:</p> <img src="//techcodeview.com/img/mysql-tutorial/98/mysql-cross-join-9.webp" alt="MySQL CROSS JOIN"> <hr></5000;>
Efter framgångsrik exekvering av ovanstående fråga kommer den att ge följande utdata:
5000;>