【问题标题】:Concat two columns and columns are obtained via SELECT queriesConcat 两列和列是通过 SELECT 查询获得的
【发布时间】:2012-08-23 14:05:18
【问题描述】:

我需要有关 CONCAT 功能的帮助。我有两个选择查询,每个查询的结果都是一列。我需要将这两列合并为一。那可能吗?因为,即使我尝试使用简单的选择查询,例如:

SELECT owner FROM table WHERE number="value1";
SELECT number FROM table WHERE owner="value2" AND number IS NOT null;

这些查询有效并抛出 3 行类似结果。但是,如果我想使用 CONCAT 将它们合并到一列中 - 那是行不通的。你知道为什么吗?

SELECT CONCAT(SELECT owner FROM table WHERE number="value1",
SELECT number FROM table WHERE owner="value2" AND number IS NOT null
) as NEW_COLUMN FROM table;

【问题讨论】:

  • 为什么最后有“FROM table”?

标签: mysql concat


【解决方案1】:

我想你想要这个:

SELECT CONCAT(owner, number) newCol1
FROM yourTable
WHERE number="value1"
    OR (owner="value2" AND number IS NOT null)

【讨论】:

    【解决方案2】:
    SELECT
       CONCAT(owner, number) as NEW_COLUMN
    FROM
       table
    WHERE
       owner = "value2"
       AND number = "value1"
       AND number IS NOT NULL
    

    【讨论】:

      【解决方案3】:

      根本原因是数据库无法连接两个可能具有不同行数的不同 SELECT。

      您需要做的是根据 JOIN 重新制定您的查询。

      例如假设我们有这个表:

      owner    number
      John     value1
      value2   123456
      

      您的第一个查询:

      SELECT owner FROM table WHERE number="value1";
      

      将返回“约翰”。第二个

      SELECT number FROM table WHERE owner="value2" AND number IS NOT null;
      

      将返回“123456”。

      如果您 CONCAT 这两个值,您将得到“John 123456”。

      首先,这是您想要的查询的预期行为吗?如果第三行的所有者=Jack 和 number=value1,那么第一个查询返回两行“John”和“Jack”会发生什么情况?

      您可以研究的一件事是CROSS JOIN 语法。

      SELECT CONCAT (table1.owner, ', ', table2.number) AS new_column
           FROM ( SELECT owner FROM table WHERE number="value1" ) AS tablel1
           CROSS JOIN
           (SELECT number FROM table WHERE owner="value2" AND number IS NOT null ) AS table2;
      

      请注意,如果第一个查询返回三行,第二个查询返回四行,则组合查询将返回 3*4 = 12 行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-19
        相关资源
        最近更新 更多