如何使用来自另一个数据库的数据选择数据?

时间:2018-10-01 02:09:58

标签: mysql select

我想进行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

我该如何解决?

3 个答案:

答案 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)

避免使用*这不是很好的基本做法