我有 2 个这样的表:
CREATE TABLE IF NOT EXISTS tb_item (
item_id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
item_name VARCHAR(100) NULL ,
PRIMARY KEY (item_id)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS tb_item_img (
item_img_id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
item_img_thumb ENUM('0','1') NULL DEFAULT '0' ,
item_img_image VARCHAR(100) NULL ,
item_id INT UNSIGNED NOT NULL ,
PRIMARY KEY (item_img_id) ,
INDEX fk_tb_item_img_tb_item1_idx (item_id ASC) ,
CONSTRAINT fk_tb_item_img_tb_item1
FOREIGN KEY (item_id )
REFERENCES tb_item (item_id )
ON DELETE RESTRICT
ON UPDATE RESTRICT)
ENGINE = InnoDB;
我有一个查询,我想从中选择所有项目,tb_item
每个项目只有一个图像,我不想使用子查询,我正在使用这样的JOIN:
SELECT `item_id`, `item_name`, `item_img_image`
FROM (`tb_item`)
INNER JOIN `tb_item_img` USING ( `item_id` )
LIMIT 8
但是,当商品有超过 1 张图片时,它会返回超过 1 次。当项目没有图像时,它不会被选中。
所以,我的问题是:是否有可能,通过上面这样的查询,选择所有项目和 1 个图像 o NULL 到图像字段。但每次只有一次item_id
?