sql >> Databáze >  >> RDS >> Mysql

Dotaz vrací jeden záznam navíc. Nějaká rada, jak to odstranit z výsledků dotazu?

Dělá níže uvedené (SQL Fiddle ) dosáhnout výsledků, které hledáte. Sjednocení jsem zabalil, abych pak mohl třídit podle name pole. Pokud to takto nechcete, můžete to odstranit nebo seřadit na DistCon místo toho.

SELECT * FROM 
(
  SELECT GROUP_CONCAT(APA_T.district) AS DistCon, t.name
  FROM tbl_activity AS t 
  JOIN tbl_activity_package AS ap ON t.id = ap.id_activity 
  JOIN 
  (
    SELECT DISTINCT apa.district AS district, 
    (
       SELECT s1.id_activity_package 
       FROM tbl_activity_package_address s1
       WHERE apa.district = s1.district
       ORDER BY s1.id DESC
       LIMIT 1
    ) AS idActivityPackage
    FROM 
    tbl_activity_package_address apa
    ORDER BY apa.district
  ) AS APA_T
  ON ap.id = APA_T.idActivityPackage
  GROUP BY t.name 
  UNION 
  SELECT GROUP_CONCAT(apa.district), t.name
  FROM tbl_activity AS t 
  JOIN tbl_activity_package AS ap ON t.id = ap.id_activity 
  JOIN tbl_activity_package_address AS apa ON ap.id = apa.id_activity_package
  WHERE t.name NOT IN 
  (
    SELECT DISTINCT t.name
    FROM tbl_activity AS t 
    JOIN tbl_activity_package AS ap ON t.id = ap.id_activity 
    JOIN 
    (
      SELECT DISTINCT apa.district AS district, 
      (
         SELECT s1.id_activity_package 
         FROM tbl_activity_package_address s1
         WHERE apa.district = s1.district
         ORDER BY s1.id DESC
         LIMIT 1
      ) AS idActivityPackage
      FROM 
      tbl_activity_package_address apa
    ) AS APA_T
    ON ap.id = APA_T.idActivityPackage
  )
  GROUP BY t.name 
) AS Mm
ORDER BY  Mm.name


  1. Funkce MAX() v MariaDB

  2. Jak používat nativní heslo s MySQL 5.7

  3. Jak aktualizovat a smazat seznam Zobrazit data v SQLite databázi pomocí click listeneru?

  4. Mysql aktualizuje řádek s jinou hodnotou řádku ve stejné tabulce