Все, что вам нужно, - это предложение GROUP BY
с агрегатной функцией MAX
:
SELECT id, MAX(rev)
FROM YourTable
GROUP BY id
Я просто заметил, что вам нужен столбец content
.
Это очень распространенный вопрос в SQL: найти все данные для строки с некоторым максимальным значением в столбца на один идентификатор группы. Я много слышал о своей карьере. На самом деле, это был один из вопросов, которые я ответил в техническом интервью моей текущей работы.
На самом деле настолько распространено, что сообщество StackOverflow создало один тег только для решения таких вопросов: наибольшее-n-на-группу .
В принципе, у вас есть два подхода к решению этой проблемы:
group-identifier, max-value-in-group
Sub-query В этом подходе вы сначала найдете group-identifier, max-value-in-group
(уже решены выше) в подзапросе. Затем вы присоединяетесь к своей таблице к подзапросу с равенством как на group-identifier
, так и на max-value-in-group
:
SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
SELECT id, MAX(rev) rev
FROM YourTable
GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev
In этот подход, вы оставили присоединиться к таблице с собой. Равенство, конечно, идет в group-identifier
. Затем два умных перемещения:
NULL
в правой части (это LEFT JOIN
, помните?). Затем мы фильтруем объединенный результат, показывая только строки, где правая сторона NULL
. Итак, вы закончите:
SELECT a.*
FROM YourTable a
LEFT OUTER JOIN YourTable b
ON a.id = b.id AND a.rev < b.rev
WHERE b.id IS NULL;
Оба подхода приносят точный результат.
Если у вас есть две строки с max-value-in-group
для group-identifier
, обе строки будут в результате в обоих подходах.
Оба подхода совместимы с SQL ANSI, таким образом, будут работать с вашей любимой РСУБД, независимо от ее «вкуса».
Оба подхода также дружелюбны к производительности, однако ваш пробег может варьироваться (РСУБД, структура БД, индексы и т. д.). Поэтому, когда вы выбираете один подход над другим, benchmark . И убедитесь, что вы выбрали тот, который вам больше всего подходит.
в вашем запросе ajax, добавив:
dataType: "jsonp",
после строки:
type: 'GET',
должен решить эту проблему ..
надеюсь, что эта помощь вам поможет
У вас должна возникнуть идея, почему вы получаете эту проблему после прохождения вышеупомянутых ответов.
self.send_header('Access-Control-Allow-Origin', '*')
Вам просто нужно добавить указанную выше строку на стороне вашего сервера.
Вы должны изменить код вашей серверной части, как указано ниже
public class CorsResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
responseContext.getHeaders().add("Access-Control-Allow-Origin","*");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
}
}
Это происходит, когда вы пытаетесь получить доступ к ресурсам другого домена.
Это функция безопасности, позволяющая избежать свободного доступа к любым ресурсам этого домена (к которым можно получить доступ, например, для получения точной копии ваш сайт в пиратском домене.)
Заголовок ответа, даже если он 200OK не позволяет другим источникам (доменам, портам) обращаться к ресурсам ressources.
Вы можете исправить эта проблема, если вы являетесь владельцем обоих доменов:
Чтобы изменить это, вы можете записать это в .htaccess запрошенного файла домена:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
Если вы установите это в заголовок ответа запрошенного файла, вы разрешите всем получить доступ к ресурсам ressources:
Access-Control-Allow-Origin : *
ИЛИ
Access-Control-Allow-Origin : http://www.my-domain.com
Мир и код;)
Ваш браузер не разрешает ваш запрос .. вам нужно установить аддон вашего веб-браузера
Для Firefox https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/