SQL查询-更频繁地选择优先级较高的行

时间:2018-08-22 18:50:38

标签: mysql sql database

我试图在mysqli查询中执行SQL代码以更频繁地选择优先级更高的行。我有一个数据库,其中所有帖子均按优先级排序,但是我希望它像这样选择(10-最高优先级):

**Priority**
10
3
10
9
7
10
9
1
10

我该怎么做?我试图通过更多方式解决该问题,但没有结果。谢谢。

2 个答案:

答案 0 :(得分:1)

如果您要优先选择优先级更高的数据,则可以执行以下操作:

SELECT *
FROM (
    SELECT OrderDetailID
        ,mod(OrderDetailID, 10) + 1 AS priority
        ,rand() * 10 AS rand_priority
    FROM OrderDetails
    ) A
WHERE rand_priority < priority
ORDER BY OrderDetailID

此查询在W3Schools的MySQL Tryit中运行。

mod(OrderDetailID,10)+1模拟1-10优先级-您的表中已经具有该值

rand()* 10为您提供0到10之间的随机数

然后通过仅过滤随机数小于优先级的那些,您将获得优先级更高的结果集。

答案 1 :(得分:0)

如果您的MySQL版本支持rank函数,则可以使用。它将按优先级以降序对数据进行排序,并对每一行进行排名。如果两行具有相同的优先级,则两行将具有相同的排名。然后,您可以筛选出排名最高的数据,这将始终为您提供最高优先级的行。

export const updateAppTypeData = (appData) => async dispatch => {
  const token = localStorage.getItem('token')
  const response = await axios({
    method : 'put',
    url: ('http://localhost:8000/api/posts/appType/'+appData.id+'/'),
    data: appData,
    headers: {'Content-Type': 'application/json', 'Authorization': 'Token '+token},
    json: true
  }).then(function (response) {
        console.log(response);
  });
  //dispatch({ type : FETCH_APP_TYPE , payload: response.data });
};

注意:语法可能不正确,请您编辑查询。

如果您的MySql版本不支持排名,则

This帖子可能会帮助您进行排名。