我需要有关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;
答案 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行。