Как мне распечатать уникальные данные из sql столбцов? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть таблица с такими строками:

id | данные

1 | a, c

2 | а, б

3 | c, a

Я хотел бы распечатать все данные один раз: a, b, c

Я пробовал этот метод:

$sql = mysqli_query($conn, "SELECT DISTINCT data FROM table WHERE id > 0 AND id < 4 GROUP BY data");
    while ($data = mysqli_fetch_array($sql))
    {
        $d= $data['data'];
        $d2 = implode(", ", explode(", ", $d));
        $d3 = explode(", ", $d2);
        foreach ($d3 as &$i)
        {
            print $i.", ";
        }

    }

Но я получаю а, б, а, c, c, а,

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Если вы группируете данные в столбце «данные», вы группируете все поле, это означает, что результат такой, как ожидалось. Вам нужно либо изменить свой оператор SQL, либо код PHP.

Я бы сделал go для решения в SQL:

SELECT data1 FROM 
(SELECT SUBSTRING(data,1,1) AS data1 FROM table
UNION 
SELECT SUBSTRING(data,3,1) AS data1 FROM table
) AS x
GROUP BY data1

(это предполагает функцию SUBSTRING () есть в наличии)

0 голосов
/ 17 июня 2020

Вы ищете substring_index()? Если у вас только два значения в строке:

select distinct (case when n.n = 1 then substring_index(data, ',', 1)
                      else substring_index(data, ',', -1)
                 end)
from t cross join
     (select 1 as n union all select 2) n;

При желании это можно легко расширить для нескольких значений.

...