我的 tt-rss 安装遇到了一些问题 - 我的数据库太大,所以现在清除不起作用。
我找到了一个手动解决方案,但查询是针对 MySQL 的,我使用的是 PostgreSQL,所以它不起作用。
这是某种加入,但我的基本 SQL 知识对我没有帮助,在尝试与文档作斗争之后,我在这里:)
有问题的查询:
DELETE from ttrss_user_entries USING ttrss_entries, ttrss_user_entries
WHERE id = ref_id
AND date_entered < DATE_SUB(NOW(), INTERVAL 14 DAY)
AND marked = false;
第二个(我猜是删除 ttrss_entries 中的剩余内容):
DELETE FROM ttrss_entries
WHERE (SELECT COUNT(int_id)
FROM ttrss_user_entries
WHERE ref_id = id) = 0;
先感谢您 :)
/编辑
对不起,没想到没有结构它是朦胧的:D
所以,ttrss_entries 看起来像这样:
CREATE TABLE ttrss_entries
(
id serial NOT NULL,
title text NOT NULL,
guid text NOT NULL,
link text NOT NULL,
updated timestamp without time zone NOT NULL,
content text NOT NULL,
content_hash character varying(250) NOT NULL,
cached_content text,
no_orig_date boolean NOT NULL DEFAULT false,
date_entered timestamp without time zone NOT NULL,
date_updated timestamp without time zone NOT NULL,
num_comments integer NOT NULL DEFAULT 0,
comments character varying(250) NOT NULL DEFAULT ''::character varying,
plugin_data text,
author character varying(250) NOT NULL DEFAULT ''::character varying,
CONSTRAINT ttrss_entries_pkey PRIMARY KEY (id),
CONSTRAINT ttrss_entries_guid_key UNIQUE (guid)
)
和 ttrss_user_entries:
CREATE TABLE ttrss_user_entries
(
int_id serial NOT NULL,
ref_id integer NOT NULL,
uuid character varying(200) NOT NULL,
feed_id integer,
orig_feed_id integer,
owner_uid integer NOT NULL,
marked boolean NOT NULL DEFAULT false,
published boolean NOT NULL DEFAULT false,
tag_cache text NOT NULL,
label_cache text NOT NULL,
last_read timestamp without time zone,
score integer NOT NULL DEFAULT 0,
last_marked timestamp without time zone,
last_published timestamp without time zone,
note text,
unread boolean NOT NULL DEFAULT true,
CONSTRAINT ttrss_user_entries_pkey PRIMARY KEY (int_id),
CONSTRAINT ttrss_user_entries_feed_id_fkey FOREIGN KEY (feed_id)
REFERENCES ttrss_feeds (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT ttrss_user_entries_orig_feed_id_fkey FOREIGN KEY (orig_feed_id)
REFERENCES ttrss_archived_feeds (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE SET NULL,
CONSTRAINT ttrss_user_entries_owner_uid_fkey FOREIGN KEY (owner_uid)
REFERENCES ttrss_users (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE,
CONSTRAINT ttrss_user_entries_ref_id_fkey FOREIGN KEY (ref_id)
REFERENCES ttrss_entries (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE
)
我不想弄乱上面的原始查询,因为我不完全确定我对事情的掌握,我可能会改变一些重要的事情:)
/编辑2
我在这个查询上取得了成功:
SELECT * FROM ttrss_user_entries
JOIN ttrss_entries ON (ref_id = id)
WHERE ttrss_entries.author = 'something';
但是这个查询显示了两个表中的列,所以我不确定这是否会从两个表中删除东西 o_O'
也ttrss_entries.date_entered < DATE_SUB(NOW(), INTERVAL 14 DAY)
给我带来了麻烦:ERROR: syntax error at or near "14"