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;
我需要连接两列,我使用了 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;