我正在尝试编写一个查询来比较单列
的数据所以我有一个像
这样的结构的表S.no **SampleNo**
100 0
A 13
B 25
C 38
所以现在最终用户传递一些随机样本号,例如11.12。 现在我需要将这个传递的数字与sampleNo Column进行比较。 现在在这个场景11.12中介于0和13之间,所以我需要将A显示为查询的输出。
我希望你理解这个问题。
我需要写一个像
这样的查询获取S.no,其中passValue> 0和< = 13。输出应为100
同样,如果用户传递24作为输入,那么我的查询应该变得像 获取S.no,其中passValue> 13和< = 25。输出应为A
期待您的解决方案,并提前感谢您的帮助..
答案 0 :(得分:1)
此查询将返回SampleNo大于passedValue的行。
select *
from demo1
where passedValue <= SampleNo
order by SampleNo
limit 1
执行传递值的文字为:
SQL>select *
SQL&from demo1
SQL&where 11.12 <= SampleNo
SQL&order by SampleNo
SQL&fetch first 1 row only;
sno sampleno
========== ===========
A 13
1 row found
使用第一个值的参数:
SQL>create table demo1 (sno varchar(10), sampleno int);
SQL>insert into demo1 values ('100',0);
SQL>insert into demo1 values ('A',13);
SQL>insert into demo1 values ('B',25);
SQL>insert into demo1 values ('C',38);
SQL>select *
SQL&from demo1
SQL&where :passedValue <= SampleNo
SQL&order by SampleNo
SQL&fetch first 1 row only;
passedValue:11.12
sno sampleno
========== ===========
A 13
1 row found
请注意,我没有使用MySQL,因此我没有LIMIT
而是使用ANSI SQL&#39; FETCH FIRST
,但这并不重要。
答案 1 :(得分:0)
Configuration config = activity.getBaseContext().getResources().getConfiguration();
Locale locale = Utils.stringToLocale(stringLanguage);
Locale.setDefault(locale);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
config.setLocales(new LocaleList(locale));
} else {
config.locale = locale;
}
activity.getBaseContext().getResources().updateConfiguration(config,
activity.getBaseContext().getResources().getDisplayMetrics());
答案 2 :(得分:0)
SELECT a.S.no FROM Your_tableName a WHERE a.SampleNo =
(
SELECT MAX(b.SampleNo) FROM Your_tableName b WHERE b.SampleNo > @Passval
);
答案 3 :(得分:0)
SELECT `S.no` FROM your_table
WHERE @passed_value < `SampleNo`
ORDER BY `SampleNo` ASC
LIMIT 1
请注意表中包含点的字段名称(S.no)。用反引号引用它们以避免问题。或者考虑重命名它们。
关于这一点:没有'官方'MySql命名约定。但是有些建议可能会引起注意:
https://dev.mysql.com/doc/internals/en/coding-style.html
http://www.sqlstyle.guide/#general-1
在那里,你可以找到关于一般命名的推荐:“只在名称中使用字母,数字和下划线。” ......这不是一个严格的规则。