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

SQL użyj kolumny z subselect w klauzuli where

Nie możesz użyć aliasu kolumny w WHERE klauzula.

Więc albo otoczysz zapytanie zewnętrznym zaznaczeniem i zastosujesz tam swój warunek

SELECT * 
  FROM
(
  SELECT a, b, c,
    (SELECT d FROM B LIMIT 0,1) d
  FROM A
) q
 WHERE d >= 10

lub możesz wprowadzić ten warunek w HAVING zamiast tego klauzula

SELECT a, b, c,
    (SELECT d FROM B LIMIT 0,1) d
  FROM A
HAVING d >= 10

Jeszcze innym podejściem jest użycie CROSS JOIN i zastosuj swój warunek w WHERE klauzula

SELECT a, b, c, d
  FROM A CROSS JOIN 
(
  SELECT d FROM B LIMIT 0,1
) q
 WHERE d >= 10

Oto SQLFiddle demo dla wszystkich wyżej wymienionych zapytań.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego PDO drukuje moje hasło, gdy połączenie nie powiedzie się?

  2. Monitorowanie i zarządzanie operacjami MySQL 8.0 z ClusterControl

  3. MySQL:SyntaxError:Nieoczekiwany identyfikator

  4. Jak pobrać dane z bazy danych, aby wyświetlić stronę w laravelu?

  5. Automatyczna kopia zapasowa bazy danych MySQL na serwerze Windows