首页 > 解决方案 > SQL返回数据或根据特定记录号过滤数据

问题描述

我正在尝试让 SQL 根据我的 PL 编号提取数据,这就是我所拥有的:

*SELECT  [ROUTE_ID]
      ,[LINE_ID]
      ,[EVENT_ID]
      ,[DESCRIPTION]
      ,[SEQUENCE]
      ,[TYPE_CL]
      ,[CURRENT_INDICATOR_LF]
      ,[PREVIOUS_ROUTE_ID]
      ,[EFFECTIVE_FROM_DATE]
      ,[EFFECTIVE_TO_DATE]
      ,[ORIGINAL_ROUTE_ID]
      ,[PODS_USER]
      ,[CREATE_DATE]
      ,[INTERSTATE_LF]
      ,[RECORD_UPDATE_USER]
      ,[RECORD_UPDATE_DATE]
      ,[JURISDICTION_CL]
      ,[USE_CL]
      ,[PRODUCT_CL]
      ,[MXLOCATIONID]
      ,[MXFLAG_CL]
      ,[MXID]
  FROM [WBI_PODS_PROD].[dbo].[ROUTE]
where MXLOCATIONID like 'PL10';
where MXLOCATIONID like 'PL100';
where MXLOCATIONID like 'PL1000';
where MXLOCATIONID like 'PL1001';
where MXLOCATIONID like 'PL1002';
where MXLOCATIONID like 'PL1003';
where MXLOCATIONID like 'PL1004';
where MXLOCATIONID like 'PL1005';
where MXLOCATIONID like 'PL1006';
where MXLOCATIONID like 'PL1007';
where MXLOCATIONID like 'PL1008';
where MXLOCATIONID like 'PL1009';
where MXLOCATIONID like 'PL101';
where MXLOCATIONID like 'PL1010';
where MXLOCATIONID like 'PL1011';
where MXLOCATIONID like 'PL1012';*

这只是一个片段,因为我需要返回的总数是 1998 条记录,并以特定顺序达到特定 PL 编号。但是这失败了,我做错了什么。有人可以为我制作正确的东西来放置 PL 号码吗?

标签: sqlwhere-clause

解决方案


where 子句的语法对于一件事是错误的。应该是这样的:

where MXLOCATIONID like 'PL10' or MXLOCATIONID like 'PL100' ... etc...

此外,您没有使用通配符 (%),因此它并不是真正有用。但是更好的解决方案是创建另一个查找表并将这些字符串放在那里。就像是:

create table location ( locationID varchar(100) );
insert into location values ('PL10');
insert into location values ('PL100');
...etc...

更改 where 子句:

where MXLOCATIONID in ( select locationID from location) ...

推荐阅读