【问题标题】:Joining column for multiple tables连接多个表的列
【发布时间】:2017-04-04 18:06:20
【问题描述】:

我正在尝试使用一个查询从两个不同的表中提取两个相同数据类型的列。注意:两个表中的帐户属性长度各不相同。联合不能在这里工作,因为两个表中的列数(实际上)不同。

CREATE TABLE IF NOT EXISTS `mydb`.`TABLE_A` (
  `ID_TABLE_A` INT NOT NULL AUTO_INCREMENT,
  `ACCOUNT` VARCHAR(5) NULL,
  `SALES` INT NULL,
  PRIMARY KEY (`ID_TABLE_A`))
ENGINE = InnoDB;

CREATE TABLE IF NOT EXISTS `mydb`.`TABLE_B` (
  `ID_TABLE_B` INT NOT NULL AUTO_INCREMENT,
  `ACOUNT` VARCHAR(9) NULL,
  `SALES` INT NULL,
  PRIMARY KEY (`ID_TABLE_B`))
ENGINE = InnoDB;

要求:(我知道这不对,只是为了展示部分图片)

SELECT 
    ACCOUNTS,
    SALES
FROM
TABLE_A, TABLE_B

结果:

---------------
|accounts|sales|
| 2854 |52500  |
| 6584 |54645  | 
| 54782| 5624  |
| 58496|46259  |
| 56958| 6528  |
---------------

【问题讨论】:

  • 请重新格式化您的 CREATE TABLE 语句,使它们都是代码,并且每行放置一个属性
  • “实际上”列数不同,但在您的示例中它们不是。你可能需要一个临时表——无论如何“实际上”是非常疯狂的用例。
  • @SteveHarris,实际表数为 5;列数从 30 到 40 不等。为了避免混淆 [不想列出不相关的信息],我想在我感觉卡住的地方获得帮助。不过感谢您的帮助。

标签: sql select join union


【解决方案1】:

如果你想要两个不兼容联合的表的联合,那么让它们联合兼容:

(SELECT 
    ACCOUNTS,
    SALES
FROM
TABLE_A) UNION ALL
(SELECT 
    ACCOUNTS,
    SALES
FROM TABLE_B)

基于您希望保留重复项的假设,我输入了UNION ALL。如果您希望输出没有重复,请将其替换为 UNION

【讨论】:

  • 工作得像个魅力曼。感谢您的及时帮助。
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 2012-10-22
  • 2010-10-21
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多