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

Czy istnieje zapytanie SQL, które zawsze zwróci zero wyników?

W zależności od DBMS zadziała co najmniej jedno z poniższych:

  • SELECT NULL LIMIT 0 (Składnia PostgreSQL i MySQL) / SELECT TOP 0 1 (Składnia MS SQL Server)
  • SELECT NULL WHERE FALSE (DBMS o typie logicznym, np. PostgreSQL) SELECT NULL WHERE 1=0 (większość DBMS)

W przypadku Oracle muszą one mieć postać SELECT NULL FROM DUAL , wierzę, ponieważ nie możesz mieć SELECT bez FROM jakiegoś rodzaju klauzula; nie wiem, które wersje LIMIT / TOP i WHERE zaakceptuje.

Bardziej rozbudowaną opcją jest utworzenie (tymczasowej) tabeli i nie wstawianie do niej żadnych wierszy, co może dać dowolną liczbę kolumn z powiązanymi typami, nawet jeśli nie zawierają żadnych wartości:

-- PostgreSQL
CREATE TEMP TABLE dummy ( a Int, b VarChar(42) );
SELECT * FROM dummy;

-- MS SQL Server
CREATE TABLE #DUMMY ( a Int, b VarChar(42) );
SELECT * FROM #DUMMY;

W PostgreSQL możesz nawet utworzyć tabelę bez kolumn, co pozwala uzyskać zestaw wyników z zero wierszy i zero kolumn :

CREATE TEMP TABLE empty ();
SELECT * FROM empty;

Inną możliwością jest to, że jeśli DBMS ma funkcje zwracające zestaw, mogą one być w stanie zwrócić pusty zestaw. Na przykład ponownie w PostgreSQL, ponieważ jest to to, co znam najlepiej, możesz podać nieprawidłowy zakres generate_series() :

SELECT * FROM generate_series(0,-1);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. polecenie systemowe mysql

  2. Jaka jest składnia, aby wymusić użycie indeksu dla złączenia w MySQL?

  3. mysql Odmowa dostępu dla użytkownika [chroniony e-mail] (przy użyciu hasła:NIE) pomimo ustawienia hasła i wpisania go w identyfikatorze uri połączenia

  4. MYSQL wybierz liczbę po wartości

  5. Problem ze zmienną zwracaną w bash