mysql - 限制左连接

标签 mysql sql

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 1test 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/

相关文章:

mysql - 总和列与连接表的总和

mysql - 使用 SQL 查询了解哪些表具有列 "a"和 "b"

VBA 中的 SQL 语句

php - MySQL 总是返回期望参数 1 是 mysqli_result,boolean given

php - 过滤不等于空条目

php - 为什么此 SQL 代码不起作用?

php - 我在使用 Mysql 编码时遇到了问题

php - 在同一个 PHP 文件上使用两个具有不同排序规则的不同数据库

mysql - 获取当前更新的列名称以在触发器中使用

mysql - 连接两个选择查询并对结果进行排序