如何在 MySQL 上排序 "intercalary" 行

How to order "intercalary" rows on MySQL

假设我有 1 table 个产品。并且每个产品都延迟到"gender"(女(1)或男(2))

该产品具有布尔属性,指示该产品是否在报价中。

解释示例: ID_PRODUCT,性别,OFFER

1, 2 (male), 0
2, 2 (male), 1
3, 2 (male), 1
4, 1 (female), 1
5, 1 (female), 1
6, 2 (male), 1

我需要拿到所有的Offer,但是"intercalated"(我不知道英文怎么说...呵呵)...一男一女一男一女,一名男性......只有优惠。

在此示例中,响应显示为:

2, 2(m), 1
4, 1(f), 1
3, 2(m), 1
5, 1(f), 1
6, 2(m), 1

SELECT * FROM products WHERE offer = 1 ORDER BY ¿what?

我可以这样做吗?

提前致谢!

尝试:

SELECT p.*,
      IF(`GENDER`='2 (male)',@m:=@m+1,@f:=@f+1) As position
FROM Products p,
    (SELECT @m:=0,@f:=0) x
WHERE `OFFER` = 1
ORDER BY position, `GENDER` DESC

演示:http://sqlfiddle.com/#!2/6671ea/4