我有一个具有以下结构的表。问题是我必须在"功能"中存储多个值。柱。我知道应该避免这种做法,但我正在寻找这种情况下的解决方案。
ID Chapters Functions
1 Chapter 1 Function 1
Function 2
Function 2
2 Chapter 2 Test 1
Test 2
Function 2
我正在搜索将输出以下
的MySQL查询Function 1
Function 2
Test 1
Test 2
我尝试了以下查询,但它当然不起作用,因为它将每个单元格的内容视为一个整体。
SELECT DISTINCT Functions from Chapters
我也试过通过PHP的 array_unique 函数来解决这个问题,但它也没有用。
答案 0 :(得分:1)
由于值与新行分开,您可以使用\n
转义序列以及SUBSTRING_INDEX函数和内部联接,您可以实现相同的
检查以下示例
CREATE TABLE func (
id INT,
functions VARCHAR(200));
INSERT INTO func VALUES
(1, 'Function 1
Function 2
Function 2'),
(2, 'Test 1
Test 2
Function 2');
查询
SELECT DISTINCT
SUBSTRING_INDEX(SUBSTRING_INDEX(func.functions, '\n', numbers.n), '\n', -1) as result
FROM
(SELECT 1 n UNION ALL SELECT 2
UNION ALL SELECT 3 UNION ALL SELECT 4) numbers INNER JOIN func
ON CHAR_LENGTH(func.functions)
-CHAR_LENGTH(REPLACE(func.functions, '\n', ''))>=numbers.n-1
ORDER BY
functions
结果
result
Function 1
Function 2
Test 1
Test 2