SELECT 在 CONCAT

SELECT in 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 试了一下,但似乎没有用。

我假设 table 是一棵用父 link 模型(或 "adjacency" 模型)建模的树,像这样:

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)
);

如果要查找给定 table 的行,该行是同一 table 中另一行的父行,您可以 INNER JOIN a table本身在父 link 上。然后,您可以通过在 JOIN 中提供的别名来区分父项和子项 table 中的值。要连接 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 语句以适合您想要的确切格式。

我想你可能想要 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;