как и не как в одном запросе mysql

Вы можете выполнить проверку с помощью объекта Errors / BindingResult. Добавьте аргумент Errors в ваш метод контроллера и настройте сообщение об ошибке при обнаружении ошибок.

Ниже приведен пример примера: errors.hasErrors () возвращает true, если проверка не удалась.

@RequestMapping(value = "/user", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> saveUser(@Valid @RequestBody User user, Errors errors) {
    if (errors.hasErrors()) {
        return new ResponseEntity(new ApiErrors(errors), HttpStatus.BAD_REQUEST);
    }
    return new ResponseEntity<>(HttpStatus.OK);
}
19
задан Aldwoni 19 February 2018 в 11:39
поделиться

3 ответа

Просто добавьте «и категорию» ...

SELECT * FROM links 
WHERE category LIKE '1|%' 
  AND category NOT LIKE '1|6|199|%','1|6|200|%' 
ORDER BY score DESC LIMIT 9

На самом деле условие, разделенное запятыми, не является синтаксисом, с которым я знаком. Если это не работает, попробуйте вместо этого:

SELECT * FROM links 
WHERE category LIKE '1|%' 
  AND category NOT LIKE '1|6|199|%'
  AND category NOT LIKE '1|6|200|%' 
ORDER BY score DESC LIMIT 9
30
ответ дан 30 November 2019 в 03:43
поделиться

Вы можете использовать регулярные выражения :

SELECT  *
FROM    links 
WHERE   category LIKE '1|%' 
        AND category NOT REGEXP '^1\\|6\\|(199|200)\\|'
ORDER BY
        score DESC
LIMIT 9

Обратите внимание, что REGEXP не используют индексы, а LIKE - .

В этом запросе LIKE '1 |%' будет служить грубым фильтром с использованием индекса в категории , если таковая имеется, а REGEXP ) будет фильтровать результаты.

3
ответ дан 30 November 2019 в 03:43
поделиться

Я думаю, что более серьезная проблема заключается в том, что у вас есть -нормализованные таблицы. Правильный ответ - нормализовать таблицы.

Но если вы не можете этого сделать, вам следует использовать запятые в качестве разделителей и вместо FIND_IN_SET () :

WHERE FIND_IN_SET('1', category) > 1
  AND FIND_IN_SET('6', category) > 1
  AND FIND_IN_SET('199', category) = 0
  AND FIND_IN_SET('200', category) = 0
2
ответ дан 30 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

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