员工表
Id Name Salary frame
1 A 5000 MDF-125NH
2 b 10000 MDF-025AH
3 c 15000 MDF-325KH
4 d 20000 MDF-425LH
5 e 25000 MDF-521MH
我想从MySQL获取帧之间的数据,即( MDF-125NH,MDF-325KH )。
我尝试了一些但没有成功。
SELECT DISTINCT (id) AS ln
FROM employee c04 BETWEEN (
SELECT SUBSTRING(frame, 0, CHARINDEX('-', frame))
FROM employee
) AND (
SELECT SUBSTRING(frame, 0, CHARINDEX('-', frame))
FROM employee
) )
OR
SELECT DISTINCT (id) AS ln
FROM employee c04 BETWEEN (
SELECT SUBSTRING("MDF-125NH", 0, CHARINDEX('-', "MDF-125NH"))
FROM employee
) AND (
SELECT SUBSTRING("MDF-325KH", 0, CHARINDEX('-', "MDF-325KH"))
FROM employee
) )
答案 0 :(得分:0)
CREATE TABLE employee(
Id INTEGER NOT NULL PRIMARY KEY
,Name VARCHAR(1) NOT NULL
,Salary INTEGER NOT NULL
,frame VARCHAR(9) NOT NULL
);
INSERT INTO employee(Id,Name,Salary,frame) VALUES (1,'A',5000,'MDF-125NH');
INSERT INTO employee(Id,Name,Salary,frame) VALUES (2,'b',10000,'MDF-025AH');
INSERT INTO employee(Id,Name,Salary,frame) VALUES (3,'c',15000,'MDF-325KH');
INSERT INTO employee(Id,Name,Salary,frame) VALUES (4,'d',20000,'MDF-425LH');
INSERT INTO employee(Id,Name,Salary,frame) VALUES (5,'e',25000,'MDF-521MH');
SELECT *
FROM employee
WHERE frame BETWEEN 'MDF-125NH' and 'MDF-325KH'
;
结果是:
+----+----+------+--------+-----------+
| | Id | Name | Salary | frame |
+----+----+------+--------+-----------+
| 1 | 1 | A | 5000 | MDF-125NH |
| 2 | 3 | c | 15000 | MDF-325KH |
+----+----+------+--------+-----------+
SQL中的'between'具有非常具体的含义,等同于:
frame >= 'MDF-125NH' and frame <= 'MDF-325KH'
此定义可能不一定符合您的期望。
+----+----+------+--------+-----------+
| | Id | Name | Salary | frame |
+----+----+------+--------+-----------+
| 1 | 1 | A | 5000 | MDF-125NH |
| 2 | 2 | b | 10000 | MDF-025AH | << is this the "between" you want?
| 3 | 3 | c | 15000 | MDF-325KH |
| 4 | 4 | d | 20000 | MDF-425LH |
| 5 | 5 | e | 25000 | MDF-521MH |
+----+----+------+--------+-----------+
此查询:
SELECT *
FROM employee
WHERE id BETWEEN (select min(id) from employee where frame IN ('MDF-125NH','MDF-325KH'))
AND (select max(id) from employee where frame IN ('MDF-125NH','MDF-325KH'))
;
产生以下结果:
+----+----+------+--------+-----------+
| | Id | Name | Salary | frame |
+----+----+------+--------+-----------+
| 1 | 1 | A | 5000 | MDF-125NH |
| 2 | 2 | b | 10000 | MDF-025AH |
| 3 | 3 | c | 15000 | MDF-325KH |
+----+----+------+--------+-----------+