«И будет ли это,« в противном случае, обновить поля в самой старой строке »?»
И это также будет довольно кровавая значительная аннендум: P
Я бы не стал делать что-то настолько сложное в одном запросе, я бы сначала выбрал тестирование для самого старого, а затем либо обновил, либо вставил соответственно.
Не зная, на каком языке вы работаете, кроме SQL, я просто буду придерживаться псевдокода для частей, отличных от SQL.
SELECT TOP 1 id FROM gifts
WHERE (SELECT COUNT(*) FROM gifts WHERE gift_giver_id = senderidvalue
ORDER BY gift_date ASC) > 9;
{if result.row_count then}
INSERT INTO gifts (gift_giver_id, gift_receiver_id,gift_date)
VALUES val1,val2,val3
{else}
UPDATE gifts SET gift_giver_id = 'val1',
gift_receiver_id = 'val2',gift_date = 'val3'
WHERE {id = result.first_row.id}
Проблема с вашим запросом заключается в том, что вы пытаетесь найти один запрос для выполнения SELECT, а также INSERT или UPDATE. Кто-то может прийти и позвонить мне, чтобы доказать, что я не прав, но я думаю, что вы просите невозможного, если не хотите заниматься хранимыми процедурами.