更新排序:問題更新,以幫助人們已瞭解更如何獲取和數據從這個MySQL查詢
我有如下表
CREATE TABLE IF NOT EXISTS `post` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`heading` TEXT NOT NULL,
`content` LONGTEXT NOT NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`thumb` TEXT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 15
DEFAULT CHARACTER SET = latin1;
CREATE TABLE IF NOT EXISTS `tags` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`tagname` TEXT NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 12
DEFAULT CHARACTER SET = latin1;
DROP TABLE IF EXISTS `tagsinpost` ;
CREATE TABLE IF NOT EXISTS `tagsinpost` (
`tid` INT(11) NULL DEFAULT NULL,
`pid` INT(11) NULL DEFAULT NULL,
CONSTRAINT `post_ibfk_1`
FOREIGN KEY (`pid`)
REFERENCES `post` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `tagsinpost_ibfk_1`
FOREIGN KEY (`tid`)
REFERENCES `tags` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;
CREATE INDEX `tagsinpost_ibfk_1` ON `tagsinpost` (`tid` ASC);
CREATE INDEX `post_ibfk_1` ON ``tagsinpost` (`pid` ASC);
凡tid
和pid
外鍵ofcourse到TAG id
和POST id
現在我想要的是基於任何帖子的標籤獲取相關帖子。 例如,如果某些POST1包含標籤T1,T2,T3,T4和POST2包含標籤T2,T3,T4和POST3包含T1,T2和我正在搜索與POST1相關的帖子,則我的輸出應爲
POST2 POST3
請注意它們的訂單,因爲它們中匹配的標籤數量很多。目前我被困在找到所有帖子有相同的標籤沒有秩序,我的查詢是採取標籤作爲輸入應該是POST ID。
select distinct P.id, P.heading, P.date
from post as P, tags as T, tagsinpost as TP
where TP.tid=T.id
and TP.pid=P.id
and T.tagname in (
select distinct T.tagname from tags as T, tagsinpost
as TP where TP.pid = 20 and TP.tid = T.id
)
現在我如何命令我的輸出數量與第二個查詢中找到的匹配T.tagname匹配?
請添加一些sql來創建表格,插入一些虛擬數據,你期望的輸出和你得到的輸出。 –