所以這是我的查詢:MySQL的 - LEFT JOIN columnX的值,其中MAX(columnY)
SELECT SQL_CALC_FOUND_ROWS wagons.id,
wagons.mid,
wagons.year,
wagons.make,
wagons.model,
wagons.nickname,
wagons.description,
members.first,
members.last,
wagon_photos.filename,
Count(DISTINCT(likes.id)) AS likes,
Count(DISTINCT(comments.id)) AS comments
FROM wagons
INNER JOIN members
ON members.mid = wagons.mid
LEFT JOIN wagon_photos
ON wagon_photos.wid = wagons.id
LEFT JOIN likes
ON likes.wid = wagons.id
LEFT JOIN comments
ON comments.wid = wagons.id
GROUP BY wagons.id
ORDER BY wagons.id DESC
LIMIT 10
我試圖獲取wagon_photos.filename
其中wagon_photos.default
爲最大值。 (這是一個布爾值,其中只有一行(對於每個wagon_photos.wid
)將爲1.)在未選中默認圖片的情況下,我希望它返回最低的wagon_photos.id
(如果可能)。
我已經嘗試了許多使用ORDER BY和GROUP BY的查詢,但我認爲它可能比這更復雜一點。如果我使用WHERE子句,則會遺漏任何沒有鏈接到它的任何照片的貨車,我不想這樣做。
CREATE TABLE `wagons` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`mid` int(8) DEFAULT NULL,
`year` varchar(4) DEFAULT NULL,
`make` varchar(50) DEFAULT NULL,
`model` varchar(100) DEFAULT NULL,
`nickname` varchar(200) DEFAULT NULL,
`description` mediumtext,
`featured` int(1) DEFAULT '0',
`visibility` int(1) DEFAULT '1',
`commision` int(1) DEFAULT '1',
`feat1title` varchar(50) DEFAULT NULL,
`feat2title` varchar(50) DEFAULT NULL,
`feat3title` varchar(50) DEFAULT NULL,
`feat4title` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=617 DEFAULT CHARSET=utf8;
CREATE TABLE `wagon_photos` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`wid` int(11) DEFAULT NULL,
`filename` varchar(255) DEFAULT NULL,
`caption` varchar(255) DEFAULT '',
`default` int(1) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8;
我正在重讀這個,現在我不確定我是否回答了您的問題。你可以發佈你的表的樣子嗎?而且我不確定'默認設置'是指什麼。 –
好吧,不是一個「集合」,而是一個布爾集合爲TRUE。如果一個成員有6張照片,則其中一個爲1,5爲0.我想返回「默認」列設置爲1的行。如果由於某種原因沒有設置,請選擇最低的行ID。我將添加上面的表結構。 – Devin