0

我以前从来没有检查过这样的事情,所以我希望你们能提供帮助。我不确定是否最好创建一个临时表,然后检查其中是否有项目或是否有更好的方法。

表中的每一行代表一个可能有父对象的对象。父级存储在同一个表中。在此示例中, parent_id 字段保存行的父项的主键。我正在尝试选择表中类型列设置为特定值并且其父行在 field_b 列中具有“z”的所有行。括号中的部分显然需要工作......

SELECT s_id, s_text, s_parent_id
FROM sections 
WHERE s_derivedtype >= 10000 AND

如果这返回任何东西

SELECT s_id
FROM sections
WHERE s_id = {the s_parent_id from the first query) AND s_flags LIKE '%z%'

我已经更新了这个,希望更容易阅读......

最有效的方法是什么?我期望从表中的 18m 中返回 100k 行,因此体面的性能并非微不足道。

4

2 回答 2

2
SELECT key_field, field_a 
FROM
    t s
    inner join
    t p on p.key_field = s.key_field
WHERE
    s.type = 1
    AND p.field_b LIKE '%z%'
于 2013-02-16T23:16:52.960 回答
1

尝试

SELECT t1.key_field, t1.field_a 
FROM tbl AS t1 
WHERE t1.type = 1 AND parent_id = (SELECT t2.id FROM tbl AS t2 
                                    WHERE t2.id = t1.parent_id
                                      AND t2.field_b LIKE '%z%')

或者

SELECT t1.key_field, t1.field_a
FROM tbl AS t1 
INNER JOIN tbl AS t2 ON t2.id = t1.parent_id
WHERE t1.type = 1
AND t2.field_b LIKE '%z%'
于 2013-02-16T23:16:28.317 回答