Mysql выбирает и заказывает по id, но премиум-пользователи на вершине [дубликат]

Посмотрите на этот пример:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope,$http) {

    var getJoke = function(){
        return $http.get('http://api.icndb.com/jokes/random').then(function(res){
            return res.data.value;  
        });
    }

    getJoke().then(function(res) {
        console.log(res.joke);
    });
});

Как вы можете видеть, getJoke возвращает разрешенное обещание (оно разрешено при возврате res.data.value). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).

Это plnkr:

http://embed.plnkr.co/XlNR7HpCaIhJxskMJfSg/

171
задан Eric Leschinski 14 October 2014 в 21:29
поделиться

5 ответов

Сортировка по умолчанию возрастает, вам нужно добавить ключевое слово DESC к обоим вашим заказам:

ORDER BY article_rating DESC, article_time DESC
375
ответ дан truppo 25 August 2018 в 00:20
поделиться
ORDER BY article_rating ASC , article_time DESC

DESC в конце будет сортироваться по обоим столбцам. Вы должны указать ASC, если хотите это иначе

8
ответ дан GilZ 25 August 2018 в 00:20
поделиться

Ниже перечислены ваши данные в зависимости от обоих столбцов в порядке убывания.

ORDER BY article_rating DESC, article_time DESC
2
ответ дан Ivan 25 August 2018 в 00:20
поделиться

Это может помочь кому-то, кто ищет способ сортировать таблицу по двум столбцам, но парализованно. Это означает объединение двух видов с использованием функции сортировки агрегатов. Это очень полезно, например, при поиске статей с использованием полнотекстового поиска, а также в отношении даты публикации статьи.

Это только пример, но если вы поймете эту идею, вы сможете найти множество совокупных функций для использования. Вы можете даже весовать столбцы, чтобы предпочесть один за секунду. Функция my принимает крайности из обоих видов, поэтому наиболее ценные строки находятся сверху.

Извините, если существуют более простые решения для выполнения этой работы, но я не нашел их.

SELECT
 `id`,
 `text`,
 `date`
 FROM
   (
   SELECT
     k.`id`,
     k.`text`,
     k.`date`,
     k.`match_order_id`,
     @row := @row + 1 as `date_order_id`
     FROM
     (
       SELECT
         t.`id`,
         t.`text`,
         t.`date`,
         @row := @row + 1 as `match_order_id`
         FROM
         (
           SELECT
             `art_id` AS `id`,
             `text`   AS `text`,
             `date`   AS `date`,
             MATCH (`text`) AGAINST (:string) AS `match`
             FROM int_art_fulltext
             WHERE MATCH (`text`) AGAINST (:string IN BOOLEAN MODE)
             LIMIT 0,101
         ) t,
         (
           SELECT @row := 0
         ) r
         ORDER BY `match` DESC
     ) k,
     (
       SELECT @row := 0
     ) l
     ORDER BY k.`date` DESC
   ) s
 ORDER BY (1/`match_order_id`+1/`date_order_id`) DESC
6
ответ дан Jiri Fornous 25 August 2018 в 00:20
поделиться
ORDER BY article_rating, article_time DESC

сортирует файл article_time только в том случае, если есть две статьи с одинаковым рейтингом. Из всего, что я вижу в вашем примере, это именно то, что происходит.

↓ primary sort                         secondary sort ↓
1.  50 | This article rocks          | Feb 4, 2009    3.
2.  35 | This article is pretty good | Feb 1, 2009    2.
3.  5  | This Article isn't so hot   | Jan 25, 2009   1.

, но рассмотрим:

↓ primary sort                         secondary sort ↓
1.  50 | This article rocks          | Feb 2, 2009    3.
1.  50 | This article rocks, too     | Feb 4, 2009    4.
2.  35 | This article is pretty good | Feb 1, 2009    2.
3.  5  | This Article isn't so hot   | Jan 25, 2009   1.
21
ответ дан Tomalak 25 August 2018 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: