我在不同数据库的不同表中有两个表。
数据库 1,表 1:
Name | Data Type | Collation
id BINARY
count INT(5)
示例:
id count
1caf69a993367281 3
数据库2,表1
Name | Data Type | Collation
id VARCHAR latin1_swedish_ci
id2 INT(10)
示例:
id id2
1caf69a993367281 344
我需要做这样的事情
SELECT id, id2, count
FROM `Database 1`.`Table 1`
INNER JOIN `Database 2`.`Table 1`
USING(`id`)
此外,id 存储为十六进制值(例如 1caf69a993367281)。
数据库 1 是由开源工具(准确地说是 Piwik)创建的,并指出,“要从表 1 中获取 id,您可以使用 CONV(HEX(id
) 16, 10) 来获取其十进制值。
为了方便,我试过了
SELECT id, id2, count
FROM `Database 1`.`Table 1`
INNER JOIN `Database 2`.`Table 1`
ON CONV(HEX(`Database 1`.`Table 1`.`id`), 16, 10) = CONV(HEX(`Database 2`.`Table 1`.`id`), 16, 10)
这两个查询都给出空结果。
最佳答案
显然我们需要在我们提到列的任何地方明确指定数据类型。特别是在二进制数据类型的列中。 这样的事情奏效了-
SELECT HEX(id), id2, count
FROM `Database 1`.`Table 1` a
INNER JOIN `Database 2`.`Table 1` b
ON BINARY HEX(`a`.id) = BINARY UPPER(`b`.id)
关于MySQL无法连接来自具有不同数据类型的不同数据库的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185722/