Mysql内部连接顺序第二个表
我有3张桌子,商店,促销,商店促销链接 我想从存储中选择10行。每个商店必须有一个特色促销,如果没有特色促销,请选择最新的促销Mysql内部连接顺序第二个表,mysql,Mysql,我有3张桌子,商店,促销,商店促销链接 我想从存储中选择10行。每个商店必须有一个特色促销,如果没有特色促销,请选择最新的促销 CREATE TABLE IF NOT EXISTS `stores` ( `StoreID` int(11) NOT NULL AUTO_INCREMENT, `StoreBranch` varchar(255) NOT NULL, `StoreName` varchar(255) NOT NULL, `IsFeatured` enum('0','1'
CREATE TABLE IF NOT EXISTS `stores` (
`StoreID` int(11) NOT NULL AUTO_INCREMENT,
`StoreBranch` varchar(255) NOT NULL,
`StoreName` varchar(255) NOT NULL,
`IsFeatured` enum('0','1') NOT NULL DEFAULT '0',
`OrderNumber` int(11) NOT NULL,
PRIMARY KEY (`StoreID`),
KEY `StoreBranch` (`StoreBranch`),
FULLTEXT KEY `StoreDesc` (`StoreDesc`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=51 ;
CREATE TABLE IF NOT EXISTS `promos` (
`PromoID` bigint(20) NOT NULL AUTO_INCREMENT,
`Title` varchar(255) NOT NULL,
`Description` text NOT NULL,
`Photo` varchar(255) NOT NULL,
`IsFeatured` enum('0','1') NOT NULL,
`DateAdded` datetime NOT NULL,
`DateUpdated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`PromoID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 ;
CREATE TABLE IF NOT EXISTS `store_promo_link` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`StoreID` int(11) NOT NULL,
`PromoID` int(11) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=149 ;
这是我的代码,但它返回的是促销的第一行
SELECT s.StoreBranch, s.StoreName, s.StoreID , p.* FROM `stores` s
INNER JOIN store_promo_link sp ON s.StoreID = sp.StoreID
INNER JOIN (SELECT * FROM promos ORDER BY IsFeatured DESC, DateAdded DESC) p ON sp.PromoID = p.PromoID
GROUP BY sp.StoreID
ORDER BY OrderNumber = 0, OrderNumber, s.IsFeatured DESC LIMIT 10
编辑
我想选择10个独特的商店。每家商店都有多个促销活动。我只想为每个商店选择1个特色IsFeature='1'促销。如果没有特色促销,则必须选择最新的促销
谢谢 您的查询工作正常。如果宣传片是特色的,你就得到它,如果没有特色的宣传片,你就得到最后一个。看看我写的 没有重复的存储:
StoreBranch StoreName StoreID PromoID Title Description Photo IsFeatured DateAdded DateUpdated
be ikea 1 2 2por1 promo2 foto2 1 September, 02 2015 00:00:00 September, 07 2015 10:48:54
es mediamarkt 2 4 pollos promo4 foto4 0 September, 04 2015 00:00:00 September, 07 2015 10:48:54
你有样本数据吗?。还可以编辑来自存储s的来自存储s,因为存储表不存在。不,存储的结果是正确的。每个商店都是独一无二的。每个商店都有多个促销活动。我只想为每个商店选择一个促销。促销必须是特色促销IsFeatured=1,如果没有特色促销,它必须返回该商店的最新促销。然后您的查询工作正常。在我写的SQLFiddle中,这就是你得到的。如果宣传片有特色,你就得到它,如果没有特色宣传片,你就得到最后一个。但是商店会被复制它不是。。。更新的答案哦,对不起,我看不到。添加另一个例子,我们可以看到发生了什么,因为在我的代码中,我无法重现您的问题,我看不到。你能更新链接吗?在我的本地主机上也进行了测试,商店重复