您应该使用OR / AND条件:
SELECT TOP (1)
employee_id, employee_ident, utc_dt, rx_dt
FROM employee
INNER JOIN employee_mdata_history
ON employee.ident = employee_mdata_history.employee_ident
WHERE employee_id like 'emp1%'
OR employee_id like 'emp3%'
ORDER BY rx_dt desc;
看看MS-Docs上的OR(Transact-SQL)。
我建立了一个例子:
create table employees(employee_id varchar(10), employee_name varchar(100));
insert into employees values
('emp10', 'Bryan Nelson'),
('emp12', 'Rosalyn Sanders'),
('emp13', 'Rose Tudler'),
('emp20', 'Julio Gomez'),
('emp30', 'Ian McGregor'),
('emp40', 'Anne Hatt');
GO
SELECT employee_id, employee_name
FROM employees
WHERE employee_id LIKE 'emp1%'
OR employee_id LIKE 'emp3%';
GO
employee_id | 员工姓名
:---------- | :--------------
emp10 | 布莱恩·尼尔森(Bryan Nelson)
emp12 | 罗莎琳·桑德斯(Rosalyn Sanders)
emp13 | 罗斯·图德勒
emp30 | 伊恩·麦格雷戈
请记住,无论使用多少条件,您都将使用TOP 1。
SELECT TOP 1 employee_id, employee_name
FROM employees
WHERE employee_id LIKE 'emp1%'
OR employee_id LIKE 'emp3%';
GO
employee_id | 员工姓名
:---------- | :------------
emp10 | 布莱恩·尼尔森(Bryan Nelson)
如果您需要TOP(X)行WHERE employee_id LIKE 'emp1%'
加上TOP(X)行WHERE employee_id LIKE 'emp3%'
,则可以使用两个与UNION ALL结合在一起的选择语句。
SELECT TOP 3 employee_id, employee_name
FROM employees
WHERE employee_id LIKE 'emp1%'
UNION ALL
SELECT TOP 1 employee_id, employee_name
FROM employees
WHERE employee_id LIKE 'emp3%'
GO
employee_id | 员工姓名
:---------- | :--------------
emp10 | 布莱恩·尼尔森(Bryan Nelson)
emp12 | 罗莎琳·桑德斯(Rosalyn Sanders)
emp13 | 罗斯·图德勒
emp30 | 伊恩·麦格雷戈
另外,我将添加模式搜索,但是此解决方案将返回与模式匹配的所有记录:LIKE'emp [13]%'
SELECT employee_id, employee_name
FROM employees
WHERE employee_id LIKE 'emp[13]%'
GO
employee_id | 员工姓名
:---------- | :--------------
emp10 | 布莱恩·尼尔森(Bryan Nelson)
emp12 | 罗莎琳·桑德斯(Rosalyn Sanders)
emp13 | 罗斯·图德勒
emp30 | 伊恩·麦格雷戈
dbfiddle 在这里