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

#1222 - Použité příkazy SELECT mají jiný počet sloupců

První příkaz v UNION vrátí čtyři sloupce:

SELECT b.id AS id, 
       b.pid AS pid, 
       b.message AS message, 
       b.date AS date 
  FROM wall_posts AS b 

Druhý vrátí šest , protože * se rozšíří tak, aby zahrnovalo všechny sloupce z WALL_POSTS :

SELECT b.id, 
       b.date, 
       b.privacy,
       b.pid. 
       b.uid message
  FROM wall_posts AS b 

UNION a UNION ALL Operátoři vyžadují, aby:

  1. Ve všech příkazech, které tvoří dotaz UNION, existuje stejný počet sloupců
  2. Datové typy se musí na každé pozici/sloupci shodovat

Použijte:

FROM ((SELECT b.id AS id, 
             b.pid AS pid, 
             b.message AS message, 
             b.date AS date 
        FROM wall_posts AS b 
        JOIN Friends AS f ON f.id = b.pid 
       WHERE f.buddy_id = '1' AND f.status = 'b'
    ORDER BY date DESC
       LIMIT 0, 10)
      UNION
      (SELECT id,
              pid,
              message,
              date
         FROM wall_posts
        WHERE pid = '1'
     ORDER BY date DESC
        LIMIT 0, 10))


  1. Používáte správné nástroje pro sledování výkonu databáze?

  2. EEE MMM dd HH:mm:ss ZZZ yyyy formát data na java.sql.Date

  3. Jak přeložit funkci PostgreSQL array_agg do SQLite?

  4. MySql fulltextové vyhledávání v PHP pomocí řetězce obsahujícího klíčová slova