【问题标题】:SELECT in CONCAT在 CONCAT 中选择
【发布时间】:2015-06-16 22:39:31
【问题描述】:

我需要连接两列,我使用 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,它们是同一个表还是不同的表?
  • 是同一张表,但无论我使用什么查询,2列必须为two_columns_in_one_string
  • 什么是列类型,你得到什么,你想要什么
  • 我想获取 parent_id 和 parent_name。我使用的父 ID(从 id = 3 的表中选择 parent_id),但父 ID 的名称在另一行。 parent_id 与 id 在同一行,但 parent_name 不在...
  • 你能显示(剪切和粘贴不要键入它)创建表语句。然后提供一些示例数据。 2 件事

标签: mysql concatenation concat


【解决方案1】:

我假设table 是用父链接(或“邻接”模型)建模的树,如下所示:

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 语句以适合您想要的确切格式。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2013-11-12
      相关资源
      最近更新 更多