为了创建一种显示嵌套注释的有效方法,我希望可以使用一个查询。
简化评论表
CREATE TABLE comment (
comment_id int unsigned primary key auto_increment,
date int unsigned,
parent_id int unsigned,
comment text);
澄清一下,评论由date
ASC订购。如果注释的parent_id
不为null,则表示它是嵌套注释。这个parent_id
是指所述评论'父comment_id
。
后一部分是我遇到困难的地方。任何人都可以帮我提出一个单独的mysql查询吗?
谢谢
答案 0 :(得分:1)
以下代码应以有效的方式满足您的第二需求:
CREATE TABLE comment(
comment_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
date INT UNSIGNED,
parent_id INT UNSIGNED DEFAULT NULL,
commend TEXT,
FOREIGN KEY fk_parent(parent_id)
REFERENCES comment(comment_id)
ON UPDATE CASCADE
ON DELETE RESTRICT)
您只是想确保由于外键引用而未在父注释之前插入子注释。
但是,在按日期排序表时,MySQL CREATE TABLE语法不包含此类功能,我认为有效的实现方法是在查询时简单地使用ORDER BY。但请记住,如果您选择在稍后阶段更改表格并按日期订购,则此更改后的任何操作都不会遵守此订单。具体做法是:
ALTER TABLE comment ORDER BY date ASC
只会在您的表格中订购当前数据,而不会输入任何后续数据。
另外,请考虑使用DATE数据类型而不是int,具体取决于您的要求。