繁体   English   中英

如何正确编写SQL查询

[英]How can I properly write SQL query

我正在尝试编写SQL查询,但不确定如何正确地完成我想实现的目标。 现在我有

select id 
from job 
where status = 'NE' 
    or status = 'RU' 
    and queue = CONCAT('VA-', varVappId) 
    or queue = CONCAT('CL-', varClientId, '||', 'VA-', varVappId);

因此,基本上,如果作业的状态为NE或RU且队列与concat字符串匹配,则它将产生结果。

您应该使用括号将子句组合在一起。

select id 
from job 
where 
    (status = 'NE' or status = 'RU')
    and (queue = CONCAT('VA-', varVappId) 
    or queue = CONCAT('CL-', varClientId, '||', 'VA-', varVappId));

缺少括号。

select id 
from job 
where (status = 'NE' 
    or status = 'RU' )
    and (queue = CONCAT('VA-', varVappId) 
    or queue = CONCAT('CL-', varClientId, '||', 'VA-', varVappId));

要么

select id 
from job 
where status in( 'NE','RU' )
    and (queue = CONCAT('VA-', varVappId) 
    or queue = CONCAT('CL-', varClientId, '||', 'VA-', varVappId));

在您的where条件中, OR条件应使用() AND分开,因此OR条件将首先进行检查,并将与AND组合

select id 
from job 
        where (status = 'NE' or status = 'RU' ) and 
    (queue = CONCAT('VA-', varVappId) or 
    queue = CONCAT('CL-', varClientId, '||', 'VA-', varVappId));

缺少一些参数,需要对子句进行分组。 这也是一般格式,如果您也需要这种格式。

SELECT id 
  FROM job 
 WHERE status IN( 'NE','RU' )
       AND (queue = CONCAT('VA-', varVappId) 
       OR queue = CONCAT('CL-', varClientId, '||', 'VA-', varVappId));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM