Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自引用MySQL表_Mysql - Fatal编程技术网

自引用MySQL表

自引用MySQL表,mysql,Mysql,我有一张桌子: CREATE TABLE IF NOT EXISTS `columns` ( `id` int(11) NOT NULL AUTO_INCREMENT, `section_id` int(11) NOT NULL, `columntype` int(11) NOT NULL, `name` varchar(128) COLLATE utf8_bin NOT NULL, `refer_type` int(11) NOT NULL, PRIMARY KEY (`id`)); 内容如

我有一张桌子:

CREATE TABLE IF NOT EXISTS `columns` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`section_id` int(11) NOT NULL,
`columntype` int(11) NOT NULL,
`name` varchar(128) COLLATE utf8_bin NOT NULL,
`refer_type` int(11) NOT NULL,
PRIMARY KEY (`id`));
内容如下:

INSERT INTO `columns` (`id`, `section_id`, `columntype`, `name`, `refer_type`) VALUES
(9, 35, 1, 'Headline1', 0),
(10, 36, 1, 'Headline2', 0),
(11, 36, 5, 'Headline3', 10),
(12, 36, 3, 'Headline4', 0),
(13, 36, 4, 'Headline5', 10);
reference\u from
包含必须从中提取并使用其计算包含数据的其他列的信息。当在我的webapp中更改Headline2时,Headline3和Headline5的内容应该更改。我正在webapp中执行最后的计算,但我需要一个SQL,它会给我一个类似的结果

    id    name      columntype refer_type
    10    Headline2 1          4, 5
    11    Headline3 5          null
    12    Headline4 3          null
    13    Headline5 4          null
我尝试过类似于
选择id、name、columntype,(选择GROUP\u CONCAT(请参阅类型分隔符“,”)…
的方法,但这在所有四个结果行上都给出了
4,5


提前感谢!

如果我没弄错,您可能需要这样的选择:

SELECT c.id, c.name, c.columntype, ref.reftypes
FROM columns c LEFT JOIN
      (SELECT GROUP_CONCAT(columntype SEPARATOR  "," ) reftypes, refer_type
       FROM columns
       GROUP BY refer_type) ref
ON c.id = ref.refer_type;
这就是:

SELECT c1.id, c1.name, c1.columntype, GROUP_CONCAT(c2.columntype ORDER BY c2.columntype) AS refer_type
FROM columns AS c1
LEFT JOIN columns AS c2 ON c1.id = c2.refer_type
GROUP BY c1.id
ORDER BY c1.id

谢谢!两个SQL都很好用!我之所以选择Bamar的答案是因为它很简单。

引用来自
列的
在哪里?GROUP\u CONCAT将只处理使用
GROUP by
的语句。请参阅。我写的'refere\u from'错误-应该是'refere\u type'。