【问题标题】:SQL select include subquery that contain a where IN() errorSQL 选择包含包含 where IN() 错误的子查询
【发布时间】: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

【问题讨论】:

    标签: mysql sql subquery


    【解决方案1】:

    解决了!

    SELECT id_sip as id, 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 = id 
    GROUP BY id_sip) AS id_prodi 
    

    对不起,我在 stackoverflow 上的第一个问题

    【讨论】:

      猜你喜欢
      • 2015-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      相关资源
      最近更新 更多