MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak wpisać wiele wierszy do listy rozdzielanej przecinkami w SQL?

Większość głównych RDBMS ma funkcję, która umożliwia nam zwracanie wyników zapytania w postaci listy oddzielonej przecinkami.

Oznacza to, że możemy użyć takiej funkcji, aby przekonwertować każdy wiersz na oddzielny element listy, w ramach listy oddzielonej przecinkami.

Poniżej znajdują się przykłady, jak to osiągnąć w niektórych bardziej popularnych systemach RDBMS.

MySQL

MySQL ma GROUP_CONCAT() funkcja, która pozwala nam wyświetlić wyniki zapytania w postaci listy oddzielonej przecinkami:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Wynik:

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

Możemy również robić takie rzeczy jak usuwanie zduplikowanych wartości (za pomocą DISTINCT klauzuli), określ kolejność wyników (za pomocą ORDER BY klauzuli) i określ inny ogranicznik.

Zobacz GROUP_CONCAT() Funkcja w MySQL, aby uzyskać więcej przykładów.

Baza danych Oracle

Baza danych Oracle ma funkcję LISTAGG() funkcja:

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

Wynik:

Hunold, Ernst, Austin, Pataballa, Lorentz    

Podobnie jak MySQL, Oracle Database pozwala nam również na usuwanie zduplikowanych wartości, określanie kolejności wyników, określanie innego separatora itp.

Zobacz LISTAGG() Funkcja w Oracle, aby uzyskać więcej przykładów.

Serwer SQL

SQL Server ma STRING_AGG() funkcja zwracająca nasze wyniki w postaci listy oddzielonej przecinkami:

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

Wynik:

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

Możemy również usunąć zduplikowane wartości, określić kolejność wyników, zmienić ogranicznik itp.

Zobacz Jak zwrócić wyniki zapytania jako listę rozdzielaną przecinkami w SQL Server, aby uzyskać więcej przykładów.

MariaDB

Podobnie jak MySQL, MariaDB ma również funkcję GROUP_CONCAT() funkcja:

SELECT GROUP_CONCAT(PetName) 
FROM Pets;

Wynik:

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

Podobnie jak funkcja MySQL o tej samej nazwie, możemy również robić takie rzeczy, jak usuwanie zduplikowanych wartości (za pomocą DISTINCT klauzuli), określ kolejność wyników (za pomocą ORDER BY klauzula), zmień separator itp.

Jednak jedną rzeczą, którą MariaDB ma nad MySQL, jest LIMIT klauzula, która daje nam możliwość ograniczenia liczby wyników na liście.

Zobacz MariaDB GROUP_CONCAT() więcej przykładów.

PostgreSQL

Postgres ma STRING_AGG() funkcja:

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

Wynik:

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

Możemy również usunąć zduplikowane wartości (za pomocą DISTINCT klauzuli), określ kolejność wyników (za pomocą ORDER BY klauzula), zmień separator itp.

Zobacz STRING_AGG() Funkcja w PostgreSQL, aby uzyskać więcej przykładów.

SQLite

W SQLite możemy użyć GROUP_CONCAT() funkcja przekształcająca wyniki naszego zapytania w listę oddzieloną przecinkami:

SELECT group_concat(FirstName)
FROM Employee;

Wynik:

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

Zobacz, jak GROUP_CONCAT() Działa w SQLite, aby uzyskać więcej przykładów.

Wiele kolumn

Wszystkie powyższe przykłady używają jednej kolumny na liście. Możemy również połączyć wiele kolumn, aby utworzyć listę zawierającą wiele kolumn.

Załóżmy, że mamy tabelę z następującymi danymi:

SELECT TaskId, TaskName 
FROM Tasks;

Wynik:

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

W SQL Server możemy wykonać następujące czynności, aby wyprowadzić obie kolumny w jednym wierszu:

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

Wynik:

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. MongoDB jsonSchema walidacja extraProperties

  2. Aktualizacja starszej bazy danych mongo po niezamierzonej aktualizacji wersji mongo

  3. Wydajność zapytań MongoDB dla ponad 5 milionów rekordów

  4. Spring Data MongoDB - Adnotacja @CreatedDate nie działa podczas używania z niestandardowym polem identyfikatora

  5. Bitwa o bazy danych NoSQL — porównanie MongoDB i Cassandra