Mysql
 sql >> база данни >  >> RDS >> Mysql

Има ли SQL заявка, която винаги ще връща нула резултати?

В зависимост от СУБД, едно или повече от следните ще работят:

  • SELECT NULL LIMIT 0 (Синтаксис на PostgreSQL и MySQL) / SELECT TOP 0 1 (синтаксис на MS SQL Server)
  • SELECT NULL WHERE FALSE (СУБД с булев тип, напр. PostgreSQL) SELECT NULL WHERE 1=0 (повечето СУБД)

За Oracle те трябва да са във формата SELECT NULL FROM DUAL , вярвам, тъй като не можете да имате SELECT без FROM клауза от някакъв вид; не съм сигурен кои версии на LIMIT / TOP и WHERE ще приеме.

По-сложна опция е да създадете (временна) таблица и да не вмъквате никакви редове в нея, което може да ви даде произволен брой колони, които ще имат свързани типове, въпреки че не съдържат стойности:

-- 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;

В PostgreSQL можете дори да създадете таблица без колони, което ви позволява да имате набор от резултати с нула редове и нула колони :

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

Друга възможност е, ако СУБД има функции за връщане на набор, те може да са в състояние да върнат празен набор. Например, отново в PostgreSQL, тъй като това е, което знам най-добре, можете да дадете невалиден диапазон на 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. Създател на заявки Laravel - Как да групирате по псевдоним или да направите необработено groupBy

  2. Въпроси относно SOLR документи и други

  3. Как да записвате последователни колекции от записи в MySQL

  4. Обработване на застой в innoDB

  5. Mysql Изберете само процент от редовете