我有一个存储过程,它有一个参数的表,参数有两列: From和To。都是int。它被用来搜索分数。表的示例是
+-----------+-------+----+
| RowNumber | From | To |
+-----------+-------+----+
| 1 | 0 | 30 |
| 2 | 60 | 80 |
+-----------+-------+----+如何在表格中搜索包含0到30、60和80之间所有分数的结果?
我曾经尝试过在while循环中使用between,但什么也没有。
发布于 2018-04-24 13:32:36
在没有回复的情况下,这只是猜测,不过,也许.
CREATE TABLE Score (ID int IDENTITY(1,1),
Score int);
INSERT INTO Score
VALUES (65),(17),(97),(14),(34),(79),(37),(87),(65),(63),(15),(75),(05),(25),(38),(28),(88);
GO
CREATE TABLE ScoreRange (ID int IDENTITY(1,1),
[From] int, --Try to avoid keywords, and especially reserved words, for column names
[To] int); --Try to avoid keywords, and especially reserved words, for column names
INSERT INTO ScoreRange
VALUES (0,30),
(60,80);
GO
SELECT *
FROM Score S;
SELECT S.*
FROM Score S
JOIN ScoreRange SR ON S.Score BETWEEN SR.[From] AND SR.[To];
GO
DROP TABLE Score;
DROP TABLE ScoreRange;发布于 2018-04-24 13:31:31
如果没有样本数据,就很难回答--但我认为您正在寻找这样的东西:
SELECT t.*
FROM YourTable As t
JOIN @TVP As p ON t.Score >= p.[From] AND t.Score <= p.[To]发布于 2018-04-24 14:02:47
select * from t
where exists (
select 1 from ranges r
where t.val between r.from and r.to
);https://stackoverflow.com/questions/50002886
复制相似问题