我需要连接两列,我使用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,但似乎没有工作。
答案 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;