SQLite - 找到某个值并在行输入值的另一列上找到最高值然后选择该行上的所有元素

时间:2015-01-21 08:38:47

标签: c database sqlite

我在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列上,我必须在Message列上找到最高值,该列位于具有ID_in值的同一行上,因为可能有多于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。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用prepared statementsqlite_bind将用户输入传递给查询。 要选择可以使用的messsage值最高的行,

Select * from [table_name] where id = [user_input] order by message desc limit 1;