【问题标题】:JOIN databases from SELECT从 SELECT 连接数据库
【发布时间】:2015-07-06 07:29:15
【问题描述】:

我需要一个查询中来自同一数据库服务器上的多个数据库的连接(类似联合)结果。每个客户数据库都包含一个位置表,所有客户都列在核心数据库中。

我不需要不同数据库之间的简单连接。我需要实际连接的数据库名称来自同一个查询。

我想是这样的。

SELECT customerlist.dbname,customerlist.realname,location.address
FROM core.customerlist
INNER JOIN `customer.dbname`.location
ORDER BY customerlist.realname

我知道这行不通,我只是在尝试对我正在搜索的内容进行伪代码。我希望有人可以提供帮助。

数据库结构:

-- Database: `core`

CREATE TABLE IF NOT EXISTS `customerlist` (
  `realname` varchar(20) NOT NULL,
  `dbname` varchar(16) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `customerlist` (`realname`, `dbname`) VALUES
('Johnny', 'johnny'),
('Alfred', 'alfred');

-- --------------------------------------------------------
-- Database: `alfred`

CREATE TABLE IF NOT EXISTS `location` (
  `address` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `location` (`address`) VALUES
('House Three'),
('Car 1');

-- --------------------------------------------------------
-- Database: `johnny`

CREATE TABLE IF NOT EXISTS `location` (
  `address` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `location` (`address`) VALUES
('House One'),
('House Two');

想要的结果;

johnny,Johnny,House One
johnny,Johnny,House Two
alfred,Alfred,House Three
alfred,Alfred,Car 1

【问题讨论】:

  • 我以前没有做过,甚至不知道你是否可以做到,但你确实需要添加更多信息,例如“不起作用”究竟是什么意思。你有错误吗?还是只是无效数据?在我的脑海中,你应该为这些表声明分配同义词,以防多个数据库中有同名的表。
  • 这是什么结果?
  • 如果您在问题中添加您所指的表格的表格定义、一些示例数据以及基于您提供的示例数据的所需结果,那么应该有人可以帮助您。
  • 这可能只是问题,但你的反引号是错误的:`customer.dbname`.location 应该是`customer`.`dbname`.location

标签: mysql database join union


【解决方案1】:

你必须小心这两个表相同的表...如果可以的话将它们加入一个联合中,因为它们在结构上是相同的:

 SELECT customerlist.dbname,customerlist.realname,location.address
 FROM core.customerlist
 LEFT JOIN (
   SELECT * FROM (johnny.location UNION alfred.location
   )) AS T2 ON customerlist.dbname = T2.dbname
 ORDER BY customerlist.realname

【讨论】:

  • 不解决问题 "johnny" 和 "alfred" 在此处静态指定。查询需要动态加入 core.customerlist 中指定的数据库。它可以是两个数据库或 >100。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2011-05-28
相关资源
最近更新 更多