我想进行SELECT
查询。该参数取自另一个数据库。因此,我正在使用scg_surat.t_pembayaran
中的数据来选择scg_vendor.vendor
SELECT * FROM scg_vendor.vendor WHERE id_vendor IN (SELECT scg_surat.t_pembayaran.REKANAN FROM `scg_surat.t_pembayaran` GROUP BY scg_surat.t_pembayaran.REKANAN)
查询给出此错误Table 'scg_vendor.scg_surat.t_pembayaran' doesn't exist
。
我该如何解决?
答案 0 :(得分:1)
要从其他数据库中选择表,必须在表之前指定数据库。例如。
Select * From `DataBase1`.`MyTable1`;
我对哪个是您的数据库名有些困惑,但是我猜您在寻找什么呢?
SELECT `scg_surat.t_pembayaran`.`REKANAN`
FROM `scg_surat.t_pembayaran`
GROUP BY `scg_surat.t_pembayaran`.`REKANAN`
scg_surat.t_pembayaran
是数据库的名称,REKANAN
是表的名称?
已编辑:
然后尝试此查询:
SELECT * FROM `scg_vendor`.`vendor`
WHERE `id_vendor` IN
(SELECT `REKANAN` FROM `scg_surat`.`t_pembayaran` GROUP BY `REKANAN`);
答案 1 :(得分:1)
问题出在数据库,表和列名称上的反引号运算符上。 MySQL正在从您当前的数据库选择中将其作为列选择读取。
反引号需要分开
`scg_surat`.`t_pembayaran`.`REKANAN`
您的查询应类似于:
SELECT *
FROM `scg_vendor`.`vendor`
WHERE `id_vendor` IN (
SELECT `scg_surat`.`t_pembayaran`.`REKANAN`
FROM `scg_surat`.`t_pembayaran`
GROUP BY `scg_surat.`t_pembayaran`.`REKANAN`
)
我还建议使用别名代替完整的表名。
SELECT v.*
FROM `scg_vendor`.`vendor` AS v
WHERE v.`id_vendor` IN(
SELECT p.`REKANAN`
FROM `scg_surat`.`t_pembayaran` AS p
GROUP BY REKANAN
)
答案 2 :(得分:0)
如果您确实已经指定了表,那么您在select statement
中只是错了,只是调用该列而不是数据库和表。
尝试:
SELECT * FROM scg_vendor.vendor WHERE id_vendor IN
(SELECT REKANAN FROM scg_surat.t_pembayaran
GROUP BY REKANAN)
避免使用*
这不是很好的基本做法