sql >> Database teknologi >  >> RDS >> Mysql

Kan MySQL Nested Select returnere liste over resultater

Du vil måske bruge GROUP_CONCAT() funktion som følger:

SELECT t1.id, t1.first_name, t1.last_name, GROUP_CONCAT(DISTINCT job_id ORDER BY job_id SEPARATOR ',') job_idFROM Table1 t1JOIN Table2 t2 ON (t2.Person_id =t1.id tGROUP.UP) id;

Lad os teste det med dine eksempeldata:

CREATE TABLE Table1 ( id int AUTO_INCREMENT PRIMARY KEY, fornavn varchar(50), efternavn varchar(50)); CREATE TABLE Table2 ( id int AUTO_INCREMENT PRIMARY KEY, person_id int, job_id int);INSERT INTO Table1 VALUE (NULL, 'Joe', 'Bloggs');INSERT INTO Table1 VALUES (NULL, 'Mike', 'Smith');INSERT INTO Table1 VALUES (NULL, 'Jane', 'Doe');INSERT INTO Table2 VALUES (NULL) , 1, 1);INSERT INTO Table2 VALUES (NULL, 1, 2);INSERT INTO Table2 VALUES (NULL, 2, 2);INSERT INTO Table2 VALUES (NULL, 3, 3);INSERT INTO Table2 VALUES (NULL, 3); , 4); 

Resultat af forespørgslen:

+----+------------+-----------+--------+| id | fornavn | efternavn | job_id |+----+-------------+----------+--------+| 1 | Joe | Blogger | 1,2 | | 2 | Mike | Smith | 2 | | 3 | Jane | Doe | 3,4 | +----+------------+-----------+--------+

Bemærk, at resultatet af GROUP_CONCAT() som standard er trunkeret til den maksimale længde på 1024 . Dette kan dog indstilles til en meget større værdi . Brug kommandoen SET, hvis du har brug for at ændre den, som følger:

SET GLOBAL group_concat_max_len =2048; 



  1. LEFT JOIN vs. LEFT OUTER JOIN i SQL Server

  2. dvale med c3p0:createClob() er endnu ikke implementeret

  3. Gendan database i WAMP

  4. Lær om DBMS_OUTPUT-pakken i Oracle