phpMyAdmin
 sql >> Baza danych >  >> Database Tools >> phpMyAdmin

MySQL - Zapytanie łączy wiersze o tym samym identyfikatorze i zachowuje wszystkie wpisy dla tego identyfikatora, ale jako jeden rekord

Problem polega na tym, że MySQL nie ma dobrego sposobu na wyliczanie wierszy. Użycie stałej nie gwarantuje działania, niestety, zgodnie z dokumentacją MySQL. Często działa, ale może być również problematyczny.

Sugerowałbym połączenie nazw w jedno pole. Wynik wyglądałby tak:

1     tree,rose
2     tree
3     tree,bush,rose

Korzystanie z SQL:

select plantid, group_concat(name separator ',')
from t
group by plantid

Jeśli naprawdę chcesz, aby nazwy były umieszczone w osobnych kolumnach, przychodzą mi do głowy dwie opcje. Jednym z nich jest użycie wyników z góry, a następnie przetworzenie wyniku na oddzielne ciągi. Inną alternatywą jest użycie samopołączenia i agregacji do obliczenia numeru sekwencyjnego, na przykład:

select p.plantid, p.name, count(*) as seqnum
from t p left outer join
     t pprev
     on p.plantid = pprev.plantid and
        p.name >= pprev.name
group by p.plantid, p.name

Użyj tego jako podzapytania.




  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Jak podzielić sql w MAC OSX?

  2. Usuwanie duplikatów adresu e-mail na podstawie najniższego identyfikatora w mysql

  3. phpMyAdmin BŁĄD:mysqli_real_connect():(HY000/1045):Odmowa dostępu dla użytkownika 'pma'@'localhost' (przy użyciu hasła:NIE)

  4. Importowanie arkusza Excel do phpMyAdmin

  5. Dlaczego MySQL nie pozwala mi usunąć atrybutu podczas aktualizacji CURRENT_TIMESTAMP?