下午好,一切顺利。
一般有3张桌子。您需要选择所有值,但将选择限制在一个限制范围内。使值\u200b\u200bare被9条选中,根据TEXT.id字段,这里不明白怎么弄。
我解释说我没有完全正确地陈述这个问题。
无论SRC表中有多少个值,都需要选择9条记录。
例如,SRC 表有 200 个条目,而 TEXTS 表有 20 个条目。
需要选择所有 SRC.event_id 相同的记录,但选择从 9 到 18 event_i 开始。
CREATE TABLE `SRC`(
`id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY UNIQUE ,
`event_id` int(10) NOT NULL ,
`big_src` VARCHAR(100) NOT NULL ,
`small_src` VARCHAR(100) NOT NULL ,
`alternate` VARCHAR(50) NOT NULL,
FOREIGN KEY (event_id) REFERENCES TEXTS(id)
)ENGINE = MyISAM DEFAULT CHARSET =utf8 COLLATE = utf8_unicode_ci;
CREATE TABLE `TEXTS`(
`id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY UNIQUE ,
`big_text` VARCHAR(100) NOT NULL ,
`small_text` VARCHAR(100) NOT NULL ,
`datetime` DATETIME NOT NULL
)ENGINE = MyISAM DEFAULT CHARSET =utf8 COLLATE = utf8_unicode_ci;
CREATE TABLE `ALL`(
`id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY UNIQUE ,
`TEXT_id` int(10) NOT NULL ,
`SRC_event_id` int(10) NOT NULL,
FOREIGN KEY (TEXT_id) REFERENCES TEXTS(id),
FOREIGN KEY (SRC_event_id) REFERENCES SRC(event_id)
)ENGINE = MyISAM DEFAULT CHARSET =utf8 COLLATE = utf8_unicode_ci;
SELECT event_id,small_src,alternate,small_text,datetime FROM `TEXTS`
INNER JOIN `SRC` ON `TEXTS`.id=`SRC`.event_id INNER JOIN `ALL` ON
`TEXTS`.id=`ALL`.TEXT_id ;
我假设您正在寻找类似的东西:
该查询逐页获取 9 个 texts.id 及其相关数据。页面由 offset(0*9, 1*9, 2*9, etc.) 参数选择。
如果可能没有与某些 texts.id 关联的数据,则可能值得使用左连接。
限制 9 - 显示多少条记录
OFFSET 9 - 跳过多少
如果我正确理解了这个问题。