如何从数据库中的两个表中获取数据?

时间:2016-11-17 16:30:47

标签: mysql

你能解释一下,为什么这段代码无效?

SELECT SUM(`cash`) AS `cash`,COUNT(*) AS `rows` FROM `table_1` WHERE `login` = 'test' UNION ALL SELECT COUNT(*) AS `rows2` FROM `table_2` WHERE `login` = 'test';

在phpMyadmin中,我看到了这样的消息:

  

1222 - 使用的SELECT语句具有不同的列数

我无法解决这个问题。

1 个答案:

答案 0 :(得分:0)

UNION获取多个SELECT语句的结果,并将它们显示为单个结果集。但是为了做到这一点,各个SELECT语句中的列数必须相同。

要理解这一点,可能有助于格式化查询:

    SELECT
        SUM(`cash`) AS `cash`,
        COUNT(*) AS `rows`
    FROM `table_1`
    WHERE `login` = 'test'
UNION ALL
    SELECT
        COUNT(*) AS `rows2`
    FROM `table_2`
    WHERE `login` = 'test'

您的第一个查询是选择两列,现金。第二个查询只选择一列 rows2 。另请注意,由于UNION正在连接结果,因此您也可以使用相同的名称调用每个查询中的相应列。

如果您确实没有要从第二个表中选择的任何值,则可以用缺省值替换缺省值:

    SELECT
        SUM(`cash`) AS `cash`,
        COUNT(*) AS `rows`
    FROM `table_1`
    WHERE `login` = 'test'
UNION ALL
    SELECT
        NULL AS `cash`
        COUNT(*) AS `rows`
    FROM `table_2`
    WHERE `login` = 'test'