James K. Lowden wrote:
>       select a, r from (
>               SELECT a, random() as r FROM a
>       ) as R
>       WHERE r <> r;
>
> will yield zero rows, every time.

  $ sqlite3
  SQLite version 3.8.12 2015-09-12 19:50:58
  ...
  sqlite> create table a(a);
  sqlite> insert into a values (1),(2),(3);
  sqlite> select a, r from (SELECT a, random() as r FROM a) as R WHERE r <> r;
  1|-909199267849538533
  2|8366540922678358399
  3|-6124149463908475628

It happens to work only without a FROM clause (where SQLite uses
a coroutine instead of a plain table scan):

  sqlite> select r, r from (select random() as r from a);
  -52277736304787193|5169235301562468199
  563040897996752099|-5125387114614101287
  8645211790850467701|5445986856138557805
  sqlite> select r, r from (select random() as r);
  -283842963402875928|-283842963402875928


Regards,
Clemens

Reply via email to