Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah MySQL Nested Select mengembalikan daftar hasil?

Anda mungkin ingin menggunakan GROUP_CONCAT() fungsi, sebagai berikut:

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;

Mari kita uji dengan contoh data Anda:

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);

Hasil kueri:

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

Perhatikan bahwa secara default, hasil dari GROUP_CONCAT() dipotong hingga panjang maksimum 1024 . Namun ini dapat diatur ke jauh lebih besar nilai . Gunakan perintah SET jika Anda perlu memodifikasinya, sebagai berikut:

SET GLOBAL group_concat_max_len = 2048;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Bagaimana cara mengetahui tabel mana yang merujuk ke tabel tertentu?

  2. Lewati baris kesalahan saat memuat data ke tabel mysql dari file yang dibatasi

  3. Haruskah saya hanya menggunakan AWS RDS Automated Backup atau DB Snapshots?

  4. MYSQL jika kueri pemilihan mengembalikan 0 baris lalu kueri pemilihan lainnya?

  5. Mengapa saya tidak bisa menggunakan variabel sebagai nama tabel dalam prosedur tersimpan?