left сказать, например, что у меня есть следующий запрос и вы хотите ограничить left join
на столе, как мне это достичь?mysql - limit left join
SELECT * FROM Base
LEFT JOIN Derived1 ON Base.id = Derived1.id
LEFT JOIN Derived2 ON Base.id = Derived2.id
LEFT JOIN Derived3 ON (Base.id = Derived3.id WHERE Derived3.name LIKE 'test%' LIMIT 5) <-----
WHERE Base.id = 'someid';
я, хотя я мог бы написать это следующим образом:
SELECT * FROM Base
LEFT JOIN Derived1 ON Base.id = Derived1.id
LEFT JOIN Derived2 ON Base.id = Derived2.id
LEFT JOIN Derived3 ON Base.id = (
SELECT d3.id FROM Derived3 d3
WHERE d3.name LIKE 'test%' AND Base.id = Derived3.id
LIMIT 5
)
WHERE Base.id = 'someid';
, но это дает мне неправильный результат
Я хочу, чтобы все данные, которые внутри Derived3
, но только 5 предметов, если Derived.name соответствует test 1
, test 2
, test 3
и т. Д. Возможно, существует 100 000 000 тестов e, что таблицы и несколько тысяч других вещей, которые не начинаются с 'test'
.
Итак, дайте мне что-нибудь внутри Derived3
и не более 5 строк, начинающихся с 'test'
.
Как это решить?
Каждый раз, когда вы перечисляете таблицы или столбцы, будильники должны начинать звонить. – Strawberry
Тревожные звонки звонили и теперь сломаны, мне действительно нужно исправить, не меняя структуру, так как у нас есть миллиарды записей, и это несколько огромный проект. Поэтому мне нужно придумать хороший запрос, хотя это может быть не самый эффективный способ решения этой проблемы. –
Выберите ur Baseid из Derived3, сохраняя все ваши условия соединения и соединения intactand, если это работает @ Dr.Jones –