SQL - условия во время запроса - PullRequest
0 голосов
/ 01 февраля 2019

В основном я хочу просмотреть все 0 в моей базе данных, а затем начать проходить через 2.

Запрос:

   SELECT IP,Time,HostName
     FROM RoughScan
CASE WHEN EXISTS (DeepScan=0) 
     THEN (DeepScan=0 LIMIT 1) 
     ELSE (DeepScan=2 LIMIT 1)

, но я получаю сообщение об ошибке:

Неожиданный конец выражения CASE (около "" в позиции 0)

Также я использую сервер MariaDB.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы должны применить CASE к WHERE, как это:

SELECT IP,Time,HostName
FROM RoughScan
WHERE 
  DeepScan = CASE 
    WHEN EXISTS (SELECT 1 FROM RoughScan WHERE DeepScan = 0) THEN 0 
    ELSE 2 
  END
LIMIT 1
0 голосов
/ 01 февраля 2019

Если вы хотите одну строку каждого типа, используйте union all:

(SELECT `IP`,`Time`,`HostName`
 FROM `RoughScan`
 WHERE DeepScan = 0
 LIMIT 1
)
UNION ALL
(SELECT `IP`,`Time`,`HostName`
 FROM `RoughScan`
 WHERE DeepScan = 2
 LIMIT 1
);

Обратите внимание, что ORDER BY обычно используется с LIMIT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...