Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql zwraca więcej niż jeden wiersz

Podzapytanie w instrukcji IF nie może zwrócić wielu kolumn. Musisz dołączyć podzapytanie do wyników i osobno wyciągnąć dwie oddzielne kolumny:

SELECT ...
    IF(!ISNULL(td_doc_nr.value_string), sub.one, NULL) as one,
    IF(!ISNULL(td_doc_nr.value_string), sub.two, NULL) as two
FROM ...
LEFT JOIN (
    SELECT  d.doc_nr, GROUP_CONCAT(product_name SEPARATOR ','),GROUP_CONCAT(DISTINCT b.msisdn SEPARATOR ',') from documents d 
    join document_bundles b on b.document_id = d.id
    join document_products p on p.doc_bundle_id = b.id
    join document_product_cstm_fields f on f.doc_product_id = p.id
    join document_product_cstm_field_data fd on fd.cstm_field_id = f.id
    where value_string ='auto'
    group by d.doc_nr
) sub on sub.doc_nr = td_doc_nr.value_string


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kodowanie C# Mysql UTF8

  2. PDO z INSERT INTO poprzez przygotowane zestawienia

  3. SQL:wybierz wszystkie unikalne wartości w tabeli A, których nie ma w tabeli B

  4. Czy to prawda, że ​​liczba kolumn nie wpływa na wydajność bazy danych, a liczba wierszy tak?

  5. Dołącz do 4 tabel w zapytaniu SQL