Вы можете увидеть, как в следующем вызове SQL, чтобы ограничить количество результатов только для этой конкретной части:Как ограничить количество результатов определенной части SQL-запроса?
OR (u1 != '2' AND u2 != '2' AND u3 != '2' AND m.membership_id = 1 AND m.aff IN (SELECT id FROM members WHERE id != 2 AND membership_id = 1 OR jv > 0)))
Я хотел ограничить это число совпадений с точным числом, например, 150
Полный SQL является:
SELECT DISTINCT mid, did FROM product_access, members AS m
WHERE mid = m.id AND m.active = 1
AND m.suspended = 0
AND (u1 = '2' OR u2 = '2' OR u3 = '2' OR (u1 != '2' AND u2 != '2' AND u3 != '2' AND m.membership_id = 1 AND m.aff IN (SELECT id FROM members WHERE id != 2 AND membership_id = 1 OR jv > 0))) GROUP BY mid
Таким образом, результат должен включать в себя все где u1 = '2'
, все где u2 = '2'
, все где u3 = '2'
, но только 150, где:
(u1 != '2' AND u2 != '2' AND u3 != '2' AND m.membership_id = 1 AND m.aff IN (SELECT id FROM members WHERE id != 2 AND membership_id = 1 OR jv > 0))
Какие СУБД вы используете? Postgres? Oracle? –
Не могли бы вы использовать еще больше и даже более короткие запутанные переменные короткого кода? – Alexander
Попробуйте 'SELECT TOP 150 ....' –