SELECT a.id,i.* FROM ads a
INNER JOIN images i ON i.ad_id=a.id
GROUP BY a.id
LIMIT 10
無法弄清楚,如何選擇圖像與標誌「主」內的圖像表。與聲明MySQL問題
對於一個a.id最多可以在圖像表中的3張照片中,這3張照片中的一張可以有一個字段main = 1。我需要挑選照片通過優先級,其中標誌主要設置爲1
CREATE DATABASE IF NOT EXISTS `test123`;
USE `test123`;
CREATE TABLE IF NOT EXISTS `ads` (
`id` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=229 DEFAULT CHARSET=utf8;
INSERT INTO `ads` (`id`) VALUES (217), (225), (226), (228);
CREATE TABLE IF NOT EXISTS `images` (
`image_id` int(10) NOT NULL AUTO_INCREMENT,
`ad_id` int(10) DEFAULT '0',
`main` int(10) DEFAULT '0',
`t_0` varchar(255) DEFAULT '0',
`t_1` varchar(255) DEFAULT '0',
`t_8` varchar(255) DEFAULT '0',
PRIMARY KEY (`image_id`),
KEY `ad_id` (`ad_id`),
KEY `t_0` (`t_0`),
KEY `t_1` (`t_1`),
KEY `t_8` (`t_8`),
KEY `main` (`main`)
) ENGINE=MyISAM AUTO_INCREMENT=425 DEFAULT CHARSET=utf8;
INSERT INTO `images` (`image_id`, `ad_id`, `main`, `t_0`, `t_1`, `t_8`) VALUES
(1, 226, 0, 'img_link1', 'img_link2', 'img_link3'),
(2, 228, 0, 'img_link1', 'img_link2', 'img_link3'),
(3, 225, 0, 'img_link1', 'img_link2', 'img_link3'),
(4, 217, 0, 'img_link1', 'img_link2', 'img_link3'),
(5, 217, 1, 'img_link1', 'img_link2', 'img_link3'),
(6, 217, 0, 'img_link1', 'img_link2', 'img_link3');
類似的東西,但每ads.id只有1排
SELECT a.id, i.main AS main
FROM images i
LEFT JOIN ads a ON a.id=i.ad_id
WHERE i.main=1 OR i.main=0
輸出要求:
id | main | links 217 | 1 | ... 225 | 0 | ... 226 | 0 | ... 228 | 0 | ...
你需要返回每'a.id'只有一個郵件圖像或與主一個所有三個圖像第一? – Quassnoi 2010-08-18 14:43:57
只有一個圖像,最好將主標記設置爲1 – Somebody 2010-08-18 14:46:39