如何使用其他数据库中的数据选择数据?

4bbkushb  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(315)

我想做一个 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` .
我该怎么解决这个问题?
hc2pp10m

hc2pp10m1#

问题在于数据库、表和列名上的反勾号运算符。mysql将它作为当前数据库选择中的列选择来读取。
backtick操作符需要分开

`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
)
cnh2zyt3

cnh2zyt32#

你只是做错了 select statement 如果已经指定了表,只需调用列,而不是数据库和表。
尝试:

SELECT * FROM scg_vendor.vendor WHERE id_vendor IN 
(SELECT REKANAN FROM scg_surat.t_pembayaran
GROUP BY REKANAN)

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

neskvpey

neskvpey3#

要从不同的数据库中选择表,必须在表之前指定数据库。例如。

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 你的table叫什么名字?
编辑:
然后尝试此查询:

SELECT * FROM `scg_vendor`.`vendor`
WHERE `id_vendor` IN
(SELECT `REKANAN` FROM `scg_surat`.`t_pembayaran` GROUP BY `REKANAN`);

相关问题