如何比较同一个表的两行

时间:2016-11-30 09:06:12

标签: mysql sql

我正在尝试编写一个查询来比较单列

的数据

所以我有一个像

这样的结构的表
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

期待您的解决方案,并提前感谢您的帮助..

4 个答案:

答案 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

在那里,你可以找到关于一般命名的推荐:“只在名称中使用字母,数字和下划线。” ......这不是一个严格的规则。