2017-04-04 76 views
-3

我想从两个不同的表中使用一个查询提取两个相同数据类型的列。注:两个表中的科目属性长度都不相同。联盟不能在这里工作,因为列的数量(实际上)在两个表中都不相同。加入多个表的列

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 | 
--------------- 
+0

请重新编写您的CREATE TABLE语句,使它们全都是代码,并且每行放置一个属性 –

+0

“实际上”列数是不同的,但在您的示例中它们不是。无论如何,你可能需要一个临时表 - 这是非常疯狂的用例。 –

+0

@SteveHarris,表的实际数量是5;列数从30到40不等。为了避免混淆[不想列出不相关的信息],我希望得到一个帮助,在那里我感觉卡住了。尽管感谢您的帮助。 – Athar

回答

1

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

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

我把UNION ALL的假设,你想保持重复。如果您希望输出没有任何重复,请将其替换为UNION

+0

工作就像一个魅力曼。感谢您的及时帮助。 – Athar