sql >> Databasteknik >  >> RDS >> Mysql

Underfråga som returnerar mer än 1 rad

Jag tror inte att det är möjligt att returnera en array inom en rad, men det du kan göra är att använda group_concat för att sammanfoga värdena till en sträng som du sedan kan explodera senare:

SELECT `customers`.`First Name`, `customers`.`Last Name`,
GROUP_CONCAT(`items`.`Product Name` SEPARATOR '$^$') AS `Products` 
FROM customers 
JOIN items 
ON `customers`.`Customer No` = `items`.`Customer No` 
WHERE `customers`.`Customer No` = 6 
GROUP BY `Customer No`

$products=explode("$^$",$result[0]['products']);

Standardavgränsaren för group_concat är , vilket kan vara ganska farligt när du använder explode så vi använder SEPARATOR '$^$' för att lägga till ett gäng slumpmässiga tecken som sannolikt inte dyker upp istället.



  1. ORA-06508:PL/SQL:kunde inte hitta den programenhet som anropas

  2. MySQL Kan inte släppa index som behövs i en främmande nyckel-begränsning

  3. Ska jag köra mysql på google cloud run? (eller vilken databas som helst)

  4. Kan inte öppna användarens standarddatabas. Inloggningen misslyckades. efter installation av SQL Server Management Studio Express