left 例如,我有以下查询并想限制表上的 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
中的所有数据,但如果 Derived.name 等于 test 1
,test 2
,只有 5 个项目,测试 3
等
该表中可能有 100 000 000 个测试和几千个不以 'test'
开头的其他内容。
基本上,给我 Derived3
中的任何内容,最多 5 行以 'test'
开头。
我该如何解决?
最佳答案
检查下面的查询。
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
AND Derived3.id IN (
SELECT Derived3.id
FROM Derived3
WHERE Derived3.NAME LIKE 'test%' LIMIT 5
)
)
WHERE Base.id = 'someid'
关于mysql - 限制左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37615041/