Hi,

I am using SQLite 3.11. I create a table as follows:

                                CREATE TABLE MyTable (F1 INTEGER, F2
INTEGER, F3 INTEGER);

Then add the following records:

                                INSERT INTO MyTable (F1, F2, F3) Values (1,
2, 8); 
                                INSERT INTO MyTable (F1, F2, F3) Values (1,
3, 9);
                                INSERT INTO MyTable (F1, F2, F3) Values (2,
4, 8);
                                INSERT INTO MyTable (F1, F2, F3) Values (2,
5, 2);
                                INSERT INTO MyTable (F1, F2, F3) Values (3,
6, 4);
                                INSERT INTO MyTable (F1, F2, F3) Values (3,
7, 8);
                                INSERT INTO MyTable (F1, F2, F3) Values (4,
2, 4);

Now if two records have the same value of F1, then I will define them as
conflict records.

I want to select all the records whose (F3 & 8) != 0 where (F3 & 8) means to
get the third bit of the F3 value. Moreover, for conflict records, I will
order them by F2 and only the record with the largest F2 will be selected.

So for the above sample, the following record will be selected:

                                (1, 3, 9)
                                (2, 4, 8)
                                (3, 7, 8)

How to do that?

I first try the following command:

                                SELECT * FROM MyTable WHERE ((F3 & 8) != 0)
ORDER BY F2 DESC;

But that will return:

                                (3, 7, 8)
                                (2, 4, 8)
                                (1, 3, 9)
                                (1, 2 8)

If I use the following command:

                                SELECT * FROM MyTable WHERE ((F3 & 8) != 0)
ORDER BY F2 DESC LIMIT 1;

Then it will return:

                                (3, 7, 8)

Both are incorrect.

Thanks



Reply via email to