Php MySQL获取选择(如果不可用)获取其他

Php MySQL获取选择(如果不可用)获取其他,php,mysql,performance,optimization,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

如果子集不够,是否可以从表格中获取子集?获取其他

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个产品

我可以从Catgory_ID=1限制4的产品中获得
select*

现在我想从Caregory 2中得到4个产品,但是只有2个产品与Caregory 2在一起,所以我想得到的是这2个产品(类别id为2),并得到任意2个随机产品,因此总数为4


我可以在mysql中单独完成这项工作吗

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

首先,您将所需类别置于表格顶部,然后选择4。

您可以这样做,请尝试以下操作:

SELECT * FROM product ORDER BY CASE WHEN (Catgory_ID = 2) THEN 0 ELSE 1 END LIMIT 4;
首先,您将表格排序为所需类别位于顶部,然后选择4。

添加随机性:

SELECT  *
    FROM  product
    ORDER BY  (Catgory_ID != 2) + RAND()
    LIMIT  4;
请注意,布尔表达式的计算结果为0(false)或1(true)。

添加随机性:

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

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

什么!!!显示一个随机产品,就好像它不在某个类别中一样。你从哪里得到这个想法的?@RiggsFolly请看下面的答案!!什么!!!显示一个随机产品,就好像它不在某个类别中一样。你从哪里得到这个想法的?@RiggsFolly请看下面的答案!!在sql语句
SELECT*中,当(Catgory_ID=2)然后0,否则1结束限制4时,上述操作对我有效,只需稍加调整`以上在sql语句中做了一些小调整,从产品订单中按情况选择*(Catgory_ID=2),然后选择0,否则1结束限制4`