sql >> Databáze >  >> RDS >> Mysql

Může MySQL Nested Select vrátit seznam výsledků

Možná budete chtít použít GROUP_CONCAT() takto:

SELECT    t1.id, 
          t1.first_name, 
          t1.last_name,
          GROUP_CONCAT(DISTINCT job_id ORDER BY job_id SEPARATOR ',') job_id
FROM      Table1 t1
JOIN      Table2 t2 ON (t2.Person_id = t1.id)
GROUP BY  t1.id;

Pojďme to otestovat na vašich příkladech dat:

CREATE TABLE Table1 (
    id int AUTO_INCREMENT PRIMARY KEY, 
    first_name varchar(50), 
    last_name varchar(50));

CREATE TABLE Table2 (
    id int AUTO_INCREMENT PRIMARY KEY, 
    person_id int,
    job_id int);

INSERT INTO Table1 VALUES (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);

Výsledek dotazu:

+----+------------+-----------+--------+
| id | first_name | last_name | job_id |
+----+------------+-----------+--------+
|  1 | Joe        | Bloggs    | 1,2    | 
|  2 | Mike       | Smith     | 2      | 
|  3 | Jane       | Doe       | 3,4    | 
+----+------------+-----------+--------+

Všimněte si, že ve výchozím nastavení je výsledkem GROUP_CONCAT() je zkrácena na maximální délku 1024 . Toto však lze nastavit na mnohem větší hodnotu . Pokud jej potřebujete upravit, použijte příkaz SET:

SET GLOBAL group_concat_max_len = 2048;



  1. Co bych rád viděl v Amazon EC2 pro správu databází

  2. Dočasná tabulka serveru SQL zmizí

  3. MySQL:Počítejte jednotlivé řádky za den

  4. Zobrazení MySQL – Kdy použít a kdy ne