У меня есть сайт Drupal, в который встроена Flash-игра.
Зарегистрированные пользователи веб-сайта перечислены в таблице drupal_users - вот список зарегистрированных за неделю:
# select uid, created from drupal_users where
to_timestamp(created) < (now() - interval '7 days') limit 5;
uid | created
------+------------
9903 | 1300257067
9904 | 1300259929
9750 | 1299858284
9751 | 1299858603
8083 | 1285514989
(5 rows)
Пользователи Flash перечислены в другой таблице - pref_users и к их идентификатору добавлена строка "DE":
# select id from pref_users where id like 'DE%' limit 5;
id
--------
DE9054
DE9055
DE9056
DE9057
DE9058
(5 rows)
Я хотел бы избавиться от (возможно, от спам-роботов) пользователей, которые зарегистрировались на моем сайте более недели назад, но еще не играли во флэш-игру. То есть Я бы хотел удалить записи drupal_users, которых нет в таблице pref_users .
В то же время я бы предпочел не делать что-то вроде:
# delete from drupal_users where
to_timestamp(created) < (now() - interval '7 days') and
'DE'||uid not in (select id from pref_users where id like 'DE%');
потому что я не уверен, насколько большим может быть приведенный выше оператор select (может быть, есть предел? Я использую PostgreSQL 8.4.7 и CentOS 5.5 / 64 bit. До Drupal7 я использовал phpBB3 и иногда Я видел сбой такого рода SQL-операторов при удалении старых сообщений форума из консоли администратора phpBB3).
Так что мой вопрос: можно ли переписать приведенное выше утверждение как какое-то SQL-соединение ?