Выберите в заявлении IF MySQL - PullRequest
2 голосов
/ 15 декабря 2010

Я пытаюсь сделать что-то подобное в My MySQL, хранимой proc:

if val > SELECT numericalValue FROM table where userId=theUserId then ..

Это нормально, или я должен хранить numericalValue во временном хранилище?

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

Вы можете иметь оператор выбора внутри оператора if.

Он должен быть в скобках и каждый раз должен вычисляться до одной строки, поэтому он хорошо работает для сумм и подсчетов, и если вы возвращаете значение поля, вам нужно использовать LIMIT 1

Вы также можете использовать переменную, которая также будет работать.

1 голос
/ 15 декабря 2010

Вам не нужно этого делать, но было бы удобнее, если вы планируете повторно использовать выделение в другом месте вашего кода.

Кроме того, вы должны использовать следующий синтаксис в качестве руководства:

CREATE PROCEDURE sp_condition(IN var1 INT) 
BEGIN 
 IF (val > SELECT numericalValue FROM table where userId='theUserId')  
  THEN SELECT 'greater'; 
  ELSE SELECT 'less than or equal'; 
 END IF; 
END|
...