Хотите получить точную запись из таблицы mysql laravel - PullRequest
0 голосов
/ 17 июня 2020

Хотите получить записи, которые имеют точное совпадение с My sql table

таблица выглядит так

id question_id asset_id

1 59 2

2 58 2

3 57 2

5 57 3

6 56 2

7 56 3

так из этого я хочу получить записи, которые имеют точные записи, например. asset_id = 2 (так что для этого вопроса идентификаторы 58 и 59)

И при проверке идентификатора актива = 2,3 записи должны быть 56 и 57 как идентификаторы вопросов

Спасибо

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Вы можете подсчитать количество различных asset_id на question_id и выбрать только строки, в которых количество равно количеству значений, которые вы ищете, а количество равно количеству значений, которые вы ищете

SELECT question_id
FROM assets
GROUP BY question_id
HAVING COUNT(DISTINCT asset_id) = 2 AND
       COUNT(asset_id) = SUM(asset_id IN (2, 3))

Вывод:

question_id
56
57

Или для поиска одного значения:

SELECT question_id
FROM assets
GROUP BY question_id
HAVING COUNT(DISTINCT asset_id) = 1 AND
       COUNT(asset_id) = SUM(asset_id = 2)

Вывод:

question_id
58
59

Демо на dbfiddle

1 голос
/ 17 июня 2020

Вы можете использовать функцию GROUP_CONCAT, но ответ выше будет иметь лучшую производительность

SELECT question_id FROM `questions`
GROUP BY question_id 
HAVING GROUP_CONCAT(asset_id ORDER BY asset_id) = '2,3' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...