Concat通过SELECT查询获得两列和列

时间:2012-08-23 14:05:19

标签: mysql concat

我需要有关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;

3 个答案:

答案 0 :(得分:2)

我想你想要这个:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

例如,假设我们有这个表:

owner    number
John     value1
value2   123456

您的第一个查询:

SELECT owner FROM table WHERE number="value1";

将返回“John”。第二个

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

将返回“123456”。

如果您将两个值联系起来,那么您将得到“John 123456”。

首先,这是您想要的查询的预期行为吗?会发生的是第三行有owner = 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行。