MySQL获取一个选项,如果不可用获取其他

时间:2017-06-13 14:18:05

标签: php mysql performance optimization

如果子集不够,可以获得子集表格吗

product Table
---------------------------
Product_ID | Catgory_ID
--------------------------
1          |1
2          |2
3          |1
4          |3
5          |7
6          |8
7          |9
8          |4
9          |2
10         |1
11         |7
12         |1
13         |6
14         |5
15         |4

我总是想要4项结果

现在我想从第1类获得4个产品。

我可以select * from product where Catgory_ID = 1 limit 4

现在我想要Caregory 2的4个产品,但只有2个产品有护理2,所以我想要的是我得到那2个产品(类别ID为2)并获得任意2个随机产品所以总数是4 < / p>

我可以在mysql中单独使用吗

2 个答案:

答案 0 :(得分:2)

你可以这样做,尝试这样的事情:

SELECT * FROM product ORDER BY CASE WHEN (Catgory_ID = 2) THEN 0 ELSE 1 END LIMIT 4;

首先,您订购的表格所需的类别位于顶部,然后您选择4。

答案 1 :(得分:0)

随机添加:

SELECT  *
    FROM  product
    ORDER BY  (Catgory_ID != 2) + RAND()
    LIMIT  4;

请注意,布尔表达式的计算结果为0(false)或1(true)。