在CONCAT中选择

时间:2015-06-16 22:39:32

标签: mysql concatenation concat

我需要连接两列,我使用concat,因为我看到这个函数可以帮助我。

concat函数的一个例子是:

SELECT CONCAT(column1,'SEPARATOR',column2) FROM table

我的查询是这样的:

SELECT
    parent_id AS keep_in_mind_parent_id,
    (SELECT name FROM table WHERE id = keep_in_mind_parent_id)
FROM
    table
WHERE
    id = 3

我应该如何连接这些列?我尝试使用CONCAT,但似乎没有工作。

2 个答案:

答案 0 :(得分:0)

我假设table是使用父链接建模的树(或者#34;邻接"模型),如下所示:

CREATE TABLE `table` (
  id INTEGER UNSIGNED PRIMARY KEY,
  parent_id INTEGER UNSIGNED NOT NULL,
  name VARCHAR(31) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  UNIQUE (parent_id, name)
);

如果要查找给定表的行,该表是同一表中另一行的父行,则可以在父链接上INNER JOIN表自己。然后,您可以通过JOIN中给出的别名来区分父表和子表中的值。要连接id为3的子项的父行和子行的名称,连接将如下所示:

SELECT child.parent_id, child.id AS id,
       CONCAT(parent.name, ':', child.name) AS path,
       CONCAT(parent.name, ' (#', parent.id, ')') AS parent_name_id
FROM `table` AS child
INNER JOIN `table` AS parent ON child.parent_id = parent.id
WHERE child.id = 3

然后调整CONCAT语句以适合您想要的确切格式。

答案 1 :(得分:0)

我想你可能想要group_concat()。没有样本数据和期望的结果,很难说,但可能的一种可能性是:

SELECT parent_id AS keep_in_mind_parent_id,
       (SELECT group_concat(name) FROM table WHERE id = keep_in_mind_parent_id)
FROM table
WHERE id = 3;