我的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个要求。 谁知道这个查询有什么问题? 谢谢和最好的问候!
答案 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%'