下面是一个例子表:MYSQL SELECT DISTINCT与结果的附加列设置
CREATE TABLE `deals_unsorted`.`temp_demo` (
`id` INT(4) NOT NULL AUTO_INCREMENT ,
`price` INT(5) NOT NULL ,
`name` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = MYISAM
和一些示例数据
INSERT INTO `deals_unsorted`.`temp_demo` (
`id` ,
`price` ,
`name`
)
VALUES (
'1', '1300', 'suite'
), (
'2', '1200', 'suite'
), (
'3', '1100', 'standard'
), (
'4', '1000', 'standard'
), (
'5', '800', 'basic'
), (
'6', '900', 'basic'
), (
'7', '500', 'dorn room'
), (
'8', '500', 'dorm room'
), (
'9', '800', 'twin'
), (
'10', '750', 'twin'
)
但是,如何在世界上我找到最低的价格都不同房间?
我试过SELECT DISTINCT(name), MIN(price) FROM temp_demo;
许多变化,但电脑说没有感谢有:
1140 - 组列混合(MIN(),MAX(),COUNT(),...)没有GROUP列是非法的,如果没有GROUP BY子句
如果任何人都可以帮助我这个简单的表,我相信它也会对别人有所帮助。我已经看到很多复杂表格的例子,我无法理解它。
什么我希望的是整个行:
2, 1200, suite
4, 1000, stanbard
5, 800, basic
7 or 8, 500, dorm room
10, 750, twin
因为这些具有最低的价格为他们的独特名称
好吧,因为我用64列查询11M行我真的需要避免嵌套任何东西,如果我可以帮助它,所以我会跟你的建议。实际上,每个房间的成千上万个房间的价格与'INT'的价格完全相同,因此我将它更改为'float'并随机向行添加0.1。我会把它放在输出上,所以我仍然得到重复的价格。我知道这是一个可怕的黑客,但速度是这里最重要的事情,我的客户端使用MYSQL4,所以我甚至无法分区。谢谢 :) – 2012-02-24 03:22:01