2017-01-31 4 views
0

Im пытается использовать SQL, если заявление на основе текущей записи в моей базе данных, код идет:Мои Если заявление не будет работать

if((Select distinct STUDENT_ID, FLAG, YEAR From EF_STUDENTFLAGS Where STUDENT_ID = '100143795' and YEAR = '16/17').ROW_NUMBER <1) 

INSERT INTO EF_STUDENTFLAGS (STUDENT_ID, FLAG, YEAR, COMMENTS, LOGGED_BY, SUBDATE, START_DATE, END_DATE) VALUES ('100143795','Safeguarding','16/17','Test','rhewitson','2014-09-03','2017-02-01','2017-02-01') 

else 

Update EF_STUDENTFLAGS Set COMMENTS = 'Test', LOGGED_BY = 'rhewitson', SUBDATE = '2014-09-03', START_DATE = '2017-02-01', END_DATE = '2017-02-01' Where STUDENT_ID = '100143795' and YEAR = '16/17' 

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

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

что я делаю неправильно ??

EDIT:

Если там не уже запись в моей базе данных с тем же студенческое удостоверение, флаг и год, как один я вхожу, я хочу, чтобы создать один, и если она действительно существует, я хочу его обновить текущую запись, чтобы отразить самую последнюю версию

+1

Какие СУБД вы используете? (Этот код специфичен для продукта.) – jarlh

+0

Sql серверная студия управления i believe –

+0

Я не понимаю, что говорится в сообщении ... else я бы, sql isnt точно мой forte –

ответ

1

попробовать это:

if Not Exists(Select top 1 1 From EF_STUDENTFLAGS Where STUDENT_ID = '100143795' and YEAR = '16/17') 
    INSERT INTO EF_STUDENTFLAGS (STUDENT_ID, FLAG, YEAR, COMMENTS, LOGGED_BY, SUBDATE, START_DATE, END_DATE) VALUES ('100143795','Safeguarding','16/17','Test','rhewitson','2014-09-03','2017-02-01','2017-02-01') 
else 
    UPDATE EF_STUDENTFLAGS Set COMMENTS = 'Test', LOGGED_BY = 'rhewitson', SUBDATE = '2014-09-03', START_DATE = '2017-02-01', END_DATE = '2017-02-01' Where STUDENT_ID = '100143795' and YEAR = '16/17' 
+0

Работает, спасибо! подождите 3 минуты, чтобы принять его как ответ, хотя –

Смежные вопросы