多个'IN'子句

时间:2013-07-09 14:11:09

标签: mysql sql database

我的SQL查询有问题。我有这个问题:

SELECT * FROM serie WHERE serie_id IN
 (SELECT serie_id FROM L WHERE L_value = 33 AND I_value >= 0,1)
 AND serie_id IN (SELECT serie_id FROM clusterserie WHERE cluster_id LIKE 'RF%') ; 

我想在此查询中使用2个IN子句,因为我必须检查字段serie_id是否满足该2个要求。 谁知道这个查询有什么问题? 谢谢和最好的问候!

2 个答案:

答案 0 :(得分:4)

尝试加入如下的子查询

SELECT b.* FROM serie b
inner join L a on (a.serie_id = b.serie_id)
inner join clusterserie c on (c.serie_id = b.serie_id) 
WHERE c.cluster_id LIKE 'RF%'
AND a.L_value = 33 AND a.I_value >= 0

答案 1 :(得分:0)

这里看起来有一个语法错误:

AND I_value >= 0,1)

不确定这是什么意思。

此外,您的查询将从避免子选择和使用连接中受益匪浅:

SELECT
    s.*
FROM
    serie s
    INNER JOIN L
        ON s.serie_id = L.serie_id
    INNER JOIN clusterserie cs
        ON s.serie_id = cs.serie_id
WHERE
    L.L_value = 33
    AND L.I_value >= 0 /* or whatever this is supposed to be */
    AND cs.cluster_id LIKE 'RF%'