Mysql内部连接顺序第二个表

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'

我有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') 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中,这就是你得到的。如果宣传片有特色,你就得到它,如果没有特色宣传片,你就得到最后一个。但是商店会被复制它不是。。。更新的答案哦,对不起,我看不到。添加另一个例子,我们可以看到发生了什么,因为在我的代码中,我无法重现您的问题,我看不到。你能更新链接吗?在我的本地主机上也进行了测试,商店重复