【发布时间】:2017-12-02 05:36:05
【问题描述】:
我想使用包含 WHERE IN 查询的子查询在 MySQL 中选择数据
SELECT id_sip, nip_baru, id_finger, nama_pegawai, gelar_depan,
gelar_belakang, kelamin, nama_kelamin, nama_status, id_golongan,
kode_golongan, tmt_jabatan_utama,
CONCAT(kode_golongan, ' - ', nama_golongan)
AS golongan, id_pendidikan, kode_pendidikan, nama_status_ju, nama_nama_ju,
DATEDIFF(CURDATE(), tmt_cpns) AS masa_kerja ,
(SELECT GROUP_CONCAT(jurusan_pendidikan SEPARATOR ', ')
FROM tbl_riwayat_pendidikan
LEFT JOIN tbl_master_pegawai
USING(id_sip)
WHERE id_sip IN(1, 2, 3, 4, 5, 6, 7, 8)
GROUP BY id_sip) AS id_prodi
FROM tbl_master_pegawai
LEFT JOIN tbl_data_kelamin
ON tbl_data_kelamin.`id_kelamin` = tbl_master_pegawai.`kelamin`
LEFT JOIN tbl_data_status
ON tbl_data_status.`id_status` = tbl_master_pegawai.`status_pegawai`
LEFT JOIN tbl_data_golongan
ON tbl_data_golongan.`id_golongan` = tbl_master_pegawai.`golongan_pegawai`
LEFT JOIN tbl_data_pendidikan
ON tbl_data_pendidikan.`id_pendidikan` = tbl_master_pegawai.`pendidikan`
LEFT JOIN tbl_data_jabatanutama_status
ON tbl_data_jabatanutama_status.`id_status_ju` = tbl_master_pegawai.`jabatan_utama`
LEFT JOIN tbl_data_jabatanutama_nama
ON tbl_data_jabatanutama_nama.`no_nama_ju` = tbl_master_pegawai.`nama_jabatan_utama`
WHERE id_sip IN(1, 2, 3, 4, 5, 6, 7, 8)
我希望结果遵循每个 WHERE 查询的行。 但上面的查询显示错误“子查询返回超过 1 行”
(SELECT GROUP_CONCAT(jurusan_pendidikan SEPARATOR ', ')
FROM tbl_riwayat_pendidikan
LEFT JOIN tbl_master_pegawai
USING(id_sip)
WHERE id_sip IN(1, 2, 3, 4, 5, 6, 7, 8)
GROUP BY id_sip) AS id_prodi
或
(SELECT GROUP_CONCAT(jurusan_pendidikan SEPARATOR ', ')
FROM tbl_riwayat_pendidikan
LEFT JOIN tbl_master_pegawai
USING(id_sip)
WHERE id_sip = id_sip
GROUP BY id_sip) AS id_prodi
【问题讨论】: