SQLite - 找到某个值并在行输入值出现的另一列上找到最大值然后 select 该行上的所有元素
SQLite - find a certain value and find the highest value on another column on the row input value appears then select all the elements on that row
我在一个 c 项目上使用 sqlite3 库。我有一个这样的数据库:
| Time | Message | ID | Temp |
|--------|-----------|------|--------|
|09:05:37| 1514 | 62 | 35 |
|10:14:45| 1515 | 43 | 14 |
|11:18:50| 1997 | 28 | 43 |
|08:04:23| 1998 | 28 | 50 |
消息是一个自动增量值。我正在尝试做的事情和我的问题是:
int ID_in;
printf("Enter the ID you want to check: ");
scanf("%d", &ID_in);
首先用户将输入一个值,我必须找到该值是否出现在 ID 列中,如果出现我可以开始我的操作。由于用户将输入一个值,我应该在我的数据库上使用 sqlite3_bind()
函数来将 ID_in
与数据库中的值进行比较吗?
如果 ID_in
出现在 ID 列上,我必须在与 ID_in 值位于同一行的 Message 列中找到最大值,因为可能不止一个 ID_in
ID 列上的值。例如,如果 ID_in
是 28,我必须访问 Message 值最高的行,对于这个,我必须访问 Message 值为 1998 的行。
访问该行后,我应该打印该行的所有列。例如,如果 ID_in 是 28,则在 ID 列中找到值 28。然后找到最高的 Message 列值,即 1998。然后在该行上打印 Time、Message、ID、Temp,在本例中为 08:04:23、1998、28、50。
是的,您可以使用 prepared statement
和 sqlite_bind
将用户输入传递给查询。
要选择具有最高 messsage
值的行,您可以使用
Select * from [table_name] where id = [user_input] order by message desc limit 1;
我在一个 c 项目上使用 sqlite3 库。我有一个这样的数据库:
| Time | Message | ID | Temp |
|--------|-----------|------|--------|
|09:05:37| 1514 | 62 | 35 |
|10:14:45| 1515 | 43 | 14 |
|11:18:50| 1997 | 28 | 43 |
|08:04:23| 1998 | 28 | 50 |
消息是一个自动增量值。我正在尝试做的事情和我的问题是:
int ID_in;
printf("Enter the ID you want to check: ");
scanf("%d", &ID_in);
首先用户将输入一个值,我必须找到该值是否出现在 ID 列中,如果出现我可以开始我的操作。由于用户将输入一个值,我应该在我的数据库上使用 sqlite3_bind()
函数来将 ID_in
与数据库中的值进行比较吗?
如果 ID_in
出现在 ID 列上,我必须在与 ID_in 值位于同一行的 Message 列中找到最大值,因为可能不止一个 ID_in
ID 列上的值。例如,如果 ID_in
是 28,我必须访问 Message 值最高的行,对于这个,我必须访问 Message 值为 1998 的行。
访问该行后,我应该打印该行的所有列。例如,如果 ID_in 是 28,则在 ID 列中找到值 28。然后找到最高的 Message 列值,即 1998。然后在该行上打印 Time、Message、ID、Temp,在本例中为 08:04:23、1998、28、50。
是的,您可以使用 prepared statement
和 sqlite_bind
将用户输入传递给查询。
要选择具有最高 messsage
值的行,您可以使用
Select * from [table_name] where id = [user_input] order by message desc limit 1;