#define SQLITE_ENABLE_EXPLAIN_COMMENTS 1 makes it work properly. neither NDEBUG nor SQLITE_DEBUG explicitly defined.
Over to Richard ... > -----Original Message----- > From: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] > On Behalf Of Keith Medcalf > Sent: Tuesday, 11 October, 2016 19:22 > To: SQLite mailing list > Subject: Re: [sqlite] LIMIT doesn't return expected rows > > > By default, I do not see the query being flattened. Flattening it > manually produces the same right results independant of something config.h > does... > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC limit > 3; > 1 > 2 > 3 > sqlite> select i.id from i, m where i.id=m.id order by flags desc limit 3; > select i.id from i, m where i.id=m.id order by flags desc limit 3; > 6 > 5 > 7 > > > Well I can reproduce the wrong answer. If I compile the amalgamation > > code: > > > > with no config.h I get the same result as you, > > but with the following config.h, the result is correct > > > > (this is with the code from the head of trunk): > > > > #ifndef _CONFIG_H > > #define _CONFIG_H > > > > // Values of WINVER and _WIN32_WINNT for various minimum levels of Win32 > > Compatability > > // > > // WIN10 0x0A00 WIN6 0x0600 W2K 0x0500 NT4 > > 0x0400 > > // VISTA 0x0600 WXP 0x0501 W95 > > 0x0400 > > // W2K8 0x0600 W2K3 0x0502 NT4E > > 0x0401 > > // WIN7 0x0601 W98 > > 0x0410 > > // WIN8 0x0602 WME > > 0x0490 > > // WIN81 0x0603 > > > > #ifndef _WIN32_WINNT > > #define _WIN32_WINNT 0x0600 > > #endif > > #ifndef WINVER > > #define WINVER _WIN32_WINNT > > #endif > > > > // General Platform Compilation Support Options > > > > #define HAVE_MALLOC_USABLE_SIZE 1 > > #define HAVE_USLEEP 1 > > > > // *** SQLITE GENERAL CONFIGURATION OPTIONS *** > > > > // #define SQLITE_DEFAULT_AUTOMATIC_INDEX 1 // > default: > > 1 > > // #define SQLITE_DEFAULT_AUTOVACUUM 0 // > default: > > 0 > > #define SQLITE_DEFAULT_CACHE_SIZE 65536 // 256 MB > > // #define SQLITE_DEFAULT_FILE_FORMAT 4 // > default: > > 4 > > // #define SQLITE_DEFAULT_FILE_PERMISSIONS 0644 // > default: > > 0644 > > #define SQLITE_DEFAULT_FOREIGN_KEYS 1 // default: > 0 > > // #define SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT 4194304 // > default: > > -1 > > // #define SQLITE_DEFAULT_LOCKING_MODE 0 // > default: > > 0 > > // #define SQLITE_DEFAULT_MEMSTATUS 1 // > default: > > 1 > > #define SQLITE_DEFAULT_PAGE_SIZE 4096 // default: > > 4096 max: 65536 > > // #define SQLITE_DEFAULT_SYNCHRONOUS 2 // > default: > > 2 > > // #define SQLITE_DEFAULT_WAL_SYNCHRONOUS 2 // > default: > > same as default synchronous > > // #define SQLITE_DEFAULT_WORKER_THREADS 4 // > default: > > 0 > > #define SQLITE_DEFAULT_WAL_AUTOCHECKPOINT 256 // default: > > 1000 pages > > #define SQLITE_DEFAULT_PROXYDIR_PERMISSIONS 0755 // default: > > 0755 > > #define SQLITE_DEFAULT_RECURSIVE_TRIGGERS 1 // default: > 0 > > #define SQLITE_DEFAULT_TEMP_CACHE_SIZE 65536 // default: > > 500 pages > > #define SQLITE_DEFAULT_SHARED_CACHE 0 // default: > 0 > > #define SQLITE_DEFAULT_MMAP_SIZE 0 // default: > 0 > > // #define SQLITE_LIKE_DOESNT_MATCH_BLOBS 1 // > default: > > undefined > > // #define SQLITE_SORTER_PMASZ 64 // > default: > > 250 > > // #define SQLITE_EXTRA_DURABLE 1 // Extra > > DirSync's default not defined > > > > > > // *** SQLITE FEATURE CONFIGURATION OPTIONS *** > > > > //#define SQLITE_ALLOW_COVERING_INDEX_SCAN 1 > > #define SQLITE_ENABLE_8_3_NAMES 1 > > // #define SQLITE_ENABLE_ATOMIC_WRITE 1 > > #define SQLITE_ENABLE_API_ARMOR 1 // Enable > API > > Armour > > #define SQLITE_ENABLE_COLUMN_METADATA 1 > > #define SQLITE_ENABLE_COSTMULT 1 > > #define SQLITE_ENABLE_CURSOR_HINTS 1 > > #define SQLITE_ENABLE_DBSTAT_VTAB 1 > > #define SQLITE_ENABLE_EXPLAIN_COMMENTS 1 > > #define SQLITE_ENABLE_FTS3 1 > > #define SQLITE_ENABLE_FTS3_PARENTHESIS 1 > > // #define SQLITE_DISABLE_FTS3_UNICODE 1 > > #define SQLITE_ENABLE_FTS4 1 > > #define SQLITE_ENABLE_FTS5 1 > > // #define SQLITE_ENABLE_ICU 1 // Set in > > BUILD Command additional Libs required > > #define SQLITE_ENABLE_JSON1 1 // Enable > > JSON1 -- when standard extension > > #define SQLITE_ENABLE_LOAD_EXTENSION 1 > > #define SQLITE_ENABLE_LOCKING_STYLE 1 > > #define SQLITE_ENABLE_MEMORY_MANAGEMENT 1 // Enable > > Memory Management (sqlite3_release_memory) > > // #define SQLITE_ENABLE_MEMSYS3 1 > > // #define SQLITE_ENABLE_MEMSYS5 1 > > #define SQLITE_ENABLE_MODULE_COMMENTS 1 > > #define SQLITE_ENABLE_PREUPDATE_HOOK 1 > > // #define SQLITE_ENABLE_RBU 1 // Enable > > Resumable Bulk Update > > #define SQLITE_ENABLE_RTREE 1 > > // #define SQLITE_RTREE_INT_ONLY 1 > > // #define SQLITE_ENABLE_SESSION 1 // Enable > > the SESSION feature > > // #define SQLITE_ENABLE_SNAPSHOT 1 // Enable > > the SNAPSHOT feature > > #define SQLITE_ENABLE_STAT_VTAB 1 // Enable > > dbstat_register called from shell > > #define SQLITE_ENABLE_STAT1 1 > > #define SQLITE_ENABLE_STAT2 1 > > #define SQLITE_ENABLE_STAT3 1 > > #define SQLITE_ENABLE_STAT4 1 > > // #define SQLITE_ENABLE_VFSSTAT 1 // Enable > > vftstat extension > > // #define SQLITE_LIKE_DOESNT_MATCH_BLOBS 1 // > default: > > 0 (undefined) > > #define SQLITE_STAT4_SAMPLES 64 // default: > 24 > > samples > > // #define SQLITE_64BIT_STATS 1 > > // #define SQLITE_ENABLE_UNLOCK_NOTIFY 1 // See > > Documentation before enabling > > // #define SQLITE_ENABLE_UPDATE_DELETE_LIMIT 1 // > Requires > > Special Amalgamation / Parser Support > > #define SQLITE_SOUNDEX 1 > > // #define SQLITE_DISABLE_LFS 1 > > // #define SQLITE_DISABLE_PAGECACHE_OVERFLOW_STATS 1 > > // #define SQLITE_DISABLE_DIRSYNC 1 > > // #define SQLITE_CASE_SENSITIVE_LIKE 1 > > // #define SQLITE_NOW_STABILITY_STEP 1 // Make > > 'now' stable only within step, not entire statement > > // #define SQLITE_SECURE_DELETE 1 > > #define SQLITE_TEMP_STORE 2 // 0 = Files > > Always, 1 = Files, 2 = Memory, 3 Memory Always > > #define SQLITE_USE_URI 1 // Enable > URI > > Filenames > > #define SQLITE_ALLOW_URI_AUTHORITY 1 // Allow > > Authority (Host) in URI > > // #define SQLITE_MMAP_READWRITE 1 // mmaps > > are writeable as well as readable > > > > // *** SQLITE MAXIMUMS AND LIMITS CONFIGURATION *** > > > > // #define SQLITE_FTS3_MAX_EXPR_DEPTH 15 // > default: > > 12 > > #define SQLITE_MAX_ATTACHED 15 // default: > 10 > > max: 62 > > // #define SQLITE_MAX_COLUMN 2000 // > default: > > 2000 max: 32767 > > // #define SQLITE_MAX_COMPOUND_SELECT 500 // > default: > > 500 > > // #define SQLITE_MAX_EXPR_DEPTH 1000 // > default: > > 1000 > > // #define SQLITE_FTS3_MAX_EXPR_DEPTH 12 // > default: > > 12 > > // #define SQLITE_MAX_FUNCTION_ARG 100 // > default: > > 100 max: 127 > > // #define SQLITE_MAX_LENGTH 0x3fffffff // > default: > > 1000000000 max: 2147483647 (2^31-1) > > // #define SQLITE_MAX_LIKE_PATTERN_LENGTH 16384 // > default: > > 50000 > > // #define SQLITE_MAX_MMAP_SIZE 0x7fff0000 // > default: > > 0x7fff0000 > > // #define SQLITE_MAX_PAGE_COUNT 1073741823 // > default: > > 1073741823 max: 2147483646 (2^31-2) > > // #define SQLITE_MAX_SQL_LENGTH 131072 // > default: > > 1000000 max: 2^30 > > // #define SQLITE_MAX_TRIGGER_DEPTH 1000 // > default: > > 1000 > > // #define SQLITE_MAX_VARIABLE_NUMBER 999 // > default: > > 999 > > // #define SQLITE_MAX_SCHEMA_RETRY 50 // > default: > > 50 > > // #define SQLITE_MAX_WORKER_THREADS 8 // > default: > > 11 > > // #define YYSTACKDEPTH 100 // > defautl: > > 100 > > > > // *** SQLITE OPERATING SYSTEM AND INTERNALS CONFIGURATION *** > > > > // #define SQLITE_OS_OTHER 0 > > #define SQLITE_OS_WIN 1 > > #define SQLITE_OS_WINNT 1 > > // #define SQLITE_OS_WINCE 1 > > // #define SQLITE_OS_WINRT 1 > > #define SQLITE_WIN32_MALLOC 1 // Use Win32 > > Heap Allocator > > #define SQLITE_WIN32_HEAP_CREATE 1 // Use > > Separate Win32 Heap > > // #define SQLITE_WIN32_MALLOC_VALIDATE 1 // > Validate > > Win32 Heap during SQLITE_DEBUG assert > > #define SQLITE_WIN32_HEAP_INIT_SIZE 268435456 // Initial > > Win32 Heap Size = 256 MB > > #define SQLITE_WIN32_HEAP_MAX_SIZE 0 // Max Win32 > > Heap Size (No Limit) > > // #define SQLITE_WIN32_HEAP_FLAGS 0 > > // #define SQLITE_WIN32_FILE_SEQUENTIAL 1 // Force > > Windows SEQUENTIAL access cache behaviour > > #define SQLITE_WIN32_FILE_RANDOM 1 // Force > > Windows RANDOM access cache behaviour > > // #define SQLITE_WIN32_FILE_WRITETHROUGH 1 // Force > > Windows WRITE-THROUGH Behaviour > > // #define SQLITE_DIRECT_OVERFLOW_READ 1 // Do Not > > PageCache Overflow Pages > > // #define SQLITE_SYSTEM_MALLOC 1 // Use > > Default System Heap (default if no other specified) > > // #define SQLITE_MALLOC_SOFT_LIMIT 1024 > > // #define SQLITE_POWERSAFE_OVERWRITE 0 > > // #define SQLITE_4_BYTE_ALIGNED_MALLOC 1 > > // #define SQLITE_USE_ALLOCA 1 // Use > > AllocA to Allocate Parse object os Stack > > #define SQLITE_USE_QUADMATH 1 // Use 128- > bit > > Floats if available > > > > > > // *** SQLITE OMIT FEATURES *** > > > > // #define SQLITE_OMIT_ALTERTABLE > > // #define SQLITE_OMIT_ANALYZE > > // #define SQLITE_OMIT_ATTACH > > // #define SQLITE_OMIT_AUTHORIZATION > > // #define SQLITE_OMIT_AUTOINCREMENT > > // #define SQLITE_OMIT_AUTOINIT > > // #define SQLITE_OMIT_AUTOMATIC_INDEX > > // #define SQLITE_OMIT_AUTORESET > > // #define SQLITE_OMIT_AUTOVACUUM > > // #define SQLITE_OMIT_BETWEEN_OPTIMIZATION > > // #define SQLITE_OMIT_BLOB_LITERAL > > // #define SQLITE_OMIT_BTREECOUNT > > // #define SQLITE_OMIT_BUILTIN_TEST > > // #define SQLITE_OMIT_CAST > > // #define SQLITE_OMIT_CHECK > > // #define SQLITE_OMIT_COMPILEOPTION_DIAGS > > // #define SQLITE_OMIT_COMPLETE > > // #define SQLITE_OMIT_COMPOUND_SELECT > > // #define SQLITE_OMIT_DATETIME_FUNCS > > // #define SQLITE_OMIT_DECLTYPE > > // #define SQLITE_OMIT_DEPRECATED > > // #define SQLITE_OMIT_DISKIO > > // #define SQLITE_OMIT_EXPLAIN > > // #define SQLITE_OMIT_FLAG_PRAGMAS > > // #define SQLITE_OMIT_FLOATING_POINT > > // #define SQLITE_OMIT_FOREIGN_KEY > > // #define SQLITE_OMIT_GET_TABLE > > // #define SQLITE_OMIT_INCRBLOB > > // #define SQLITE_OMIT_INTEGRITY_CHECK > > // #define SQLITE_OMIT_LIKE_OPTIMIZATION > > // #define SQLITE_OMIT_LOAD_EXTENSION > > // #define SQLITE_OMIT_LOCALTIME > > // #define SQLITE_OMIT_LOOKASIDE > > // #define SQLITE_OMIT_MEMORYDB > > // #define SQLITE_OMIT_MERGE_SORT > > // #define SQLITE_OMIT_OR_OPTIMIZATION > > // #define SQLITE_OMIT_PAGER_PRAGMAS > > // #define SQLITE_OMIT_PRAGMA > > // #define SQLITE_OMIT_PROGRESS_CALLBACK > > // #define SQLITE_OMIT_QUICKBALANCE > > // #define SQLITE_OMIT_REINDEX > > // #define SQLITE_OMIT_SCHEMA_PRAGMAS > > // #define SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS > > // #define SQLITE_OMIT_SHARED_CACHE > > // #define SQLITE_OMIT_SHUTDOWN_DIRECTORIES > > // #define SQLITE_OMIT_SUBQUERY > > // #define SQLITE_OMIT_TCL_VARIABLE > > // #define SQLITE_OMIT_TEMPDB > > // #define SQLITE_OMIT_TRACE > > // #define SQLITE_OMIT_TRIGGER > > // #define SQLITE_OMIT_TRUNCATE_OPTIMIZATION > > // #define SQLITE_OMIT_UTF16 > > // #define SQLITE_OMIT_VACUUM > > // #define SQLITE_OMIT_VIEW > > // #define SQLITE_OMIT_VIRTUALTABLE > > // #define SQLITE_OMIT_WAL > > // #define SQLITE_OMIT_WSD > > // #define SQLITE_OMIT_XFER_OPT > > > > // *** SQLITE DEBUGGING FEATURES *** > > > > // #define SQLITE_DEBUG 1 > > // #define SQLITE_ENABLE_EXPENSIVE_ASSERT 1 > > // #define SQLITE_ENABLE_OVERSIZE_CELL_CHECK 1 > > // #define SQLITE_ENABLE_SELECTTRACE 1 // Enable > > Select Trace (.selecttrace 0x100) needs SQLITE_DEBUG > > // #define SQLITE_ENABLE_SQLLOG 1 // Enable > > SQLITE_CONFIG_SQLLOG (see documentation) > > // #define SQLITE_ENABLE_STMT_SCANSTATUS 1 // Enable > > Collection of Statement Scan Status > > // #define SQLITE_ENABLE_WHERETRACE 1 > > // #define SQLITE_IOTRACE 1 > > // #define SQLITE_MEMDEBUG 1 > > // #define SQLITE_REVERSE_UNORDERED_SELECTS 1 > > // #define SQLITE_USE_FCNTL_TRACE 1 // Enable > > extra vfslog fcntrl trace > > // #define SQLITE_YYTRACKMAXSTACKDEPTH 1 > > > > #if defined(_WIN32) && defined(__GNUC__) > > #define UNICODE_STRING_MAX_BYTES ((WORD) 65534) > > #define UNICODE_STRING_MAX_CHARS (32767) > > #define HAVE_FDATASYNC 1 > > #define HAVE_GMTIME_R 1 > > #define HAVE_LOCALTIME_S 1 > > #define HAVE_ISNAN 1 > > #define HAVE_MALLOC_USABLE_SIZE 1 > > #define HAVE_USLEEP 1 > > #define HAVE_UTIME 1 > > #endif > > > > #if defined(_MSC_VER) > > #define HAVE_FDATASYNC 1 > > #define HAVE_GMTIME_R 1 > > #define HAVE_LOCALTIME_S 1 > > #define HAVE_MALLOC_USABLE_SIZE 1 > > #define HAVE_USLEEP 1 > > #define HAVE_UTIME 1 > > #endif > > > > #if defined(__GNUC__) && defined(SQLITE_USE_QUADMATH) > > #define LONGDOUBLE_TYPE __float128 > > #endif > > #endif > > > > > > > -----Original Message----- > > > From: sqlite-users [mailto:sqlite-users- > boun...@mailinglists.sqlite.org] > > > On Behalf Of David Empson > > > Sent: Tuesday, 11 October, 2016 18:41 > > > To: SQLite mailing list > > > Subject: Re: [sqlite] LIMIT doesn't return expected rows > > > > > > Following up: same for the Mac distribution of 3.14.2 command line > tool. > > > Using the pre-release snapshot of 3.15.0 from the main download page > to > > > build the sqlite3 3.15.0 on the Mac, I get the same answer: 1,2,3. > > > > > > SQLite version 3.15.0 2016-10-10 14:34:00 > > > Enter ".help" for usage hints. > > > Connected to a transient in-memory database. > > > Use ".open FILENAME" to reopen on a persistent database. > > > sqlite> .read test.sql > > > select sqlite_source_id(); > > > 2016-10-10 14:34:00 aebe429e52ffef026cb0803fb164339d61bd2e88 > > > create table i (id integer primary key autoincrement, flags integer); > > > insert into i values (1,1),(2,1),(3,1),(4,1),(5,5),(6,6),(7,4); > > > create table m (id integer); > > > insert into m values (1),(2),(3),(4),(5),(6),(7); > > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC; > > > 6 > > > 5 > > > 7 > > > 1 > > > 2 > > > 3 > > > 4 > > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC > > limit > > > 3; > > > 1 > > > 2 > > > 3 > > > > > > > > > > On 12/10/2016, at 1:23 PM, David Empson <demp...@emptech.co.nz> > wrote: > > > > > > > > Keith - using your example, I get the same result as Tobias: the > > second > > > select produces 1,2,3. This is with the sqlite3.exe Windows command > line > > > tool for SQLite 3.14.2 downloaded from sqlite.org. Same > > sqlite_source_id() > > > too. I’m not set up to build SQLite from source, so can’t easily test > > > 3.15.0, but If I do the same with a copy of 3.8.11.1 I have handy I > get > > > the correct result: 6, 5, 7. > > > > > > > > SQLite version 3.14.2 2016-09-12 18:50:49 > > > > Enter ".help" for usage hints. > > > > Connected to a transient in-memory database. > > > > Use ".open FILENAME" to reopen on a persistent database. > > > > sqlite> .read test.sql > > > > select sqlite_source_id(); > > > > 2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6 > > > > create table i (id integer primary key autoincrement, flags > integer); > > > > insert into i values (1,1),(2,1),(3,1),(4,1),(5,5),(6,6),(7,4); > > > > create table m (id integer); > > > > insert into m values (1),(2),(3),(4),(5),(6),(7); > > > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC; > > > > 6 > > > > 5 > > > > 7 > > > > 1 > > > > 2 > > > > 3 > > > > 4 > > > > SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC > > > limit 3; > > > > 1 > > > > 2 > > > > 3 > > > > > > > >> On 12/10/2016, at 12:59 PM, Keith Medcalf <kmedc...@dessus.com> > > wrote: > > > >> > > > >> SQLite version 3.14.2 2016-09-12 18:50:49 > > > >> Enter ".help" for usage hints. > > > >> Connected to a transient in-memory database. > > > >> Use ".open FILENAME" to reopen on a persistent database. > > > >> sqlite> .read \\test.sql > > > >> select sqlite_source_id(); > > > >> 2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6 > > > >> create table i (id integer primary key autoincrement, flags > integer); > > > >> insert into i values (1,1),(2,1),(3,1),(4,1),(5,5),(6,6),(7,4); > > > >> create table m (id integer); > > > >> insert into m values (1),(2),(3),(4),(5),(6),(7); > > > >> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags > DESC; > > > >> 6 > > > >> 5 > > > >> 7 > > > >> 1 > > > >> 2 > > > >> 3 > > > >> 4 > > > >> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY flags DESC > > > limit 3; > > > >> 6 > > > >> 5 > > > >> 7 > > > >> > > > >> I just compiled 3.14.2 from my source repository and it works > > > correctly. > > > >> > > > >> Can you check the result of "select sqlite_source_id();", which > > should > > > be: > > > >> > > > >> 2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6 > > > >> > > > >> https://www.sqlite.org/src/info/29dbef4b8585f753 > > > >> > > > >>> -----Original Message----- > > > >>> From: sqlite-users [mailto:sqlite-users- > > > boun...@mailinglists.sqlite.org] > > > >>> On Behalf Of Tobias Ellinghaus > > > >>> Sent: Tuesday, 11 October, 2016 11:41 > > > >>> To: sqlite-users@mailinglists.sqlite.org > > > >>> Subject: Re: [sqlite] LIMIT doesn't return expected rows > > > >>> > > > >>> Am Dienstag, 11. Oktober 2016, 06:50:01 CEST schrieb Keith > Medcalf: > > > >>>> This was fixed September 7. The fix appears in 3.14.2 and also > on > > > the > > > >>>> current 3.15.0. > > > >>> > > > >>> Does that mean that 3.14.2 is supposed to give the "6, 5, 7" > result > > in > > > the > > > >>> last query? I am asking as that's the version I am using > (installed > > > from > > > >>> Debian/sid) and I get "1, 2, 3" here. > > > >>> > > > >>>> https://www.sqlite.org/releaselog/3_14_2.html > > > >>>> > > > >>>> The ORDER BY LIMIT optimization is not valid unless the inner- > most > > IN > > > >>>> operator loop is actually used by the query plan. Ticket > > > >>>> https://sqlite.org/src/info/0c4df46116e90f92 > > > >>>> > > > >>>> > > > >>>> SQLite version 3.15.0 2016-10-10 14:48:36 > > > >>>> Enter ".help" for usage hints. > > > >>>> Connected to a transient in-memory database. > > > >>>> Use ".open FILENAME" to reopen on a persistent database. > > > >>>> sqlite> create table i (id integer primary key, flags integer); > > > >>>> sqlite> insert into i values > > > (1,1),(2,1),(3,1),(4,1),(5,5),(6,6),(7,4); > > > >>>> sqlite> create table m (id integer); > > > >>>> sqlite> insert into m values (1),(2),(3),(4),(5),(6),(7); > > > >>>> sqlite> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY > > > flags > > > >>> DESC; > > > >>>> 6 > > > >>>> 5 > > > >>>> 7 > > > >>>> 1 > > > >>>> 2 > > > >>>> 3 > > > >>>> 4 > > > >>>> sqlite> SELECT id FROM i WHERE id IN (SELECT id FROM m) ORDER BY > > > flags > > > >>> DESC > > > >>>> limit 3; 6 > > > >>>> 5 > > > >>>> 7 > > > >>> > > > >>> Tobias > > > >>> > > > >>> [...] > > > >> > > > >> > > > >> > > > >> _______________________________________________ > > > >> sqlite-users mailing list > > > >> sqlite-users@mailinglists.sqlite.org > > > >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite- > users > > > > > > > > _______________________________________________ > > > > sqlite-users mailing list > > > > sqlite-users@mailinglists.sqlite.org > > > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > > > -- > > > David Empson > > > demp...@emptech.co.nz > > > Snail mail: P.O. Box 27-103, Wellington 6141, New Zealand > > > > > > _______________________________________________ > > > sqlite-users mailing list > > > sqlite-users@mailinglists.sqlite.org > > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > > > > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@mailinglists.sqlite.org > > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users