Как выбрать записи с базы где в полях значение 0 не больше n-ого числа?

Ссылка скопирована
1 ответ

mysql 5.7
Структура таблицы:
id, c1, c2, c3, c4, c5, c6, c7, sts
id - идентификатор
с1,... - поля tinyint, значения от 0 до 2
sts - статус, значения 0 или 1, активен и неактивен
пример записи
1, 1, 0, 0, 2, 1, 1, 1, 0
2, 1, 0, 0, 2, 1, 1, 1, 0
3, 0, 0, 0, 1, 1, 1, 1, 0
4, 0, 0, 0, 0, 1, 1, 1, 0
......
Как выбрать записи с базы где в полях С1,..С7 значение 0 не повторяется больше например 3 раз и значение 1 не повторяется больше 4 раз?

Дополнительно:

Ответы:

postgresql

SELECT  	id FROM t, jsonb_each_text(to_jsonb(t)) as x("key",val) group by id having  count(*) filter(where val::int = 0) <=3 and  count(*) filter(where val::int = 1) <=4;

SELECT id FROM t, jsonb_each_text(to_jsonb(t)) as x("key",val) group by id having count(*) filter(where val::int = 0) <=3 and count(*) filter(where val::int = 1) <=4;

https://sqlize.online/sql/psql14/06a28c679e03263b8...

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Для выборки записей из базы данных, где значения в определенных полях не превышают определенного числа, можно использовать запрос SQL с условием WHERE. Для этого можно воспользоваться оператором сравнения '<=' (меньше или равно) и указать значение, которое не должно быть превышено.

Например, если у вас есть таблица 'users' с полем 'age', и вы хотите выбрать всех пользователей, у которых возраст не превышает 30 лет, запрос будет выглядеть следующим образом:

SELECT * FROM users WHERE age &lt;= 30;

SELECT * FROM users WHERE age &lt;= 30;

Если вы хотите выбрать записи, где значение равно нулю или меньше определенного числа, вы можете использовать такой же запрос, но добавить дополнительное условие с оператором 'OR':

SELECT * FROM users WHERE age = 0 OR age &lt;= 30;

SELECT * FROM users WHERE age = 0 OR age &lt;= 30;

Таким образом, этот запрос вернет все записи, где значение поля 'age' равно нулю или не превышает 30.

Не забывайте заменить 'users', 'age' и '30' на ваши реальные названия таблицы, поля и значение, соответственно.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно