Дайте таблице ниже:MySQL: Query подмножество строк
ТАБЛИЦА: USER_ASSETS
USER_ID | ASSET_ID
-------------------
1 | 1
-------------------
1 | 2
-------------------
1 | 3
-------------------
2 | 2
-------------------
2 | 3
-------------------
Если я искать USER_ID
с ASSET_ID
равен 1 и 2, он должен вернуть USER_ID
1 как USER_ID
1 имеет ASSET_ID
's 1 и 2.
Если я прохожу ASSET_ID
= 1, 2 и 4, она должна возвращать 0 строк, нет USER_ID
' s, которые имеют ASSET_ID
1, 2 и 4.
Если я прохожу ASSET_ID
2 и 3 она должна возвращать USER_ID
1 и 2, как оба этих USER_ID
«s имеет ASSET_ID
2 и 3.
прямо сейчас я застрял, как я не удалось найти правильный запрос для моего желаемого результата.
Я попытался это:
SELECT DISTINCT ID FROM USER_ASSETS WHERE ASSET_ID IN (1, 2);
Но результат не так, как она возвращается как USER_ID 1 и 2.
Я также попытался:
SELECT DISTINCT ID FROM USER_ASSETS WHERE ASSET_ID = 1 AND ASSET_ID = 2
Но это всегда возвращение до 0 строк, поскольку предложение WHERE выполняется в одну строку за раз.
спасибо за редактирование @Dijkgraaf, я имею в виду использовать соединение той же таблице для каждого значения ASSET_ID, но это правильный подход? – s4m0k
Нет, это не так (ну, это решение, но это неудобно сложное). см. ответ ниже. –
См. Ответ Мизандриста, где он делает именно это, но он становится очень громоздким очень быстро. Ответ Палы также может работать.Попробуйте их – Dijkgraaf