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

Oprava „ERROR 1250 (42000):Tabulku „…“ z jednoho z SELECT nelze použít v globální klauzuli ORDER“ při použití UNION v MySQL

Pokud se při použití UNION zobrazuje chyba „CHYBA 1250 (42000):Tabulka „...“ z jednoho z SELECT nemůže být použita v globální klauzuli ORDER klauzule v dotazu MySQL, je to pravděpodobně proto, že kvalifikujete název sloupce s názvem jeho tabulky.

V MySQL to nefunguje.

Chcete-li tento problém vyřešit, odstraňte název tabulky nebo použijte alias sloupce.

Příklad chyby

Zde je příklad kódu, který způsobuje chybu:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;

Výsledek:

ERROR 1250 (42000): Table 'Teachers' from one of the SELECTs cannot be used in global ORDER clause

Zde jsem se pokusil seřadit výsledky podle TeacherName sloupec, ale kvalifikoval jsem tento sloupec názvem tabulky (použil jsem Teachers.TeacherName odkaz na název sloupce).

MySQL neumožňuje odkazovat na tabulky tímto způsobem při řazení výsledků UNION operace.

Řešení 1

Jedním ze způsobů, jak to vyřešit, je odstranit název tabulky z ORDER BY klauzule:

(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;

Výsledek:

+-------------+
| TeacherName |
+-------------+
| Ben         |
| Bill        |
| Cathy       |
| Ein         |
| Faye        |
| Jet         |
| Spike       |
| Warren      |
+-------------+

Řešení 2

Pokud předchozí možnost není vhodná, dalším způsobem, jak problém vyřešit, je použití aliasu. Jinými slovy, přiřaďte sloupci alias a poté na tento alias odkazujte v ORDER BY klauzule:

(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;

Výsledek:

+--------+
| t      |
+--------+
| Ben    |
| Bill   |
| Cathy  |
| Ein    |
| Faye   |
| Jet    |
| Spike  |
| Warren |
+--------+

  1. PHP, MySQL a časová pásma

  2. Jak generovat příkazy INSERT z dotazu při použití SQLcl (Oracle)

  3. Jak zachovat VELKÉ BLOBy (>100 MB) v Oracle pomocí Hibernate

  4. Jak nainstalovat sqlcmd &bcp na Red Hat