MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да получите няколко реда в списък, разделен със запетая в SQL

Повечето от основните RDBMS имат функция, която ни позволява да върнем резултатите от заявката си като списък, разделен със запетая.

Тоест, можем да използваме такава функция, за да преобразуваме всеки ред в отделен елемент от списък, в рамките на разделен със запетая списък.

По-долу са дадени примери за това как да постигнете това в някои от по-популярните RDBMS.

MySQL

MySQL има GROUP_CONCAT() функция, която ни позволява да изведем резултатите от нашата заявка в разделен със запетая списък:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Резултат:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Можем също да правим неща като премахване на дублиращи се стойности (с DISTINCT клауза), посочете ред за резултатите (с ORDER BY клауза) и посочете различен разделител.

Вижте GROUP_CONCAT() Функция в MySQL за повече примери.

База данни на Oracle

Oracle Database има LISTAGG() функция:

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Резултат:

Hunold, Ernst, Austin, Pataballa, Lorentz    

Подобно на MySQL, Oracle Database също ни позволява да премахнем дублиращи се стойности, да посочим ред за резултатите, да посочим различен разделител и т.н.

Вижте LISTAGG() Функция в Oracle за още примери.

SQL сървър

SQL Server има STRING_AGG() функция, за да върне нашите резултати в списък, разделен със запетая:

SELECT STRING_AGG(Genre, ',') AS Result FROM Genres

Резултат:

Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk

Можем също да премахнем дублиращи се стойности, да посочим ред за резултатите, да променим разделителя и т.н.

Вижте как да върнете резултатите от заявката като списък, разделен със запетая, в SQL Server за повече примери.

MariaDB

Подобно на MySQL, MariaDB също има GROUP_CONCAT() функция:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Резултат:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Подобно на едноименната функция на MySQL, ние също можем да правим неща като премахване на дублиращи се стойности (с DISTINCT клауза), посочете ред за резултатите (с ORDER BY клауза), променете разделителя и т.н.

Въпреки това, едно нещо, което MariaDB има над MySQL, е LIMIT клауза, която ни предоставя възможността да ограничим броя на резултатите в списъка.

Вижте MariaDB GROUP_CONCAT() за още примери.

PostgreSQL

Postgres има STRING_AGG() функция:

SELECT STRING_AGG(PetName, ',') 
FROM Pets;

Резултат:

Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

Можем също да премахнем дублиращи се стойности (с DISTINCT клауза), посочете ред за резултатите (с ORDER BY клауза), променете разделителя и т.н.

Вижте STRING_AGG() Функция в PostgreSQL за повече примери.

SQLite

В SQLite можем да използваме GROUP_CONCAT() функция за трансформиране на резултатите от нашата заявка в списък, разделен със запетая:

SELECT group_concat(FirstName)
FROM Employee;

Резултат:

Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura

Вижте как GROUP_CONCAT() Работи в SQLite за повече примери.

Множество колони

Всички горни примери използват една колона за списъка. Можем също да обединим множество колони, за да създадем списък, който включва множество колони.

Да предположим, че имаме таблица със следните данни:

SELECT TaskId, TaskName 
FROM Tasks;

Резултат:

TaskId  TaskName    
------  ------------
1       Feed cats   
2       Water dog   
3       Feed garden 
4       Paint carpet
5       Clean roof  
6       Feed cats   

В SQL Server можем да направим следното, за да изведем двете колони в един ред:

SELECT STRING_AGG(CONCAT(TaskId, ') ', TaskName), ' ') 
FROM Tasks

Резултат:

1) Feed cats 2) Water dog 3) Feed garden 4) Paint carpet 5) Clean roof 6) Feed cats

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Битката на базите данни NoSQL - Сравняване на MongoDB и Firebase

  2. Как да съхранявате полето за дата като ISODate() с помощта на jackson в MongoDb

  3. Moongoose агрегат $match не съвпада с идентификатори

  4. Как да актуализирам полетата на документа на MongoDB само ако не съществуват?

  5. MongoDB findOne()