Пара глупых вопросов

Тема в разделе "SQL", создана пользователем vital, 31 май 2010.

  1. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Итак.
    1. В табличке надо хранить последние 1000 записей(по дате, типа 1000 самых новых). => Хотелось бы как-нить при (перед ним?)INSERT INTO обрубать лишние, старые записи. Так можно? Как вообще покрасивше можно?=)
    2. 2 таблички. Нужно выбрать из первой те строки, в которых столбец to != ни одному из значений столбца login второй таблички
    Типа такого
    SELECT * FROM Emails,Private WHERE Emails.to <> Private.login
    И обратный запрос выбрать только те, в которых равен.
    ПС.
    Да-да-да, знаю что хрестоматийный пример, и что в любой книжке.. Но не до того, честно.
     
  2. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Второй вопрос легко решился с помощью ANY. Напомните мне на будущее, не называть столбец "TO"? хорошо? Я думал, что я корч не могу запрос составить, а оказалось что я корч не все служебные слова выучил..
    В силе остается первый вопрос. Как при INSERT'e обрезать лишние старые строки? Не охота в 2 запроса(
     
  3. ????

    ???? Гость

    может триггер на вставку записей?
     
  4. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Мне пофигу, заказчик так хочет.
    Хм, может..<!--shcode--><pre><code class='sql'>CREATE TRIGGER name AFTER INSERT ON table
    FOR EACH ROW BEGIN
    SELECT count(id)as n from table;
    DELETE FROM table ORDER BY `age` DESC LIMIT n-1000
    END;[/CODE]
    Как то так что ли? хм..

    Добавлено: Не работает кста(
     
  5. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    Как удалить только count(id)-1000 старых записей?

    Добавлено:
    Да-да-да, знаю что фигня. Вот научи как правильно.
     
  6. vital

    vital Больной Компом Детектед
    Команда форума Web Team

    Регистрация:
    29 янв 2006
    Сообщения:
    2.474
    Симпатии:
    27
    В итоге пришел к такому.. Вроде оно
    [sql]CREATE TRIGGER name AFTER INSERT ON emails
    FOR EACH ROW BEGIN DELETE FROM emails WHERE id not in (select id from emails order by date desc LIMIT 1000 );
    END[/sql]


    Добавлено: ФАААААК!
    Еще есть варианты?
     
  7. rdama

    rdama Гость

    Какая версия мускула?
    Если 5.01 то можно job повесить на чистку.
    Если нет то пиши хранимку.
     
  8. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Могу ошибаться, если аналогия с 1С, то может:

    SELECT 1000 ...

    ??
     
  9. dra4un

    dra4un Гость

    ну первое точно с триггером надо...а вот второе...
     
Загрузка...

Поделиться этой страницей