sqllogictest
Hex Artifact Content
Not logged in

Artifact 694a9156f9af753efd9f0db024f3e72c63915568:


0000: 68 61 73 68 2d 74 68 72 65 73 68 6f 6c 64 20 38  hash-threshold 8
0010: 0d 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b  ....statement ok
0020: 0d 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 74  ..CREATE TABLE t
0030: 61 62 30 28 63 6f 6c 30 20 49 4e 54 45 47 45 52  ab0(col0 INTEGER
0040: 2c 20 63 6f 6c 31 20 49 4e 54 45 47 45 52 2c 20  , col1 INTEGER, 
0050: 63 6f 6c 32 20 49 4e 54 45 47 45 52 29 0d 0a 0d  col2 INTEGER)...
0060: 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 43  .statement ok..C
0070: 52 45 41 54 45 20 54 41 42 4c 45 20 74 61 62 31  REATE TABLE tab1
0080: 28 63 6f 6c 30 20 49 4e 54 45 47 45 52 2c 20 63  (col0 INTEGER, c
0090: 6f 6c 31 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c  ol1 INTEGER, col
00a0: 32 20 49 4e 54 45 47 45 52 29 0d 0a 0d 0a 73 74  2 INTEGER)....st
00b0: 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 43 52 45 41  atement ok..CREA
00c0: 54 45 20 54 41 42 4c 45 20 74 61 62 32 28 63 6f  TE TABLE tab2(co
00d0: 6c 30 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c 31  l0 INTEGER, col1
00e0: 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c 32 20 49   INTEGER, col2 I
00f0: 4e 54 45 47 45 52 29 0d 0a 0d 0a 73 74 61 74 65  NTEGER)....state
0100: 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52 54 20  ment ok..INSERT 
0110: 49 4e 54 4f 20 74 61 62 30 20 56 41 4c 55 45 53  INTO tab0 VALUES
0120: 28 39 37 2c 31 2c 39 39 29 0d 0a 0d 0a 73 74 61  (97,1,99)....sta
0130: 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52  tement ok..INSER
0140: 54 20 49 4e 54 4f 20 74 61 62 30 20 56 41 4c 55  T INTO tab0 VALU
0150: 45 53 28 31 35 2c 38 31 2c 34 37 29 0d 0a 0d 0a  ES(15,81,47)....
0160: 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e  statement ok..IN
0170: 53 45 52 54 20 49 4e 54 4f 20 74 61 62 30 20 56  SERT INTO tab0 V
0180: 41 4c 55 45 53 28 38 37 2c 32 31 2c 31 30 29 0d  ALUES(87,21,10).
0190: 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d  ...statement ok.
01a0: 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62  .INSERT INTO tab
01b0: 31 20 56 41 4c 55 45 53 28 35 31 2c 31 34 2c 39  1 VALUES(51,14,9
01c0: 36 29 0d 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20  6)....statement 
01d0: 6f 6b 0d 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20  ok..INSERT INTO 
01e0: 74 61 62 31 20 56 41 4c 55 45 53 28 38 35 2c 35  tab1 VALUES(85,5
01f0: 2c 35 39 29 0d 0a 0d 0a 73 74 61 74 65 6d 65 6e  ,59)....statemen
0200: 74 20 6f 6b 0d 0a 49 4e 53 45 52 54 20 49 4e 54  t ok..INSERT INT
0210: 4f 20 74 61 62 31 20 56 41 4c 55 45 53 28 39 31  O tab1 VALUES(91
0220: 2c 34 37 2c 36 38 29 0d 0a 0d 0a 73 74 61 74 65  ,47,68)....state
0230: 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52 54 20  ment ok..INSERT 
0240: 49 4e 54 4f 20 74 61 62 32 20 56 41 4c 55 45 53  INTO tab2 VALUES
0250: 28 36 34 2c 37 37 2c 34 30 29 0d 0a 0d 0a 73 74  (64,77,40)....st
0260: 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45  atement ok..INSE
0270: 52 54 20 49 4e 54 4f 20 74 61 62 32 20 56 41 4c  RT INTO tab2 VAL
0280: 55 45 53 28 37 35 2c 36 37 2c 35 38 29 0d 0a 0d  UES(75,67,58)...
0290: 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49  .statement ok..I
02a0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62 32 20  NSERT INTO tab2 
02b0: 56 41 4c 55 45 53 28 34 36 2c 35 31 2c 32 33 29  VALUES(46,51,23)
02c0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
02d0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
02e0: 28 20 2b 20 33 39 20 29 20 2a 20 31 35 20 46 52  ( + 39 ) * 15 FR
02f0: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35  OM tab1..----..5
0300: 38 35 0d 0a 35 38 35 0d 0a 35 38 35 0d 0a 0d 0a  85..585..585....
0310: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
0320: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
0330: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
0340: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
0350: 2d 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  -1..SELECT DISTI
0360: 4e 43 54 20 32 30 20 44 49 56 20 2d 20 39 37 20  NCT 20 DIV - 97 
0370: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
0380: 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
0390: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
03a0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
03b0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 0d 0a 53 45  sort label-1..SE
03c0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 32 30  LECT DISTINCT 20
03d0: 20 2f 20 2d 20 39 37 20 46 52 4f 4d 20 74 61 62   / - 97 FROM tab
03e0: 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  0..----..0....qu
03f0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
0400: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
0410: 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
0420: 52 45 20 2d 20 63 6f 6c 32 20 2b 20 63 6f 6c 31  RE - col2 + col1
0430: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
0440: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
0450: 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
0460: 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
0470: 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72  962d0a49....quer
0480: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
0490: 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20  LECT ALL + col1 
04a0: 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 32 20 41 53  AS col0, col2 AS
04b0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
04c0: 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 39 36 0d 0a 34  .----..14..96..4
04d0: 37 0d 0a 36 38 0d 0a 35 0d 0a 35 39 0d 0a 0d 0a  7..68..5..59....
04e0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
04f0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
0500: 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
0510: 6f 72 74 20 6c 61 62 65 6c 2d 34 0d 0a 53 45 4c  ort label-4..SEL
0520: 45 43 54 20 2b 20 2b 20 4d 49 4e 28 20 41 4c 4c  ECT + + MIN( ALL
0530: 20 2d 20 2b 20 33 32 20 29 20 41 53 20 63 6f 6c   - + 32 ) AS col
0540: 30 2c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  0, + COUNT( * ) 
0550: 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  * + COUNT( * ) F
0560: 52 4f 4d 20 28 20 74 61 62 30 20 41 53 20 63 6f  ROM ( tab0 AS co
0570: 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
0580: 62 30 20 63 6f 72 31 20 29 0d 0a 2d 2d 2d 2d 0d  b0 cor1 )..----.
0590: 0a 2d 33 32 0d 0a 38 31 0d 0a 0d 0a 73 6b 69 70  .-32..81....skip
05a0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
05b0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
05c0: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
05d0: 6c 2d 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  l-4..SELECT + + 
05e0: 4d 49 4e 20 28 20 41 4c 4c 20 2d 20 2b 20 33 32  MIN ( ALL - + 32
05f0: 20 29 20 41 53 20 63 6f 6c 30 2c 20 2b 20 43 4f   ) AS col0, + CO
0600: 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 43 4f  UNT ( * ) * + CO
0610: 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 28  UNT ( * ) FROM (
0620: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52   tab0 AS cor0 CR
0630: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 63 6f  OSS JOIN tab0 co
0640: 72 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 32 0d  r1 )..----..-32.
0650: 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .81....query III
0660: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
0670: 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c   + + col0 AS col
0680: 30 2c 20 63 6f 6c 32 2c 20 2d 20 2b 20 63 6f 6c  0, col2, - + col
0690: 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
06a0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  or0..----..9 val
06b0: 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 30  ues hashing to 0
06c0: 37 66 34 64 35 37 38 35 62 31 36 31 62 31 66 64  7f4d5785b161b1fd
06d0: 66 32 63 63 65 35 65 39 35 62 62 61 31 66 64 0d  f2cce5e95bba1fd.
06e0: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
06f0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
0700: 63 6f 6c 30 2c 20 33 37 20 2b 20 63 6f 6c 32 20  col0, 37 + col2 
0710: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
0720: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
0730: 0a 34 36 0d 0a 36 30 0d 0a 36 34 0d 0a 37 37 0d  .46..60..64..77.
0740: 0a 37 35 0d 0a 39 35 0d 0a 0d 0a 6f 6e 6c 79 69  .75..95....onlyi
0750: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
0760: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
0770: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
0780: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 0d 0a 53  wsort label-7..S
0790: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
07a0: 20 63 6f 6c 32 20 44 49 56 20 2d 20 34 36 20 41   col2 DIV - 46 A
07b0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
07c0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
07d0: 31 0d 0a 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  1..2....skipif m
07e0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
07f0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
0800: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 0d 0a  owsort label-7..
0810: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
0820: 2d 20 63 6f 6c 32 20 2f 20 2d 20 34 36 20 41 53  - col2 / - 46 AS
0830: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
0840: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
0850: 0d 0a 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..2....query I r
0860: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
0870: 4c 4c 20 2d 20 39 38 20 41 53 20 63 6f 6c 31 20  LL - 98 AS col1 
0880: 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
0890: 2d 2d 2d 2d 0d 0a 2d 39 38 0d 0a 2d 39 38 0d 0a  ----..-98..-98..
08a0: 2d 39 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  -98....query III
08b0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
08c0: 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
08d0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
08e0: 45 52 45 20 4e 4f 54 20 2d 20 37 38 20 49 53 20  ERE NOT - 78 IS 
08f0: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
0900: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
0910: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
0920: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
0930: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
0940: 65 6c 2d 31 30 0d 0a 53 45 4c 45 43 54 20 44 49  el-10..SELECT DI
0950: 53 54 49 4e 43 54 20 2d 20 43 41 53 54 28 20 4e  STINCT - CAST( N
0960: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
0970: 2f 20 2d 20 30 20 63 6f 6c 30 20 46 52 4f 4d 20  / - 0 col0 FROM 
0980: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
0990: 52 45 20 4e 4f 54 20 28 20 2d 20 43 41 53 54 28  RE NOT ( - CAST(
09a0: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
09b0: 29 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ) ) IS NOT NULL.
09c0: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
09d0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
09e0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
09f0: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
0a00: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
0a10: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
0a20: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
0a30: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
0a40: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 0d  owsort label-10.
0a50: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
0a60: 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
0a70: 53 20 49 4e 54 45 47 45 52 20 29 20 2f 20 2d 20  S INTEGER ) / - 
0a80: 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  0 col0 FROM tab0
0a90: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
0aa0: 4f 54 20 28 20 2d 20 43 41 53 54 20 28 20 4e 55  OT ( - CAST ( NU
0ab0: 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
0ac0: 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  ) IS NOT NULL..-
0ad0: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c  ---..NULL....onl
0ae0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
0af0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
0b00: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
0b10: 20 6c 61 62 65 6c 2d 31 31 0d 0a 53 45 4c 45 43   label-11..SELEC
0b20: 54 20 2d 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2b  T - COUNT( ALL +
0b30: 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   + col1 ) AS col
0b40: 32 2c 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2d 20  2, COUNT( ALL - 
0b50: 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  - col1 ) FROM ta
0b60: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 33 0d  b1..----..-3..3.
0b70: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
0b80: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
0b90: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
0ba0: 72 74 20 6c 61 62 65 6c 2d 31 31 0d 0a 53 45 4c  rt label-11..SEL
0bb0: 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 41 4c  ECT - COUNT ( AL
0bc0: 4c 20 2b 20 2b 20 63 6f 6c 31 20 29 20 41 53 20  L + + col1 ) AS 
0bd0: 63 6f 6c 32 2c 20 43 4f 55 4e 54 20 28 20 41 4c  col2, COUNT ( AL
0be0: 4c 20 2d 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f  L - - col1 ) FRO
0bf0: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab1..----..-3
0c00: 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..3....onlyif my
0c10: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
0c20: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
0c30: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0c40: 74 20 6c 61 62 65 6c 2d 31 32 0d 0a 53 45 4c 45  t label-12..SELE
0c50: 43 54 20 2d 20 63 6f 6c 31 20 44 49 56 20 2b 20  CT - col1 DIV + 
0c60: 2d 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 33 36 20  - col0 * - - 36 
0c70: 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * + col2 FROM ta
0c80: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  b1..----..0..0..
0c90: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
0ca0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
0cb0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
0cc0: 6f 72 74 20 6c 61 62 65 6c 2d 31 32 0d 0a 53 45  ort label-12..SE
0cd0: 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2f 20 2b 20  LECT - col1 / + 
0ce0: 2d 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 33 36 20  - col0 * - - 36 
0cf0: 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * + col2 FROM ta
0d00: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  b1..----..0..0..
0d10: 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
0d20: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
0d30: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
0d40: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33  rowsort label-13
0d50: 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
0d60: 28 20 2a 20 29 20 2a 20 2d 20 33 31 20 41 53 20  ( * ) * - 31 AS 
0d70: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
0d80: 2d 2d 2d 2d 0d 0a 39 33 0d 0a 0d 0a 73 6b 69 70  ----..93....skip
0d90: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
0da0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
0db0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
0dc0: 2d 31 33 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f  -13..SELECT - CO
0dd0: 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 33 31  UNT ( * ) * - 31
0de0: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
0df0: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39 33 0d 0a 0d 0a  b0..----..93....
0e00: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
0e10: 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
0e20: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
0e30: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
0e40: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
0e50: 62 65 6c 2d 31 34 0d 0a 53 45 4c 45 43 54 20 41  bel-14..SELECT A
0e60: 4c 4c 20 38 31 20 2b 20 2b 20 2d 20 43 41 53 54  LL 81 + + - CAST
0e70: 28 20 2b 20 33 31 20 41 53 20 53 49 47 4e 45 44  ( + 31 AS SIGNED
0e80: 20 29 20 2a 20 2b 20 37 33 20 2b 20 2d 20 37 36   ) * + 73 + - 76
0e90: 20 41 53 20 63 6f 6c 30 2c 20 2b 20 37 37 20 2a   AS col0, + 77 *
0ea0: 20 2b 20 28 20 43 4f 55 4e 54 28 20 2a 20 29 20   + ( COUNT( * ) 
0eb0: 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  ) col2 FROM tab0
0ec0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32   cor0..----..-22
0ed0: 35 38 0d 0a 32 33 31 0d 0a 0d 0a 73 6b 69 70 69  58..231....skipi
0ee0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
0ef0: 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
0f00: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
0f10: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
0f20: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
0f30: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
0f40: 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
0f50: 6f 72 74 20 6c 61 62 65 6c 2d 31 34 0d 0a 53 45  ort label-14..SE
0f60: 4c 45 43 54 20 41 4c 4c 20 38 31 20 2b 20 2b 20  LECT ALL 81 + + 
0f70: 2d 20 43 41 53 54 20 28 20 2b 20 33 31 20 41 53  - CAST ( + 31 AS
0f80: 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 37   INTEGER ) * + 7
0f90: 33 20 2b 20 2d 20 37 36 20 41 53 20 63 6f 6c 30  3 + - 76 AS col0
0fa0: 2c 20 2b 20 37 37 20 2a 20 2b 20 28 20 43 4f 55  , + 77 * + ( COU
0fb0: 4e 54 20 28 20 2a 20 29 20 29 20 63 6f 6c 32 20  NT ( * ) ) col2 
0fc0: 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
0fd0: 2d 2d 2d 2d 0d 0a 2d 32 32 35 38 0d 0a 32 33 31  ----..-2258..231
0fe0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
0ff0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1000: 2d 20 2d 20 34 31 20 2b 20 2b 20 2d 20 63 6f 6c  - - 41 + + - col
1010: 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
1020: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a  or0..----..-58..
1030: 2d 36 0d 0a 33 31 0d 0a 0d 0a 71 75 65 72 79 20  -6..31....query 
1040: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1050: 54 20 41 4c 4c 20 34 20 41 53 20 63 6f 6c 31 20  T ALL 4 AS col1 
1060: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1070: 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  0 WHERE NULL IS 
1080: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 34 0d 0a 34  NULL..----..4..4
1090: 0d 0a 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ..4....query III
10a0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
10b0: 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
10c0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
10d0: 45 52 45 20 2b 20 36 39 20 49 53 20 4e 55 4c 4c  ERE + 69 IS NULL
10e0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
10f0: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1100: 43 54 20 33 38 20 41 53 20 63 6f 6c 32 2c 20 2d  CT 38 AS col2, -
1110: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
1120: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b 20  OM tab2 WHERE + 
1130: 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col2 IS NOT NULL
1140: 0d 0a 2d 2d 2d 2d 0d 0a 33 38 0d 0a 2d 34 36 0d  ..----..38..-46.
1150: 0a 33 38 0d 0a 2d 36 34 0d 0a 33 38 0d 0a 2d 37  .38..-64..38..-7
1160: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
1170: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1180: 54 49 4e 43 54 20 2b 20 33 30 20 41 53 20 63 6f  TINCT + 30 AS co
1190: 6c 30 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61  l0 FROM tab0, ta
11a0: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
11b0: 0d 0a 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..30....query I 
11c0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
11d0: 2d 20 33 30 20 2b 20 2b 20 35 20 2a 20 2d 20 28  - 30 + + 5 * - (
11e0: 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62   col1 ) FROM tab
11f0: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
1200: 0a 2d 32 38 35 0d 0a 2d 33 36 35 0d 0a 2d 34 31  .-285..-365..-41
1210: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  5....query III r
1220: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1230: 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  LL * FROM tab1 A
1240: 53 20 63 6f 72 30 20 57 48 45 52 45 20 37 30 20  S cor0 WHERE 70 
1250: 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
1260: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1270: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 31 36 20  ..SELECT ALL 16 
1280: 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  + + col2 FROM ta
1290: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
12a0: 0d 0a 31 31 35 0d 0a 32 36 0d 0a 36 33 0d 0a 0d  ..115..26..63...
12b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12c0: 0d 0a 53 45 4c 45 43 54 20 2b 20 38 34 20 2b 20  ..SELECT + 84 + 
12d0: 2b 20 2b 20 32 39 20 41 53 20 63 6f 6c 31 20 46  + + 29 AS col1 F
12e0: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
12f0: 0d 0a 2d 2d 2d 2d 0d 0a 31 31 33 0d 0a 31 31 33  ..----..113..113
1300: 0d 0a 31 31 33 0d 0a 0d 0a 71 75 65 72 79 20 49  ..113....query I
1310: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1320: 20 28 20 2d 20 2d 20 39 38 20 29 20 46 52 4f 4d   ( - - 98 ) FROM
1330: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
1340: 2d 2d 2d 0d 0a 39 38 0d 0a 39 38 0d 0a 39 38 0d  ---..98..98..98.
1350: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
1360: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
1370: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1380: 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20   WHERE NULL NOT 
1390: 49 4e 20 28 20 2b 20 63 6f 6c 32 2c 20 2d 20 63  IN ( + col2, - c
13a0: 6f 6c 32 20 2a 20 2d 20 2d 20 38 37 20 29 0d 0a  ol2 * - - 87 )..
13b0: 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ----....skipif p
13c0: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
13d0: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
13e0: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
13f0: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
1400: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1410: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
1420: 6f 6c 30 20 2a 20 2d 20 39 35 20 2d 20 2d 20 2b  ol0 * - 95 - - +
1430: 20 63 6f 6c 30 20 2a 20 2b 20 34 35 20 2b 20 2d   col0 * + 45 + -
1440: 20 2b 20 63 6f 6c 31 20 63 6f 6c 30 20 46 52 4f   + col1 col0 FRO
1450: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32  M tab0..----..12
1460: 31 35 39 0d 0a 31 33 35 37 39 0d 0a 32 30 31 39  159..13579..2019
1470: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
1480: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1490: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
14a0: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
14b0: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
14c0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
14d0: 4c 45 43 54 20 2d 20 39 20 63 6f 6c 32 20 46 52  LECT - 9 col2 FR
14e0: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
14f0: 39 0d 0a 2d 39 0d 0a 2d 39 0d 0a 0d 0a 6f 6e 6c  9..-9..-9....onl
1500: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1510: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1520: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1530: 6c 61 62 65 6c 2d 32 38 0d 0a 53 45 4c 45 43 54  label-28..SELECT
1540: 20 53 55 4d 28 20 2b 20 2b 20 63 6f 6c 30 20 29   SUM( + + col0 )
1550: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
1560: 0d 0a 31 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..199....skipif 
1570: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1580: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1590: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 38  rowsort label-28
15a0: 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20 28 20 2b  ..SELECT SUM ( +
15b0: 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   + col0 ) FROM t
15c0: 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 39 0d 0a  ab0..----..199..
15d0: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
15e0: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
15f0: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
1600: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
1610: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
1620: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1630: 43 54 20 2b 20 2b 20 63 6f 6c 32 20 2a 20 2d 20  CT + + col2 * - 
1640: 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 32 20 63 6f  col0 + - col2 co
1650: 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l2 FROM tab1 WHE
1660: 52 45 20 4e 55 4c 4c 20 3e 20 2b 20 2d 20 63 6f  RE NULL > + - co
1670: 6c 30 20 2b 20 2d 20 37 32 0d 0a 2d 2d 2d 2d 0d  l0 + - 72..----.
1680: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
1690: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 34 32  ort..SELECT - 42
16a0: 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 2c   - col0 AS col0,
16b0: 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52   col2 AS col1 FR
16c0: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
16d0: 31 32 39 0d 0a 31 30 0d 0a 2d 31 33 39 0d 0a 39  129..10..-139..9
16e0: 39 0d 0a 2d 35 37 0d 0a 34 37 0d 0a 0d 0a 71 75  9..-57..47....qu
16f0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1700: 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2d  ELECT ALL col0 -
1710: 20 2d 20 63 6f 6c 31 20 2a 20 63 6f 6c 30 20 46   - col1 * col0 F
1720: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
1730: 32 33 39 32 0d 0a 34 39 39 32 0d 0a 35 31 30 30  2392..4992..5100
1740: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
1750: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1760: 20 2d 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 41   - col2 * col1 A
1770: 53 20 63 6f 6c 31 2c 20 2d 20 38 20 46 52 4f 4d  S col1, - 8 FROM
1780: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33   tab1..----..-13
1790: 34 34 0d 0a 2d 38 0d 0a 2d 32 39 35 0d 0a 2d 38  44..-8..-295..-8
17a0: 0d 0a 2d 33 31 39 36 0d 0a 2d 38 0d 0a 0d 0a 6f  ..-3196..-8....o
17b0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
17c0: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
17d0: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
17e0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
17f0: 33 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  33..SELECT ALL -
1800: 20 2d 20 43 41 53 54 28 20 2b 20 43 41 53 54 28   - CAST( + CAST(
1810: 20 2d 20 63 6f 6c 30 20 41 53 20 53 49 47 4e 45   - col0 AS SIGNE
1820: 44 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20  D ) AS SIGNED ) 
1830: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1840: 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0 cor0..----..-1
1850: 35 0d 0a 2d 38 37 0d 0a 2d 39 37 0d 0a 0d 0a 73  5..-87..-97....s
1860: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1870: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1880: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1890: 62 65 6c 2d 33 33 0d 0a 53 45 4c 45 43 54 20 41  bel-33..SELECT A
18a0: 4c 4c 20 2d 20 2d 20 43 41 53 54 20 28 20 2b 20  LL - - CAST ( + 
18b0: 43 41 53 54 20 28 20 2d 20 63 6f 6c 30 20 41 53  CAST ( - col0 AS
18c0: 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 49 4e   INTEGER ) AS IN
18d0: 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20  TEGER ) AS col2 
18e0: 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
18f0: 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 38 37 0d 0a  ----..-15..-87..
1900: 2d 39 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -97....onlyif my
1910: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1920: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1930: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1940: 33 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 53  34..SELECT ALL S
1950: 55 4d 28 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f  UM( - col0 ) FRO
1960: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
1970: 2d 2d 2d 2d 0d 0a 2d 31 39 39 0d 0a 0d 0a 73 6b  ----..-199....sk
1980: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1990: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
19a0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
19b0: 65 6c 2d 33 34 0d 0a 53 45 4c 45 43 54 20 41 4c  el-34..SELECT AL
19c0: 4c 20 53 55 4d 20 28 20 2d 20 63 6f 6c 30 20 29  L SUM ( - col0 )
19d0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
19e0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 39 0d 0a  r0..----..-199..
19f0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1a00: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1a10: 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67  x: DIV for integ
1a20: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
1a30: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1a40: 61 62 65 6c 2d 33 35 0d 0a 53 45 4c 45 43 54 20  abel-35..SELECT 
1a50: 34 35 20 44 49 56 20 2d 20 43 4f 55 4e 54 28 20  45 DIV - COUNT( 
1a60: 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  * ) FROM tab2 AS
1a70: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   cor0..----..-15
1a80: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1a90: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1aa0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1ab0: 72 74 20 6c 61 62 65 6c 2d 33 35 0d 0a 53 45 4c  rt label-35..SEL
1ac0: 45 43 54 20 34 35 20 2f 20 2d 20 43 4f 55 4e 54  ECT 45 / - COUNT
1ad0: 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32   ( * ) FROM tab2
1ae0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1af0: 2d 31 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -15....onlyif my
1b00: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
1b10: 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
1b20: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
1b30: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1b40: 6f 72 74 20 6c 61 62 65 6c 2d 33 36 0d 0a 53 45  ort label-36..SE
1b50: 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20  LECT - COUNT( * 
1b60: 29 20 2b 20 43 41 53 54 28 20 2b 20 31 33 20 41  ) + CAST( + 13 A
1b70: 53 20 53 49 47 4e 45 44 20 29 20 63 6f 6c 31 20  S SIGNED ) col1 
1b80: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
1b90: 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
1ba0: 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  0 AS cor1..----.
1bb0: 0a 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .4....skipif mys
1bc0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1bd0: 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
1be0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
1bf0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
1c00: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
1c10: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
1c20: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1c30: 62 65 6c 2d 33 36 0d 0a 53 45 4c 45 43 54 20 2d  bel-36..SELECT -
1c40: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 43   COUNT ( * ) + C
1c50: 41 53 54 20 28 20 2b 20 31 33 20 41 53 20 49 4e  AST ( + 13 AS IN
1c60: 54 45 47 45 52 20 29 20 63 6f 6c 31 20 46 52 4f  TEGER ) col1 FRO
1c70: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43  M tab1 AS cor0 C
1c80: 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41  ROSS JOIN tab0 A
1c90: 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 34 0d  S cor1..----..4.
1ca0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1cb0: 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 63 6f 6c  rt..SELECT ( col
1cc0: 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  1 ) AS col0 FROM
1cd0: 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
1ce0: 28 20 2d 20 2b 20 63 6f 6c 31 20 29 20 3e 3d 20  ( - + col1 ) >= 
1cf0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
1d00: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1d10: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
1d20: 20 33 39 20 2a 20 63 6f 6c 31 20 41 53 20 63 6f   39 * col1 AS co
1d30: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l1 FROM tab1 cor
1d40: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 33 33 0d 0a 31  0..----..1833..1
1d50: 39 35 0d 0a 35 34 36 0d 0a 0d 0a 71 75 65 72 79  95..546....query
1d60: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1d70: 43 54 20 44 49 53 54 49 4e 43 54 20 39 39 20 2a  CT DISTINCT 99 *
1d80: 20 2d 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c   - + col2 AS col
1d90: 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
1da0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 37 37  or0..----..-2277
1db0: 0d 0a 2d 33 39 36 30 0d 0a 2d 35 37 34 32 0d 0a  ..-3960..-5742..
1dc0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1dd0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1de0: 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
1df0: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
1e00: 4c 4c 20 3c 3d 20 34 33 0d 0a 2d 2d 2d 2d 0d 0a  LL <= 43..----..
1e10: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1e20: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
1e30: 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45  OM tab1 cor0 WHE
1e40: 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45 54 57  RE NOT NULL BETW
1e50: 45 45 4e 20 36 36 20 41 4e 44 20 2b 20 2b 20 63  EEN 66 AND + + c
1e60: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol0..----....que
1e70: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1e80: 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20  LECT ALL + col2 
1e90: 2a 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20  * col0 * + col0 
1ea0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1eb0: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
1ec0: 0a 32 34 39 36 39 36 0d 0a 34 32 36 32 37 35 0d  .249696..426275.
1ed0: 0a 35 36 33 31 30 38 0d 0a 0d 0a 6f 6e 6c 79 69  .563108....onlyi
1ee0: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
1ef0: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
1f00: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
1f10: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 33 0d 0a  wsort label-43..
1f20: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20 63  SELECT ALL + + c
1f30: 6f 6c 30 20 44 49 56 20 2b 20 2d 20 63 6f 6c 31  ol0 DIV + - col1
1f40: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1f50: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
1f60: 0d 0a 2d 34 0d 0a 2d 39 37 0d 0a 30 0d 0a 0d 0a  ..-4..-97..0....
1f70: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1f80: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1f90: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1fa0: 61 62 65 6c 2d 34 33 0d 0a 53 45 4c 45 43 54 20  abel-43..SELECT 
1fb0: 41 4c 4c 20 2b 20 2b 20 63 6f 6c 30 20 2f 20 2b  ALL + + col0 / +
1fc0: 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20   - col1 AS col1 
1fd0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
1fe0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 39 37  0..----..-4..-97
1ff0: 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ..0....query II 
2000: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2010: 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20  DISTINCT + col2 
2020: 2a 20 2b 20 39 37 20 2a 20 2d 20 35 34 2c 20 2d  * + 97 * - 54, -
2030: 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
2040: 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d  OM tab1 cor0..--
2050: 2d 2d 0d 0a 2d 33 30 39 30 34 32 0d 0a 2d 35 39  --..-309042..-59
2060: 0d 0a 2d 33 35 36 31 38 34 0d 0a 2d 36 38 0d 0a  ..-356184..-68..
2070: 2d 35 30 32 38 34 38 0d 0a 2d 39 36 0d 0a 0d 0a  -502848..-96....
2080: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2090: 0a 53 45 4c 45 43 54 20 38 32 20 2a 20 2b 20 34  .SELECT 82 * + 4
20a0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
20b0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
20c0: 0d 0a 33 32 38 0d 0a 33 32 38 0d 0a 33 32 38 0d  ..328..328..328.
20d0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
20e0: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
20f0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2100: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
2110: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
2120: 20 6c 61 62 65 6c 2d 34 36 0d 0a 53 45 4c 45 43   label-46..SELEC
2130: 54 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20  T MIN( DISTINCT 
2140: 63 6f 6c 31 20 29 20 2a 20 2d 20 2b 20 41 56 47  col1 ) * - + AVG
2150: 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20   ( DISTINCT + ( 
2160: 2d 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  - + CAST( NULL A
2170: 53 20 53 49 47 4e 45 44 20 29 20 29 20 29 20 41  S SIGNED ) ) ) A
2180: 53 20 63 6f 6c 32 2c 20 43 4f 55 4e 54 28 20 41  S col2, COUNT( A
2190: 4c 4c 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63  LL - col0 ) AS c
21a0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
21b0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
21c0: 4c 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  L..3....skipif m
21d0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
21e0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
21f0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36  rowsort label-46
2200: 0d 0a 53 45 4c 45 43 54 20 4d 49 4e 20 28 20 44  ..SELECT MIN ( D
2210: 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 29 20 2a  ISTINCT col1 ) *
2220: 20 2d 20 2b 20 41 56 47 20 28 20 44 49 53 54 49   - + AVG ( DISTI
2230: 4e 43 54 20 2b 20 28 20 2d 20 2b 20 43 41 53 54  NCT + ( - + CAST
2240: 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
2250: 45 52 20 29 20 29 20 29 20 41 53 20 63 6f 6c 32  ER ) ) ) AS col2
2260: 2c 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2d 20  , COUNT ( ALL - 
2270: 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46  col0 ) AS col2 F
2280: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2290: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 33 0d  ..----..NULL..3.
22a0: 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
22b0: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
22c0: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
22d0: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
22e0: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
22f0: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
2300: 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30 2c  LECT ALL - col0,
2310: 20 2b 20 38 35 20 2b 20 2d 20 63 6f 6c 32 20 63   + 85 + - col2 c
2320: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
2330: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   cor0..----..-51
2340: 0d 0a 2d 31 31 0d 0a 2d 38 35 0d 0a 32 36 0d 0a  ..-11..-85..26..
2350: 2d 39 31 0d 0a 31 37 0d 0a 0d 0a 71 75 65 72 79  -91..17....query
2360: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
2370: 45 43 54 20 2d 20 63 6f 6c 31 2c 20 63 6f 6c 31  ECT - col1, col1
2380: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2390: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 35  b2..----..-51..5
23a0: 31 0d 0a 2d 36 37 0d 0a 36 37 0d 0a 2d 37 37 0d  1..-67..67..-77.
23b0: 0a 37 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .77....onlyif my
23c0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
23d0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
23e0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
23f0: 34 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d  49..SELECT ALL M
2400: 49 4e 28 20 41 4c 4c 20 2d 20 2d 20 33 37 20 29  IN( ALL - - 37 )
2410: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2420: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a 0d 0a  b2..----..37....
2430: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2440: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2450: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2460: 61 62 65 6c 2d 34 39 0d 0a 53 45 4c 45 43 54 20  abel-49..SELECT 
2470: 41 4c 4c 20 4d 49 4e 20 28 20 41 4c 4c 20 2d 20  ALL MIN ( ALL - 
2480: 2d 20 33 37 20 29 20 41 53 20 63 6f 6c 32 20 46  - 37 ) AS col2 F
2490: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
24a0: 33 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  37....query I ro
24b0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
24c0: 4c 20 63 6f 6c 31 20 2a 20 2b 20 35 30 20 2a 20  L col1 * + 50 * 
24d0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
24e0: 2d 2d 2d 2d 0d 0a 31 34 37 35 30 0d 0a 31 35 39  ----..14750..159
24f0: 38 30 30 0d 0a 36 37 32 30 30 0d 0a 0d 0a 71 75  800..67200....qu
2500: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2510: 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2a  ELECT ALL col0 *
2520: 20 2d 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c   - + col2 AS col
2530: 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
2540: 2d 0d 0a 2d 34 38 39 36 0d 0a 2d 35 30 31 35 0d  -..-4896..-5015.
2550: 0a 2d 36 31 38 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  .-6188....onlyif
2560: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2570: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
2580: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2590: 65 6c 2d 35 32 0d 0a 53 45 4c 45 43 54 20 2d 20  el-52..SELECT - 
25a0: 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
25b0: 6c 31 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61  l1 FROM tab0, ta
25c0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
25d0: 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-9....skipif m
25e0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
25f0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2600: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 0d  owsort label-52.
2610: 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20  .SELECT - COUNT 
2620: 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ( * ) AS col1 FR
2630: 4f 4d 20 74 61 62 30 2c 20 74 61 62 32 20 41 53  OM tab0, tab2 AS
2640: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d   cor0..----..-9.
2650: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
2660: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32  ort..SELECT col2
2670: 2c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  , col0 FROM tab1
2680: 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 38 35 0d 0a  ..----..59..85..
2690: 36 38 0d 0a 39 31 0d 0a 39 36 0d 0a 35 31 0d 0a  68..91..96..51..
26a0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26b0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
26c0: 32 33 20 2b 20 2d 20 34 32 20 41 53 20 63 6f 6c  23 + - 42 AS col
26d0: 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
26e0: 2d 0d 0a 2d 31 39 0d 0a 2d 31 39 0d 0a 2d 31 39  -..-19..-19..-19
26f0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2700: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2710: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2720: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 35 0d  owsort label-55.
2730: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2740: 20 2d 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54   - SUM( DISTINCT
2750: 20 2d 20 2b 20 63 6f 6c 32 20 29 20 2b 20 2b 20   - + col2 ) + + 
2760: 2d 20 39 38 20 41 53 20 63 6f 6c 32 20 46 52 4f  - 98 AS col2 FRO
2770: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
2780: 2d 2d 2d 2d 0d 0a 31 32 35 0d 0a 0d 0a 73 6b 69  ----..125....ski
2790: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
27a0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
27b0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
27c0: 6c 2d 35 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  l-55..SELECT DIS
27d0: 54 49 4e 43 54 20 2d 20 53 55 4d 20 28 20 44 49  TINCT - SUM ( DI
27e0: 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 32 20  STINCT - + col2 
27f0: 29 20 2b 20 2b 20 2d 20 39 38 20 41 53 20 63 6f  ) + + - 98 AS co
2800: 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
2810: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 35 0d  cor0..----..125.
2820: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2830: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
2840: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
2850: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 0d 0a  wsort label-56..
2860: 53 45 4c 45 43 54 20 34 31 20 2b 20 2b 20 4d 49  SELECT 41 + + MI
2870: 4e 28 20 2b 20 63 6f 6c 30 20 29 20 2b 20 2b 20  N( + col0 ) + + 
2880: 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2d  COUNT( * ) * + -
2890: 20 34 38 20 46 52 4f 4d 20 74 61 62 30 20 63 6f   48 FROM tab0 co
28a0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 38 0d 0a 0d  r0..----..-88...
28b0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
28c0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
28d0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
28e0: 6c 61 62 65 6c 2d 35 36 0d 0a 53 45 4c 45 43 54  label-56..SELECT
28f0: 20 34 31 20 2b 20 2b 20 4d 49 4e 20 28 20 2b 20   41 + + MIN ( + 
2900: 63 6f 6c 30 20 29 20 2b 20 2b 20 43 4f 55 4e 54  col0 ) + + COUNT
2910: 20 28 20 2a 20 29 20 2a 20 2b 20 2d 20 34 38 20   ( * ) * + - 48 
2920: 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
2930: 2d 2d 2d 2d 0d 0a 2d 38 38 0d 0a 0d 0a 6f 6e 6c  ----..-88....onl
2940: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2950: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
2960: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2970: 6c 61 62 65 6c 2d 35 37 0d 0a 53 45 4c 45 43 54  label-57..SELECT
2980: 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e   DISTINCT + COUN
2990: 54 28 20 2a 20 29 20 2a 20 2d 20 38 38 20 46 52  T( * ) * - 88 FR
29a0: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
29b0: 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c  WHERE NOT ( NULL
29c0: 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   ) IS NULL..----
29d0: 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
29e0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
29f0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2a00: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 37 0d 0a  wsort label-57..
2a10: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2a20: 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  + COUNT ( * ) * 
2a30: 2d 20 38 38 20 46 52 4f 4d 20 74 61 62 31 20 41  - 88 FROM tab1 A
2a40: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
2a50: 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55 4c   ( NULL ) IS NUL
2a60: 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  L..----..0....qu
2a70: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2a80: 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 46  ELECT ALL col1 F
2a90: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
2aa0: 20 57 48 45 52 45 20 2b 20 35 35 20 49 53 20 4e   WHERE + 55 IS N
2ab0: 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31  OT NULL..----..1
2ac0: 34 0d 0a 34 37 0d 0a 35 0d 0a 0d 0a 6f 6e 6c 79  4..47..5....only
2ad0: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
2ae0: 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74  syntax: aggregat
2af0: 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  e syntax: SIGNED
2b00: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
2b10: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2b20: 35 39 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 36  59..SELECT + + 6
2b30: 32 20 41 53 20 63 6f 6c 30 2c 20 43 41 53 54 28  2 AS col0, CAST(
2b40: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
2b50: 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ) * - COUNT( * )
2b60: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
2b70: 72 30 20 57 48 45 52 45 20 36 32 20 49 4e 20 28  r0 WHERE 62 IN (
2b80: 20 63 6f 6c 30 20 2d 20 2d 20 31 30 2c 20 63 6f   col0 - - 10, co
2b90: 6c 31 2c 20 28 20 2d 20 34 31 20 29 20 29 0d 0a  l1, ( - 41 ) )..
2ba0: 2d 2d 2d 2d 0d 0a 36 32 0d 0a 4e 55 4c 4c 0d 0a  ----..62..NULL..
2bb0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2bc0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2bd0: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2be0: 74 20 6c 61 62 65 6c 2d 35 39 0d 0a 53 45 4c 45  t label-59..SELE
2bf0: 43 54 20 2b 20 2b 20 36 32 20 41 53 20 63 6f 6c  CT + + 62 AS col
2c00: 30 2c 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41  0, CAST ( NULL A
2c10: 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20  S INTEGER ) * - 
2c20: 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
2c30: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
2c40: 45 52 45 20 36 32 20 49 4e 20 28 20 63 6f 6c 30  ERE 62 IN ( col0
2c50: 20 2d 20 2d 20 31 30 2c 20 63 6f 6c 31 2c 20 28   - - 10, col1, (
2c60: 20 2d 20 34 31 20 29 20 29 0d 0a 2d 2d 2d 2d 0d   - 41 ) )..----.
2c70: 0a 36 32 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  .62..NULL....que
2c80: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
2c90: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
2ca0: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
2cb0: 20 28 20 4e 4f 54 20 28 20 2b 20 63 6f 6c 30 20   ( NOT ( + col0 
2cc0: 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 28 20  ) NOT BETWEEN ( 
2cd0: 4e 55 4c 4c 20 29 20 41 4e 44 20 4e 55 4c 4c 20  NULL ) AND NULL 
2ce0: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  )..----....skipi
2cf0: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
2d00: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
2d10: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
2d20: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
2d30: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
2d40: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2d50: 49 4e 43 54 20 37 35 20 2b 20 2d 20 63 6f 6c 30  INCT 75 + - col0
2d60: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
2d70: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor0..----..0
2d80: 0d 0a 31 31 0d 0a 32 39 0d 0a 0d 0a 71 75 65 72  ..11..29....quer
2d90: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
2da0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
2db0: 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20   FROM tab2 cor0 
2dc0: 57 48 45 52 45 20 2b 20 63 6f 6c 32 20 3c 20 2d  WHERE + col2 < -
2dd0: 20 39 32 20 2a 20 2b 20 35 37 20 2a 20 2d 20 63   92 * + 57 * - c
2de0: 6f 6c 30 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  ol0 + col2..----
2df0: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
2e00: 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33  ng to 75c998aa53
2e10: 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36  ac83218cbf2feb96
2e20: 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20  2d0a49....query 
2e30: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2e40: 54 20 41 4c 4c 20 2b 20 2b 20 63 6f 6c 31 20 2a  T ALL + + col1 *
2e50: 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 37 30   + - col1 + - 70
2e60: 20 2b 20 2d 20 39 39 20 41 53 20 63 6f 6c 31 20   + - 99 AS col1 
2e70: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2e80: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 37 30 0d 0a  0..----..-2770..
2e90: 2d 34 36 35 38 0d 0a 2d 36 30 39 38 0d 0a 0d 0a  -4658..-6098....
2ea0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2eb0: 0a 53 45 4c 45 43 54 20 36 32 20 2d 20 63 6f 6c  .SELECT 62 - col
2ec0: 32 20 2b 20 31 20 41 53 20 63 6f 6c 31 20 46 52  2 + 1 AS col1 FR
2ed0: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
2ee0: 0a 2d 2d 2d 2d 0d 0a 2d 33 36 0d 0a 31 36 0d 0a  .----..-36..16..
2ef0: 35 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  53....onlyif mys
2f00: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
2f10: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
2f20: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2f30: 74 20 6c 61 62 65 6c 2d 36 35 0d 0a 53 45 4c 45  t label-65..SELE
2f40: 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30  CT DISTINCT col0
2f50: 20 44 49 56 20 2d 20 63 6f 6c 32 2c 20 63 6f 6c   DIV - col2, col
2f60: 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
2f70: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 36  or0..----..-1..6
2f80: 34 0d 0a 2d 31 0d 0a 37 35 0d 0a 2d 32 0d 0a 34  4..-1..75..-2..4
2f90: 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
2fa0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2fb0: 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  le..query II row
2fc0: 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 0d 0a 53  sort label-65..S
2fd0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
2fe0: 6f 6c 30 20 2f 20 2d 20 63 6f 6c 32 2c 20 63 6f  ol0 / - col2, co
2ff0: 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
3000: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  cor0..----..-1..
3010: 36 34 0d 0a 2d 31 0d 0a 37 35 0d 0a 2d 32 0d 0a  64..-1..75..-2..
3020: 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  46....query I ro
3030: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
3040: 2b 20 28 20 2d 20 2b 20 63 6f 6c 30 20 29 20 2a  + ( - + col0 ) *
3050: 20 2b 20 2d 20 63 6f 6c 31 20 2d 20 2b 20 2d 20   + - col1 - + - 
3060: 36 34 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  64 AS col2 FROM 
3070: 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
3080: 0a 2d 32 32 38 32 0d 0a 2d 34 38 36 34 0d 0a 2d  .-2282..-4864..-
3090: 34 39 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  4961....query I 
30a0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
30b0: 2b 20 39 33 20 2b 20 2b 20 28 20 2d 20 2d 20 63  + 93 + + ( - - c
30c0: 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ol2 ) FROM tab0 
30d0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
30e0: 30 33 0d 0a 31 34 30 0d 0a 31 39 32 0d 0a 0d 0a  03..140..192....
30f0: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
3100: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
3110: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41  CT * FROM tab0 A
3120: 53 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e  S cor0 WHERE ( N
3130: 55 4c 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20 63  ULL ) NOT IN ( c
3140: 6f 6c 32 20 2b 20 63 6f 6c 32 2c 20 63 6f 6c 30  ol2 + col2, col0
3150: 2c 20 2b 20 36 32 2c 20 2d 20 63 6f 6c 30 20 2b  , + 62, - col0 +
3160: 20 63 6f 6c 32 20 2b 20 63 6f 6c 31 20 29 0d 0a   col2 + col1 )..
3170: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
3180: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
3190: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
31a0: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
31b0: 6c 2d 36 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  l-69..SELECT DIS
31c0: 54 49 4e 43 54 20 32 32 20 2b 20 2d 20 37 37 20  TINCT 22 + - 77 
31d0: 2a 20 2d 20 43 4f 55 4e 54 28 20 2b 20 63 6f 6c  * - COUNT( + col
31e0: 31 20 29 2c 20 38 31 20 41 53 20 63 6f 6c 31 20  1 ), 81 AS col1 
31f0: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
3200: 0a 32 35 33 0d 0a 38 31 0d 0a 0d 0a 73 6b 69 70  .253..81....skip
3210: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
3220: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
3230: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
3240: 6c 2d 36 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  l-69..SELECT DIS
3250: 54 49 4e 43 54 20 32 32 20 2b 20 2d 20 37 37 20  TINCT 22 + - 77 
3260: 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2b 20 63 6f  * - COUNT ( + co
3270: 6c 31 20 29 2c 20 38 31 20 41 53 20 63 6f 6c 31  l1 ), 81 AS col1
3280: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
3290: 0d 0a 32 35 33 0d 0a 38 31 0d 0a 0d 0a 71 75 65  ..253..81....que
32a0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32b0: 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2d 20  LECT ALL col0 - 
32c0: 2d 20 2d 20 32 39 20 46 52 4f 4d 20 74 61 62 31  - - 29 FROM tab1
32d0: 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 35 36 0d 0a  ..----..22..56..
32e0: 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  62....query I ro
32f0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
3300: 2d 20 63 6f 6c 32 20 2a 20 2d 20 2b 20 63 6f 6c  - col2 * - + col
3310: 31 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c  1 + col1 * - col
3320: 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  1 FROM tab2 WHER
3330: 45 20 4e 55 4c 4c 20 3c 3e 20 4e 55 4c 4c 0d 0a  E NULL <> NULL..
3340: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
3350: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
3360: 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65  ax: DECIMAL type
3370: 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
3380: 73 6f 72 74 20 6c 61 62 65 6c 2d 37 32 0d 0a 53  sort label-72..S
3390: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
33a0: 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 2c 20 63   col1 AS col2, c
33b0: 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
33c0: 20 74 61 62 31 20 57 48 45 52 45 20 2d 20 2d 20   tab1 WHERE - - 
33d0: 43 41 53 54 28 20 2b 20 2d 20 63 6f 6c 31 20 41  CAST( + - col1 A
33e0: 53 20 44 45 43 49 4d 41 4c 20 29 20 4e 4f 54 20  S DECIMAL ) NOT 
33f0: 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c 30 20 41  BETWEEN - col0 A
3400: 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  ND NULL..----...
3410: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
3420: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
3430: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
3440: 20 6c 61 62 65 6c 2d 37 32 0d 0a 53 45 4c 45 43   label-72..SELEC
3450: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c  T DISTINCT - col
3460: 31 20 41 53 20 63 6f 6c 32 2c 20 63 6f 6c 32 20  1 AS col2, col2 
3470: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
3480: 31 20 57 48 45 52 45 20 2d 20 2d 20 43 41 53 54  1 WHERE - - CAST
3490: 20 28 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 52   ( + - col1 AS R
34a0: 45 41 4c 20 29 20 4e 4f 54 20 42 45 54 57 45 45  EAL ) NOT BETWEE
34b0: 4e 20 2d 20 63 6f 6c 30 20 41 4e 44 20 4e 55 4c  N - col0 AND NUL
34c0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
34d0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
34e0: 43 54 20 35 30 20 2b 20 2b 20 2b 20 63 6f 6c 30  CT 50 + + + col0
34f0: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
3500: 0d 0a 31 30 31 0d 0a 31 33 35 0d 0a 31 34 31 0d  ..101..135..141.
3510: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
3520: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
3530: 49 4e 43 54 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c  INCT col2, - col
3540: 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
3550: 2d 0d 0a 32 33 0d 0a 2d 34 36 0d 0a 34 30 0d 0a  -..23..-46..40..
3560: 2d 36 34 0d 0a 35 38 0d 0a 2d 37 35 0d 0a 0d 0a  -64..58..-75....
3570: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
3580: 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
3590: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
35a0: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
35b0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
35c0: 65 6c 2d 37 35 0d 0a 53 45 4c 45 43 54 20 44 49  el-75..SELECT DI
35d0: 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28 20 28  STINCT + CAST( (
35e0: 20 2b 20 53 55 4d 28 20 2d 20 31 34 20 29 20 29   + SUM( - 14 ) )
35f0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
3600: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
3610: 2d 2d 2d 2d 0d 0a 2d 34 32 0d 0a 0d 0a 73 6b 69  ----..-42....ski
3620: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
3630: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
3640: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
3650: 6c 2d 37 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  l-75..SELECT DIS
3660: 54 49 4e 43 54 20 2b 20 43 41 53 54 20 28 20 28  TINCT + CAST ( (
3670: 20 2b 20 53 55 4d 20 28 20 2d 20 31 34 20 29 20   + SUM ( - 14 ) 
3680: 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  ) AS INTEGER ) A
3690: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
36a0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32 0d 0a 0d 0a 71  ..----..-42....q
36b0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
36c0: 53 45 4c 45 43 54 20 2d 20 32 37 20 2a 20 2b 20  SELECT - 27 * + 
36d0: 33 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  32 AS col1 FROM 
36e0: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 36 34  tab0..----..-864
36f0: 0d 0a 2d 38 36 34 0d 0a 2d 38 36 34 0d 0a 0d 0a  ..-864..-864....
3700: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
3710: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
3720: 20 39 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   91 AS col0 FROM
3730: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
3740: 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a 71 75 65 72 79  ---..91....query
3750: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
3760: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  LECT * FROM tab2
3770: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
3780: 4f 54 20 32 39 20 49 53 20 4e 4f 54 20 4e 55 4c  OT 29 IS NOT NUL
3790: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
37a0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
37b0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
37c0: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
37d0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 0d 0a  wsort label-79..
37e0: 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20  SELECT ALL col2 
37f0: 2a 20 2b 20 43 41 53 54 28 20 2b 20 63 6f 6c 30  * + CAST( + col0
3800: 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
3810: 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
3820: 2d 0d 0a 37 30 35 0d 0a 38 37 30 0d 0a 39 36 30  -..705..870..960
3830: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
3840: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
3850: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
3860: 6f 72 74 20 6c 61 62 65 6c 2d 37 39 0d 0a 53 45  ort label-79..SE
3870: 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a 20  LECT ALL col2 * 
3880: 2b 20 43 41 53 54 20 28 20 2b 20 63 6f 6c 30 20  + CAST ( + col0 
3890: 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
38a0: 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
38b0: 2d 0d 0a 37 30 35 0d 0a 38 37 30 0d 0a 39 36 30  -..705..870..960
38c0: 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  3....onlyif mysq
38d0: 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
38e0: 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
38f0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
3900: 6c 61 62 65 6c 2d 38 30 0d 0a 53 45 4c 45 43 54  label-80..SELECT
3910: 20 2b 20 33 34 20 44 49 56 20 2b 20 2d 20 63 6f   + 34 DIV + - co
3920: 6c 31 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 46 52  l1 + + + col2 FR
3930: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
3940: 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a 36 38 0d 0a 39  .----..53..68..9
3950: 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
3960: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
3970: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
3980: 6f 72 74 20 6c 61 62 65 6c 2d 38 30 0d 0a 53 45  ort label-80..SE
3990: 4c 45 43 54 20 2b 20 33 34 20 2f 20 2b 20 2d 20  LECT + 34 / + - 
39a0: 63 6f 6c 31 20 2b 20 2b 20 2b 20 63 6f 6c 32 20  col1 + + + col2 
39b0: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
39c0: 30 0d 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a 36 38 0d  0..----..53..68.
39d0: 0a 39 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .94....query III
39e0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
39f0: 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
3a00: 52 45 20 4e 4f 54 20 36 39 20 3e 20 4e 55 4c 4c  RE NOT 69 > NULL
3a10: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
3a20: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
3a30: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
3a40: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
3a50: 65 6c 2d 38 32 0d 0a 53 45 4c 45 43 54 20 2d 20  el-82..SELECT - 
3a60: 2b 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20  + MAX( DISTINCT 
3a70: 37 20 29 20 2a 20 35 33 20 46 52 4f 4d 20 74 61  7 ) * 53 FROM ta
3a80: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
3a90: 0d 0a 2d 33 37 31 0d 0a 0d 0a 73 6b 69 70 69 66  ..-371....skipif
3aa0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
3ab0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
3ac0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
3ad0: 32 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 4d 41  2..SELECT - + MA
3ae0: 58 20 28 20 44 49 53 54 49 4e 43 54 20 37 20 29  X ( DISTINCT 7 )
3af0: 20 2a 20 35 33 20 46 52 4f 4d 20 74 61 62 31 20   * 53 FROM tab1 
3b00: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
3b10: 33 37 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  371....skipif po
3b20: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
3b30: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
3b40: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
3b50: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
3b60: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
3b70: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20  .SELECT ALL + - 
3b80: 38 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  80 col1 FROM tab
3b90: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
3ba0: 0a 2d 38 30 0d 0a 2d 38 30 0d 0a 2d 38 30 0d 0a  .-80..-80..-80..
3bb0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
3bc0: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
3bd0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
3be0: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
3bf0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
3c00: 61 62 65 6c 2d 38 34 0d 0a 53 45 4c 45 43 54 20  abel-84..SELECT 
3c10: 2b 20 43 41 53 54 28 20 2b 20 34 37 20 41 53 20  + CAST( + 47 AS 
3c20: 53 49 47 4e 45 44 20 29 20 2a 20 53 55 4d 28 20  SIGNED ) * SUM( 
3c30: 2b 20 32 38 20 29 20 2b 20 4d 49 4e 28 20 44 49  + 28 ) + MIN( DI
3c40: 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28 20 4e  STINCT + CAST( N
3c50: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
3c60: 29 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  ) + COUNT( * ) A
3c70: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
3c80: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
3c90: 4f 54 20 2d 20 28 20 2b 20 36 30 20 29 20 2d 20  OT - ( + 60 ) - 
3ca0: 2b 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20  + - col0 IS NOT 
3cb0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
3cc0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
3cd0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
3ce0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
3cf0: 72 74 20 6c 61 62 65 6c 2d 38 34 0d 0a 53 45 4c  rt label-84..SEL
3d00: 45 43 54 20 2b 20 43 41 53 54 20 28 20 2b 20 34  ECT + CAST ( + 4
3d10: 37 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  7 AS INTEGER ) *
3d20: 20 53 55 4d 20 28 20 2b 20 32 38 20 29 20 2b 20   SUM ( + 28 ) + 
3d30: 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2b  MIN ( DISTINCT +
3d40: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
3d50: 49 4e 54 45 47 45 52 20 29 20 29 20 2b 20 43 4f  INTEGER ) ) + CO
3d60: 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
3d70: 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
3d80: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
3d90: 28 20 2b 20 36 30 20 29 20 2d 20 2b 20 2d 20 63  ( + 60 ) - + - c
3da0: 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol0 IS NOT NULL.
3db0: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
3dc0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
3dd0: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
3de0: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
3df0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
3e00: 38 35 0d 0a 53 45 4c 45 43 54 20 2d 20 36 32 20  85..SELECT - 62 
3e10: 2b 20 63 6f 6c 31 20 44 49 56 20 2d 20 2b 20 63  + col1 DIV - + c
3e20: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
3e30: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 32   cor0..----..-62
3e40: 0d 0a 2d 36 32 0d 0a 2d 36 32 0d 0a 0d 0a 73 6b  ..-62..-62....sk
3e50: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
3e60: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
3e70: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
3e80: 65 6c 2d 38 35 0d 0a 53 45 4c 45 43 54 20 2d 20  el-85..SELECT - 
3e90: 36 32 20 2b 20 63 6f 6c 31 20 2f 20 2d 20 2b 20  62 + col1 / - + 
3ea0: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
3eb0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  S cor0..----..-6
3ec0: 32 0d 0a 2d 36 32 0d 0a 2d 36 32 0d 0a 0d 0a 71  2..-62..-62....q
3ed0: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
3ee0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
3ef0: 20 2d 20 63 6f 6c 30 20 2a 20 32 36 20 41 53 20   - col0 * 26 AS 
3f00: 63 6f 6c 30 2c 20 2d 20 63 6f 6c 31 20 41 53 20  col0, - col1 AS 
3f10: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
3f20: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
3f30: 33 32 36 0d 0a 2d 31 34 0d 0a 2d 32 32 31 30 0d  326..-14..-2210.
3f40: 0a 2d 35 0d 0a 2d 32 33 36 36 0d 0a 2d 34 37 0d  .-5..-2366..-47.
3f50: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
3f60: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  rt..SELECT + col
3f70: 31 20 2b 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f  1 + + - col2 FRO
3f80: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 38  M tab2..----..28
3f90: 0d 0a 33 37 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69  ..37..9....onlyi
3fa0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
3fb0: 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
3fc0: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
3fd0: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
3fe0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38  rowsort label-88
3ff0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
4000: 54 20 43 41 53 54 28 20 2b 20 43 4f 55 4e 54 28  T CAST( + COUNT(
4010: 20 2a 20 29 20 41 53 20 53 49 47 4e 45 44 20 29   * ) AS SIGNED )
4020: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
4030: 57 48 45 52 45 20 4e 4f 54 20 28 20 37 38 20 29  WHERE NOT ( 78 )
4040: 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
4050: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
4060: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
4070: 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
4080: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
4090: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
40a0: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
40b0: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
40c0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
40d0: 65 6c 2d 38 38 0d 0a 53 45 4c 45 43 54 20 44 49  el-88..SELECT DI
40e0: 53 54 49 4e 43 54 20 43 41 53 54 20 28 20 2b 20  STINCT CAST ( + 
40f0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 49  COUNT ( * ) AS I
4100: 4e 54 45 47 45 52 20 29 20 63 6f 6c 31 20 46 52  NTEGER ) col1 FR
4110: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
4120: 54 20 28 20 37 38 20 29 20 49 53 20 4e 55 4c 4c  T ( 78 ) IS NULL
4130: 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c  ..----..3....onl
4140: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
4150: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
4160: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
4170: 6c 61 62 65 6c 2d 38 39 0d 0a 53 45 4c 45 43 54  label-89..SELECT
4180: 20 44 49 53 54 49 4e 43 54 20 2b 20 53 55 4d 28   DISTINCT + SUM(
4190: 20 63 6f 6c 31 20 29 20 2a 20 2d 20 2d 20 4d 49   col1 ) * - - MI
41a0: 4e 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20 41 53  N( + - col1 ) AS
41b0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
41c0: 0a 2d 2d 2d 2d 0d 0a 2d 33 31 30 32 0d 0a 0d 0a  .----..-3102....
41d0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
41e0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
41f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
4200: 61 62 65 6c 2d 38 39 0d 0a 53 45 4c 45 43 54 20  abel-89..SELECT 
4210: 44 49 53 54 49 4e 43 54 20 2b 20 53 55 4d 20 28  DISTINCT + SUM (
4220: 20 63 6f 6c 31 20 29 20 2a 20 2d 20 2d 20 4d 49   col1 ) * - - MI
4230: 4e 20 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20 41  N ( + - col1 ) A
4240: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
4250: 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31 30 32 0d 0a 0d  ..----..-3102...
4260: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
4270: 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
4280: 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
4290: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
42a0: 6c 2d 39 30 0d 0a 53 45 4c 45 43 54 20 2b 20 63  l-90..SELECT + c
42b0: 6f 6c 32 20 44 49 56 20 2d 20 31 31 20 41 53 20  ol2 DIV - 11 AS 
42c0: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
42d0: 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 39 0d 0a 30 0d  ----..-4..-9..0.
42e0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
42f0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
4300: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
4310: 74 20 6c 61 62 65 6c 2d 39 30 0d 0a 53 45 4c 45  t label-90..SELE
4320: 43 54 20 2b 20 63 6f 6c 32 20 2f 20 2d 20 31 31  CT + col2 / - 11
4330: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
4340: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 39  b0..----..-4..-9
4350: 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
4360: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
4370: 49 53 54 49 4e 43 54 20 2b 20 36 32 20 2a 20 2b  ISTINCT + 62 * +
4380: 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20   + col0 AS col2 
4390: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
43a0: 0a 32 38 35 32 0d 0a 33 39 36 38 0d 0a 34 36 35  .2852..3968..465
43b0: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  0....query III r
43c0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
43d0: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
43e0: 20 2d 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 34 38   - + col1 * - 48
43f0: 20 2a 20 2d 20 39 37 20 2b 20 2b 20 63 6f 6c 31   * - 97 + + col1
4400: 20 2d 20 2d 20 2d 20 37 30 20 2a 20 2d 20 2b 20   - - - 70 * - + 
4410: 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col1 IS NULL..--
4420: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
4430: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
4440: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
4450: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
4460: 20 6c 61 62 65 6c 2d 39 33 0d 0a 53 45 4c 45 43   label-93..SELEC
4470: 54 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 2b 20 2d  T ALL - col1 + -
4480: 20 39 20 44 49 56 20 2d 20 63 6f 6c 32 20 63 6f   9 DIV - col2 co
4490: 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
44a0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  cor0..----..-1..
44b0: 2d 32 31 0d 0a 2d 38 31 0d 0a 0d 0a 73 6b 69 70  -21..-81....skip
44c0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
44d0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
44e0: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
44f0: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
4500: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
4510: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
4520: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
4530: 6f 72 74 20 6c 61 62 65 6c 2d 39 33 0d 0a 53 45  ort label-93..SE
4540: 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 31 20  LECT ALL - col1 
4550: 2b 20 2d 20 39 20 2f 20 2d 20 63 6f 6c 32 20 63  + - 9 / - col2 c
4560: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
4570: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   cor0..----..-1.
4580: 0a 2d 32 31 0d 0a 2d 38 31 0d 0a 0d 0a 6f 6e 6c  .-21..-81....onl
4590: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
45a0: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
45b0: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
45c0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34  rowsort label-94
45d0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 31  ..SELECT ALL + 1
45e0: 38 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 2a 20 2b  8 * - + col1 * +
45f0: 20 2d 20 43 41 53 54 28 20 2b 20 63 6f 6c 32 20   - CAST( + col2 
4600: 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d  AS SIGNED ) FROM
4610: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
4620: 2d 2d 2d 0d 0a 32 34 31 39 32 0d 0a 35 33 31 30  ---..24192..5310
4630: 0d 0a 35 37 35 32 38 0d 0a 0d 0a 73 6b 69 70 69  ..57528....skipi
4640: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
4650: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
4660: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
4670: 39 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  94..SELECT ALL +
4680: 20 31 38 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 2a   18 * - + col1 *
4690: 20 2b 20 2d 20 43 41 53 54 20 28 20 2b 20 63 6f   + - CAST ( + co
46a0: 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  l2 AS INTEGER ) 
46b0: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
46c0: 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 31 39 32 0d 0a  0..----..24192..
46d0: 35 33 31 30 0d 0a 35 37 35 32 38 0d 0a 0d 0a 71  5310..57528....q
46e0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
46f0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
4700: 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32 20 2d 20  col0 + + col2 - 
4710: 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  + - col1 AS col0
4720: 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
4730: 0a 2d 2d 2d 2d 0d 0a 31 32 30 0d 0a 31 38 31 0d  .----..120..181.
4740: 0a 32 30 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .200....onlyif m
4750: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
4760: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
4770: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
4780: 6c 2d 39 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  l-96..SELECT DIS
4790: 54 49 4e 43 54 20 2d 20 2b 20 4d 41 58 28 20 2b  TINCT - + MAX( +
47a0: 20 28 20 2d 20 2b 20 63 6f 6c 32 20 29 20 29 20   ( - + col2 ) ) 
47b0: 2b 20 2b 20 2d 20 53 55 4d 28 20 41 4c 4c 20 2b  + + - SUM( ALL +
47c0: 20 30 20 29 20 41 53 20 63 6f 6c 30 2c 20 2b 20   0 ) AS col0, + 
47d0: 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
47e0: 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
47f0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a  cor0..----..23..
4800: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
4810: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
4820: 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  le..query II row
4830: 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 0d 0a 53  sort label-96..S
4840: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
4850: 20 2b 20 4d 41 58 20 28 20 2b 20 28 20 2d 20 2b   + MAX ( + ( - +
4860: 20 63 6f 6c 32 20 29 20 29 20 2b 20 2b 20 2d 20   col2 ) ) + + - 
4870: 53 55 4d 20 28 20 41 4c 4c 20 2b 20 30 20 29 20  SUM ( ALL + 0 ) 
4880: 41 53 20 63 6f 6c 30 2c 20 2b 20 43 4f 55 4e 54  AS col0, + COUNT
4890: 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46   ( * ) AS col2 F
48a0: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
48b0: 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 33 0d 0a 0d  ..----..23..3...
48c0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
48d0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
48e0: 6f 6c 31 20 2b 20 2d 20 2b 20 63 6f 6c 31 20 41  ol1 + - + col1 A
48f0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
4900: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
4910: 2d 31 36 32 0d 0a 2d 32 0d 0a 2d 34 32 0d 0a 0d  -162..-2..-42...
4920: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
4930: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
4940: 54 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 28 20 2b  T col0 * - - ( +
4950: 20 2d 20 37 32 20 29 20 2a 20 2d 20 2b 20 33 38   - 72 ) * - + 38
4960: 20 2b 20 2b 20 31 39 20 41 53 20 63 6f 6c 30 20   + + 19 AS col0 
4970: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
4980: 0a 32 33 38 30 35 31 0d 0a 32 36 35 34 31 31 0d  .238051..265411.
4990: 0a 34 31 30 35 39 0d 0a 0d 0a 71 75 65 72 79 20  .41059....query 
49a0: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
49b0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ECT * FROM tab0 
49c0: 57 48 45 52 45 20 2b 20 2d 20 63 6f 6c 32 20 3d  WHERE + - col2 =
49d0: 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39   - col2..----..9
49e0: 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
49f0: 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34  to c4b42765dff94
4a00: 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34  eaaa46040e537fb4
4a10: 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  3b7....onlyif my
4a20: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
4a30: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
4a40: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
4a50: 31 30 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  100..SELECT + CO
4a60: 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2d 20 34  UNT( * ) * + - 4
4a70: 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  8 AS col1 FROM t
4a80: 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab1 AS cor0 CROS
4a90: 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63  S JOIN tab1 AS c
4aa0: 6f 72 31 20 57 48 45 52 45 20 2d 20 36 20 3c 3e  or1 WHERE - 6 <>
4ab0: 20 2b 20 39 33 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33   + 93..----..-43
4ac0: 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  2....skipif mysq
4ad0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
4ae0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
4af0: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 30 0d 0a 53  ort label-100..S
4b00: 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  ELECT + COUNT ( 
4b10: 2a 20 29 20 2a 20 2b 20 2d 20 34 38 20 41 53 20  * ) * + - 48 AS 
4b20: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
4b30: 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
4b40: 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 20 57  N tab1 AS cor1 W
4b50: 48 45 52 45 20 2d 20 36 20 3c 3e 20 2b 20 39 33  HERE - 6 <> + 93
4b60: 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33 32 0d 0a 0d 0a  ..----..-432....
4b70: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
4b80: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
4b90: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
4ba0: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
4bb0: 20 28 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 33 39   ( - col2 + - 39
4bc0: 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   ) IS NULL..----
4bd0: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
4be0: 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
4bf0: 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
4c00: 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20  d54cad....query 
4c10: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4c20: 54 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  T + col2 FROM ta
4c30: 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
4c40: 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d   col1 IS NULL..-
4c50: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
4c60: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
4c70: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
4c80: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
4c90: 72 74 20 6c 61 62 65 6c 2d 31 30 33 0d 0a 53 45  rt label-103..SE
4ca0: 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20  LECT ALL + col0 
4cb0: 41 53 20 63 6f 6c 31 2c 20 2b 20 43 41 53 54 28  AS col1, + CAST(
4cc0: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
4cd0: 29 20 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20  ) + + col2 FROM 
4ce0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
4cf0: 2d 2d 0d 0a 31 35 0d 0a 4e 55 4c 4c 0d 0a 38 37  --..15..NULL..87
4d00: 0d 0a 4e 55 4c 4c 0d 0a 39 37 0d 0a 4e 55 4c 4c  ..NULL..97..NULL
4d10: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
4d20: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
4d30: 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  e..query II rows
4d40: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 0d 0a 53  ort label-103..S
4d50: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30  ELECT ALL + col0
4d60: 20 41 53 20 63 6f 6c 31 2c 20 2b 20 43 41 53 54   AS col1, + CAST
4d70: 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
4d80: 45 52 20 29 20 2b 20 2b 20 63 6f 6c 32 20 46 52  ER ) + + col2 FR
4d90: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
4da0: 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 4e 55 4c 4c 0d  .----..15..NULL.
4db0: 0a 38 37 0d 0a 4e 55 4c 4c 0d 0a 39 37 0d 0a 4e  .87..NULL..97..N
4dc0: 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
4dd0: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
4de0: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
4df0: 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a  DECIMAL type: ..
4e00: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
4e10: 6c 61 62 65 6c 2d 31 30 34 0d 0a 53 45 4c 45 43  label-104..SELEC
4e20: 54 20 41 4c 4c 20 2b 20 43 41 53 54 28 20 4e 55  T ALL + CAST( NU
4e30: 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20  LL AS DECIMAL ) 
4e40: 2f 20 2d 20 32 36 20 2b 20 2b 20 63 6f 6c 30 20  / - 26 + + col0 
4e50: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
4e60: 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 31 20 3d  0 WHERE - col1 =
4e70: 20 2d 20 63 6f 6c 30 20 2a 20 31 31 20 2b 20 2d   - col0 * 11 + -
4e80: 20 63 6f 6c 31 20 2a 20 2b 20 28 20 43 41 53 54   col1 * + ( CAST
4e90: 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
4ea0: 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b   ) )..----....sk
4eb0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
4ec0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
4ed0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
4ee0: 65 6c 2d 31 30 34 0d 0a 53 45 4c 45 43 54 20 41  el-104..SELECT A
4ef0: 4c 4c 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c  LL + CAST ( NULL
4f00: 20 41 53 20 52 45 41 4c 20 29 20 2f 20 2d 20 32   AS REAL ) / - 2
4f10: 36 20 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  6 + + col0 FROM 
4f20: 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
4f30: 52 45 20 2d 20 63 6f 6c 31 20 3d 20 2d 20 63 6f  RE - col1 = - co
4f40: 6c 30 20 2a 20 31 31 20 2b 20 2d 20 63 6f 6c 31  l0 * 11 + - col1
4f50: 20 2a 20 2b 20 28 20 43 41 53 54 20 28 20 4e 55   * + ( CAST ( NU
4f60: 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
4f70: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
4f80: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
4f90: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
4fa0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
4fb0: 62 65 6c 2d 31 30 35 0d 0a 53 45 4c 45 43 54 20  bel-105..SELECT 
4fc0: 41 4c 4c 20 2d 20 2d 20 28 20 2b 20 43 4f 55 4e  ALL - - ( + COUN
4fd0: 54 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 32  T( * ) ) AS col2
4fe0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
4ff0: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  r0 WHERE NOT + c
5000: 6f 6c 30 20 42 45 54 57 45 45 4e 20 2b 20 31 31  ol0 BETWEEN + 11
5010: 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   AND NULL..----.
5020: 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
5030: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
5040: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
5050: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 0d 0a  sort label-105..
5060: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 28  SELECT ALL - - (
5070: 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29   + COUNT ( * ) )
5080: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
5090: 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
50a0: 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 42 45 54 57   NOT + col0 BETW
50b0: 45 45 4e 20 2b 20 31 31 20 41 4e 44 20 4e 55 4c  EEN + 11 AND NUL
50c0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  L..----..0....qu
50d0: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
50e0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
50f0: 2b 20 2b 20 28 20 2b 20 2b 20 63 6f 6c 31 20 29  + + ( + + col1 )
5100: 2c 20 2b 20 34 39 20 46 52 4f 4d 20 74 61 62 32  , + 49 FROM tab2
5110: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
5120: 35 31 0d 0a 34 39 0d 0a 36 37 0d 0a 34 39 0d 0a  51..49..67..49..
5130: 37 37 0d 0a 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  77..49....onlyif
5140: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
5150: 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66  te syntax: DIV f
5160: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
5170: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
5180: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37  owsort label-107
5190: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
51a0: 54 20 2b 20 2b 20 4d 49 4e 28 20 44 49 53 54 49  T + + MIN( DISTI
51b0: 4e 43 54 20 2d 20 63 6f 6c 32 20 29 20 2d 20 2d  NCT - col2 ) - -
51c0: 20 33 39 20 2b 20 2d 20 37 30 20 44 49 56 20 2b   39 + - 70 DIV +
51d0: 20 2d 20 4d 49 4e 28 20 41 4c 4c 20 2b 20 63 6f   - MIN( ALL + co
51e0: 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  l0 ) FROM tab1 A
51f0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  S cor0..----..-5
5200: 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
5210: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
5220: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
5230: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 0d 0a 53  ort label-107..S
5240: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
5250: 20 2b 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43   + MIN ( DISTINC
5260: 54 20 2d 20 63 6f 6c 32 20 29 20 2d 20 2d 20 33  T - col2 ) - - 3
5270: 39 20 2b 20 2d 20 37 30 20 2f 20 2b 20 2d 20 4d  9 + - 70 / + - M
5280: 49 4e 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 30 20  IN ( ALL + col0 
5290: 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
52a0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 36 0d 0a  or0..----..-56..
52b0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
52c0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
52d0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
52e0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 0d 0a  sort label-108..
52f0: 53 45 4c 45 43 54 20 2b 20 2b 20 53 55 4d 28 20  SELECT + + SUM( 
5300: 2d 20 28 20 63 6f 6c 30 20 29 20 29 20 46 52 4f  - ( col0 ) ) FRO
5310: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
5320: 2d 2d 2d 2d 0d 0a 2d 31 38 35 0d 0a 0d 0a 73 6b  ----..-185....sk
5330: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
5340: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
5350: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
5360: 65 6c 2d 31 30 38 0d 0a 53 45 4c 45 43 54 20 2b  el-108..SELECT +
5370: 20 2b 20 53 55 4d 20 28 20 2d 20 28 20 63 6f 6c   + SUM ( - ( col
5380: 30 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20  0 ) ) FROM tab2 
5390: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
53a0: 31 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  185....query I r
53b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
53c0: 20 32 36 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   26 AS col1 FROM
53d0: 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
53e0: 0d 0a 32 36 0d 0a 32 36 0d 0a 32 36 0d 0a 0d 0a  ..26..26..26....
53f0: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
5400: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
5410: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
5420: 48 45 52 45 20 28 20 2b 20 35 32 20 3d 20 4e 55  HERE ( + 52 = NU
5430: 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  LL )..----....qu
5440: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
5450: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
5460: 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  ab0 WHERE NOT NU
5470: 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 2b 20 2d 20  LL NOT IN ( + - 
5480: 63 6f 6c 32 2c 20 2b 20 63 6f 6c 32 2c 20 2d 20  col2, + col2, - 
5490: 2b 20 31 39 2c 20 2b 20 2b 20 36 20 29 0d 0a 2d  + 19, + + 6 )..-
54a0: 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ---....skipif po
54b0: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
54c0: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
54d0: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
54e0: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
54f0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
5500: 0a 53 45 4c 45 43 54 20 38 31 20 63 6f 6c 32 20  .SELECT 81 col2 
5510: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
5520: 0a 38 31 0d 0a 38 31 0d 0a 38 31 0d 0a 0d 0a 6f  .81..81..81....o
5530: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
5540: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
5550: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
5560: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
5570: 31 31 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  113..SELECT ALL 
5580: 2b 20 32 39 20 44 49 56 20 2d 20 2d 20 63 6f 6c  + 29 DIV - - col
5590: 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
55a0: 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b  -..0..0..0....sk
55b0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
55c0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
55d0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
55e0: 65 6c 2d 31 31 33 0d 0a 53 45 4c 45 43 54 20 41  el-113..SELECT A
55f0: 4c 4c 20 2b 20 32 39 20 2f 20 2d 20 2d 20 63 6f  LL + 29 / - - co
5600: 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
5610: 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f  --..0..0..0....o
5620: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
5630: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
5640: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
5650: 74 20 6c 61 62 65 6c 2d 31 31 34 0d 0a 53 45 4c  t label-114..SEL
5660: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28  ECT DISTINCT - (
5670: 20 2b 20 2b 20 4d 49 4e 28 20 41 4c 4c 20 2b 20   + + MIN( ALL + 
5680: 2d 20 34 31 20 29 20 29 20 46 52 4f 4d 20 74 61  - 41 ) ) FROM ta
5690: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 0d 0a  b0..----..41....
56a0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
56b0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
56c0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
56d0: 61 62 65 6c 2d 31 31 34 0d 0a 53 45 4c 45 43 54  abel-114..SELECT
56e0: 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2b 20   DISTINCT - ( + 
56f0: 2b 20 4d 49 4e 20 28 20 41 4c 4c 20 2b 20 2d 20  + MIN ( ALL + - 
5700: 34 31 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30  41 ) ) FROM tab0
5710: 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 0d 0a 71 75  ..----..41....qu
5720: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
5730: 45 4c 45 43 54 20 41 4c 4c 20 38 37 20 41 53 20  ELECT ALL 87 AS 
5740: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63  col1 FROM tab2 c
5750: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 37 0d 0a 38  or0..----..87..8
5760: 37 0d 0a 38 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  7..87....onlyif 
5770: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
5780: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
5790: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
57a0: 6c 2d 31 31 36 0d 0a 53 45 4c 45 43 54 20 44 49  l-116..SELECT DI
57b0: 53 54 49 4e 43 54 20 2b 20 2d 20 4d 49 4e 28 20  STINCT + - MIN( 
57c0: 44 49 53 54 49 4e 43 54 20 28 20 32 33 20 29 20  DISTINCT ( 23 ) 
57d0: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
57e0: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
57f0: 2d 0d 0a 2d 32 33 0d 0a 0d 0a 73 6b 69 70 69 66  -..-23....skipif
5800: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
5810: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
5820: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
5830: 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  16..SELECT DISTI
5840: 4e 43 54 20 2b 20 2d 20 4d 49 4e 20 28 20 44 49  NCT + - MIN ( DI
5850: 53 54 49 4e 43 54 20 28 20 32 33 20 29 20 29 20  STINCT ( 23 ) ) 
5860: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
5870: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
5880: 0a 2d 32 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-23....query I 
5890: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
58a0: 41 4c 4c 20 2d 20 2b 20 31 31 20 2a 20 2d 20 63  ALL - + 11 * - c
58b0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
58c0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 38   cor0..----..108
58d0: 39 0d 0a 31 31 30 0d 0a 35 31 37 0d 0a 0d 0a 71  9..110..517....q
58e0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
58f0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
5900: 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
5910: 45 52 45 20 2d 20 36 34 20 2a 20 2d 20 63 6f 6c  ERE - 64 * - col
5920: 31 20 2b 20 2b 20 35 20 49 4e 20 28 20 2d 20 2d  1 + + 5 IN ( - -
5930: 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col1 )..----...
5940: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
5950: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
5960: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
5970: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
5980: 6c 2d 31 31 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-119..SELECT AL
5990: 4c 20 43 41 53 54 28 20 2d 20 2d 20 37 36 20 41  L CAST( - - 76 A
59a0: 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f  S SIGNED ) AS co
59b0: 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
59c0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a  cor0..----..76..
59d0: 37 36 0d 0a 37 36 0d 0a 0d 0a 73 6b 69 70 69 66  76..76....skipif
59e0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
59f0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
5a00: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
5a10: 31 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43  19..SELECT ALL C
5a20: 41 53 54 20 28 20 2d 20 2d 20 37 36 20 41 53 20  AST ( - - 76 AS 
5a30: 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c  INTEGER ) AS col
5a40: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
5a50: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 37  or0..----..76..7
5a60: 36 0d 0a 37 36 0d 0a 0d 0a 71 75 65 72 79 20 49  6..76....query I
5a70: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
5a80: 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 63 6f   DISTINCT + - co
5a90: 6c 30 20 2b 20 2d 20 34 33 20 2a 20 63 6f 6c 31  l0 + - 43 * col1
5aa0: 20 2b 20 39 33 20 46 52 4f 4d 20 74 61 62 31 20   + 93 FROM tab1 
5ab0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
5ac0: 32 30 31 39 0d 0a 2d 32 30 37 0d 0a 2d 35 36 30  2019..-207..-560
5ad0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
5ae0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
5af0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
5b00: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31  owsort label-121
5b10: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
5b20: 54 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  T + - COUNT( * )
5b30: 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52   * COUNT( * ) FR
5b40: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
5b50: 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69  .----..-9....ski
5b60: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
5b70: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
5b80: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
5b90: 6c 2d 31 32 31 0d 0a 53 45 4c 45 43 54 20 44 49  l-121..SELECT DI
5ba0: 53 54 49 4e 43 54 20 2b 20 2d 20 43 4f 55 4e 54  STINCT + - COUNT
5bb0: 20 28 20 2a 20 29 20 2a 20 43 4f 55 4e 54 20 28   ( * ) * COUNT (
5bc0: 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41   * ) FROM tab0 A
5bd0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  S cor0..----..-9
5be0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
5bf0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37 33  ort..SELECT + 73
5c00: 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20   + col0 AS col2 
5c10: 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
5c20: 2d 20 37 36 20 2a 20 2d 20 34 33 20 3c 20 2d 20  - 76 * - 43 < - 
5c30: 2b 20 35 33 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  + 53..----....sk
5c40: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
5c50: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
5c60: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
5c70: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
5c80: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
5c90: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
5ca0: 49 53 54 49 4e 43 54 20 36 30 20 63 6f 6c 31 20  ISTINCT 60 col1 
5cb0: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
5cc0: 0a 36 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .60....onlyif my
5cd0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
5ce0: 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
5cf0: 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
5d00: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
5d10: 6f 72 74 20 6c 61 62 65 6c 2d 31 32 34 0d 0a 53  ort label-124..S
5d20: 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
5d30: 20 44 49 56 20 2d 20 32 34 20 46 52 4f 4d 20 74   DIV - 24 FROM t
5d40: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ab2..----..0....
5d50: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
5d60: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
5d70: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
5d80: 61 62 65 6c 2d 31 32 34 0d 0a 53 45 4c 45 43 54  abel-124..SELECT
5d90: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20 2d   COUNT ( * ) / -
5da0: 20 32 34 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   24 FROM tab2..-
5db0: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
5dc0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
5dd0: 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20  T DISTINCT col0 
5de0: 2a 20 28 20 2b 20 36 35 20 29 20 46 52 4f 4d 20  * ( + 65 ) FROM 
5df0: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 35 36 35 35  tab0..----..5655
5e00: 0d 0a 36 33 30 35 0d 0a 39 37 35 0d 0a 0d 0a 71  ..6305..975....q
5e10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
5e20: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
5e30: 39 36 20 2a 20 2b 20 2d 20 35 33 20 2a 20 2b 20  96 * + - 53 * + 
5e40: 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46  + col2 AS col2 F
5e50: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
5e60: 2d 32 33 39 31 33 36 0d 0a 2d 35 30 33 37 31 32  -239136..-503712
5e70: 0d 0a 2d 35 30 38 38 30 0d 0a 0d 0a 71 75 65 72  ..-50880....quer
5e80: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
5e90: 45 43 54 20 31 35 20 2b 20 2b 20 2d 20 31 31 20  ECT 15 + + - 11 
5ea0: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
5eb0: 0a 34 0d 0a 34 0d 0a 34 0d 0a 0d 0a 6f 6e 6c 79  .4..4..4....only
5ec0: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
5ed0: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
5ee0: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
5ef0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
5f00: 32 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  28..SELECT DISTI
5f10: 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
5f20: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 34  cor0 WHERE NOT 4
5f30: 33 20 2b 20 43 41 53 54 28 20 2b 20 63 6f 6c 31  3 + CAST( + col1
5f40: 20 41 53 20 53 49 47 4e 45 44 20 29 20 49 53 20   AS SIGNED ) IS 
5f50: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  NULL..----..9 va
5f60: 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
5f70: 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
5f80: 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
5f90: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
5fa0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
5fb0: 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  e..query III row
5fc0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 38 0d 0a  sort label-128..
5fd0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
5fe0: 2a 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  * FROM tab0 cor0
5ff0: 20 57 48 45 52 45 20 4e 4f 54 20 34 33 20 2b 20   WHERE NOT 43 + 
6000: 43 41 53 54 20 28 20 2b 20 63 6f 6c 31 20 41 53  CAST ( + col1 AS
6010: 20 49 4e 54 45 47 45 52 20 29 20 49 53 20 4e 55   INTEGER ) IS NU
6020: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
6030: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
6040: 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
6050: 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
6060: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6070: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31  t..SELECT - col1
6080: 20 2b 20 2d 20 28 20 2d 20 38 20 29 20 2b 20 2d   + - ( - 8 ) + -
6090: 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52   col1 AS col0 FR
60a0: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
60b0: 0a 2d 2d 2d 2d 0d 0a 2d 31 35 34 0d 0a 2d 33 34  .----..-154..-34
60c0: 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..6....query I r
60d0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
60e0: 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 28 20 63 6f   + col0 + - ( co
60f0: 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  l1 ) FROM tab1 A
6100: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
6110: 33 38 0d 0a 2d 36 35 0d 0a 2d 39 30 0d 0a 0d 0a  38..-65..-90....
6120: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
6130: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
6140: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
6150: 72 74 20 6c 61 62 65 6c 2d 31 33 31 0d 0a 53 45  rt label-131..SE
6160: 4c 45 43 54 20 2d 20 37 34 20 2a 20 2d 20 43 4f  LECT - 74 * - CO
6170: 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  UNT( * ) AS col1
6180: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
6190: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 32 0d 0a 0d  r0..----..222...
61a0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
61b0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
61c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
61d0: 6c 61 62 65 6c 2d 31 33 31 0d 0a 53 45 4c 45 43  label-131..SELEC
61e0: 54 20 2d 20 37 34 20 2a 20 2d 20 43 4f 55 4e 54  T - 74 * - COUNT
61f0: 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46   ( * ) AS col1 F
6200: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
6210: 0d 0a 2d 2d 2d 2d 0d 0a 32 32 32 0d 0a 0d 0a 6f  ..----..222....o
6220: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
6230: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
6240: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6250: 74 20 6c 61 62 65 6c 2d 31 33 32 0d 0a 53 45 4c  t label-132..SEL
6260: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
6270: 4f 55 4e 54 28 20 44 49 53 54 49 4e 43 54 20 37  OUNT( DISTINCT 7
6280: 34 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  4 ) AS col1 FROM
6290: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52   tab0 AS cor0 CR
62a0: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53  OSS JOIN tab2 AS
62b0: 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   cor1..----..-1.
62c0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
62d0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
62e0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
62f0: 74 20 6c 61 62 65 6c 2d 31 33 32 0d 0a 53 45 4c  t label-132..SEL
6300: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
6310: 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20  OUNT ( DISTINCT 
6320: 37 34 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  74 ) AS col1 FRO
6330: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43  M tab0 AS cor0 C
6340: 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41  ROSS JOIN tab2 A
6350: 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor1..----..-1
6360: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
6370: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
6380: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
6390: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 33  owsort label-133
63a0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b  ..SELECT ALL - +
63b0: 20 4d 41 58 28 20 2d 20 2b 20 63 6f 6c 30 20 29   MAX( - + col0 )
63c0: 20 2d 20 2b 20 36 31 20 41 53 20 63 6f 6c 31 20   - + 61 AS col1 
63d0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
63e0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 0d 0a  0..----..-46....
63f0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
6400: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
6410: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
6420: 61 62 65 6c 2d 31 33 33 0d 0a 53 45 4c 45 43 54  abel-133..SELECT
6430: 20 41 4c 4c 20 2d 20 2b 20 4d 41 58 20 28 20 2d   ALL - + MAX ( -
6440: 20 2b 20 63 6f 6c 30 20 29 20 2d 20 2b 20 36 31   + col0 ) - + 61
6450: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
6460: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
6470: 0d 0a 2d 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-46....query I
6480: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
6490: 54 20 41 4c 4c 20 33 39 2c 20 33 37 20 41 53 20  T ALL 39, 37 AS 
64a0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
64b0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 39  S cor0..----..39
64c0: 0d 0a 33 37 0d 0a 33 39 0d 0a 33 37 0d 0a 33 39  ..37..39..37..39
64d0: 0d 0a 33 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..37....query I 
64e0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
64f0: 41 4c 4c 20 2d 20 35 36 20 2a 20 2b 20 2b 20 63  ALL - 56 * + + c
6500: 6f 6c 30 20 2b 20 2d 20 63 6f 6c 31 20 2d 20 63  ol0 + - col1 - c
6510: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol1 FROM tab1 co
6520: 72 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 30 20  r0 WHERE - col0 
6530: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
6540: 2d 0d 0a 2d 32 38 38 34 0d 0a 2d 34 37 37 30 0d  -..-2884..-4770.
6550: 0a 2d 35 31 39 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  .-5190....onlyif
6560: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
6570: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
6580: 65 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a  e: DECIMAL type:
6590: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
65a0: 72 74 20 6c 61 62 65 6c 2d 31 33 36 0d 0a 53 45  rt label-136..SE
65b0: 4c 45 43 54 20 41 4c 4c 20 2b 20 38 35 20 2b 20  LECT ALL + 85 + 
65c0: 2b 20 43 41 53 54 28 20 2b 20 2b 20 28 20 2d 20  + CAST( + + ( - 
65d0: 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
65e0: 47 4e 45 44 20 29 20 29 20 41 53 20 44 45 43 49  GNED ) ) AS DECI
65f0: 4d 41 4c 20 29 20 46 52 4f 4d 20 74 61 62 31 20  MAL ) FROM tab1 
6600: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
6610: 54 20 28 20 2d 20 2b 20 38 20 29 20 49 53 20 4e  T ( - + 8 ) IS N
6620: 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
6630: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
6640: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
6650: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
6660: 6c 61 62 65 6c 2d 31 33 36 0d 0a 53 45 4c 45 43  label-136..SELEC
6670: 54 20 41 4c 4c 20 2b 20 38 35 20 2b 20 2b 20 43  T ALL + 85 + + C
6680: 41 53 54 20 28 20 2b 20 2b 20 28 20 2d 20 43 41  AST ( + + ( - CA
6690: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
66a0: 45 47 45 52 20 29 20 29 20 41 53 20 52 45 41 4c  EGER ) ) AS REAL
66b0: 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
66c0: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
66d0: 20 2d 20 2b 20 38 20 29 20 49 53 20 4e 4f 54 20   - + 8 ) IS NOT 
66e0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
66f0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
6700: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
6710: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
6720: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
6730: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
6740: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
6750: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
6760: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
6770: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
6780: 20 6c 61 62 65 6c 2d 31 33 38 0d 0a 53 45 4c 45   label-138..SELE
6790: 43 54 20 41 4c 4c 20 2b 20 34 38 20 44 49 56 20  CT ALL + 48 DIV 
67a0: 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  - col1 FROM tab0
67b0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
67c0: 2d 32 0d 0a 2d 34 38 0d 0a 30 0d 0a 0d 0a 73 6b  -2..-48..0....sk
67d0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
67e0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
67f0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
6800: 65 6c 2d 31 33 38 0d 0a 53 45 4c 45 43 54 20 41  el-138..SELECT A
6810: 4c 4c 20 2b 20 34 38 20 2f 20 2d 20 63 6f 6c 31  LL + 48 / - col1
6820: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
6830: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d 0a 2d 34  r0..----..-2..-4
6840: 38 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  8..0....skipif p
6850: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
6860: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
6870: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
6880: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
6890: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
68a0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
68b0: 54 20 2d 20 35 20 63 6f 6c 30 20 46 52 4f 4d 20  T - 5 col0 FROM 
68c0: 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
68d0: 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .-5....onlyif my
68e0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
68f0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
6900: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
6910: 31 34 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  140..SELECT ALL 
6920: 2b 20 39 35 20 2a 20 43 4f 55 4e 54 28 20 2a 20  + 95 * COUNT( * 
6930: 29 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  ) * COUNT( * ) *
6940: 20 2d 20 2b 20 4d 41 58 28 20 2b 20 2d 20 63 6f   - + MAX( + - co
6950: 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l1 ) AS col2 FRO
6960: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 33  M tab2..----..43
6970: 36 30 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  605....skipif my
6980: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
6990: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
69a0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 30 0d  wsort label-140.
69b0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 39 35  .SELECT ALL + 95
69c0: 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   * COUNT ( * ) *
69d0: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d   COUNT ( * ) * -
69e0: 20 2b 20 4d 41 58 20 28 20 2b 20 2d 20 63 6f 6c   + MAX ( + - col
69f0: 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
6a00: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 33 36   tab2..----..436
6a10: 30 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  05....query III 
6a20: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
6a30: 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
6a40: 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2a 20 63  E NOT - col0 * c
6a50: 6f 6c 30 20 2b 20 2d 20 2d 20 63 6f 6c 30 20 42  ol0 + - - col0 B
6a60: 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
6a70: 2b 20 31 37 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  + 17..----....qu
6a80: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
6a90: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
6aa0: 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab0 WHERE NOT - 
6ab0: 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a  + col1 IS NULL..
6ac0: 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
6ad0: 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37  ashing to c4b427
6ae0: 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30  65dff94eaaa46040
6af0: 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75  e537fb43b7....qu
6b00: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
6b10: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
6b20: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 28 20  OM tab0 WHERE ( 
6b30: 2b 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c  + + col2 * - col
6b40: 31 20 29 20 3e 20 2d 20 63 6f 6c 31 20 2a 20 2d  1 ) > - col1 * -
6b50: 20 2d 20 35 34 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d   - 54..----..15.
6b60: 0a 38 31 0d 0a 34 37 0d 0a 38 37 0d 0a 32 31 0d  .81..47..87..21.
6b70: 0a 31 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .10....onlyif my
6b80: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
6b90: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
6ba0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
6bb0: 31 34 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  144..SELECT DIST
6bc0: 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20  INCT + COUNT( * 
6bd0: 29 20 2a 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a  ) * - - COUNT( *
6be0: 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d   ) FROM tab1..--
6bf0: 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..9....skipif 
6c00: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
6c10: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
6c20: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34  rowsort label-14
6c30: 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
6c40: 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  CT + COUNT ( * )
6c50: 20 2a 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a   * - - COUNT ( *
6c60: 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d   ) FROM tab1..--
6c70: 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79 20 49  --..9....query I
6c80: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
6c90: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
6ca0: 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 39 30 20  HERE NOT ( - 90 
6cb0: 2d 20 2d 20 63 6f 6c 31 20 29 20 49 53 20 4e 4f  - - col1 ) IS NO
6cc0: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
6cd0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
6ce0: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
6cf0: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
6d00: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
6d10: 2d 31 34 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -146..SELECT DIS
6d20: 54 49 4e 43 54 20 2d 20 36 39 20 2f 20 2b 20 43  TINCT - 69 / + C
6d30: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
6d40: 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  NED ) FROM tab0.
6d50: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
6d60: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
6d70: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
6d80: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
6d90: 62 65 6c 2d 31 34 36 0d 0a 53 45 4c 45 43 54 20  bel-146..SELECT 
6da0: 44 49 53 54 49 4e 43 54 20 2d 20 36 39 20 2f 20  DISTINCT - 69 / 
6db0: 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
6dc0: 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
6dd0: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab0..----..NULL
6de0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
6df0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31 34 20  sort..SELECT 14 
6e00: 41 53 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c 30 20  AS col1, + col0 
6e10: 2b 20 2b 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c  + + col1 + - col
6e20: 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
6e30: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 2d  ab1..----..14..-
6e40: 33 31 0d 0a 31 34 0d 0a 33 31 0d 0a 31 34 0d 0a  31..14..31..14..
6e50: 37 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  70....onlyif mys
6e60: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
6e70: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
6e80: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
6e90: 74 20 6c 61 62 65 6c 2d 31 34 38 0d 0a 53 45 4c  t label-148..SEL
6ea0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
6eb0: 6f 6c 31 2c 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ol1, col1 FROM t
6ec0: 61 62 32 20 57 48 45 52 45 20 43 41 53 54 28 20  ab2 WHERE CAST( 
6ed0: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
6ee0: 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   > NULL..----...
6ef0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
6f00: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
6f10: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
6f20: 20 6c 61 62 65 6c 2d 31 34 38 0d 0a 53 45 4c 45   label-148..SELE
6f30: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
6f40: 6c 31 2c 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  l1, col1 FROM ta
6f50: 62 32 20 57 48 45 52 45 20 43 41 53 54 20 28 20  b2 WHERE CAST ( 
6f60: 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
6f70: 29 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  ) > NULL..----..
6f80: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
6f90: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35 32 20  rt..SELECT - 52 
6fa0: 41 53 20 63 6f 6c 32 2c 20 37 38 20 2a 20 2d 20  AS col2, 78 * - 
6fb0: 2b 20 33 35 20 46 52 4f 4d 20 74 61 62 31 0d 0a  + 35 FROM tab1..
6fc0: 2d 2d 2d 2d 0d 0a 2d 35 32 0d 0a 2d 32 37 33 30  ----..-52..-2730
6fd0: 0d 0a 2d 35 32 0d 0a 2d 32 37 33 30 0d 0a 2d 35  ..-52..-2730..-5
6fe0: 32 0d 0a 2d 32 37 33 30 0d 0a 0d 0a 71 75 65 72  2..-2730....quer
6ff0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
7000: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
7010: 32 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f  2 WHERE NOT + co
7020: 6c 31 20 2d 20 2b 20 63 6f 6c 31 20 49 53 20 4e  l1 - + col1 IS N
7030: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
7040: 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37  ues hashing to 7
7050: 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38  5c998aa53ac83218
7060: 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d  cbf2feb962d0a49.
7070: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
7080: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
7090: 4e 43 54 20 2d 20 2b 20 63 6f 6c 30 20 2a 20 2b  NCT - + col0 * +
70a0: 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
70b0: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
70c0: 0a 2d 2d 2d 2d 0d 0a 2d 32 33 34 36 0d 0a 2d 34  .----..-2346..-4
70d0: 39 32 38 0d 0a 2d 35 30 32 35 0d 0a 0d 0a 6f 6e  928..-5025....on
70e0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
70f0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
7100: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
7110: 20 6c 61 62 65 6c 2d 31 35 32 0d 0a 53 45 4c 45   label-152..SELE
7120: 43 54 20 41 4c 4c 20 2d 20 4d 41 58 28 20 44 49  CT ALL - MAX( DI
7130: 53 54 49 4e 43 54 20 2d 20 34 37 20 29 20 2a 20  STINCT - 47 ) * 
7140: 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  - - COUNT( * ) F
7150: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
7160: 0d 0a 2d 2d 2d 2d 0d 0a 31 34 31 0d 0a 0d 0a 73  ..----..141....s
7170: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
7180: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
7190: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
71a0: 62 65 6c 2d 31 35 32 0d 0a 53 45 4c 45 43 54 20  bel-152..SELECT 
71b0: 41 4c 4c 20 2d 20 4d 41 58 20 28 20 44 49 53 54  ALL - MAX ( DIST
71c0: 49 4e 43 54 20 2d 20 34 37 20 29 20 2a 20 2d 20  INCT - 47 ) * - 
71d0: 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52  - COUNT ( * ) FR
71e0: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
71f0: 0a 2d 2d 2d 2d 0d 0a 31 34 31 0d 0a 0d 0a 71 75  .----..141....qu
7200: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
7210: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
7220: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
7230: 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 4e 4f 54  E NOT + col1 NOT
7240: 20 49 4e 20 28 20 63 6f 6c 30 2c 20 32 32 2c 20   IN ( col0, 22, 
7250: 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + col1 )..----..
7260: 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
7270: 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
7280: 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
7290: 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  43b7....onlyif m
72a0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
72b0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
72c0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
72d0: 2d 31 35 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -154..SELECT ALL
72e0: 20 2d 20 53 55 4d 28 20 41 4c 4c 20 2b 20 2d 20   - SUM( ALL + - 
72f0: 38 35 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  85 ) AS col2 FRO
7300: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 35  M tab1..----..25
7310: 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
7320: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
7330: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
7340: 6f 72 74 20 6c 61 62 65 6c 2d 31 35 34 0d 0a 53  ort label-154..S
7350: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 53 55 4d 20  ELECT ALL - SUM 
7360: 28 20 41 4c 4c 20 2b 20 2d 20 38 35 20 29 20 41  ( ALL + - 85 ) A
7370: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
7380: 0d 0a 2d 2d 2d 2d 0d 0a 32 35 35 0d 0a 0d 0a 6f  ..----..255....o
7390: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
73a0: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
73b0: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
73c0: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
73d0: 2d 31 35 35 0d 0a 53 45 4c 45 43 54 20 35 32 20  -155..SELECT 52 
73e0: 44 49 56 20 2b 20 63 6f 6c 32 2c 20 2b 20 63 6f  DIV + col2, + co
73f0: 6c 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l0 col1 FROM tab
7400: 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 35 31 0d 0a  1..----..0..51..
7410: 30 0d 0a 38 35 0d 0a 30 0d 0a 39 31 0d 0a 0d 0a  0..85..0..91....
7420: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
7430: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
7440: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
7450: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
7460: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
7470: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
7480: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
7490: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
74a0: 35 35 0d 0a 53 45 4c 45 43 54 20 35 32 20 2f 20  55..SELECT 52 / 
74b0: 2b 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c 30 20 63  + col2, + col0 c
74c0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
74d0: 2d 2d 2d 0d 0a 30 0d 0a 35 31 0d 0a 30 0d 0a 38  ---..0..51..0..8
74e0: 35 0d 0a 30 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79  5..0..91....only
74f0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
7500: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
7510: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
7520: 61 62 65 6c 2d 31 35 36 0d 0a 53 45 4c 45 43 54  abel-156..SELECT
7530: 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a 20   ALL - COUNT( * 
7540: 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
7550: 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
7560: 61 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab1 AS cor1..---
7570: 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-9....skipif 
7580: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
7590: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
75a0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35  rowsort label-15
75b0: 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  6..SELECT ALL - 
75c0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
75d0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52   tab2 AS cor0 CR
75e0: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
75f0: 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d   cor1..----..-9.
7600: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
7610: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
7620: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
7630: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
7640: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
7650: 6c 61 62 65 6c 2d 31 35 37 0d 0a 53 45 4c 45 43  label-157..SELEC
7660: 54 20 31 33 20 2a 20 2b 20 43 41 53 54 28 20 4e  T 13 * + CAST( N
7670: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
7680: 2b 20 2b 20 28 20 2d 20 2b 20 4d 41 58 28 20 2b  + + ( - + MAX( +
7690: 20 2d 20 63 6f 6c 31 20 29 20 29 20 46 52 4f 4d   - col1 ) ) FROM
76a0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
76b0: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
76c0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
76d0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
76e0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
76f0: 6c 2d 31 35 37 0d 0a 53 45 4c 45 43 54 20 31 33  l-157..SELECT 13
7700: 20 2a 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c   * + CAST ( NULL
7710: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20   AS INTEGER ) + 
7720: 2b 20 28 20 2d 20 2b 20 4d 41 58 20 28 20 2b 20  + ( - + MAX ( + 
7730: 2d 20 63 6f 6c 31 20 29 20 29 20 46 52 4f 4d 20  - col1 ) ) FROM 
7740: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
7750: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
7760: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
7770: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 37  ECT DISTINCT - 7
7780: 33 20 2b 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 2d  3 + - - col2 + -
7790: 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 30 20 41   col2 + + col0 A
77a0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
77b0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
77c0: 2d 32 32 0d 0a 31 32 0d 0a 31 38 0d 0a 0d 0a 71  -22..12..18....q
77d0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
77e0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
77f0: 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  T * FROM tab1 AS
7800: 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f   cor0 WHERE + co
7810: 6c 30 20 3d 20 2d 20 38 36 0d 0a 2d 2d 2d 2d 0d  l0 = - 86..----.
7820: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
7830: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
7840: 6f 6c 32 20 2b 20 2b 20 2d 20 37 32 20 46 52 4f  ol2 + + - 72 FRO
7850: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
7860: 2d 2d 2d 2d 0d 0a 2d 32 35 0d 0a 2d 36 32 0d 0a  ----..-25..-62..
7870: 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  27....query I ro
7880: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
7890: 4c 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 28 20 38  L + col2 + + ( 8
78a0: 37 20 29 20 2d 20 2b 20 2b 20 39 38 20 2b 20 2d  7 ) - + + 98 + -
78b0: 20 63 6f 6c 31 20 2a 20 63 6f 6c 31 20 46 52 4f   col1 * col1 FRO
78c0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
78d0: 2d 2d 2d 2d 0d 0a 2d 34 34 32 0d 0a 2d 36 35 32  ----..-442..-652
78e0: 35 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49  5..87....query I
78f0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
7900: 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30   DISTINCT + col0
7910: 20 2a 20 28 20 36 35 20 29 20 41 53 20 63 6f 6c   * ( 65 ) AS col
7920: 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
7930: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 39 39 30 0d  or0..----..2990.
7940: 0a 34 31 36 30 0d 0a 34 38 37 35 0d 0a 0d 0a 71  .4160..4875....q
7950: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
7960: 53 45 4c 45 43 54 20 32 20 46 52 4f 4d 20 74 61  SELECT 2 FROM ta
7970: 62 30 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f  b0 cor0 WHERE co
7980: 6c 32 20 49 4e 20 28 20 2b 20 63 6f 6c 31 20 29  l2 IN ( + col1 )
7990: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
79a0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
79b0: 54 20 2b 20 28 20 63 6f 6c 31 20 29 20 2a 20 2b  T + ( col1 ) * +
79c0: 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 30 20 46   col2 + - col0 F
79d0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
79e0: 0d 0a 2d 2d 2d 2d 0d 0a 31 32 39 33 0d 0a 32 31  ..----..1293..21
79f0: 30 0d 0a 33 31 30 35 0d 0a 0d 0a 6f 6e 6c 79 69  0..3105....onlyi
7a00: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
7a10: 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74  yntax: DECIMAL t
7a20: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
7a30: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
7a40: 36 35 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  65..SELECT * FRO
7a50: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
7a60: 48 45 52 45 20 4e 55 4c 4c 20 42 45 54 57 45 45  HERE NULL BETWEE
7a70: 4e 20 4e 55 4c 4c 20 41 4e 44 20 43 41 53 54 28  N NULL AND CAST(
7a80: 20 39 30 20 41 53 20 44 45 43 49 4d 41 4c 20 29   90 AS DECIMAL )
7a90: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
7aa0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
7ab0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
7ac0: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
7ad0: 2d 31 36 35 0d 0a 53 45 4c 45 43 54 20 2a 20 46  -165..SELECT * F
7ae0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
7af0: 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54 57   WHERE NULL BETW
7b00: 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 43 41 53  EEN NULL AND CAS
7b10: 54 20 28 20 39 30 20 41 53 20 52 45 41 4c 20 29  T ( 90 AS REAL )
7b20: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
7b30: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
7b40: 54 20 41 4c 4c 20 35 20 2b 20 2b 20 33 36 20 41  T ALL 5 + + 36 A
7b50: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
7b60: 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 34 31 0d 0a  ..----..41..41..
7b70: 34 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  41....query I ro
7b80: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
7b90: 6c 32 20 2a 20 2b 20 2b 20 34 35 20 46 52 4f 4d  l2 * + + 45 FROM
7ba0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 36 35   tab1..----..265
7bb0: 35 0d 0a 33 30 36 30 0d 0a 34 33 32 30 0d 0a 0d  5..3060..4320...
7bc0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
7bd0: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
7be0: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
7bf0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
7c00: 62 65 6c 2d 31 36 38 0d 0a 53 45 4c 45 43 54 20  bel-168..SELECT 
7c10: 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
7c20: 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 28  tab2 WHERE NOT (
7c30: 20 2d 20 2b 20 63 6f 6c 32 20 29 20 3c 3d 20 43   - + col2 ) <= C
7c40: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
7c50: 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73  NED )..----....s
7c60: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
7c70: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
7c80: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
7c90: 6c 61 62 65 6c 2d 31 36 38 0d 0a 53 45 4c 45 43  label-168..SELEC
7ca0: 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
7cb0: 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
7cc0: 20 28 20 2d 20 2b 20 63 6f 6c 32 20 29 20 3c 3d   ( - + col2 ) <=
7cd0: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
7ce0: 49 4e 54 45 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d  INTEGER )..----.
7cf0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
7d00: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
7d10: 31 20 2a 20 2d 20 2d 20 38 32 20 41 53 20 63 6f  1 * - - 82 AS co
7d20: 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
7d30: 2d 2d 0d 0a 2d 34 31 38 32 0d 0a 2d 35 34 39 34  --..-4182..-5494
7d40: 0d 0a 2d 36 33 31 34 0d 0a 0d 0a 6f 6e 6c 79 69  ..-6314....onlyi
7d50: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
7d60: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
7d70: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
7d80: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37 30 0d  wsort label-170.
7d90: 0a 53 45 4c 45 43 54 20 31 30 20 44 49 56 20 32  .SELECT 10 DIV 2
7da0: 38 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  8 FROM tab0..---
7db0: 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b  -..0..0..0....sk
7dc0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
7dd0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
7de0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
7df0: 65 6c 2d 31 37 30 0d 0a 53 45 4c 45 43 54 20 31  el-170..SELECT 1
7e00: 30 20 2f 20 32 38 20 46 52 4f 4d 20 74 61 62 30  0 / 28 FROM tab0
7e10: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
7e20: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
7e30: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
7e40: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
7e50: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37 31 0d  wsort label-171.
7e60: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
7e70: 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31  T( * ) FROM tab1
7e80: 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20   WHERE NOT col2 
7e90: 3d 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  = - col0..----..
7ea0: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
7eb0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
7ec0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
7ed0: 6f 72 74 20 6c 61 62 65 6c 2d 31 37 31 0d 0a 53  ort label-171..S
7ee0: 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20  ELECT ALL COUNT 
7ef0: 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20  ( * ) FROM tab1 
7f00: 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 3d  WHERE NOT col2 =
7f10: 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 33   - col0..----..3
7f20: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
7f30: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33 36 20 2a  ort..SELECT 36 *
7f40: 20 2b 20 33 38 20 46 52 4f 4d 20 74 61 62 30 0d   + 38 FROM tab0.
7f50: 0a 2d 2d 2d 2d 0d 0a 31 33 36 38 0d 0a 31 33 36  .----..1368..136
7f60: 38 0d 0a 31 33 36 38 0d 0a 0d 0a 71 75 65 72 79  8..1368....query
7f70: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
7f80: 43 54 20 63 6f 6c 30 20 2a 20 2d 20 36 31 20 41  CT col0 * - 61 A
7f90: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
7fa0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
7fb0: 2d 35 33 30 37 0d 0a 2d 35 39 31 37 0d 0a 2d 39  -5307..-5917..-9
7fc0: 31 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  15....onlyif mys
7fd0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
7fe0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
7ff0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
8000: 37 34 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  74..SELECT - COU
8010: 4e 54 28 20 2a 20 29 20 2d 20 32 31 20 46 52 4f  NT( * ) - 21 FRO
8020: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
8030: 2d 2d 2d 2d 0d 0a 2d 32 34 0d 0a 0d 0a 73 6b 69  ----..-24....ski
8040: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
8050: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
8060: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
8070: 6c 2d 31 37 34 0d 0a 53 45 4c 45 43 54 20 2d 20  l-174..SELECT - 
8080: 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20 32 31  COUNT ( * ) - 21
8090: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
80a0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 0d 0a 0d  r0..----..-24...
80b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
80c0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
80d0: 54 20 2d 20 63 6f 6c 30 20 2a 20 37 31 20 2b 20  T - col0 * 71 + 
80e0: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
80f0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  S cor0..----..-3
8100: 32 32 30 0d 0a 2d 34 34 38 30 0d 0a 2d 35 32 35  220..-4480..-525
8110: 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
8120: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
8130: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
8140: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37  rowsort label-17
8150: 36 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 2d  6..SELECT MAX( -
8160: 20 38 32 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28   82 ) * + COUNT(
8170: 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a   * ) FROM tab2..
8180: 2d 2d 2d 2d 0d 0a 2d 32 34 36 0d 0a 0d 0a 73 6b  ----..-246....sk
8190: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
81a0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
81b0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
81c0: 65 6c 2d 31 37 36 0d 0a 53 45 4c 45 43 54 20 4d  el-176..SELECT M
81d0: 41 58 20 28 20 2d 20 38 32 20 29 20 2a 20 2b 20  AX ( - 82 ) * + 
81e0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
81f0: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34   tab2..----..-24
8200: 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
8210: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
8220: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
8230: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37  rowsort label-17
8240: 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  7..SELECT DISTIN
8250: 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT + COUNT( * ) 
8260: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
8270: 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20  ( NULL ) IS NOT 
8280: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  NULL..----..0...
8290: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
82a0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
82b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
82c0: 6c 61 62 65 6c 2d 31 37 37 0d 0a 53 45 4c 45 43  label-177..SELEC
82d0: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55  T DISTINCT + COU
82e0: 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
82f0: 62 32 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20  b2 WHERE ( NULL 
8300: 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  ) IS NOT NULL..-
8310: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..0....onlyif
8320: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
8330: 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66  te syntax: DIV f
8340: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
8350: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
8360: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37 38  owsort label-178
8370: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
8380: 54 20 2d 20 4d 41 58 28 20 41 4c 4c 20 63 6f 6c  T - MAX( ALL col
8390: 31 20 29 20 44 49 56 20 43 4f 55 4e 54 28 20 2a  1 ) DIV COUNT( *
83a0: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
83b0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d  tab1..----..-15.
83c0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
83d0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
83e0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
83f0: 74 20 6c 61 62 65 6c 2d 31 37 38 0d 0a 53 45 4c  t label-178..SEL
8400: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d  ECT DISTINCT - M
8410: 41 58 20 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20  AX ( ALL col1 ) 
8420: 2f 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  / COUNT ( * ) AS
8430: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
8440: 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 0d 0a 71 75  .----..-15....qu
8450: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
8460: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
8470: 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab0 WHERE NOT ( 
8480: 63 6f 6c 30 20 2a 20 39 20 29 20 49 53 20 4e 4f  col0 * 9 ) IS NO
8490: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
84a0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
84b0: 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
84c0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
84d0: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
84e0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
84f0: 65 6c 2d 31 38 30 0d 0a 53 45 4c 45 43 54 20 2b  el-180..SELECT +
8500: 20 37 30 20 2a 20 43 41 53 54 28 20 4d 49 4e 28   70 * CAST( MIN(
8510: 20 44 49 53 54 49 4e 43 54 20 37 34 20 29 20 41   DISTINCT 74 ) A
8520: 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f  S SIGNED ) AS co
8530: 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
8540: 2d 2d 0d 0a 35 31 38 30 0d 0a 0d 0a 73 6b 69 70  --..5180....skip
8550: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
8560: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
8570: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
8580: 2d 31 38 30 0d 0a 53 45 4c 45 43 54 20 2b 20 37  -180..SELECT + 7
8590: 30 20 2a 20 43 41 53 54 20 28 20 4d 49 4e 20 28  0 * CAST ( MIN (
85a0: 20 44 49 53 54 49 4e 43 54 20 37 34 20 29 20 41   DISTINCT 74 ) A
85b0: 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63  S INTEGER ) AS c
85c0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
85d0: 2d 2d 2d 0d 0a 35 31 38 30 0d 0a 0d 0a 6f 6e 6c  ---..5180....onl
85e0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
85f0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
8600: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
8610: 6c 61 62 65 6c 2d 31 38 31 0d 0a 53 45 4c 45 43  label-181..SELEC
8620: 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  T - COUNT( * ) *
8630: 20 2d 20 53 55 4d 28 20 63 6f 6c 30 20 2a 20 2b   - SUM( col0 * +
8640: 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32 20   col0 ) AS col2 
8650: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
8660: 0a 35 31 36 30 39 0d 0a 0d 0a 73 6b 69 70 69 66  .51609....skipif
8670: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
8680: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
8690: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
86a0: 38 31 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  81..SELECT - COU
86b0: 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 53 55 4d  NT ( * ) * - SUM
86c0: 20 28 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30   ( col0 * + col0
86d0: 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
86e0: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 36 30  tab0..----..5160
86f0: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  9....query III r
8700: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
8710: 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
8720: 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
8730: 63 6f 6c 32 20 2a 20 37 32 20 2d 20 2b 20 38 20  col2 * 72 - + 8 
8740: 49 4e 20 28 20 2b 20 63 6f 6c 31 20 2b 20 2b 20  IN ( + col1 + + 
8750: 28 20 2d 20 63 6f 6c 31 20 29 20 29 0d 0a 2d 2d  ( - col1 ) )..--
8760: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
8770: 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
8780: 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
8790: 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72  962d0a49....quer
87a0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
87b0: 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
87c0: 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
87d0: 2d 20 33 30 20 3e 3d 20 63 6f 6c 30 0d 0a 2d 2d  - 30 >= col0..--
87e0: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
87f0: 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
8800: 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
8810: 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72  962d0a49....quer
8820: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
8830: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
8840: 32 20 57 48 45 52 45 20 63 6f 6c 32 20 2b 20 28  2 WHERE col2 + (
8850: 20 63 6f 6c 32 20 29 20 2a 20 2b 20 63 6f 6c 30   col2 ) * + col0
8860: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
8870: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
8880: 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
8890: 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
88a0: 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72  962d0a49....quer
88b0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
88c0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
88d0: 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
88e0: 20 4e 4f 54 20 34 35 20 42 45 54 57 45 45 4e 20   NOT 45 BETWEEN 
88f0: 2d 20 63 6f 6c 30 20 41 4e 44 20 4e 55 4c 4c 0d  - col0 AND NULL.
8900: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
8910: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
8920: 20 2b 20 31 38 20 2a 20 2d 20 63 6f 6c 31 20 2b   + 18 * - col1 +
8930: 20 2d 20 28 20 2d 20 63 6f 6c 31 20 29 20 46 52   - ( - col1 ) FR
8940: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
8950: 54 20 63 6f 6c 30 20 3c 3d 20 63 6f 6c 30 0d 0a  T col0 <= col0..
8960: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
8970: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8980: 41 4c 4c 20 63 6f 6c 30 20 2a 20 2b 20 39 34 20  ALL col0 * + 94 
8990: 2b 20 2b 20 63 6f 6c 32 20 2a 20 34 39 20 46 52  + + col2 * 49 FR
89a0: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab1..----..1
89b0: 30 38 38 31 0d 0a 31 31 38 38 36 0d 0a 39 34 39  0881..11886..949
89c0: 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
89d0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
89e0: 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 2a 20 28  TINCT + col1 * (
89f0: 20 37 35 20 2a 20 2d 20 28 20 28 20 39 32 20 29   75 * - ( ( 92 )
8a00: 20 29 20 29 20 2b 20 2d 20 63 6f 6c 31 20 41 53   ) ) + - col1 AS
8a10: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
8a20: 0a 2d 2d 2d 2d 0d 0a 2d 33 32 34 33 34 37 0d 0a  .----..-324347..
8a30: 2d 33 34 35 30 35 0d 0a 2d 39 36 36 31 34 0d 0a  -34505..-96614..
8a40: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8a50: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
8a60: 43 54 20 2d 20 63 6f 6c 31 20 2d 20 2d 20 63 6f  CT - col1 - - co
8a70: 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
8a80: 74 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  tab0 WHERE NULL 
8a90: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
8aa0: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
8ab0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
8ac0: 54 49 4e 43 54 20 32 30 20 2d 20 2b 20 63 6f 6c  TINCT 20 - + col
8ad0: 30 20 2a 20 39 34 20 46 52 4f 4d 20 74 61 62 30  0 * 94 FROM tab0
8ae0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 39 30 0d 0a 2d  ..----..-1390..-
8af0: 38 31 35 38 0d 0a 2d 39 30 39 38 0d 0a 0d 0a 71  8158..-9098....q
8b00: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
8b10: 53 45 4c 45 43 54 20 2b 20 39 20 2b 20 39 34 20  SELECT + 9 + 94 
8b20: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
8b30: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d 0a 31 30  0..----..103..10
8b40: 33 0d 0a 31 30 33 0d 0a 0d 0a 71 75 65 72 79 20  3..103....query 
8b50: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
8b60: 54 20 28 20 2d 20 36 32 20 29 20 41 53 20 63 6f  T ( - 62 ) AS co
8b70: 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
8b80: 2d 2d 0d 0a 2d 36 32 0d 0a 2d 36 32 0d 0a 2d 36  --..-62..-62..-6
8b90: 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
8ba0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
8bb0: 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2b  TINCT - col0 + +
8bc0: 20 36 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   68 AS col1 FROM
8bd0: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 0d   tab2..----..-7.
8be0: 0a 32 32 0d 0a 34 0d 0a 0d 0a 73 6b 69 70 69 66  .22..4....skipif
8bf0: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
8c00: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
8c10: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
8c20: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
8c30: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
8c40: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  rt..SELECT + col
8c50: 30 20 2b 20 2b 20 28 20 2d 20 37 35 20 29 20 63  0 + + ( - 75 ) c
8c60: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
8c70: 2d 2d 2d 0d 0a 2d 36 30 0d 0a 31 32 0d 0a 32 32  ---..-60..12..22
8c80: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
8c90: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
8ca0: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
8cb0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
8cc0: 20 6c 61 62 65 6c 2d 31 39 35 0d 0a 53 45 4c 45   label-195..SELE
8cd0: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
8ce0: 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20  HERE NOT + col1 
8cf0: 2a 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  * CAST( NULL AS 
8d00: 53 49 47 4e 45 44 20 29 20 4e 4f 54 20 42 45 54  SIGNED ) NOT BET
8d10: 57 45 45 4e 20 28 20 2b 20 63 6f 6c 32 20 2a 20  WEEN ( + col2 * 
8d20: 2b 20 63 6f 6c 31 20 29 20 41 4e 44 20 28 20 4e  + col1 ) AND ( N
8d30: 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73  ULL )..----....s
8d40: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
8d50: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
8d60: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
8d70: 6c 61 62 65 6c 2d 31 39 35 0d 0a 53 45 4c 45 43  label-195..SELEC
8d80: 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
8d90: 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 2a  ERE NOT + col1 *
8da0: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
8db0: 49 4e 54 45 47 45 52 20 29 20 4e 4f 54 20 42 45  INTEGER ) NOT BE
8dc0: 54 57 45 45 4e 20 28 20 2b 20 63 6f 6c 32 20 2a  TWEEN ( + col2 *
8dd0: 20 2b 20 63 6f 6c 31 20 29 20 41 4e 44 20 28 20   + col1 ) AND ( 
8de0: 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  NULL )..----....
8df0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
8e00: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
8e10: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
8e20: 72 74 20 6c 61 62 65 6c 2d 31 39 36 0d 0a 53 45  rt label-196..SE
8e30: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
8e40: 4d 49 4e 28 20 63 6f 6c 32 20 29 20 41 53 20 63  MIN( col2 ) AS c
8e50: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol0 FROM tab1 WH
8e60: 45 52 45 20 31 37 20 2a 20 63 6f 6c 32 20 2b 20  ERE 17 * col2 + 
8e70: 63 6f 6c 30 20 42 45 54 57 45 45 4e 20 4e 55 4c  col0 BETWEEN NUL
8e80: 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  L AND NULL..----
8e90: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
8ea0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
8eb0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
8ec0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
8ed0: 39 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  96..SELECT DISTI
8ee0: 4e 43 54 20 2b 20 4d 49 4e 20 28 20 63 6f 6c 32  NCT + MIN ( col2
8ef0: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
8f00: 74 61 62 31 20 57 48 45 52 45 20 31 37 20 2a 20  tab1 WHERE 17 * 
8f10: 63 6f 6c 32 20 2b 20 63 6f 6c 30 20 42 45 54 57  col2 + col0 BETW
8f20: 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c  EEN NULL AND NUL
8f30: 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  L..----..NULL...
8f40: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
8f50: 0d 0a 53 45 4c 45 43 54 20 2b 20 39 39 20 2b 20  ..SELECT + 99 + 
8f60: 39 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  9 FROM tab2..---
8f70: 2d 0d 0a 31 30 38 0d 0a 31 30 38 0d 0a 31 30 38  -..108..108..108
8f80: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
8f90: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
8fa0: 2d 20 28 20 36 32 20 29 20 46 52 4f 4d 20 74 61  - ( 62 ) FROM ta
8fb0: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 32 0d 0a 2d  b0..----..-62..-
8fc0: 36 32 0d 0a 2d 36 32 0d 0a 0d 0a 71 75 65 72 79  62..-62....query
8fd0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
8fe0: 43 54 20 2d 20 28 20 2b 20 28 20 34 33 20 29 20  CT - ( + ( 43 ) 
8ff0: 29 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20  ) + - col0 FROM 
9000: 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28  tab1 WHERE NOT (
9010: 20 4e 55 4c 4c 20 29 20 42 45 54 57 45 45 4e 20   NULL ) BETWEEN 
9020: 4e 55 4c 4c 20 41 4e 44 20 2b 20 33 39 0d 0a 2d  NULL AND + 39..-
9030: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
9040: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
9050: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
9060: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
9070: 6f 72 74 20 6c 61 62 65 6c 2d 32 30 30 0d 0a 53  ort label-200..S
9080: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
9090: 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20  2 WHERE NOT ( - 
90a0: 63 6f 6c 30 20 2f 20 43 41 53 54 28 20 2d 20 63  col0 / CAST( - c
90b0: 6f 6c 30 20 2a 20 33 39 20 41 53 20 53 49 47 4e  ol0 * 39 AS SIGN
90c0: 45 44 20 29 20 2d 20 2b 20 36 20 29 20 3c 20 63  ED ) - + 6 ) < c
90d0: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ol0..----....ski
90e0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
90f0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
9100: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
9110: 62 65 6c 2d 32 30 30 0d 0a 53 45 4c 45 43 54 20  bel-200..SELECT 
9120: 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
9130: 45 20 4e 4f 54 20 28 20 2d 20 63 6f 6c 30 20 2f  E NOT ( - col0 /
9140: 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 30 20 2a   CAST ( - col0 *
9150: 20 33 39 20 41 53 20 49 4e 54 45 47 45 52 20 29   39 AS INTEGER )
9160: 20 2d 20 2b 20 36 20 29 20 3c 20 63 6f 6c 30 0d   - + 6 ) < col0.
9170: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
9180: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
9190: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
91a0: 48 45 52 45 20 28 20 2b 20 37 32 20 2a 20 63 6f  HERE ( + 72 * co
91b0: 6c 32 20 29 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d  l2 ) <> NULL..--
91c0: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
91d0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
91e0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
91f0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
9200: 30 32 0d 0a 53 45 4c 45 43 54 20 28 20 28 20 2d  02..SELECT ( ( -
9210: 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 29 20   COUNT( * ) ) ) 
9220: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
9230: 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  1 cor0..----..-3
9240: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
9250: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
9260: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
9270: 72 74 20 6c 61 62 65 6c 2d 32 30 32 0d 0a 53 45  rt label-202..SE
9280: 4c 45 43 54 20 28 20 28 20 2d 20 43 4f 55 4e 54  LECT ( ( - COUNT
9290: 20 28 20 2a 20 29 20 29 20 29 20 41 53 20 63 6f   ( * ) ) ) AS co
92a0: 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l0 FROM tab1 cor
92b0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 6f  0..----..-3....o
92c0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
92d0: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
92e0: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
92f0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9300: 32 30 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  203..SELECT DIST
9310: 49 4e 43 54 20 2d 20 63 6f 6c 30 20 44 49 56 20  INCT - col0 DIV 
9320: 2b 20 39 36 20 63 6f 6c 32 20 46 52 4f 4d 20 74  + 96 col2 FROM t
9330: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
9340: 2d 0d 0a 2d 31 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  -..-1..0....skip
9350: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
9360: 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
9370: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
9380: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
9390: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
93a0: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
93b0: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
93c0: 6f 72 74 20 6c 61 62 65 6c 2d 32 30 33 0d 0a 53  ort label-203..S
93d0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
93e0: 20 63 6f 6c 30 20 2f 20 2b 20 39 36 20 63 6f 6c   col0 / + 96 col
93f0: 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
9400: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30  or0..----..-1..0
9410: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
9420: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
9430: 6c 32 20 2f 20 2b 20 63 6f 6c 30 20 2d 20 36 20  l2 / + col0 - 6 
9440: 2a 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  * col1 FROM tab0
9450: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
9460: 4f 54 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e  OT col1 IS NOT N
9470: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
9480: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
9490: 4c 45 43 54 20 63 6f 6c 32 20 2a 20 2d 20 37 38  LECT col2 * - 78
94a0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
94b0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 36 36 36 0d  r0..----..-3666.
94c0: 0a 2d 37 37 32 32 0d 0a 2d 37 38 30 0d 0a 0d 0a  .-7722..-780....
94d0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
94e0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
94f0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
9500: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28 20  AS cor0 WHERE ( 
9510: 4e 55 4c 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20  NULL ) NOT IN ( 
9520: 2b 20 31 38 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  + 18 )..----....
9530: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
9540: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
9550: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
9560: 72 74 20 6c 61 62 65 6c 2d 32 30 37 0d 0a 53 45  rt label-207..SE
9570: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
9580: 4d 49 4e 28 20 41 4c 4c 20 2b 20 63 6f 6c 32 20  MIN( ALL + col2 
9590: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
95a0: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a  ab2..----..-23..
95b0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
95c0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
95d0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
95e0: 20 6c 61 62 65 6c 2d 32 30 37 0d 0a 53 45 4c 45   label-207..SELE
95f0: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d 49  CT DISTINCT - MI
9600: 4e 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 29  N ( ALL + col2 )
9610: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
9620: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 0d  b2..----..-23...
9630: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
9640: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
9650: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
9660: 6f 72 74 20 6c 61 62 65 6c 2d 32 30 38 0d 0a 53  ort label-208..S
9670: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
9680: 20 32 34 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a   24 * - COUNT( *
9690: 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
96a0: 2d 2d 0d 0a 37 32 0d 0a 0d 0a 73 6b 69 70 69 66  --..72....skipif
96b0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
96c0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
96d0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
96e0: 30 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  08..SELECT DISTI
96f0: 4e 43 54 20 2d 20 32 34 20 2a 20 2d 20 43 4f 55  NCT - 24 * - COU
9700: 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
9710: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 37 32 0d 0a 0d 0a  b2..----..72....
9720: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
9730: 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 46  .SELECT - col2 F
9740: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
9750: 20 57 48 45 52 45 20 2b 20 63 6f 6c 31 20 3e 20   WHERE + col1 > 
9760: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
9770: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
9780: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
9790: 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45  OM tab1 cor0 WHE
97a0: 52 45 20 63 6f 6c 31 20 4e 4f 54 20 49 4e 20 28  RE col1 NOT IN (
97b0: 20 63 6f 6c 30 20 2b 20 38 32 20 29 0d 0a 2d 2d   col0 + 82 )..--
97c0: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
97d0: 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31  hing to c6c0a411
97e0: 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31  1b36d04dbc811a11
97f0: 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72  e4d54cad....quer
9800: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
9810: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 38  ECT DISTINCT + 8
9820: 37 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  7 + col2 FROM ta
9830: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
9840: 0d 0a 31 34 36 0d 0a 31 35 35 0d 0a 31 38 33 0d  ..146..155..183.
9850: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
9860: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
9870: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
9880: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31 32 0d  wsort label-212.
9890: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20  .SELECT ALL - + 
98a0: 43 4f 55 4e 54 28 20 41 4c 4c 20 2b 20 63 6f 6c  COUNT( ALL + col
98b0: 30 20 29 20 2b 20 2d 20 31 31 20 63 6f 6c 32 20  0 ) + - 11 col2 
98c0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
98d0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d 0a 0d 0a  0..----..-14....
98e0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
98f0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
9900: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
9910: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
9920: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
9930: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
9940: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
9950: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31  rowsort label-21
9960: 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  2..SELECT ALL - 
9970: 2b 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20  + COUNT ( ALL + 
9980: 63 6f 6c 30 20 29 20 2b 20 2d 20 31 31 20 63 6f  col0 ) + - 11 co
9990: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
99a0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d  cor0..----..-14.
99b0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
99c0: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
99d0: 20 33 36 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   36 AS col2 FROM
99e0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
99f0: 45 52 45 20 28 20 2d 20 63 6f 6c 30 20 29 20 3e  ERE ( - col0 ) >
9a00: 3d 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  = + col0..----..
9a10: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
9a20: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
9a30: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
9a40: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31 34 0d 0a  sort label-214..
9a50: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20 43  SELECT ALL + + C
9a60: 4f 55 4e 54 28 20 2a 20 29 20 2b 20 37 32 20 46  OUNT( * ) + 72 F
9a70: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
9a80: 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 0d 0a 73 6b  ..----..75....sk
9a90: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
9aa0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
9ab0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
9ac0: 65 6c 2d 32 31 34 0d 0a 53 45 4c 45 43 54 20 41  el-214..SELECT A
9ad0: 4c 4c 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a  LL + + COUNT ( *
9ae0: 20 29 20 2b 20 37 32 20 46 52 4f 4d 20 74 61 62   ) + 72 FROM tab
9af0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
9b00: 0a 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .75....onlyif my
9b10: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
9b20: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
9b30: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9b40: 32 31 35 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  215..SELECT COUN
9b50: 54 28 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 29 20  T( ALL - col1 ) 
9b60: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
9b70: 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  2 cor0..----..3.
9b80: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
9b90: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
9ba0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9bb0: 74 20 6c 61 62 65 6c 2d 32 31 35 0d 0a 53 45 4c  t label-215..SEL
9bc0: 45 43 54 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20  ECT COUNT ( ALL 
9bd0: 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30  - col1 ) AS col0
9be0: 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
9bf0: 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72  .----..3....quer
9c00: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
9c10: 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 46  ECT ALL - col1 F
9c20: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
9c30: 20 57 48 45 52 45 20 28 20 34 39 20 2f 20 2d 20   WHERE ( 49 / - 
9c40: 38 36 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  86 ) IS NOT NULL
9c50: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32 31 0d  ..----..-1..-21.
9c60: 0a 2d 38 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  .-81....skipif p
9c70: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
9c80: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
9c90: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
9ca0: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
9cb0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
9cc0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 35  ..SELECT ALL + 5
9cd0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
9ce0: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
9cf0: 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL IS NULL..---
9d00: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
9d10: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
9d20: 20 2b 20 36 33 20 46 52 4f 4d 20 74 61 62 31 20   + 63 FROM tab1 
9d30: 57 48 45 52 45 20 4e 4f 54 20 34 34 20 4e 4f 54  WHERE NOT 44 NOT
9d40: 20 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c 30 20   BETWEEN - col0 
9d50: 41 4e 44 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  AND - col2..----
9d60: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
9d70: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
9d80: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
9d90: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31 39  owsort label-219
9da0: 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20  ..SELECT COUNT( 
9db0: 2a 20 29 20 2b 20 33 39 20 46 52 4f 4d 20 74 61  * ) + 39 FROM ta
9dc0: 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  b1 WHERE NULL IS
9dd0: 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
9de0: 0a 33 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .39....skipif my
9df0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
9e00: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
9e10: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31 39 0d  wsort label-219.
9e20: 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20  .SELECT COUNT ( 
9e30: 2a 20 29 20 2b 20 33 39 20 46 52 4f 4d 20 74 61  * ) + 39 FROM ta
9e40: 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  b1 WHERE NULL IS
9e50: 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
9e60: 0a 33 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .39....onlyif my
9e70: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
9e80: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
9e90: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9ea0: 74 20 6c 61 62 65 6c 2d 32 32 30 0d 0a 53 45 4c  t label-220..SEL
9eb0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41 53  ECT DISTINCT CAS
9ec0: 54 28 20 2d 20 36 36 20 41 53 20 53 49 47 4e 45  T( - 66 AS SIGNE
9ed0: 44 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  D ) AS col2 FROM
9ee0: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 36   tab0..----..-66
9ef0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
9f00: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
9f10: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
9f20: 72 74 20 6c 61 62 65 6c 2d 32 32 30 0d 0a 53 45  rt label-220..SE
9f30: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41  LECT DISTINCT CA
9f40: 53 54 20 28 20 2d 20 36 36 20 41 53 20 49 4e 54  ST ( - 66 AS INT
9f50: 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20 46  EGER ) AS col2 F
9f60: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
9f70: 2d 36 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -66....onlyif my
9f80: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
9f90: 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
9fa0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
9fb0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
9fc0: 6f 72 74 20 6c 61 62 65 6c 2d 32 32 31 0d 0a 53  ort label-221..S
9fd0: 45 4c 45 43 54 20 38 37 20 2a 20 43 4f 55 4e 54  ELECT 87 * COUNT
9fe0: 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c  ( DISTINCT - col
9ff0: 32 20 29 20 2b 20 2b 20 43 41 53 54 28 20 4e 55  2 ) + + CAST( NU
a000: 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41  LL AS SIGNED ) A
a010: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
a020: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
a030: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
a040: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
a050: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
a060: 61 62 65 6c 2d 32 32 31 0d 0a 53 45 4c 45 43 54  abel-221..SELECT
a070: 20 38 37 20 2a 20 43 4f 55 4e 54 20 28 20 44 49   87 * COUNT ( DI
a080: 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20 29 20  STINCT - col2 ) 
a090: 2b 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + + CAST ( NULL 
a0a0: 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
a0b0: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
a0c0: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e  ----..NULL....on
a0d0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
a0e0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
a0f0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
a100: 20 6c 61 62 65 6c 2d 32 32 32 0d 0a 53 45 4c 45   label-222..SELE
a110: 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT - COUNT( * ) 
a120: 2b 20 33 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  + 30 FROM tab1..
a130: 2d 2d 2d 2d 0d 0a 32 37 0d 0a 0d 0a 73 6b 69 70  ----..27....skip
a140: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
a150: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
a160: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
a170: 2d 32 32 32 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -222..SELECT - C
a180: 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 33 30 20  OUNT ( * ) + 30 
a190: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
a1a0: 0a 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .27....query I r
a1b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
a1c0: 6f 6c 32 20 2b 20 36 36 20 46 52 4f 4d 20 74 61  ol2 + 66 FROM ta
a1d0: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 36 0d 0a 31  b2..----..106..1
a1e0: 32 34 0d 0a 38 39 0d 0a 0d 0a 71 75 65 72 79 20  24..89....query 
a1f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
a200: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 36 38 20  T DISTINCT + 68 
a210: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
a220: 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f  1 WHERE NOT + co
a230: 6c 32 20 49 4e 20 28 20 28 20 63 6f 6c 30 20 29  l2 IN ( ( col0 )
a240: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 36 38 0d 0a 0d 0a   )..----..68....
a250: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
a260: 0a 53 45 4c 45 43 54 20 2d 20 35 30 20 2b 20 2d  .SELECT - 50 + -
a270: 20 39 30 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f   90 + col1 AS co
a280: 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
a290: 2d 2d 0d 0a 2d 31 32 36 0d 0a 2d 31 33 35 0d 0a  --..-126..-135..
a2a0: 2d 39 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -93....onlyif my
a2b0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
a2c0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
a2d0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
a2e0: 32 32 36 0d 0a 53 45 4c 45 43 54 20 2d 20 34 39  226..SELECT - 49
a2f0: 20 2b 20 2b 20 2b 20 28 20 43 4f 55 4e 54 28 20   + + + ( COUNT( 
a300: 2a 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20  * ) ) FROM tab2 
a310: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d  cor0..----..-46.
a320: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
a330: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
a340: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
a350: 74 20 6c 61 62 65 6c 2d 32 32 36 0d 0a 53 45 4c  t label-226..SEL
a360: 45 43 54 20 2d 20 34 39 20 2b 20 2b 20 2b 20 28  ECT - 49 + + + (
a370: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 46   COUNT ( * ) ) F
a380: 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d  ROM tab2 cor0..-
a390: 2d 2d 2d 0d 0a 2d 34 36 0d 0a 0d 0a 71 75 65 72  ---..-46....quer
a3a0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
a3b0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
a3c0: 30 20 2a 20 2d 20 30 20 2b 20 2d 20 63 6f 6c 31  0 * - 0 + - col1
a3d0: 20 2a 20 2b 20 63 6f 6c 31 20 2b 20 31 34 20 2a   * + col1 + 14 *
a3e0: 20 2b 20 31 33 20 46 52 4f 4d 20 74 61 62 31 20   + 13 FROM tab1 
a3f0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
a400: 31 34 0d 0a 2d 32 30 32 37 0d 0a 31 35 37 0d 0a  14..-2027..157..
a410: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
a420: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
a430: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
a440: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 32 38 0d 0a  sort label-228..
a450: 53 45 4c 45 43 54 20 2b 20 4d 41 58 28 20 2d 20  SELECT + MAX( - 
a460: 37 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  71 ) AS col0 FRO
a470: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
a480: 48 45 52 45 20 63 6f 6c 30 20 49 53 20 4e 4f 54  HERE col0 IS NOT
a490: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31   NULL..----..-71
a4a0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
a4b0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
a4c0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
a4d0: 72 74 20 6c 61 62 65 6c 2d 32 32 38 0d 0a 53 45  rt label-228..SE
a4e0: 4c 45 43 54 20 2b 20 4d 41 58 20 28 20 2d 20 37  LECT + MAX ( - 7
a4f0: 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  1 ) AS col0 FROM
a500: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
a510: 45 52 45 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20  ERE col0 IS NOT 
a520: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d  NULL..----..-71.
a530: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
a540: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
a550: 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 31 20 2b   col2 + + col1 +
a560: 20 38 39 20 2a 20 35 33 20 41 53 20 63 6f 6c 32   89 * 53 AS col2
a570: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
a580: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 37 32 36 0d 0a  r0..----..4726..
a590: 34 37 34 35 0d 0a 34 37 35 34 0d 0a 0d 0a 71 75  4745..4754....qu
a5a0: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
a5b0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
a5c0: 63 6f 6c 32 2c 20 2b 20 63 6f 6c 31 20 2a 20 2b  col2, + col1 * +
a5d0: 20 2b 20 28 20 32 33 20 29 20 2a 20 2b 20 63 6f   + ( 23 ) * + co
a5e0: 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
a5f0: 2d 2d 0d 0a 32 33 0d 0a 35 33 39 35 38 0d 0a 34  --..23..53958..4
a600: 30 0d 0a 31 31 33 33 34 34 0d 0a 35 38 0d 0a 31  0..113344..58..1
a610: 31 35 35 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  15575....onlyif 
a620: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
a630: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
a640: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
a650: 6c 2d 32 33 31 0d 0a 53 45 4c 45 43 54 20 2d 20  l-231..SELECT - 
a660: 28 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 29  ( + COUNT( * ) )
a670: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
a680: 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  .----..-3....ski
a690: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
a6a0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
a6b0: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
a6c0: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
a6d0: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
a6e0: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
a6f0: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
a700: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 31 0d 0a  sort label-231..
a710: 53 45 4c 45 43 54 20 2d 20 28 20 2b 20 43 4f 55  SELECT - ( + COU
a720: 4e 54 20 28 20 2a 20 29 20 29 20 63 6f 6c 31 20  NT ( * ) ) col1 
a730: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
a740: 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .-3....onlyif my
a750: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
a760: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
a770: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
a780: 74 20 6c 61 62 65 6c 2d 32 33 32 0d 0a 53 45 4c  t label-232..SEL
a790: 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2a 20 2d  ECT ALL col0 * -
a7a0: 20 35 30 20 2a 20 63 6f 6c 30 20 2d 20 2d 20 63   50 * col0 - - c
a7b0: 6f 6c 32 20 44 49 56 20 2b 20 63 6f 6c 30 20 41  ol2 DIV + col0 A
a7c0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
a7d0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
a7e0: 2d 31 30 35 38 30 30 0d 0a 2d 32 30 34 38 30 30  -105800..-204800
a7f0: 0d 0a 2d 32 38 31 32 35 30 0d 0a 0d 0a 73 6b 69  ..-281250....ski
a800: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
a810: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
a820: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
a830: 6c 2d 32 33 32 0d 0a 53 45 4c 45 43 54 20 41 4c  l-232..SELECT AL
a840: 4c 20 63 6f 6c 30 20 2a 20 2d 20 35 30 20 2a 20  L col0 * - 50 * 
a850: 63 6f 6c 30 20 2d 20 2d 20 63 6f 6c 32 20 2f 20  col0 - - col2 / 
a860: 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46  + col0 AS col1 F
a870: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
a880: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 35 38 30 30 0d  ..----..-105800.
a890: 0a 2d 32 30 34 38 30 30 0d 0a 2d 32 38 31 32 35  .-204800..-28125
a8a0: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  0....skipif post
a8b0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
a8c0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
a8d0: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
a8e0: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
a8f0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
a900: 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2d 20 38  ELECT col1 * - 8
a910: 36 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  6 col0 FROM tab1
a920: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
a930: 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  NULL IS NOT NULL
a940: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 30 34 0d 0a 2d  ..----..-1204..-
a950: 34 30 34 32 0d 0a 2d 34 33 30 0d 0a 0d 0a 71 75  4042..-430....qu
a960: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
a970: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
a980: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
a990: 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 3e  WHERE NOT col2 >
a9a0: 20 2d 20 34 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75   - 4..----....qu
a9b0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
a9c0: 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2a 20 2d  ELECT - col2 * -
a9d0: 20 2d 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 20 46   - col2 + col2 F
a9e0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
a9f0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 32 32 0d 0a 2d  ..----..-3422..-
aa00: 34 35 35 36 0d 0a 2d 39 31 32 30 0d 0a 0d 0a 71  4556..-9120....q
aa10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
aa20: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
aa30: 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  - col2 AS col1 F
aa40: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
aa50: 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c   WHERE NOT ( NUL
aa60: 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20 37 35 20  L ) NOT IN ( 75 
aa70: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  )..----....query
aa80: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
aa90: 43 54 20 2b 20 38 35 20 2a 20 63 6f 6c 31 20 41  CT + 85 * col1 A
aaa0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
aab0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
aac0: 31 31 39 30 0d 0a 33 39 39 35 0d 0a 34 32 35 0d  1190..3995..425.
aad0: 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
aae0: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
aaf0: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
ab00: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
ab10: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
ab20: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
ab30: 45 43 54 20 41 4c 4c 20 2b 20 35 39 20 2a 20 2b  ECT ALL + 59 * +
ab40: 20 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20   col2 col1 FROM 
ab50: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
ab60: 2d 2d 0d 0a 32 37 37 33 0d 0a 35 38 34 31 0d 0a  --..2773..5841..
ab70: 35 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  590....query I r
ab80: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
ab90: 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 41  ISTINCT + col1 A
aba0: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
abb0: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
abc0: 4f 54 20 4e 55 4c 4c 20 3e 20 2d 20 63 6f 6c 30  OT NULL > - col0
abd0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
abe0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
abf0: 54 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  T col2 AS col1 F
ac00: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
ac10: 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 34 20 2b   WHERE NOT - 4 +
ac20: 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c   col2 IS NOT NUL
ac30: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
ac40: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
ac50: 43 54 20 34 30 20 2a 20 2b 20 37 39 20 46 52 4f  CT 40 * + 79 FRO
ac60: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 31  M tab1..----..31
ac70: 36 30 0d 0a 33 31 36 30 0d 0a 33 31 36 30 0d 0a  60..3160..3160..
ac80: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
ac90: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
aca0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
acb0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 32 0d 0a  sort label-242..
acc0: 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54  SELECT ALL COUNT
acd0: 28 20 2a 20 29 20 2a 20 2d 20 35 34 20 63 6f 6c  ( * ) * - 54 col
ace0: 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
acf0: 2d 0d 0a 2d 31 36 32 0d 0a 0d 0a 73 6b 69 70 69  -..-162....skipi
ad00: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
ad10: 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
ad20: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
ad30: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
ad40: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
ad50: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
ad60: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
ad70: 72 74 20 6c 61 62 65 6c 2d 32 34 32 0d 0a 53 45  rt label-242..SE
ad80: 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28  LECT ALL COUNT (
ad90: 20 2a 20 29 20 2a 20 2d 20 35 34 20 63 6f 6c 30   * ) * - 54 col0
ada0: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
adb0: 0d 0a 2d 31 36 32 0d 0a 0d 0a 71 75 65 72 79 20  ..-162....query 
adc0: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
add0: 43 54 20 44 49 53 54 49 4e 43 54 20 28 20 63 6f  CT DISTINCT ( co
ade0: 6c 30 20 29 20 41 53 20 63 6f 6c 31 2c 20 32 30  l0 ) AS col1, 20
adf0: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
ae00: 0d 0a 35 31 0d 0a 32 30 0d 0a 38 35 0d 0a 32 30  ..51..20..85..20
ae10: 0d 0a 39 31 0d 0a 32 30 0d 0a 0d 0a 6f 6e 6c 79  ..91..20....only
ae20: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
ae30: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
ae40: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
ae50: 61 62 65 6c 2d 32 34 34 0d 0a 53 45 4c 45 43 54  abel-244..SELECT
ae60: 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e   DISTINCT + COUN
ae70: 54 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55 4e 54  T( * ) * + COUNT
ae80: 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ( * ) AS col1 FR
ae90: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39  OM tab0..----..9
aea0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
aeb0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
aec0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
aed0: 72 74 20 6c 61 62 65 6c 2d 32 34 34 0d 0a 53 45  rt label-244..SE
aee0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
aef0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20  COUNT ( * ) * + 
af00: 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
af10: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
af20: 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79 20  ---..9....query 
af30: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
af40: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
af50: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
af60: 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ULL NOT BETWEEN 
af70: 2d 20 2d 20 37 36 20 2b 20 32 30 20 41 4e 44 20  - - 76 + 20 AND 
af80: 2b 20 39 37 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  + 97..----....qu
af90: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
afa0: 45 4c 45 43 54 20 28 20 2b 20 2d 20 63 6f 6c 31  ELECT ( + - col1
afb0: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
afc0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d  tab1..----..-14.
afd0: 0a 2d 34 37 0d 0a 2d 35 0d 0a 0d 0a 71 75 65 72  .-47..-5....quer
afe0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
aff0: 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
b000: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
b010: 45 52 45 20 28 20 4e 55 4c 4c 20 4e 4f 54 20 42  ERE ( NULL NOT B
b020: 45 54 57 45 45 4e 20 37 38 20 2a 20 63 6f 6c 32  ETWEEN 78 * col2
b030: 20 41 4e 44 20 39 31 20 29 0d 0a 2d 2d 2d 2d 0d   AND 91 )..----.
b040: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
b050: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
b060: 4e 43 54 20 2d 20 2d 20 37 32 20 2a 20 2b 20 63  NCT - - 72 * + c
b070: 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 46  ol1 * - - col0 F
b080: 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d  ROM tab0 cor0..-
b090: 2d 2d 2d 0d 0a 31 33 31 35 34 34 0d 0a 36 39 38  ---..131544..698
b0a0: 34 0d 0a 38 37 34 38 30 0d 0a 0d 0a 6f 6e 6c 79  4..87480....only
b0b0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
b0c0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
b0d0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
b0e0: 61 62 65 6c 2d 32 34 39 0d 0a 53 45 4c 45 43 54  abel-249..SELECT
b0f0: 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   + - COUNT( * ) 
b100: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
b110: 31 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  1 cor0 WHERE NOT
b120: 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55 4c   ( NULL ) IS NUL
b130: 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b  L..----..0....sk
b140: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
b150: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
b160: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
b170: 65 6c 2d 32 34 39 0d 0a 53 45 4c 45 43 54 20 2b  el-249..SELECT +
b180: 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
b190: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
b1a0: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
b1b0: 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55 4c 4c  ( NULL ) IS NULL
b1c0: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c  ..----..0....onl
b1d0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
b1e0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
b1f0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
b200: 6c 61 62 65 6c 2d 32 35 30 0d 0a 53 45 4c 45 43  label-250..SELEC
b210: 54 20 41 4c 4c 20 38 34 20 2b 20 43 4f 55 4e 54  T ALL 84 + COUNT
b220: 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ( * ) FROM tab2 
b230: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
b240: 54 20 2d 20 63 6f 6c 31 20 2a 20 33 35 20 2b 20  T - col1 * 35 + 
b250: 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col0 IS NULL..--
b260: 2d 2d 0d 0a 38 37 0d 0a 0d 0a 73 6b 69 70 69 66  --..87....skipif
b270: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
b280: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
b290: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
b2a0: 35 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38  50..SELECT ALL 8
b2b0: 34 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  4 + COUNT ( * ) 
b2c0: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
b2d0: 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f  0 WHERE NOT - co
b2e0: 6c 31 20 2a 20 33 35 20 2b 20 63 6f 6c 30 20 49  l1 * 35 + col0 I
b2f0: 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 38 37  S NULL..----..87
b300: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
b310: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
b320: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
b330: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
b340: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
b350: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
b360: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
b370: 63 6f 6c 30 20 2a 20 2b 20 38 38 20 63 6f 6c 32  col0 * + 88 col2
b380: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
b390: 0d 0a 31 33 32 30 0d 0a 37 36 35 36 0d 0a 38 35  ..1320..7656..85
b3a0: 33 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  36....onlyif mys
b3b0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
b3c0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
b3d0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
b3e0: 35 32 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55  52..SELECT + COU
b3f0: 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
b400: 32 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  2 cor0 CROSS JOI
b410: 4e 20 74 61 62 32 20 41 53 20 63 6f 72 31 0d 0a  N tab2 AS cor1..
b420: 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69  ----..9....skipi
b430: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
b440: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
b450: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
b460: 32 35 32 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  252..SELECT + CO
b470: 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
b480: 61 62 32 20 63 6f 72 30 20 43 52 4f 53 53 20 4a  ab2 cor0 CROSS J
b490: 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72 31  OIN tab2 AS cor1
b4a0: 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 6f 6e 6c  ..----..9....onl
b4b0: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
b4c0: 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
b4d0: 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
b4e0: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
b4f0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
b500: 32 35 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  253..SELECT COUN
b510: 54 28 20 2a 20 29 20 2b 20 2d 20 2d 20 28 20 43  T( * ) + - - ( C
b520: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
b530: 4e 45 44 20 29 20 29 20 41 53 20 63 6f 6c 30 20  NED ) ) AS col0 
b540: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
b550: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
b560: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
b570: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
b580: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35  rowsort label-25
b590: 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  3..SELECT COUNT 
b5a0: 28 20 2a 20 29 20 2b 20 2d 20 2d 20 28 20 43 41  ( * ) + - - ( CA
b5b0: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
b5c0: 45 47 45 52 20 29 20 29 20 41 53 20 63 6f 6c 30  EGER ) ) AS col0
b5d0: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
b5e0: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
b5f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
b600: 54 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 41 53 20  T ALL - col0 AS 
b610: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
b620: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
b630: 20 28 20 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20   ( + ( - col0 ) 
b640: 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  ) IS NOT NULL..-
b650: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
b660: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
b670: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
b680: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
b690: 32 35 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  255..SELECT DIST
b6a0: 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20  INCT + COUNT( * 
b6b0: 29 20 2b 20 41 56 47 20 28 20 63 6f 6c 30 20 29  ) + AVG ( col0 )
b6c0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
b6d0: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
b6e0: 20 2b 20 28 20 63 6f 6c 30 20 29 20 3d 20 2b 20   + ( col0 ) = + 
b6f0: 63 6f 6c 30 20 2a 20 2d 20 36 38 0d 0a 2d 2d 2d  col0 * - 68..---
b700: 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  -..NULL....skipi
b710: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
b720: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
b730: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
b740: 32 35 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  255..SELECT DIST
b750: 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a  INCT + COUNT ( *
b760: 20 29 20 2b 20 41 56 47 20 28 20 63 6f 6c 30 20   ) + AVG ( col0 
b770: 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
b780: 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
b790: 45 20 2b 20 28 20 63 6f 6c 30 20 29 20 3d 20 2b  E + ( col0 ) = +
b7a0: 20 63 6f 6c 30 20 2a 20 2d 20 36 38 0d 0a 2d 2d   col0 * - 68..--
b7b0: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
b7c0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
b7d0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
b7e0: 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
b7f0: 28 20 63 6f 6c 30 20 2a 20 63 6f 6c 30 20 29 20  ( col0 * col0 ) 
b800: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
b810: 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
b820: 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31  ing to c6c0a4111
b830: 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65  b36d04dbc811a11e
b840: 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69  4d54cad....onlyi
b850: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
b860: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
b870: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
b880: 62 65 6c 2d 32 35 37 0d 0a 53 45 4c 45 43 54 20  bel-257..SELECT 
b890: 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b  - - COUNT( * ) +
b8a0: 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52   - COUNT( * ) FR
b8b0: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
b8c0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
b8d0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
b8e0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
b8f0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
b900: 2d 32 35 37 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  -257..SELECT - -
b910: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d   COUNT ( * ) + -
b920: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
b930: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
b940: 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ----..0....query
b950: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
b960: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
b970: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
b980: 30 20 57 48 45 52 45 20 28 20 63 6f 6c 30 20 29  0 WHERE ( col0 )
b990: 20 4e 4f 54 20 49 4e 20 28 20 2b 20 63 6f 6c 30   NOT IN ( + col0
b9a0: 2c 20 37 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  , 70 )..----....
b9b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
b9c0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
b9d0: 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 36 37   + col1 + + - 67
b9e0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
b9f0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a 30  r0..----..-16..0
ba00: 0d 0a 31 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..10....onlyif m
ba10: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
ba20: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
ba30: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
ba40: 2d 32 36 30 0d 0a 53 45 4c 45 43 54 20 44 49 53  -260..SELECT DIS
ba50: 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a  TINCT + COUNT( *
ba60: 20 29 20 2a 20 2b 20 34 38 20 2b 20 2b 20 35 32   ) * + 48 + + 52
ba70: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
ba80: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
ba90: 0d 0a 31 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..196....skipif 
baa0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
bab0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
bac0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36  rowsort label-26
bad0: 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
bae0: 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  CT + COUNT ( * )
baf0: 20 2a 20 2b 20 34 38 20 2b 20 2b 20 35 32 20 41   * + 48 + + 52 A
bb00: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
bb10: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
bb20: 31 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  196....onlyif my
bb30: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
bb40: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
bb50: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
bb60: 32 36 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  261..SELECT DIST
bb70: 49 4e 43 54 20 36 37 20 2b 20 2b 20 28 20 2b 20  INCT 67 + + ( + 
bb80: 4d 41 58 28 20 2d 20 2b 20 63 6f 6c 30 20 29 20  MAX( - + col0 ) 
bb90: 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
bba0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a 0d  or0..----..16...
bbb0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
bbc0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
bbd0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
bbe0: 6c 61 62 65 6c 2d 32 36 31 0d 0a 53 45 4c 45 43  label-261..SELEC
bbf0: 54 20 44 49 53 54 49 4e 43 54 20 36 37 20 2b 20  T DISTINCT 67 + 
bc00: 2b 20 28 20 2b 20 4d 41 58 20 28 20 2d 20 2b 20  + ( + MAX ( - + 
bc10: 63 6f 6c 30 20 29 20 29 20 46 52 4f 4d 20 74 61  col0 ) ) FROM ta
bc20: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
bc30: 0d 0a 31 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..16....onlyif m
bc40: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
bc50: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
bc60: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
bc70: 2d 32 36 32 0d 0a 53 45 4c 45 43 54 20 2d 20 4d  -262..SELECT - M
bc80: 49 4e 28 20 2d 20 2d 20 32 36 20 29 20 63 6f 6c  IN( - - 26 ) col
bc90: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
bca0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 0d 0a  or0..----..-26..
bcb0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
bcc0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
bcd0: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
bce0: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
bcf0: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
bd00: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
bd10: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
bd20: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
bd30: 32 36 32 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49  262..SELECT - MI
bd40: 4e 20 28 20 2d 20 2d 20 32 36 20 29 20 63 6f 6c  N ( - - 26 ) col
bd50: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
bd60: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 0d 0a  or0..----..-26..
bd70: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
bd80: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38 35 2c  rt..SELECT - 85,
bd90: 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
bda0: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 35 0d 0a 35 31  1..----..-85..51
bdb0: 0d 0a 2d 38 35 0d 0a 38 35 0d 0a 2d 38 35 0d 0a  ..-85..85..-85..
bdc0: 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  91....query III 
bdd0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
bde0: 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ALL * FROM tab0 
bdf0: 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42  WHERE NULL NOT B
be00: 45 54 57 45 45 4e 20 36 35 20 41 4e 44 20 2d 20  ETWEEN 65 AND - 
be10: 37 34 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  74..----....only
be20: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
be30: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
be40: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
be50: 61 62 65 6c 2d 32 36 35 0d 0a 53 45 4c 45 43 54  abel-265..SELECT
be60: 20 2d 20 53 55 4d 28 20 63 6f 6c 32 20 29 20 41   - SUM( col2 ) A
be70: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
be80: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 33 0d 0a 0d 0a  ..----..-223....
be90: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
bea0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
beb0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
bec0: 61 62 65 6c 2d 32 36 35 0d 0a 53 45 4c 45 43 54  abel-265..SELECT
bed0: 20 2d 20 53 55 4d 20 28 20 63 6f 6c 32 20 29 20   - SUM ( col2 ) 
bee0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
bef0: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 33 0d 0a 0d  1..----..-223...
bf00: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
bf10: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
bf20: 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  NCT * FROM tab1 
bf30: 57 48 45 52 45 20 4e 55 4c 4c 20 3e 20 28 20 2d  WHERE NULL > ( -
bf40: 20 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20 2f 20   ( + - col1 ) / 
bf50: 32 35 20 2b 20 2b 20 33 39 20 2b 20 2b 20 31 20  25 + + 39 + + 1 
bf60: 2f 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d  / + col2 )..----
bf70: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
bf80: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
bf90: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
bfa0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 37  owsort label-267
bfb0: 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
bfc0: 28 20 2a 20 29 20 2a 20 2b 20 39 20 46 52 4f 4d  ( * ) * + 9 FROM
bfd0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 37 0d   tab1..----..27.
bfe0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
bff0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
c000: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
c010: 74 20 6c 61 62 65 6c 2d 32 36 37 0d 0a 53 45 4c  t label-267..SEL
c020: 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ECT + COUNT ( * 
c030: 29 20 2a 20 2b 20 39 20 46 52 4f 4d 20 74 61 62  ) * + 9 FROM tab
c040: 31 0d 0a 2d 2d 2d 2d 0d 0a 32 37 0d 0a 0d 0a 71  1..----..27....q
c050: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
c060: 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2a 20  SELECT - col0 * 
c070: 35 34 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  54 AS col2 FROM 
c080: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 38  tab2..----..-248
c090: 34 0d 0a 2d 33 34 35 36 0d 0a 2d 34 30 35 30 0d  4..-3456..-4050.
c0a0: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
c0b0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
c0c0: 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
c0d0: 52 45 20 2b 20 28 20 2b 20 63 6f 6c 31 20 29 20  RE + ( + col1 ) 
c0e0: 2b 20 2d 20 28 20 2d 20 63 6f 6c 32 20 29 20 49  + - ( - col2 ) I
c0f0: 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
c100: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
c110: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
c120: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
c130: 2d 20 28 20 63 6f 6c 31 20 29 20 2f 20 63 6f 6c  - ( col1 ) / col
c140: 32 20 2f 20 2d 20 28 20 2b 20 2b 20 28 20 2b 20  2 / - ( + + ( + 
c150: 63 6f 6c 30 20 29 20 29 20 2d 20 2b 20 33 31 20  col0 ) ) - + 31 
c160: 42 45 54 57 45 45 4e 20 28 20 31 20 29 20 41 4e  BETWEEN ( 1 ) AN
c170: 44 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D col2..----....
c180: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
c190: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
c1a0: 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
c1b0: 31 20 57 48 45 52 45 20 63 6f 6c 31 20 49 53 20  1 WHERE col1 IS 
c1c0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
c1d0: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
c1e0: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
c1f0: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
c200: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
c210: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
c220: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
c230: 4c 4c 20 2b 20 2d 20 37 37 20 63 6f 6c 31 20 46  LL + - 77 col1 F
c240: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
c250: 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 37 0d 0a 2d 37 37  ..----..-77..-77
c260: 0d 0a 2d 37 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-77....query I
c270: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
c280: 43 54 20 41 4c 4c 20 2d 20 28 20 2b 20 2d 20 63  CT ALL - ( + - c
c290: 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 2c 20 2b  ol1 ) AS col0, +
c2a0: 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20 2b   col1 * - col2 +
c2b0: 20 63 6f 6c 30 2c 20 2b 20 2d 20 63 6f 6c 31 20   col0, + - col1 
c2c0: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
c2d0: 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20  2 cor0..----..9 
c2e0: 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
c2f0: 6f 20 61 38 33 32 34 30 64 39 37 32 66 34 64 61  o a83240d972f4da
c300: 33 38 38 38 31 37 30 66 36 38 61 33 65 37 62 34  3888170f68a3e7b4
c310: 30 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  09....skipif pos
c320: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
c330: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
c340: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
c350: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
c360: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
c370: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
c380: 37 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  7 col2 FROM tab1
c390: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
c3a0: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  7....query II ro
c3b0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
c3c0: 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30 2c 20 2b  col1 * - col0, +
c3d0: 20 63 6f 6c 30 20 2b 20 2b 20 36 31 20 2b 20 63   col0 + + 61 + c
c3e0: 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
c3f0: 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45   tab0 cor0 WHERE
c400: 20 4e 4f 54 20 28 20 4e 4f 54 20 4e 55 4c 4c 20   NOT ( NOT NULL 
c410: 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 29 0d 0a 2d  IS NOT NULL )..-
c420: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
c430: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
c440: 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
c450: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
c460: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
c470: 6f 72 74 20 6c 61 62 65 6c 2d 32 37 36 0d 0a 53  ort label-276..S
c480: 45 4c 45 43 54 20 2d 20 2d 20 4d 49 4e 28 20 44  ELECT - - MIN( D
c490: 49 53 54 49 4e 43 54 20 28 20 2b 20 35 34 20 29  ISTINCT ( + 54 )
c4a0: 20 29 20 2a 20 2b 20 2d 20 43 41 53 54 28 20 4e   ) * + - CAST( N
c4b0: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
c4c0: 2a 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  * CAST( NULL AS 
c4d0: 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 4d 49 4e  SIGNED ) + + MIN
c4e0: 28 20 44 49 53 54 49 4e 43 54 20 28 20 2b 20 63  ( DISTINCT ( + c
c4f0: 6f 6c 31 20 29 20 29 20 46 52 4f 4d 20 74 61 62  ol1 ) ) FROM tab
c500: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
c510: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
c520: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
c530: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
c540: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37  rowsort label-27
c550: 36 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 4d 49  6..SELECT - - MI
c560: 4e 20 28 20 44 49 53 54 49 4e 43 54 20 28 20 2b  N ( DISTINCT ( +
c570: 20 35 34 20 29 20 29 20 2a 20 2b 20 2d 20 43 41   54 ) ) * + - CA
c580: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
c590: 45 47 45 52 20 29 20 2a 20 43 41 53 54 20 28 20  EGER ) * CAST ( 
c5a0: 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
c5b0: 29 20 2b 20 2b 20 4d 49 4e 20 28 20 44 49 53 54  ) + + MIN ( DIST
c5c0: 49 4e 43 54 20 28 20 2b 20 63 6f 6c 31 20 29 20  INCT ( + col1 ) 
c5d0: 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
c5e0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
c5f0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
c600: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 33  rt..SELECT + + 3
c610: 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  8 AS col1 FROM t
c620: 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
c630: 33 38 0d 0a 33 38 0d 0a 33 38 0d 0a 0d 0a 73 6b  38..38..38....sk
c640: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
c650: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
c660: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
c670: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
c680: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
c690: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
c6a0: 20 2b 20 28 20 2b 20 39 33 20 29 20 2a 20 2b 20   + ( + 93 ) * + 
c6b0: 35 34 20 2a 20 2b 20 37 20 63 6f 6c 32 20 46 52  54 * + 7 col2 FR
c6c0: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
c6d0: 0a 2d 2d 2d 2d 0d 0a 2d 33 35 31 35 34 0d 0a 2d  .----..-35154..-
c6e0: 33 35 31 35 34 0d 0a 2d 33 35 31 35 34 0d 0a 0d  35154..-35154...
c6f0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
c700: 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20  ..SELECT + col0 
c710: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
c720: 30 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  0 cor0 WHERE NOT
c730: 20 28 20 4e 4f 54 20 2d 20 37 36 20 49 53 20 4e   ( NOT - 76 IS N
c740: 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ULL )..----....q
c750: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
c760: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
c770: 2d 20 2b 20 33 35 20 41 53 20 63 6f 6c 32 20 46  - + 35 AS col2 F
c780: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
c790: 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 0d 0a 0d 0a 71  ..----..-35....q
c7a0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
c7b0: 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f 6c 32 20  SELECT + + col2 
c7c0: 2a 20 2d 20 32 37 20 2b 20 2b 20 33 39 20 46 52  * - 27 + + 39 FR
c7d0: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
c7e0: 0a 2d 2d 2d 2d 0d 0a 2d 31 32 33 30 0d 0a 2d 32  .----..-1230..-2
c7f0: 33 31 0d 0a 2d 32 36 33 34 0d 0a 0d 0a 71 75 65  31..-2634....que
c800: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
c810: 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 31 20  LECT ALL - col1 
c820: 2a 20 32 33 20 41 53 20 63 6f 6c 30 20 46 52 4f  * 23 AS col0 FRO
c830: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab2..----..-1
c840: 31 37 33 0d 0a 2d 31 35 34 31 0d 0a 2d 31 37 37  173..-1541..-177
c850: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
c860: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
c870: 20 36 33 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f   63 * col2 AS co
c880: 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
c890: 2d 2d 0d 0a 33 37 31 37 0d 0a 34 32 38 34 0d 0a  --..3717..4284..
c8a0: 36 30 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49  6048....query II
c8b0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
c8c0: 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
c8d0: 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 2a  ERE NOT + col2 *
c8e0: 20 2d 20 63 6f 6c 32 20 3e 3d 20 4e 55 4c 4c 0d   - col2 >= NULL.
c8f0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
c900: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
c910: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
c920: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
c930: 6f 72 74 20 6c 61 62 65 6c 2d 32 38 35 0d 0a 53  ort label-285..S
c940: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41 53 54  ELECT ALL - CAST
c950: 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
c960: 20 29 20 2a 20 2d 20 2d 20 37 38 20 46 52 4f 4d   ) * - - 78 FROM
c970: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab1..----..NUL
c980: 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
c990: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
c9a0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
c9b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
c9c0: 6c 61 62 65 6c 2d 32 38 35 0d 0a 53 45 4c 45 43  label-285..SELEC
c9d0: 54 20 41 4c 4c 20 2d 20 43 41 53 54 20 28 20 4e  T ALL - CAST ( N
c9e0: 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
c9f0: 20 2a 20 2d 20 2d 20 37 38 20 46 52 4f 4d 20 74   * - - 78 FROM t
ca00: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
ca10: 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
ca20: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
ca30: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
ca40: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
ca50: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
ca60: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
ca70: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
ca80: 41 4c 4c 20 33 37 20 2a 20 2b 20 2d 20 63 6f 6c  ALL 37 * + - col
ca90: 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  1 col0 FROM tab2
caa0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 38 37 0d 0a 2d  ..----..-1887..-
cab0: 32 34 37 39 0d 0a 2d 32 38 34 39 0d 0a 0d 0a 73  2479..-2849....s
cac0: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
cad0: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
cae0: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
caf0: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
cb00: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
cb10: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
cb20: 2d 20 2d 20 63 6f 6c 32 20 63 6f 6c 30 20 46 52  - - col2 col0 FR
cb30: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
cb40: 54 20 2b 20 63 6f 6c 31 20 2b 20 2d 20 28 20 2d  T + col1 + - ( -
cb50: 20 2d 20 37 33 20 29 20 49 53 20 4e 55 4c 4c 0d   - 73 ) IS NULL.
cb60: 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a 39  .----..10..47..9
cb70: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
cb80: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
cb90: 20 2b 20 31 34 20 41 53 20 63 6f 6c 32 20 46 52   + 14 AS col2 FR
cba0: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 2d 20  OM tab1 WHERE - 
cbb0: 28 20 2b 20 2d 20 34 30 20 29 20 49 53 20 4e 4f  ( + - 40 ) IS NO
cbc0: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 34  T NULL..----..14
cbd0: 0d 0a 31 34 0d 0a 31 34 0d 0a 0d 0a 6f 6e 6c 79  ..14..14....only
cbe0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
cbf0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
cc00: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
cc10: 61 62 65 6c 2d 32 38 39 0d 0a 53 45 4c 45 43 54  abel-289..SELECT
cc20: 20 2d 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54   - SUM( DISTINCT
cc30: 20 2d 20 2d 20 37 31 20 29 20 41 53 20 63 6f 6c   - - 71 ) AS col
cc40: 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  2 FROM tab2 cor0
cc50: 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d 0a 0d 0a 73  ..----..-71....s
cc60: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
cc70: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
cc80: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
cc90: 62 65 6c 2d 32 38 39 0d 0a 53 45 4c 45 43 54 20  bel-289..SELECT 
cca0: 2d 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54  - SUM ( DISTINCT
ccb0: 20 2d 20 2d 20 37 31 20 29 20 41 53 20 63 6f 6c   - - 71 ) AS col
ccc0: 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  2 FROM tab2 cor0
ccd0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d 0a 0d 0a 71  ..----..-71....q
cce0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
ccf0: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 63  SELECT ALL - - c
cd00: 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol1 AS col1 FROM
cd10: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
cd20: 45 52 45 20 28 20 63 6f 6c 32 20 29 20 4e 4f 54  ERE ( col2 ) NOT
cd30: 20 49 4e 20 28 20 2b 20 39 30 2c 20 2b 20 36 38   IN ( + 90, + 68
cd40: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 35 0d   )..----..14..5.
cd50: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
cd60: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
cd70: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
cd80: 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d   DECIMAL type: .
cd90: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
cda0: 74 20 6c 61 62 65 6c 2d 32 39 31 0d 0a 53 45 4c  t label-291..SEL
cdb0: 45 43 54 20 2d 20 35 30 20 2a 20 2d 20 43 41 53  ECT - 50 * - CAS
cdc0: 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d  T( NULL AS DECIM
cdd0: 41 4c 20 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20  AL ) + - COUNT( 
cde0: 2a 20 29 20 41 53 20 63 6f 6c 30 2c 20 36 38 20  * ) AS col0, 68 
cdf0: 2b 20 2d 20 34 20 46 52 4f 4d 20 74 61 62 32 20  + - 4 FROM tab2 
ce00: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
ce10: 55 4c 4c 0d 0a 36 34 0d 0a 0d 0a 73 6b 69 70 69  ULL..64....skipi
ce20: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
ce30: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
ce40: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
ce50: 2d 32 39 31 0d 0a 53 45 4c 45 43 54 20 2d 20 35  -291..SELECT - 5
ce60: 30 20 2a 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  0 * - CAST ( NUL
ce70: 4c 20 41 53 20 52 45 41 4c 20 29 20 2b 20 2d 20  L AS REAL ) + - 
ce80: 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
ce90: 6f 6c 30 2c 20 36 38 20 2b 20 2d 20 34 20 46 52  ol0, 68 + - 4 FR
cea0: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
ceb0: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 36 34 0d  .----..NULL..64.
cec0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
ced0: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
cee0: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
cef0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
cf00: 62 65 6c 2d 32 39 32 0d 0a 53 45 4c 45 43 54 20  bel-292..SELECT 
cf10: 2d 20 34 20 2a 20 63 6f 6c 32 20 2b 20 2b 20 43  - 4 * col2 + + C
cf20: 41 53 54 28 20 2d 20 63 6f 6c 30 20 41 53 20 53  AST( - col0 AS S
cf30: 49 47 4e 45 44 20 29 20 2b 20 2b 20 33 38 20 2a  IGNED ) + + 38 *
cf40: 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   - col2 FROM tab
cf50: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
cf60: 0a 2d 31 30 31 32 0d 0a 2d 31 37 34 34 0d 0a 2d  .-1012..-1744..-
cf70: 32 35 31 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  2511....skipif m
cf80: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
cf90: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
cfa0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 39 32  owsort label-292
cfb0: 0d 0a 53 45 4c 45 43 54 20 2d 20 34 20 2a 20 63  ..SELECT - 4 * c
cfc0: 6f 6c 32 20 2b 20 2b 20 43 41 53 54 20 28 20 2d  ol2 + + CAST ( -
cfd0: 20 63 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52   col0 AS INTEGER
cfe0: 20 29 20 2b 20 2b 20 33 38 20 2a 20 2d 20 63 6f   ) + + 38 * - co
cff0: 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
d000: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 31  cor0..----..-101
d010: 32 0d 0a 2d 31 37 34 34 0d 0a 2d 32 35 31 31 0d  2..-1744..-2511.
d020: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
d030: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
d040: 49 4e 43 54 20 2b 20 63 6f 6c 31 2c 20 63 6f 6c  INCT + col1, col
d050: 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
d060: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
d070: 45 20 4e 4f 54 20 35 31 20 49 53 20 4e 4f 54 20  E NOT 51 IS NOT 
d080: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
d090: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
d0a0: 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41  T syntax: DECIMA
d0b0: 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  L type: ..query 
d0c0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
d0d0: 32 39 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  294..SELECT DIST
d0e0: 49 4e 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c  INCT + CAST( NUL
d0f0: 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2a  L AS DECIMAL ) *
d100: 20 2b 20 2b 20 32 32 20 41 53 20 63 6f 6c 32 20   + + 22 AS col2 
d110: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
d120: 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
d130: 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  1 AS cor1..----.
d140: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
d150: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
d160: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
d170: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 39  rowsort label-29
d180: 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
d190: 43 54 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c  CT + CAST ( NULL
d1a0: 20 41 53 20 52 45 41 4c 20 29 20 2a 20 2b 20 2b   AS REAL ) * + +
d1b0: 20 32 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   22 AS col2 FROM
d1c0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52   tab2 AS cor0 CR
d1d0: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
d1e0: 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor1..----..NUL
d1f0: 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
d200: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
d210: 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  1 FROM tab2 WHER
d220: 45 20 28 20 28 20 4e 4f 54 20 28 20 4e 55 4c 4c  E ( ( NOT ( NULL
d230: 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e   BETWEEN NULL AN
d240: 44 20 28 20 2d 20 63 6f 6c 32 20 29 20 29 20 29  D ( - col2 ) ) )
d250: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
d260: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
d270: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
d280: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
d290: 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45   NULL NOT BETWEE
d2a0: 4e 20 28 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2d  N ( - + col2 * -
d2b0: 20 2b 20 33 36 20 29 20 41 4e 44 20 2d 20 63 6f   + 36 ) AND - co
d2c0: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  l1..----....only
d2d0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
d2e0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
d2f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
d300: 61 62 65 6c 2d 32 39 37 0d 0a 53 45 4c 45 43 54  abel-297..SELECT
d310: 20 2b 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54   + MAX( DISTINCT
d320: 20 28 20 2d 20 63 6f 6c 30 20 29 20 29 20 46 52   ( - col0 ) ) FR
d330: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
d340: 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a 73 6b  .----..-51....sk
d350: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
d360: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
d370: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
d380: 65 6c 2d 32 39 37 0d 0a 53 45 4c 45 43 54 20 2b  el-297..SELECT +
d390: 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20   MAX ( DISTINCT 
d3a0: 28 20 2d 20 63 6f 6c 30 20 29 20 29 20 46 52 4f  ( - col0 ) ) FRO
d3b0: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
d3c0: 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a 71 75 65  ----..-51....que
d3d0: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
d3e0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
d3f0: 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
d400: 20 2b 20 34 34 20 2a 20 2d 20 63 6f 6c 30 20 49   + 44 * - col0 I
d410: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
d420: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
d430: 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
d440: 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
d450: 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20  d54cad....query 
d460: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
d470: 54 20 41 4c 4c 20 2b 20 37 38 20 2b 20 2b 20 63  T ALL + 78 + + c
d480: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
d490: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 35   cor0..----..165
d4a0: 0d 0a 31 37 35 0d 0a 39 33 0d 0a 0d 0a 6f 6e 6c  ..175..93....onl
d4b0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
d4c0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
d4d0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
d4e0: 6c 61 62 65 6c 2d 33 30 30 0d 0a 53 45 4c 45 43  label-300..SELEC
d4f0: 54 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20  T SUM( DISTINCT 
d500: 2b 20 63 6f 6c 31 20 29 20 2a 20 2d 20 32 32 20  + col1 ) * - 22 
d510: 2d 20 2d 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a  - - ( - COUNT( *
d520: 20 29 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74   ) ) col0 FROM t
d530: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
d540: 2d 0d 0a 2d 31 34 35 35 0d 0a 0d 0a 73 6b 69 70  -..-1455....skip
d550: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
d560: 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
d570: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
d580: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
d590: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
d5a0: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
d5b0: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
d5c0: 6f 72 74 20 6c 61 62 65 6c 2d 33 30 30 0d 0a 53  ort label-300..S
d5d0: 45 4c 45 43 54 20 53 55 4d 20 28 20 44 49 53 54  ELECT SUM ( DIST
d5e0: 49 4e 43 54 20 2b 20 63 6f 6c 31 20 29 20 2a 20  INCT + col1 ) * 
d5f0: 2d 20 32 32 20 2d 20 2d 20 28 20 2d 20 43 4f 55  - 22 - - ( - COU
d600: 4e 54 20 28 20 2a 20 29 20 29 20 63 6f 6c 30 20  NT ( * ) ) col0 
d610: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
d620: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 35 35 0d 0a  0..----..-1455..
d630: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
d640: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
d650: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
d660: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 31 0d 0a  sort label-301..
d670: 53 45 4c 45 43 54 20 2d 20 2d 20 43 4f 55 4e 54  SELECT - - COUNT
d680: 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ( * ) AS col1 FR
d690: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
d6a0: 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 3c  WHERE ( NULL ) <
d6b0: 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  > NULL..----..0.
d6c0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
d6d0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
d6e0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d6f0: 74 20 6c 61 62 65 6c 2d 33 30 31 0d 0a 53 45 4c  t label-301..SEL
d700: 45 43 54 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20  ECT - - COUNT ( 
d710: 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
d720: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
d730: 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 3c 3e 20  ERE ( NULL ) <> 
d740: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  NULL..----..0...
d750: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
d760: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
d770: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
d780: 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3d 20  r0 WHERE NULL = 
d790: 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col1..----....qu
d7a0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
d7b0: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
d7c0: 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
d7d0: 45 20 28 20 2d 20 2b 20 63 6f 6c 31 20 29 20 2b  E ( - + col1 ) +
d7e0: 20 2d 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 2b 20   - + col0 * - + 
d7f0: 63 6f 6c 31 20 3e 20 2b 20 63 6f 6c 30 0d 0a 2d  col1 > + col0..-
d800: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
d810: 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61  shing to 75c998a
d820: 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65  a53ac83218cbf2fe
d830: 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65  b962d0a49....que
d840: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
d850: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
d860: 20 2d 20 36 39 20 2b 20 2b 20 2b 20 28 20 2d 20   - 69 + + + ( - 
d870: 2b 20 63 6f 6c 32 20 29 20 2a 20 2b 20 63 6f 6c  + col2 ) * + col
d880: 32 2c 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  2, col2 FROM tab
d890: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
d8a0: 0a 2d 31 36 36 39 0d 0a 34 30 0d 0a 2d 33 34 33  .-1669..40..-343
d8b0: 33 0d 0a 35 38 0d 0a 2d 35 39 38 0d 0a 32 33 0d  3..58..-598..23.
d8c0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
d8d0: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
d8e0: 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32 20 2d   col2 * + col2 -
d8f0: 20 2b 20 2d 20 35 31 20 2a 20 2b 20 2d 20 63 6f   + - 51 * + - co
d900: 6c 31 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2b 20  l1 * - col1 + + 
d910: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
d920: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
d930: 31 34 37 0d 0a 31 30 38 31 30 33 0d 0a 38 37 36  147..108103..876
d940: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
d950: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
d960: 2d 20 36 39 20 2b 20 2d 20 63 6f 6c 31 20 41 53  - 69 + - col1 AS
d970: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
d980: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 30  cor0..----..-120
d990: 0d 0a 2d 31 33 36 0d 0a 2d 31 34 36 0d 0a 0d 0a  ..-136..-146....
d9a0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
d9b0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
d9c0: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
d9d0: 72 74 20 6c 61 62 65 6c 2d 33 30 37 0d 0a 53 45  rt label-307..SE
d9e0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f  LECT DISTINCT CO
d9f0: 55 4e 54 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20  UNT( + col1 ) + 
da00: 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20 2b 20  SUM( DISTINCT + 
da10: 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46  col2 ) AS col0 F
da20: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
da30: 32 32 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  226....skipif my
da40: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
da50: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
da60: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 37 0d  wsort label-307.
da70: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
da80: 20 43 4f 55 4e 54 20 28 20 2b 20 63 6f 6c 31 20   COUNT ( + col1 
da90: 29 20 2b 20 53 55 4d 20 28 20 44 49 53 54 49 4e  ) + SUM ( DISTIN
daa0: 43 54 20 2b 20 63 6f 6c 32 20 29 20 41 53 20 63  CT + col2 ) AS c
dab0: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
dac0: 2d 2d 2d 0d 0a 32 32 36 0d 0a 0d 0a 6f 6e 6c 79  ---..226....only
dad0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
dae0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
daf0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
db00: 61 62 65 6c 2d 33 30 38 0d 0a 53 45 4c 45 43 54  abel-308..SELECT
db10: 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
db20: 20 74 61 62 30 20 57 48 45 52 45 20 2b 20 63 6f   tab0 WHERE + co
db30: 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 2b 20 63 6f  l0 * - col2 + co
db40: 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20 2b 20  l1 * - - col1 + 
db50: 32 34 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63 6f  24 NOT IN ( - co
db60: 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  l0 )..----..3...
db70: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
db80: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
db90: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
dba0: 6c 61 62 65 6c 2d 33 30 38 0d 0a 53 45 4c 45 43  label-308..SELEC
dbb0: 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52  T COUNT ( * ) FR
dbc0: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 2b 20  OM tab0 WHERE + 
dbd0: 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 2b 20  col0 * - col2 + 
dbe0: 63 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20  col1 * - - col1 
dbf0: 2b 20 32 34 20 4e 4f 54 20 49 4e 20 28 20 2d 20  + 24 NOT IN ( - 
dc00: 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  col0 )..----..3.
dc10: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
dc20: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
dc30: 6f 6c 30 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 34  ol0 - col0 * - 4
dc40: 30 20 2a 20 2d 20 2b 20 38 36 20 2b 20 2b 20 28  0 * - + 86 + + (
dc50: 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74   - col1 ) FROM t
dc60: 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 39 39 32  ab0..----..-2992
dc70: 31 34 0d 0a 2d 33 33 33 35 38 34 0d 0a 2d 35 31  14..-333584..-51
dc80: 36 36 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  666....onlyif my
dc90: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
dca0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
dcb0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
dcc0: 33 31 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  310..SELECT DIST
dcd0: 49 4e 43 54 20 2b 20 4d 41 58 28 20 2b 20 63 6f  INCT + MAX( + co
dce0: 6c 31 20 29 20 2b 20 2d 20 38 39 20 41 53 20 63  l1 ) + - 89 AS c
dcf0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
dd00: 2d 2d 2d 0d 0a 2d 38 0d 0a 0d 0a 73 6b 69 70 69  ---..-8....skipi
dd10: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
dd20: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
dd30: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
dd40: 33 31 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  310..SELECT DIST
dd50: 49 4e 43 54 20 2b 20 4d 41 58 20 28 20 2b 20 63  INCT + MAX ( + c
dd60: 6f 6c 31 20 29 20 2b 20 2d 20 38 39 20 41 53 20  ol1 ) + - 89 AS 
dd70: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col1 FROM tab0..
dd80: 2d 2d 2d 2d 0d 0a 2d 38 0d 0a 0d 0a 71 75 65 72  ----..-8....quer
dd90: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
dda0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
ddb0: 63 6f 6c 31 20 2a 20 31 33 20 2a 20 2b 20 63 6f  col1 * 13 * + co
ddc0: 6c 31 20 41 53 20 63 6f 6c 32 2c 20 63 6f 6c 30  l1 AS col2, col0
ddd0: 20 2d 20 2b 20 2b 20 32 38 20 46 52 4f 4d 20 74   - + + 28 FROM t
dde0: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 33 38 31 33  ab2..----..33813
ddf0: 0d 0a 31 38 0d 0a 35 38 33 35 37 0d 0a 34 37 0d  ..18..58357..47.
de00: 0a 37 37 30 37 37 0d 0a 33 36 0d 0a 0d 0a 71 75  .77077..36....qu
de10: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
de20: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 63 6f  ELECT ALL - - co
de30: 6c 30 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74  l0 + col0 FROM t
de40: 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  ab1 WHERE NOT NU
de50: 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
de60: 2d 2d 2d 2d 0d 0a 31 30 32 0d 0a 31 37 30 0d 0a  ----..102..170..
de70: 31 38 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  182....skipif po
de80: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
de90: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
dea0: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
deb0: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
dec0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
ded0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
dee0: 20 63 6f 6c 30 20 2d 20 2b 20 63 6f 6c 31 20 63   col0 - + col1 c
def0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
df00: 2d 2d 2d 0d 0a 2d 31 33 0d 0a 2d 35 0d 0a 38 0d  ---..-13..-5..8.
df10: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
df20: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44  # CAST syntax: D
df30: 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71  ECIMAL type: ..q
df40: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
df50: 61 62 65 6c 2d 33 31 34 0d 0a 53 45 4c 45 43 54  abel-314..SELECT
df60: 20 41 4c 4c 20 37 39 20 2a 20 38 35 20 2d 20 2d   ALL 79 * 85 - -
df70: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 44   CAST( NULL AS D
df80: 45 43 49 4d 41 4c 20 29 20 41 53 20 63 6f 6c 32  ECIMAL ) AS col2
df90: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
dfa0: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
dfb0: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
dfc0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
dfd0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
dfe0: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 34 0d 0a  sort label-314..
dff0: 53 45 4c 45 43 54 20 41 4c 4c 20 37 39 20 2a 20  SELECT ALL 79 * 
e000: 38 35 20 2d 20 2d 20 43 41 53 54 20 28 20 4e 55  85 - - CAST ( NU
e010: 4c 4c 20 41 53 20 52 45 41 4c 20 29 20 41 53 20  LL AS REAL ) AS 
e020: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
e030: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
e040: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..NULL....onlyif
e050: 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
e060: 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
e070: 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
e080: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 35 0d 0a  sort label-315..
e090: 53 45 4c 45 43 54 20 2b 20 37 36 20 44 49 56 20  SELECT + 76 DIV 
e0a0: 2d 20 31 39 20 46 52 4f 4d 20 74 61 62 32 0d 0a  - 19 FROM tab2..
e0b0: 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 34 0d 0a 2d 34  ----..-4..-4..-4
e0c0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
e0d0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
e0e0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
e0f0: 72 74 20 6c 61 62 65 6c 2d 33 31 35 0d 0a 53 45  rt label-315..SE
e100: 4c 45 43 54 20 2b 20 37 36 20 2f 20 2d 20 31 39  LECT + 76 / - 19
e110: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
e120: 0d 0a 2d 34 0d 0a 2d 34 0d 0a 2d 34 0d 0a 0d 0a  ..-4..-4..-4....
e130: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
e140: 0a 53 45 4c 45 43 54 20 38 32 20 2a 20 2d 20 63  .SELECT 82 * - c
e150: 6f 6c 32 20 2a 20 2d 20 63 6f 6c 30 20 41 53 20  ol2 * - col0 AS 
e160: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
e170: 2d 2d 2d 2d 0d 0a 35 37 38 31 30 0d 0a 37 31 33  ----..57810..713
e180: 34 30 0d 0a 37 38 37 34 34 36 0d 0a 0d 0a 6f 6e  40..787446....on
e190: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
e1a0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
e1b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
e1c0: 20 6c 61 62 65 6c 2d 33 31 37 0d 0a 53 45 4c 45   label-317..SELE
e1d0: 43 54 20 2d 20 4d 41 58 28 20 41 4c 4c 20 2d 20  CT - MAX( ALL - 
e1e0: 2d 20 35 31 20 29 20 63 6f 6c 30 20 46 52 4f 4d  - 51 ) col0 FROM
e1f0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   tab1..----..-51
e200: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
e210: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
e220: 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
e230: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
e240: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
e250: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
e260: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
e270: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
e280: 6c 2d 33 31 37 0d 0a 53 45 4c 45 43 54 20 2d 20  l-317..SELECT - 
e290: 4d 41 58 20 28 20 41 4c 4c 20 2d 20 2d 20 35 31  MAX ( ALL - - 51
e2a0: 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   ) col0 FROM tab
e2b0: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a  1..----..-51....
e2c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
e2d0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
e2e0: 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 31 20 41   col2 * - col1 A
e2f0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
e300: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
e310: 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL IS NULL..---
e320: 2d 0d 0a 2d 32 31 30 0d 0a 2d 33 38 30 37 0d 0a  -..-210..-3807..
e330: 2d 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -99....query I r
e340: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
e350: 20 39 30 20 2a 20 2d 20 63 6f 6c 32 20 41 53 20   90 * - col2 AS 
e360: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
e370: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 32  S cor0..----..42
e380: 33 30 0d 0a 38 39 31 30 0d 0a 39 30 30 0d 0a 0d  30..8910..900...
e390: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
e3a0: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
e3b0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
e3c0: 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 34 33 20  HERE NOT ( - 43 
e3d0: 3c 3d 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d  <= NULL )..----.
e3e0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
e3f0: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
e400: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
e410: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
e420: 62 65 6c 2d 33 32 31 0d 0a 53 45 4c 45 43 54 20  bel-321..SELECT 
e430: 2d 20 63 6f 6c 30 20 2b 20 2b 20 43 41 53 54 28  - col0 + + CAST(
e440: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
e450: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
e460: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
e470: 45 20 4e 4f 54 20 28 20 4e 4f 54 20 2b 20 2d 20  E NOT ( NOT + - 
e480: 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
e490: 47 4e 45 44 20 29 20 4e 4f 54 20 49 4e 20 28 20  GNED ) NOT IN ( 
e4a0: 63 6f 6c 30 20 2f 20 43 41 53 54 28 20 63 6f 6c  col0 / CAST( col
e4b0: 32 20 41 53 20 53 49 47 4e 45 44 20 29 20 2d 20  2 AS SIGNED ) - 
e4c0: 2b 20 63 6f 6c 31 20 29 20 29 0d 0a 2d 2d 2d 2d  + col1 ) )..----
e4d0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
e4e0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
e4f0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
e500: 72 74 20 6c 61 62 65 6c 2d 33 32 31 0d 0a 53 45  rt label-321..SE
e510: 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2b 20  LECT - col0 + + 
e520: 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
e530: 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32  NTEGER ) AS col2
e540: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
e550: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e  r0 WHERE NOT ( N
e560: 4f 54 20 2b 20 2d 20 43 41 53 54 20 28 20 4e 55  OT + - CAST ( NU
e570: 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
e580: 4e 4f 54 20 49 4e 20 28 20 63 6f 6c 30 20 2f 20  NOT IN ( col0 / 
e590: 43 41 53 54 20 28 20 63 6f 6c 32 20 41 53 20 49  CAST ( col2 AS I
e5a0: 4e 54 45 47 45 52 20 29 20 2d 20 2b 20 63 6f 6c  NTEGER ) - + col
e5b0: 31 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  1 ) )..----....q
e5c0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
e5d0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
e5e0: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
e5f0: 20 57 48 45 52 45 20 4e 4f 54 20 37 35 20 4e 4f   WHERE NOT 75 NO
e600: 54 20 49 4e 20 28 20 36 36 20 29 0d 0a 2d 2d 2d  T IN ( 66 )..---
e610: 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  -....skipif post
e620: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
e630: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
e640: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
e650: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
e660: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
e670: 53 45 4c 45 43 54 20 32 37 20 41 53 20 63 6f 6c  SELECT 27 AS col
e680: 32 2c 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 2b 20  2, + col1 * - + 
e690: 63 6f 6c 32 20 2a 20 2b 20 35 38 20 63 6f 6c 31  col2 * + 58 col1
e6a0: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
e6b0: 0d 0a 32 37 0d 0a 2d 31 32 31 38 30 0d 0a 32 37  ..27..-12180..27
e6c0: 0d 0a 2d 32 32 30 38 30 36 0d 0a 32 37 0d 0a 2d  ..-220806..27..-
e6d0: 35 37 34 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  5742....onlyif m
e6e0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
e6f0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
e700: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
e710: 2d 33 32 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -324..SELECT DIS
e720: 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  TINCT COUNT( * )
e730: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
e740: 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b1 AS cor0 CROSS
e750: 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f   JOIN tab0 AS co
e760: 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73  r1..----..9....s
e770: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
e780: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
e790: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
e7a0: 62 65 6c 2d 33 32 34 0d 0a 53 45 4c 45 43 54 20  bel-324..SELECT 
e7b0: 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28  DISTINCT COUNT (
e7c0: 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
e7d0: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43  M tab1 AS cor0 C
e7e0: 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41  ROSS JOIN tab0 A
e7f0: 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d  S cor1..----..9.
e800: 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
e810: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
e820: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
e830: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
e840: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
e850: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
e860: 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2b  ECT ALL + col1 +
e870: 20 2d 20 39 31 20 63 6f 6c 30 20 46 52 4f 4d 20   - 91 col0 FROM 
e880: 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45 20  tab1 cor0 WHERE 
e890: 28 20 63 6f 6c 32 20 29 20 49 53 20 4e 55 4c 4c  ( col2 ) IS NULL
e8a0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
e8b0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
e8c0: 54 20 2b 20 2b 20 28 20 33 37 20 29 20 46 52 4f  T + + ( 37 ) FRO
e8d0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
e8e0: 2d 2d 2d 2d 0d 0a 33 37 0d 0a 33 37 0d 0a 33 37  ----..37..37..37
e8f0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
e900: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
e910: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
e920: 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f  0 WHERE NOT + co
e930: 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 49 53 20 4e  l0 * - col0 IS N
e940: 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
e950: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
e960: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
e970: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
e980: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  r0 WHERE NOT + c
e990: 6f 6c 31 20 2b 20 2d 20 2b 20 35 32 20 3c 3e 20  ol1 + - + 52 <> 
e9a0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
e9b0: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
e9c0: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
e9d0: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
e9e0: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
e9f0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
ea00: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
ea10: 49 53 54 49 4e 43 54 20 2b 20 2b 20 33 30 20 2a  ISTINCT + + 30 *
ea20: 20 2d 20 2b 20 63 6f 6c 32 20 63 6f 6c 31 20 46   - + col2 col1 F
ea30: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
ea40: 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20   WHERE NOT col2 
ea50: 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d  IS NULL..----..-
ea60: 31 32 30 30 0d 0a 2d 31 37 34 30 0d 0a 2d 36 39  1200..-1740..-69
ea70: 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
ea80: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
ea90: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
eaa0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33  rowsort label-33
eab0: 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
eac0: 43 54 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2b 20  CT - - COUNT( + 
ead0: 31 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  10 ) FROM tab0 A
eae0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
eaf0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
eb00: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
eb10: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
eb20: 74 20 6c 61 62 65 6c 2d 33 33 30 0d 0a 53 45 4c  t label-330..SEL
eb30: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d  ECT DISTINCT - -
eb40: 20 43 4f 55 4e 54 20 28 20 2b 20 31 30 20 29 20   COUNT ( + 10 ) 
eb50: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
eb60: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75  0..----..3....qu
eb70: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
eb80: 45 4c 45 43 54 20 2d 20 33 36 20 2b 20 2b 20 63  ELECT - 36 + + c
eb90: 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol1 AS col1 FROM
eba0: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
ebb0: 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 33 35 0d 0a 34  ---..-15..-35..4
ebc0: 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
ebd0: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
ebe0: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
ebf0: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
ec00: 74 20 6c 61 62 65 6c 2d 33 33 32 0d 0a 53 45 4c  t label-332..SEL
ec10: 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
ec20: 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 32  WHERE NOT + col2
ec30: 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63 6f 6c 30   NOT IN ( - col0
ec40: 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 2d 20 2d 20   * - - col2 - - 
ec50: 43 41 53 54 28 20 2b 20 32 30 20 41 53 20 53 49  CAST( + 20 AS SI
ec60: 47 4e 45 44 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a  GNED ) )..----..
ec70: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
ec80: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
ec90: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
eca0: 72 74 20 6c 61 62 65 6c 2d 33 33 32 0d 0a 53 45  rt label-332..SE
ecb0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  LECT * FROM tab2
ecc0: 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c   WHERE NOT + col
ecd0: 32 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63 6f 6c  2 NOT IN ( - col
ece0: 30 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 2d 20 2d  0 * - - col2 - -
ecf0: 20 43 41 53 54 20 28 20 2b 20 32 30 20 41 53 20   CAST ( + 20 AS 
ed00: 49 4e 54 45 47 45 52 20 29 20 29 0d 0a 2d 2d 2d  INTEGER ) )..---
ed10: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
ed20: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
ed30: 20 2b 20 39 36 20 41 53 20 63 6f 6c 32 20 46 52   + 96 AS col2 FR
ed40: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39  OM tab0..----..9
ed50: 36 0d 0a 39 36 0d 0a 39 36 0d 0a 0d 0a 73 6b 69  6..96..96....ski
ed60: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
ed70: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
ed80: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
ed90: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
eda0: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
edb0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
edc0: 53 54 49 4e 43 54 20 2b 20 33 37 20 63 6f 6c 30  STINCT + 37 col0
edd0: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
ede0: 0d 0a 33 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..37....query I 
edf0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
ee00: 2d 20 35 36 20 41 53 20 63 6f 6c 30 20 46 52 4f  - 56 AS col0 FRO
ee10: 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
ee20: 20 2b 20 2d 20 36 36 20 49 53 20 4e 4f 54 20 4e   + - 66 IS NOT N
ee30: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
ee40: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
ee50: 4c 45 43 54 20 2b 20 28 20 2d 20 2d 20 63 6f 6c  LECT + ( - - col
ee60: 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  0 ) AS col1 FROM
ee70: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d   tab1..----..51.
ee80: 0a 38 35 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79 69  .85..91....onlyi
ee90: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
eea0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
eeb0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
eec0: 62 65 6c 2d 33 33 37 0d 0a 53 45 4c 45 43 54 20  bel-337..SELECT 
eed0: 44 49 53 54 49 4e 43 54 20 2d 20 4d 41 58 28 20  DISTINCT - MAX( 
eee0: 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30  col2 ) FROM tab0
eef0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a 0d 0a 73  ..----..-99....s
ef00: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
ef10: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
ef20: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
ef30: 62 65 6c 2d 33 33 37 0d 0a 53 45 4c 45 43 54 20  bel-337..SELECT 
ef40: 44 49 53 54 49 4e 43 54 20 2d 20 4d 41 58 20 28  DISTINCT - MAX (
ef50: 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62   col2 ) FROM tab
ef60: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a 0d 0a  0..----..-99....
ef70: 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
ef80: 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
ef90: 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
efa0: 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
efb0: 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
efc0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
efd0: 54 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c  T + col2 * - col
efe0: 30 20 41 53 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c  0 AS col0, - col
eff0: 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  0 col1 FROM tab2
f000: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 35 38 0d 0a 2d  ..----..-1058..-
f010: 34 36 0d 0a 2d 32 35 36 30 0d 0a 2d 36 34 0d 0a  46..-2560..-64..
f020: 2d 34 33 35 30 0d 0a 2d 37 35 0d 0a 0d 0a 6f 6e  -4350..-75....on
f030: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
f040: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
f050: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
f060: 20 6c 61 62 65 6c 2d 33 33 39 0d 0a 53 45 4c 45   label-339..SELE
f070: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 4d 49  CT DISTINCT + MI
f080: 4e 28 20 2d 20 2b 20 63 6f 6c 30 20 29 20 46 52  N( - + col0 ) FR
f090: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
f0a0: 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f  WHERE NULL IS NO
f0b0: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  T NULL..----..NU
f0c0: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
f0d0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
f0e0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
f0f0: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33 39 0d 0a  sort label-339..
f100: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
f110: 2b 20 4d 49 4e 20 28 20 2d 20 2b 20 63 6f 6c 30  + MIN ( - + col0
f120: 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
f130: 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
f140: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
f150: 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
f160: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
f170: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
f180: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
f190: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 30 0d  wsort label-340.
f1a0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41  .SELECT ALL + CA
f1b0: 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
f1c0: 45 44 20 29 20 2a 20 63 6f 6c 32 20 2b 20 2b 20  ED ) * col2 + + 
f1d0: 2d 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 20  - col0 + + col1 
f1e0: 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  + col0 FROM tab0
f1f0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
f200: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
f210: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
f220: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
f230: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
f240: 72 74 20 6c 61 62 65 6c 2d 33 34 30 0d 0a 53 45  rt label-340..SE
f250: 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 20  LECT ALL + CAST 
f260: 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
f270: 52 20 29 20 2a 20 63 6f 6c 32 20 2b 20 2b 20 2d  R ) * col2 + + -
f280: 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 20 2b   col0 + + col1 +
f290: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
f2a0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
f2b0: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
f2c0: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
f2d0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
f2e0: 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
f2f0: 63 6f 72 30 20 57 48 45 52 45 20 2b 20 34 34 20  cor0 WHERE + 44 
f300: 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
f310: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
f320: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
f330: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
f340: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
f350: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
f360: 62 65 6c 2d 33 34 32 0d 0a 53 45 4c 45 43 54 20  bel-342..SELECT 
f370: 2d 20 28 20 43 41 53 54 28 20 43 4f 55 4e 54 28  - ( CAST( COUNT(
f380: 20 2a 20 29 20 41 53 20 53 49 47 4e 45 44 20 29   * ) AS SIGNED )
f390: 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
f3a0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  cor0..----..-3..
f3b0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
f3c0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
f3d0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
f3e0: 20 6c 61 62 65 6c 2d 33 34 32 0d 0a 53 45 4c 45   label-342..SELE
f3f0: 43 54 20 2d 20 28 20 43 41 53 54 20 28 20 43 4f  CT - ( CAST ( CO
f400: 55 4e 54 20 28 20 2a 20 29 20 41 53 20 49 4e 54  UNT ( * ) AS INT
f410: 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20 74 61  EGER ) ) FROM ta
f420: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
f430: 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-3....query I 
f440: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
f450: 28 20 2b 20 2d 20 28 20 2b 20 39 35 20 29 20 29  ( + - ( + 95 ) )
f460: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
f470: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
f480: 0d 0a 2d 39 35 0d 0a 2d 39 35 0d 0a 2d 39 35 0d  ..-95..-95..-95.
f490: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
f4a0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
f4b0: 4e 43 54 20 63 6f 6c 32 20 2a 20 33 38 20 2b 20  NCT col2 * 38 + 
f4c0: 2d 20 28 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f  - ( - col0 ) FRO
f4d0: 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
f4e0: 2d 0d 0a 31 35 38 34 0d 0a 32 32 37 39 0d 0a 39  -..1584..2279..9
f4f0: 32 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  20....skipif pos
f500: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
f510: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
f520: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
f530: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
f540: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
f550: 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f 6c 32 20  SELECT + + col2 
f560: 2b 20 2b 20 28 20 2b 20 2b 20 63 6f 6c 30 20 29  + + ( + + col0 )
f570: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
f580: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
f590: 39 36 0d 0a 36 32 0d 0a 39 37 0d 0a 0d 0a 6f 6e  96..62..97....on
f5a0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
f5b0: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
f5c0: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
f5d0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
f5e0: 34 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  46..SELECT DISTI
f5f0: 4e 43 54 20 2b 20 2d 20 31 35 20 46 52 4f 4d 20  NCT + - 15 FROM 
f600: 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
f610: 52 45 20 4e 4f 54 20 63 6f 6c 32 20 2b 20 2d 20  RE NOT col2 + - 
f620: 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
f630: 47 4e 45 44 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  GNED ) IS NULL..
f640: 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ----....skipif m
f650: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
f660: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
f670: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 36  owsort label-346
f680: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
f690: 54 20 2b 20 2d 20 31 35 20 46 52 4f 4d 20 74 61  T + - 15 FROM ta
f6a0: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
f6b0: 20 4e 4f 54 20 63 6f 6c 32 20 2b 20 2d 20 43 41   NOT col2 + - CA
f6c0: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
f6d0: 45 47 45 52 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  EGER ) IS NULL..
f6e0: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
f6f0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
f700: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
f710: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
f720: 2d 33 34 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -347..SELECT ALL
f730: 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   - COUNT( * ) AS
f740: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
f750: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
f760: 54 20 31 30 20 2f 20 36 31 20 49 53 20 4e 55 4c  T 10 / 61 IS NUL
f770: 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73  L..----..-3....s
f780: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
f790: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
f7a0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
f7b0: 62 65 6c 2d 33 34 37 0d 0a 53 45 4c 45 43 54 20  bel-347..SELECT 
f7c0: 41 4c 4c 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  ALL - COUNT ( * 
f7d0: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
f7e0: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
f7f0: 45 20 4e 4f 54 20 31 30 20 2f 20 36 31 20 49 53  E NOT 10 / 61 IS
f800: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   NULL..----..-3.
f810: 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
f820: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
f830: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
f840: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
f850: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
f860: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
f870: 4c 45 43 54 20 2b 20 63 6f 6c 31 20 63 6f 6c 32  LECT + col1 col2
f880: 2c 20 2b 20 38 34 20 46 52 4f 4d 20 74 61 62 30  , + 84 FROM tab0
f890: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
f8a0: 31 0d 0a 38 34 0d 0a 32 31 0d 0a 38 34 0d 0a 38  1..84..21..84..8
f8b0: 31 0d 0a 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  1..84....onlyif 
f8c0: 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
f8d0: 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
f8e0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
f8f0: 6f 72 74 20 6c 61 62 65 6c 2d 33 34 39 0d 0a 53  ort label-349..S
f900: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
f910: 6f 6c 31 20 2b 20 2d 20 63 6f 6c 32 20 44 49 56  ol1 + - col2 DIV
f920: 20 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74   - + col2 FROM t
f930: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
f940: 2d 0d 0a 32 0d 0a 32 32 0d 0a 38 32 0d 0a 0d 0a  -..2..22..82....
f950: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
f960: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
f970: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
f980: 61 62 65 6c 2d 33 34 39 0d 0a 53 45 4c 45 43 54  abel-349..SELECT
f990: 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 2b   DISTINCT col1 +
f9a0: 20 2d 20 63 6f 6c 32 20 2f 20 2d 20 2b 20 63 6f   - col2 / - + co
f9b0: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
f9c0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 0d 0a 32  cor0..----..2..2
f9d0: 32 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49  2..82....query I
f9e0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
f9f0: 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32   DISTINCT + col2
fa00: 20 2b 20 38 38 20 2b 20 2d 20 2b 20 63 6f 6c 31   + 88 + - + col1
fa10: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
fa20: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
fa30: 0d 0a 31 38 36 0d 0a 35 34 0d 0a 37 37 0d 0a 0d  ..186..54..77...
fa40: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
fa50: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
fa60: 54 20 33 38 20 2b 20 28 20 2d 20 2b 20 63 6f 6c  T 38 + ( - + col
fa70: 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  2 ) AS col0 FROM
fa80: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d   tab2..----..-2.
fa90: 0a 2d 32 30 0d 0a 31 35 0d 0a 0d 0a 71 75 65 72  .-20..15....quer
faa0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
fab0: 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
fac0: 20 74 61 62 32 20 57 48 45 52 45 20 28 20 34 33   tab2 WHERE ( 43
fad0: 20 29 20 42 45 54 57 45 45 4e 20 63 6f 6c 32 20   ) BETWEEN col2 
fae0: 2b 20 2d 20 2d 20 32 20 41 4e 44 20 4e 55 4c 4c  + - - 2 AND NULL
faf0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
fb00: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
fb10: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
fb20: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
fb30: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35 33 0d 0a  sort label-353..
fb40: 53 45 4c 45 43 54 20 2b 20 38 36 20 2d 20 43 41  SELECT + 86 - CA
fb50: 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
fb60: 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  ED ) FROM tab2..
fb70: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
fb80: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
fb90: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
fba0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
fbb0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
fbc0: 35 33 0d 0a 53 45 4c 45 43 54 20 2b 20 38 36 20  53..SELECT + 86 
fbd0: 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
fbe0: 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
fbf0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab2..----..NULL
fc00: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
fc10: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
fc20: 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2d 20  ..SELECT col1 - 
fc30: 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 2c 20  - col2 AS col1, 
fc40: 2b 20 31 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  + 10 AS col1 FRO
fc50: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab0..----..10
fc60: 30 0d 0a 31 30 0d 0a 31 32 38 0d 0a 31 30 0d 0a  0..10..128..10..
fc70: 33 31 0d 0a 31 30 0d 0a 0d 0a 71 75 65 72 79 20  31..10....query 
fc80: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
fc90: 54 20 41 4c 4c 20 2b 20 28 20 63 6f 6c 32 20 29  T ALL + ( col2 )
fca0: 20 2d 20 2b 20 35 37 20 46 52 4f 4d 20 74 61 62   - + 57 FROM tab
fcb0: 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 0d 0a 32 0d 0a  1..----..11..2..
fcc0: 33 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  39....onlyif mys
fcd0: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
fce0: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
fcf0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
fd00: 20 6c 61 62 65 6c 2d 33 35 36 0d 0a 53 45 4c 45   label-356..SELE
fd10: 43 54 20 2d 20 35 33 20 2d 20 2d 20 2b 20 43 41  CT - 53 - - + CA
fd20: 53 54 28 20 2b 20 2b 20 63 6f 6c 31 20 41 53 20  ST( + + col1 AS 
fd30: 53 49 47 4e 45 44 20 29 20 2d 20 2d 20 63 6f 6c  SIGNED ) - - col
fd40: 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
fd50: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 38  ab2..----..44..8
fd60: 38 0d 0a 38 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  8..89....skipif 
fd70: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
fd80: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
fd90: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35  rowsort label-35
fda0: 36 0d 0a 53 45 4c 45 43 54 20 2d 20 35 33 20 2d  6..SELECT - 53 -
fdb0: 20 2d 20 2b 20 43 41 53 54 20 28 20 2b 20 2b 20   - + CAST ( + + 
fdc0: 63 6f 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20  col1 AS INTEGER 
fdd0: 29 20 2d 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f  ) - - col0 AS co
fde0: 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
fdf0: 2d 2d 0d 0a 34 34 0d 0a 38 38 0d 0a 38 39 0d 0a  --..44..88..89..
fe00: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
fe10: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
fe20: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
fe30: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
fe40: 61 62 65 6c 2d 33 35 37 0d 0a 53 45 4c 45 43 54  abel-357..SELECT
fe50: 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30   ALL * FROM tab0
fe60: 20 57 48 45 52 45 20 2d 20 2d 20 28 20 2d 20 43   WHERE - - ( - C
fe70: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
fe80: 4e 45 44 20 29 20 29 20 2f 20 2d 20 2d 20 63 6f  NED ) ) / - - co
fe90: 6c 32 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l2 >= NULL..----
fea0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
feb0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
fec0: 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  e..query III row
fed0: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35 37 0d 0a  sort label-357..
fee0: 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
fef0: 4d 20 74 61 62 30 20 57 48 45 52 45 20 2d 20 2d  M tab0 WHERE - -
ff00: 20 28 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c   ( - CAST ( NULL
ff10: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
ff20: 2f 20 2d 20 2d 20 63 6f 6c 32 20 3e 3d 20 4e 55  / - - col2 >= NU
ff30: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
ff40: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
ff50: 45 43 54 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f  ECT - col1 AS co
ff60: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l1 FROM tab1 WHE
ff70: 52 45 20 35 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  RE 5 IS NULL..--
ff80: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
ff90: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
ffa0: 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  : aggregate synt
ffb0: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
ffc0: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
ffd0: 72 74 20 6c 61 62 65 6c 2d 33 35 39 0d 0a 53 45  rt label-359..SE
ffe0: 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20 43 41 53  LECT ALL ( + CAS
fff0: 54 28 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  T( + COUNT( * ) 
10000 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 41 53  AS SIGNED ) ) AS
10010 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
10020 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70  .----..3....skip
10030 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
10040 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
10050 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
10060 2d 33 35 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -359..SELECT ALL
10070 20 28 20 2b 20 43 41 53 54 20 28 20 2b 20 43 4f   ( + CAST ( + CO
10080 55 4e 54 20 28 20 2a 20 29 20 41 53 20 49 4e 54  UNT ( * ) AS INT
10090 45 47 45 52 20 29 20 29 20 41 53 20 63 6f 6c 31  EGER ) ) AS col1
100a0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
100b0 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ..3....query III
100c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
100d0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
100e0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
100f0 45 52 45 20 4e 4f 54 20 33 31 20 2a 20 2d 20 2d  ERE NOT 31 * - -
10100 20 38 38 20 42 45 54 57 45 45 4e 20 2d 20 2d 20   88 BETWEEN - - 
10110 35 37 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d  57 AND NULL..---
10120 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
10130 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
10140 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
10150 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 36  rowsort label-36
10160 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  1..SELECT DISTIN
10170 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20  CT COUNT( * ) * 
10180 2d 20 31 36 20 2b 20 2b 20 4d 41 58 28 20 41 4c  - 16 + + MAX( AL
10190 4c 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  L - col2 ) AS co
101a0 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
101b0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d  cor0..----..-71.
101c0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
101d0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
101e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
101f0 74 20 6c 61 62 65 6c 2d 33 36 31 0d 0a 53 45 4c  t label-361..SEL
10200 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55  ECT DISTINCT COU
10210 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 31 36 20  NT ( * ) * - 16 
10220 2b 20 2b 20 4d 41 58 20 28 20 41 4c 4c 20 2d 20  + + MAX ( ALL - 
10230 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46  col2 ) AS col1 F
10240 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
10250 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d 0a 0d 0a 6f  ..----..-71....o
10260 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
10270 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
10280 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
10290 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
102a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
102b0 6c 2d 33 36 32 0d 0a 53 45 4c 45 43 54 20 2d 20  l-362..SELECT - 
102c0 2d 20 43 41 53 54 28 20 2d 20 2b 20 43 4f 55 4e  - CAST( - + COUN
102d0 54 28 20 2a 20 29 20 41 53 20 53 49 47 4e 45 44  T( * ) AS SIGNED
102e0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
102f0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
10300 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66  --..-3....skipif
10310 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
10320 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
10330 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
10340 36 32 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 43  62..SELECT - - C
10350 41 53 54 20 28 20 2d 20 2b 20 43 4f 55 4e 54 20  AST ( - + COUNT 
10360 28 20 2a 20 29 20 41 53 20 49 4e 54 45 47 45 52  ( * ) AS INTEGER
10370 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
10380 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
10390 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20  --..-3....query 
103a0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
103b0 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
103c0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
103d0 54 20 28 20 4e 55 4c 4c 20 29 20 3e 20 2b 20 63  T ( NULL ) > + c
103e0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol0..----....que
103f0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
10400 4c 45 43 54 20 2d 20 2b 20 28 20 2b 20 35 20 29  LECT - + ( + 5 )
10410 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
10420 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 2d 35  r0..----..-5..-5
10430 0d 0a 2d 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-5....query I 
10440 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
10450 63 6f 6c 30 20 2a 20 2b 20 2d 20 39 34 20 41 53  col0 * + - 94 AS
10460 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
10470 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
10480 31 34 31 30 0d 0a 2d 38 31 37 38 0d 0a 2d 39 31  1410..-8178..-91
10490 31 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  18....query III 
104a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
104b0 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
104c0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
104d0 54 20 28 20 37 35 20 29 20 49 53 20 4e 55 4c 4c  T ( 75 ) IS NULL
104e0 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
104f0 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39   hashing to 75c9
10500 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66  98aa53ac83218cbf
10510 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a  2feb962d0a49....
10520 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
10530 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
10540 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
10550 45 52 45 20 4e 4f 54 20 28 20 28 20 63 6f 6c 31  ERE NOT ( ( col1
10560 20 29 20 29 20 42 45 54 57 45 45 4e 20 63 6f 6c   ) ) BETWEEN col
10570 31 20 2a 20 2d 20 63 6f 6c 32 20 41 4e 44 20 34  1 * - col2 AND 4
10580 39 20 2f 20 2d 20 2d 20 63 6f 6c 30 0d 0a 2d 2d  9 / - - col0..--
10590 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
105a0 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31  hing to c6c0a411
105b0 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31  1b36d04dbc811a11
105c0 65 34 64 35 34 63 61 64 0d 0a 0d 0a 73 6b 69 70  e4d54cad....skip
105d0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
105e0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
105f0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
10600 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
10610 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
10620 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 39  sort..SELECT - 9
10630 34 20 2a 20 2d 20 34 35 20 63 6f 6c 30 20 46 52  4 * - 45 col0 FR
10640 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
10650 0a 2d 2d 2d 2d 0d 0a 34 32 33 30 0d 0a 34 32 33  .----..4230..423
10660 30 0d 0a 34 32 33 30 0d 0a 0d 0a 71 75 65 72 79  0..4230....query
10670 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
10680 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 41  ECT ALL + col0 A
10690 53 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 32 20 46  S col0, - col2 F
106a0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
106b0 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
106c0 4e 4f 54 20 49 4e 20 28 20 38 34 20 29 0d 0a 2d  NOT IN ( 84 )..-
106d0 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
106e0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
106f0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
10700 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10710 74 20 6c 61 62 65 6c 2d 33 37 30 0d 0a 53 45 4c  t label-370..SEL
10720 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 44  ECT ALL + col0 D
10730 49 56 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74  IV - col0 FROM t
10740 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
10750 45 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55  E ( NULL ) IS NU
10760 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31  LL..----..-1..-1
10770 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-1....skipif m
10780 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
10790 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
107a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 30  owsort label-370
107b0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
107c0 6f 6c 30 20 2f 20 2d 20 63 6f 6c 30 20 46 52 4f  ol0 / - col0 FRO
107d0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
107e0 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 49 53  HERE ( NULL ) IS
107f0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   NULL..----..-1.
10800 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69  .-1..-1....onlyi
10810 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
10820 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
10830 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
10840 62 65 6c 2d 33 37 31 0d 0a 53 45 4c 45 43 54 20  bel-371..SELECT 
10850 41 4c 4c 20 2d 20 4d 41 58 28 20 2b 20 63 6f 6c  ALL - MAX( + col
10860 30 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  0 ) FROM tab1 AS
10870 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 31   cor0..----..-91
10880 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
10890 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
108a0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
108b0 72 74 20 6c 61 62 65 6c 2d 33 37 31 0d 0a 53 45  rt label-371..SE
108c0 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58 20 28  LECT ALL - MAX (
108d0 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   + col0 ) FROM t
108e0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
108f0 2d 0d 0a 2d 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  -..-91....onlyif
10900 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
10910 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
10920 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
10930 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 32 0d 0a  sort label-372..
10940 53 45 4c 45 43 54 20 2d 20 2d 20 43 41 53 54 28  SELECT - - CAST(
10950 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
10960 29 20 2a 20 2b 20 35 39 20 46 52 4f 4d 20 74 61  ) * + 59 FROM ta
10970 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
10980 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
10990 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
109a0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
109b0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
109c0 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 32 0d 0a  sort label-372..
109d0 53 45 4c 45 43 54 20 2d 20 2d 20 43 41 53 54 20  SELECT - - CAST 
109e0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
109f0 52 20 29 20 2a 20 2b 20 35 39 20 46 52 4f 4d 20  R ) * + 59 FROM 
10a00 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
10a10 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
10a20 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49  NULL....query II
10a30 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
10a40 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
10a50 31 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  1 cor0 WHERE NOT
10a60 20 4e 55 4c 4c 20 3c 3e 20 2d 20 63 6f 6c 30 0d   NULL <> - col0.
10a70 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
10a80 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
10a90 54 20 41 4c 4c 20 63 6f 6c 30 20 41 53 20 63 6f  T ALL col0 AS co
10aa0 6c 32 2c 20 2b 20 63 6f 6c 30 20 2a 20 35 36 20  l2, + col0 * 56 
10ab0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
10ac0 31 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 32 38 35  1..----..51..285
10ad0 36 0d 0a 38 35 0d 0a 34 37 36 30 0d 0a 39 31 0d  6..85..4760..91.
10ae0 0a 35 30 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49  .5096....query I
10af0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
10b00 20 34 32 20 2b 20 2d 20 2b 20 35 31 20 2a 20 2b   42 + - + 51 * +
10b10 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52   col2 AS col1 FR
10b20 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
10b30 32 33 35 35 0d 0a 2d 34 36 38 0d 0a 2d 35 30 30  2355..-468..-500
10b40 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
10b50 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
10b60 6f 6c 32 20 2b 20 2d 20 2d 20 63 6f 6c 30 20 46  ol2 + - - col0 F
10b70 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
10b80 2d 2d 2d 0d 0a 2d 34 35 0d 0a 32 33 0d 0a 32 36  ---..-45..23..26
10b90 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
10ba0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
10bb0 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
10bc0 62 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b1 WHERE NOT NUL
10bd0 4c 20 3c 3d 20 39 39 0d 0a 2d 2d 2d 2d 0d 0a 0d  L <= 99..----...
10be0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
10bf0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
10c00 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
10c10 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
10c20 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
10c30 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
10c40 54 20 44 49 53 54 49 4e 43 54 20 2b 20 31 39 20  T DISTINCT + 19 
10c50 2b 20 2b 20 2b 20 34 38 20 63 6f 6c 31 20 46 52  + + + 48 col1 FR
10c60 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 28 20  OM tab2 WHERE ( 
10c70 4e 55 4c 4c 20 29 20 4e 4f 54 20 42 45 54 57 45  NULL ) NOT BETWE
10c80 45 4e 20 2b 20 63 6f 6c 31 20 41 4e 44 20 2d 20  EN + col1 AND - 
10c90 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col2..----....qu
10ca0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
10cb0 53 45 4c 45 43 54 20 2b 20 38 32 20 2a 20 2d 20  SELECT + 82 * - 
10cc0 63 6f 6c 31 2c 20 63 6f 6c 32 20 41 53 20 63 6f  col1, col2 AS co
10cd0 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
10ce0 2d 2d 0d 0a 2d 34 31 38 32 0d 0a 32 33 0d 0a 2d  --..-4182..23..-
10cf0 35 34 39 34 0d 0a 35 38 0d 0a 2d 36 33 31 34 0d  5494..58..-6314.
10d00 0a 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .40....query III
10d10 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
10d20 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31   ALL * FROM tab1
10d30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
10d40 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e  OT NULL IS NOT N
10d50 55 4c 4c 20 41 4e 44 20 2d 20 63 6f 6c 30 20 2a  ULL AND - col0 *
10d60 20 2d 20 2b 20 37 32 20 49 53 20 4e 55 4c 4c 0d   - + 72 IS NULL.
10d70 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
10d80 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
10d90 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 2b 20 63 6f   ALL - col1 + co
10da0 6c 32 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c  l2 * col0 AS col
10db0 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
10dc0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 37 0d  or0..----..1007.
10dd0 0a 32 34 38 33 0d 0a 34 32 38 33 0d 0a 0d 0a 6f  .2483..4283....o
10de0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
10df0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
10e00 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10e10 74 20 6c 61 62 65 6c 2d 33 38 32 0d 0a 53 45 4c  t label-382..SEL
10e20 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  ECT COUNT( * ) A
10e30 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
10e40 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b   AS cor0 WHERE +
10e50 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20 49 53   ( - - col0 ) IS
10e60 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
10e70 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
10e80 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
10e90 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10ea0 20 6c 61 62 65 6c 2d 33 38 32 0d 0a 53 45 4c 45   label-382..SELE
10eb0 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41  CT COUNT ( * ) A
10ec0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
10ed0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b   AS cor0 WHERE +
10ee0 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20 49 53   ( - - col0 ) IS
10ef0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
10f00 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
10f10 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
10f20 20 32 30 20 2b 20 2d 20 2d 20 63 6f 6c 32 20 41   20 + - - col2 A
10f30 53 20 63 6f 6c 30 2c 20 63 6f 6c 31 20 41 53 20  S col0, col1 AS 
10f40 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
10f50 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 39  S cor0..----..39
10f60 0d 0a 35 0d 0a 34 38 0d 0a 34 37 0d 0a 37 36 0d  ..5..48..47..76.
10f70 0a 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .14....query III
10f80 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
10f90 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72   * FROM tab0 cor
10fa0 30 20 57 48 45 52 45 20 63 6f 6c 30 20 4e 4f 54  0 WHERE col0 NOT
10fb0 20 49 4e 20 28 20 2d 20 63 6f 6c 32 20 29 0d 0a   IN ( - col2 )..
10fc0 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
10fd0 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37  ashing to c4b427
10fe0 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30  65dff94eaaa46040
10ff0 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75  e537fb43b7....qu
11000 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
11010 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
11020 20 28 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2d 20   ( - col1 ) * - 
11030 2b 20 36 36 20 46 52 4f 4d 20 74 61 62 30 0d 0a  + 66 FROM tab0..
11040 2d 2d 2d 2d 0d 0a 2d 31 33 38 36 0d 0a 2d 35 33  ----..-1386..-53
11050 34 36 0d 0a 2d 36 36 0d 0a 0d 0a 6f 6e 6c 79 69  46..-66....onlyi
11060 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
11070 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
11080 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
11090 62 65 6c 2d 33 38 36 0d 0a 53 45 4c 45 43 54 20  bel-386..SELECT 
110a0 44 49 53 54 49 4e 43 54 20 53 55 4d 28 20 44 49  DISTINCT SUM( DI
110b0 53 54 49 4e 43 54 20 2b 20 2b 20 35 32 20 29 20  STINCT + + 52 ) 
110c0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
110d0 2d 2d 2d 2d 0d 0a 35 32 0d 0a 0d 0a 73 6b 69 70  ----..52....skip
110e0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
110f0 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
11100 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
11110 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
11120 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
11130 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
11140 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
11150 6f 72 74 20 6c 61 62 65 6c 2d 33 38 36 0d 0a 53  ort label-386..S
11160 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53  ELECT DISTINCT S
11170 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  UM ( DISTINCT + 
11180 2b 20 35 32 20 29 20 63 6f 6c 32 20 46 52 4f 4d  + 52 ) col2 FROM
11190 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 32 0d   tab1..----..52.
111a0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
111b0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
111c0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  ax: ..query II r
111d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 37  owsort label-387
111e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55  ..SELECT ALL COU
111f0 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 2c  NT( * ) AS col1,
11200 20 38 33 20 2a 20 2d 20 36 35 20 46 52 4f 4d 20   83 * - 65 FROM 
11210 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d  tab0..----..3..-
11220 35 33 39 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  5395....skipif m
11230 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
11240 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
11250 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38  rowsort label-38
11260 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f  7..SELECT ALL CO
11270 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
11280 31 2c 20 38 33 20 2a 20 2d 20 36 35 20 46 52 4f  1, 83 * - 65 FRO
11290 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  M tab0..----..3.
112a0 0a 2d 35 33 39 35 0d 0a 0d 0a 71 75 65 72 79 20  .-5395....query 
112b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
112c0 54 20 2b 20 2d 20 31 38 20 2a 20 2b 20 32 31 20  T + - 18 * + 21 
112d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
112e0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 37 38 0d 0a 2d  0..----..-378..-
112f0 33 37 38 0d 0a 2d 33 37 38 0d 0a 0d 0a 71 75 65  378..-378....que
11300 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
11310 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
11320 6f 6c 31 2c 20 31 33 20 2a 20 63 6f 6c 31 20 46  ol1, 13 * col1 F
11330 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
11340 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 33 0d 0a 32  ..----..1..13..2
11350 31 0d 0a 32 37 33 0d 0a 38 31 0d 0a 31 30 35 33  1..273..81..1053
11360 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
11370 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
11380 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 30 20 46 52  INCT - + col0 FR
11390 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 2d 20  OM tab1 WHERE - 
113a0 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 30 20 3c 20  col1 + + col0 < 
113b0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d  col2..----..-51.
113c0 0a 2d 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-91....query II
113d0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
113e0 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
113f0 32 20 57 48 45 52 45 20 2d 20 63 6f 6c 31 20 42  2 WHERE - col1 B
11400 45 54 57 45 45 4e 20 28 20 2d 20 2b 20 31 37 20  ETWEEN ( - + 17 
11410 29 20 41 4e 44 20 2d 20 36 38 0d 0a 2d 2d 2d 2d  ) AND - 68..----
11420 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
11430 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
11440 2d 20 2d 20 37 32 20 41 53 20 63 6f 6c 32 20 46  - - 72 AS col2 F
11450 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
11460 0d 0a 2d 2d 2d 2d 0d 0a 37 32 0d 0a 37 32 0d 0a  ..----..72..72..
11470 37 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  72....onlyif mys
11480 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
11490 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
114a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
114b0 39 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  93..SELECT DISTI
114c0 4e 43 54 20 2b 20 53 55 4d 28 20 2b 20 63 6f 6c  NCT + SUM( + col
114d0 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  0 ) FROM tab2 co
114e0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 35 0d 0a 0d  r0..----..185...
114f0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
11500 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
11510 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
11520 6c 61 62 65 6c 2d 33 39 33 0d 0a 53 45 4c 45 43  label-393..SELEC
11530 54 20 44 49 53 54 49 4e 43 54 20 2b 20 53 55 4d  T DISTINCT + SUM
11540 20 28 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d   ( + col0 ) FROM
11550 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
11560 0d 0a 31 38 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..185....onlyif 
11570 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
11580 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
11590 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
115a0 6c 2d 33 39 34 0d 0a 53 45 4c 45 43 54 20 36 32  l-394..SELECT 62
115b0 20 2b 20 43 4f 55 4e 54 28 20 2b 20 2d 20 63 6f   + COUNT( + - co
115c0 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l1 ) AS col2 FRO
115d0 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52  M tab2 cor0 WHER
115e0 45 20 4e 4f 54 20 28 20 37 33 20 29 20 49 53 20  E NOT ( 73 ) IS 
115f0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 36 35 0d 0a  NULL..----..65..
11600 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
11610 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
11620 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11630 20 6c 61 62 65 6c 2d 33 39 34 0d 0a 53 45 4c 45   label-394..SELE
11640 43 54 20 36 32 20 2b 20 43 4f 55 4e 54 20 28 20  CT 62 + COUNT ( 
11650 2b 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f  + - col1 ) AS co
11660 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l2 FROM tab2 cor
11670 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 37 33  0 WHERE NOT ( 73
11680 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   ) IS NULL..----
11690 0d 0a 36 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..65....query II
116a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
116b0 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  T * FROM tab0 co
116c0 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 39  r0 WHERE NOT - 9
116d0 37 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  7 IS NOT NULL..-
116e0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
116f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
11700 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
11710 63 6f 72 30 20 57 48 45 52 45 20 28 20 2b 20 35  cor0 WHERE ( + 5
11720 36 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  6 ) IS NULL..---
11730 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
11740 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
11750 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
11760 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39  rowsort label-39
11770 37 0d 0a 53 45 4c 45 43 54 20 2b 20 53 55 4d 28  7..SELECT + SUM(
11780 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f   DISTINCT + + co
11790 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l2 ) AS col2 FRO
117a0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32  M tab2..----..12
117b0 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
117c0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
117d0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
117e0 6f 72 74 20 6c 61 62 65 6c 2d 33 39 37 0d 0a 53  ort label-397..S
117f0 45 4c 45 43 54 20 2b 20 53 55 4d 20 28 20 44 49  ELECT + SUM ( DI
11800 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 32 20  STINCT + + col2 
11810 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
11820 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32 31 0d 0a  ab2..----..121..
11830 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
11840 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
11850 20 32 32 20 41 53 20 63 6f 6c 32 2c 20 63 6f 6c   22 AS col2, col
11860 32 20 2a 20 34 37 20 2b 20 2b 20 63 6f 6c 30 20  2 * 47 + + col0 
11870 2b 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 2d  + - + col2 * + -
11880 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
11890 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 33 31 35 33  .----..-22..3153
118a0 0d 0a 2d 32 32 0d 0a 35 39 30 37 0d 0a 2d 32 32  ..-22..5907..-22
118b0 0d 0a 36 34 38 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..6483....onlyif
118c0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
118d0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
118e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
118f0 65 6c 2d 33 39 39 0d 0a 53 45 4c 45 43 54 20 41  el-399..SELECT A
11900 4c 4c 20 2b 20 4d 49 4e 28 20 44 49 53 54 49 4e  LL + MIN( DISTIN
11910 43 54 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74  CT col1 ) FROM t
11920 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a  ab0..----..1....
11930 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
11940 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
11950 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
11960 61 62 65 6c 2d 33 39 39 0d 0a 53 45 4c 45 43 54  abel-399..SELECT
11970 20 41 4c 4c 20 2b 20 4d 49 4e 20 28 20 44 49 53   ALL + MIN ( DIS
11980 54 49 4e 43 54 20 63 6f 6c 31 20 29 20 46 52 4f  TINCT col1 ) FRO
11990 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  M tab0..----..1.
119a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
119b0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 36  rt..SELECT ALL 6
119c0 38 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2b 20 36  8 + col1 + + + 6
119d0 33 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  3 FROM tab2..---
119e0 2d 0d 0a 31 38 32 0d 0a 31 39 38 0d 0a 32 30 38  -..182..198..208
119f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
11a00 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
11a10 49 4e 43 54 20 2d 20 63 6f 6c 32 20 2b 20 2b 20  INCT - col2 + + 
11a20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46  - col2 AS col0 F
11a30 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
11a40 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20   WHERE NOT col1 
11a50 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  <= NULL..----...
11a60 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
11a70 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
11a80 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
11a90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
11aa0 6c 2d 34 30 32 0d 0a 53 45 4c 45 43 54 20 41 4c  l-402..SELECT AL
11ab0 4c 20 32 31 20 2a 20 2d 20 63 6f 6c 31 20 44 49  L 21 * - col1 DI
11ac0 56 20 2b 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2d  V + + col1 + + -
11ad0 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 32 20 46   col1 + - col2 F
11ae0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
11af0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 0d 0a 2d 31  ..----..-121..-1
11b00 34 39 0d 0a 2d 35 32 0d 0a 0d 0a 73 6b 69 70 69  49..-52....skipi
11b10 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
11b20 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
11b30 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
11b40 34 30 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  402..SELECT ALL 
11b50 32 31 20 2a 20 2d 20 63 6f 6c 31 20 2f 20 2b 20  21 * - col1 / + 
11b60 2b 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 63 6f 6c  + col1 + + - col
11b70 31 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  1 + - col2 FROM 
11b80 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
11b90 2d 2d 0d 0a 2d 31 32 31 0d 0a 2d 31 34 39 0d 0a  --..-121..-149..
11ba0 2d 35 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -52....query I r
11bb0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
11bc0 4c 4c 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 2d 20  LL + col0 + - - 
11bd0 35 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  55 AS col0 FROM 
11be0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
11bf0 2d 2d 0d 0a 31 30 31 0d 0a 31 31 39 0d 0a 31 33  --..101..119..13
11c00 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
11c10 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37  sort..SELECT + 7
11c20 37 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  7 FROM tab1 AS c
11c30 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
11c40 61 62 30 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor1..----..
11c50 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
11c60 20 74 6f 20 30 35 31 62 66 31 30 63 35 30 65 30   to 051bf10c50e0
11c70 36 31 64 37 34 61 64 30 61 34 64 32 30 35 61 31  61d74ad0a4d205a1
11c80 63 36 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  c622....query I 
11c90 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
11ca0 63 6f 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c 31 20  col0 + + + col1 
11cb0 2d 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  - - col2 FROM ta
11cc0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
11cd0 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d   NULL IS NULL..-
11ce0 2d 2d 2d 0d 0a 31 34 39 0d 0a 31 36 31 0d 0a 32  ---..149..161..2
11cf0 30 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  06....onlyif mys
11d00 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
11d10 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
11d20 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
11d30 74 20 6c 61 62 65 6c 2d 34 30 36 0d 0a 53 45 4c  t label-406..SEL
11d40 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 2c 20  ECT ALL + col0, 
11d50 63 6f 6c 32 20 44 49 56 20 2d 20 2d 20 63 6f 6c  col2 DIV - - col
11d60 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
11d70 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
11d80 31 35 0d 0a 30 0d 0a 38 37 0d 0a 30 0d 0a 39 37  15..0..87..0..97
11d90 0d 0a 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..99....skipif m
11da0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
11db0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
11dc0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30  rowsort label-40
11dd0 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  6..SELECT ALL + 
11de0 63 6f 6c 30 2c 20 63 6f 6c 32 20 2f 20 2d 20 2d  col0, col2 / - -
11df0 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
11e00 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
11e10 2d 2d 0d 0a 31 35 0d 0a 30 0d 0a 38 37 0d 0a 30  --..15..0..87..0
11e20 0d 0a 39 37 0d 0a 39 39 0d 0a 0d 0a 6f 6e 6c 79  ..97..99....only
11e30 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
11e40 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
11e50 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
11e60 61 62 65 6c 2d 34 30 37 0d 0a 53 45 4c 45 43 54  abel-407..SELECT
11e70 20 2d 20 43 4f 55 4e 54 28 20 2b 20 63 6f 6c 31   - COUNT( + col1
11e80 20 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72   ) FROM tab0 cor
11e90 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73  0..----..-3....s
11ea0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
11eb0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
11ec0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
11ed0 62 65 6c 2d 34 30 37 0d 0a 53 45 4c 45 43 54 20  bel-407..SELECT 
11ee0 2d 20 43 4f 55 4e 54 20 28 20 2b 20 63 6f 6c 31  - COUNT ( + col1
11ef0 20 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72   ) FROM tab0 cor
11f00 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71  0..----..-3....q
11f10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
11f20 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
11f30 31 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 2d  1 + - col0 + + -
11f40 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20 2a   col1 + + col2 *
11f50 20 2b 20 38 34 20 2d 20 2d 20 38 38 20 41 53 20   + 84 - - 88 AS 
11f60 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
11f70 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20 63  S cor0 WHERE - c
11f80 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol0 IS NOT NULL.
11f90 0a 2d 2d 2d 2d 0d 0a 31 39 37 34 0d 0a 33 33 38  .----..1974..338
11fa0 34 0d 0a 34 38 38 35 0d 0a 0d 0a 71 75 65 72 79  4..4885....query
11fb0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
11fc0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
11fd0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
11fe0 2d 20 28 20 2b 20 63 6f 6c 31 20 29 20 49 53 20  - ( + col1 ) IS 
11ff0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  NULL..----..9 va
12000 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
12010 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64  c6c0a4111b36d04d
12020 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64  bc811a11e4d54cad
12030 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
12040 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
12050 54 49 4e 43 54 20 2b 20 63 6f 6c 31 2c 20 2d 20  TINCT + col1, - 
12060 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
12070 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31  S cor0..----..51
12080 0d 0a 2d 35 31 0d 0a 36 37 0d 0a 2d 36 37 0d 0a  ..-51..67..-67..
12090 37 37 0d 0a 2d 37 37 0d 0a 0d 0a 6f 6e 6c 79 69  77..-77....onlyi
120a0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
120b0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
120c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
120d0 62 65 6c 2d 34 31 31 0d 0a 53 45 4c 45 43 54 20  bel-411..SELECT 
120e0 44 49 53 54 49 4e 43 54 20 4d 49 4e 28 20 44 49  DISTINCT MIN( DI
120f0 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 29 20  STINCT + col2 ) 
12100 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
12110 0a 35 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .59....skipif my
12120 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
12130 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
12140 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31 31 0d  wsort label-411.
12150 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
12160 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20   MIN ( DISTINCT 
12170 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61  + col2 ) FROM ta
12180 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 0d 0a  b1..----..59....
12190 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
121a0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
121b0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
121c0 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 28 20 2b  NULL BETWEEN ( +
121d0 20 63 6f 6c 30 20 2b 20 2d 20 37 38 20 29 20 41   col0 + - 78 ) A
121e0 4e 44 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  ND + col1..----.
121f0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
12200 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
12210 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
12220 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31 33 0d  wsort label-413.
12230 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
12240 54 28 20 44 49 53 54 49 4e 43 54 20 37 36 20 29  T( DISTINCT 76 )
12250 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
12260 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73  b0..----..1....s
12270 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
12280 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
12290 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
122a0 62 65 6c 2d 34 31 33 0d 0a 53 45 4c 45 43 54 20  bel-413..SELECT 
122b0 41 4c 4c 20 43 4f 55 4e 54 20 28 20 44 49 53 54  ALL COUNT ( DIST
122c0 49 4e 43 54 20 37 36 20 29 20 41 53 20 63 6f 6c  INCT 76 ) AS col
122d0 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
122e0 2d 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..1....query I 
122f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
12300 2b 20 28 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f  + ( + col2 ) FRO
12310 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
12320 20 4e 55 4c 4c 20 3e 3d 20 2b 20 63 6f 6c 30 0d   NULL >= + col0.
12330 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
12340 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
12350 20 44 49 53 54 49 4e 43 54 20 2d 20 38 34 20 41   DISTINCT - 84 A
12360 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
12370 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 34 0d 0a 0d 0a 71  ..----..-84....q
12380 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
12390 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
123a0 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 30 20  + col2 * + col0 
123b0 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32  * - col0 AS col2
123c0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
123d0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 35 37 35  r0..----..-10575
123e0 0d 0a 2d 37 35 36 39 30 0d 0a 2d 39 33 31 34 39  ..-75690..-93149
123f0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
12400 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
12410 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   + col1 FROM tab
12420 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
12430 36 36 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  66 <> NULL..----
12440 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
12450 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
12460 6f 6c 30 2c 20 2d 20 34 37 20 2b 20 2d 20 63 6f  ol0, - 47 + - co
12470 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
12480 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63  cor0 WHERE NOT c
12490 6f 6c 30 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 2d  ol0 * - - col0 -
124a0 20 2d 20 35 37 20 42 45 54 57 45 45 4e 20 4e 55   - 57 BETWEEN NU
124b0 4c 4c 20 41 4e 44 20 2b 20 2d 20 31 38 20 2d 20  LL AND + - 18 - 
124c0 2b 20 31 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a  + 12..----..46..
124d0 2d 37 30 0d 0a 36 34 0d 0a 2d 38 37 0d 0a 37 35  -70..64..-87..75
124e0 0d 0a 2d 31 30 35 0d 0a 0d 0a 71 75 65 72 79 20  ..-105....query 
124f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
12500 54 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 28  T - + col2 * + (
12510 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   - col1 ) AS col
12520 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
12530 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 37 33 0d  or0..----..1173.
12540 0a 33 30 38 30 0d 0a 33 38 38 36 0d 0a 0d 0a 6f  .3080..3886....o
12550 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
12560 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
12570 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
12580 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
12590 34 32 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  420..SELECT ALL 
125a0 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32 20 2a 20  col2 * + col2 * 
125b0 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
125c0 53 49 47 4e 45 44 20 29 20 2a 20 2d 20 36 37 20  SIGNED ) * - 67 
125d0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
125e0 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
125f0 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
12600 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
12610 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
12620 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
12630 6c 2d 34 32 30 0d 0a 53 45 4c 45 43 54 20 41 4c  l-420..SELECT AL
12640 4c 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32 20  L col2 * + col2 
12650 2a 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  * - CAST ( NULL 
12660 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d  AS INTEGER ) * -
12670 20 36 37 20 46 52 4f 4d 20 74 61 62 32 20 41 53   67 FROM tab2 AS
12680 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
12690 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
126a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
126b0 0d 0a 53 45 4c 45 43 54 20 35 33 20 46 52 4f 4d  ..SELECT 53 FROM
126c0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
126d0 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29  ERE NOT ( NULL )
126e0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
126f0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
12700 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 63  rt..SELECT + - c
12710 6f 6c 30 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  ol0 + col1 AS co
12720 6c 32 2c 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20  l2, - col0 FROM 
12730 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab2 WHERE NOT N
12740 55 4c 4c 20 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL <= NULL..---
12750 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
12760 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
12770 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
12780 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12790 6c 61 62 65 6c 2d 34 32 33 0d 0a 53 45 4c 45 43  label-423..SELEC
127a0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53  T DISTINCT + CAS
127b0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
127c0 44 20 29 20 2a 20 2b 20 63 6f 6c 31 20 46 52 4f  D ) * + col1 FRO
127d0 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
127e0 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
127f0 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  L..----..NULL...
12800 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
12810 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
12820 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12830 6c 61 62 65 6c 2d 34 32 33 0d 0a 53 45 4c 45 43  label-423..SELEC
12840 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53  T DISTINCT + CAS
12850 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
12860 47 45 52 20 29 20 2a 20 2b 20 63 6f 6c 31 20 46  GER ) * + col1 F
12870 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
12880 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e  OT NULL IS NOT N
12890 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ULL..----..NULL.
128a0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
128b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
128c0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
128d0 20 57 48 45 52 45 20 32 39 20 2a 20 2d 20 38 34   WHERE 29 * - 84
128e0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
128f0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
12900 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  rt..SELECT + col
12910 31 2c 20 2b 20 39 34 20 2a 20 2b 20 37 33 20 46  1, + 94 * + 73 F
12920 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
12930 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 36 38 36 32 0d  ..----..1..6862.
12940 0a 32 31 0d 0a 36 38 36 32 0d 0a 38 31 0d 0a 36  .21..6862..81..6
12950 38 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  862....query I r
12960 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
12970 4c 4c 20 28 20 2d 20 63 6f 6c 32 20 29 20 2b 20  LL ( - col2 ) + 
12980 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  - + col1 AS col2
12990 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
129a0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 30 0d 0a  r0..----..-100..
129b0 2d 31 32 38 0d 0a 2d 33 31 0d 0a 0d 0a 71 75 65  -128..-31....que
129c0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
129d0 45 4c 45 43 54 20 2d 20 37 34 2c 20 2b 20 63 6f  ELECT - 74, + co
129e0 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l0 FROM tab2 cor
129f0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 34 0d 0a 34 36  0..----..-74..46
12a00 0d 0a 2d 37 34 0d 0a 36 34 0d 0a 2d 37 34 0d 0a  ..-74..64..-74..
12a10 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  75....onlyif mys
12a20 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
12a30 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
12a40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12a50 20 6c 61 62 65 6c 2d 34 32 38 0d 0a 53 45 4c 45   label-428..SELE
12a60 43 54 20 2b 20 43 41 53 54 28 20 2b 20 38 32 20  CT + CAST( + 82 
12a70 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
12a80 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
12a90 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 32 0d   cor0..----..82.
12aa0 0a 38 32 0d 0a 38 32 0d 0a 0d 0a 73 6b 69 70 69  .82..82....skipi
12ab0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
12ac0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
12ad0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
12ae0 34 32 38 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41  428..SELECT + CA
12af0 53 54 20 28 20 2b 20 38 32 20 41 53 20 49 4e 54  ST ( + 82 AS INT
12b00 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20 46  EGER ) AS col1 F
12b10 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
12b20 0d 0a 2d 2d 2d 2d 0d 0a 38 32 0d 0a 38 32 0d 0a  ..----..82..82..
12b30 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  82....query I ro
12b40 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
12b50 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 2b 20  STINCT - col1 + 
12b60 2d 20 31 30 20 46 52 4f 4d 20 74 61 62 32 20 41  - 10 FROM tab2 A
12b70 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  S cor0..----..-6
12b80 31 0d 0a 2d 37 37 0d 0a 2d 38 37 0d 0a 0d 0a 6f  1..-77..-87....o
12b90 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
12ba0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
12bb0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12bc0 74 20 6c 61 62 65 6c 2d 34 33 30 0d 0a 53 45 4c  t label-430..SEL
12bd0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
12be0 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20 43 4f  OUNT( * ) + - CO
12bf0 55 4e 54 28 20 2a 20 29 20 63 6f 6c 30 20 46 52  UNT( * ) col0 FR
12c00 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
12c10 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
12c20 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
12c30 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
12c40 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
12c50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
12c60 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
12c70 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
12c80 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
12c90 6f 72 74 20 6c 61 62 65 6c 2d 34 33 30 0d 0a 53  ort label-430..S
12ca0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
12cb0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d   COUNT ( * ) + -
12cc0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c   COUNT ( * ) col
12cd0 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
12ce0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  or0..----..0....
12cf0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
12d00 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
12d10 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
12d20 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
12d30 6c 2d 34 33 31 0d 0a 53 45 4c 45 43 54 20 41 4c  l-431..SELECT AL
12d40 4c 20 2d 20 2d 20 28 20 2b 20 31 36 20 29 20 2a  L - - ( + 16 ) *
12d50 20 43 41 53 54 28 20 39 30 20 41 53 20 53 49 47   CAST( 90 AS SIG
12d60 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 2c 20 36  NED ) AS col0, 6
12d70 34 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  4 FROM tab0 AS c
12d80 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34 30 0d  or0..----..1440.
12d90 0a 36 34 0d 0a 31 34 34 30 0d 0a 36 34 0d 0a 31  .64..1440..64..1
12da0 34 34 30 0d 0a 36 34 0d 0a 0d 0a 73 6b 69 70 69  440..64....skipi
12db0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
12dc0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
12dd0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
12de0 2d 34 33 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -431..SELECT ALL
12df0 20 2d 20 2d 20 28 20 2b 20 31 36 20 29 20 2a 20   - - ( + 16 ) * 
12e00 43 41 53 54 20 28 20 39 30 20 41 53 20 49 4e 54  CAST ( 90 AS INT
12e10 45 47 45 52 20 29 20 41 53 20 63 6f 6c 30 2c 20  EGER ) AS col0, 
12e20 36 34 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  64 FROM tab0 AS 
12e30 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34 30  cor0..----..1440
12e40 0d 0a 36 34 0d 0a 31 34 34 30 0d 0a 36 34 0d 0a  ..64..1440..64..
12e50 31 34 34 30 0d 0a 36 34 0d 0a 0d 0a 71 75 65 72  1440..64....quer
12e60 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
12e70 45 43 54 20 28 20 38 35 20 29 20 41 53 20 63 6f  ECT ( 85 ) AS co
12e80 6c 31 20 46 52 4f 4d 20 74 61 62 31 2c 20 74 61  l1 FROM tab1, ta
12e90 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
12ea0 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
12eb0 6e 67 20 74 6f 20 61 61 66 61 38 65 35 63 66 62  ng to aafa8e5cfb
12ec0 39 65 30 32 63 65 61 38 37 31 37 38 33 33 65 37  9e02cea8717833e7
12ed0 35 38 31 66 37 62 0d 0a 0d 0a 71 75 65 72 79 20  581f7b....query 
12ee0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
12ef0 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
12f00 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
12f10 35 34 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  54 IS NOT NULL..
12f20 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
12f30 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
12f40 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
12f50 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
12f60 72 74 20 6c 61 62 65 6c 2d 34 33 34 0d 0a 53 45  rt label-434..SE
12f70 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28 20  LECT DISTINCT ( 
12f80 2d 20 32 30 20 29 20 2a 20 2d 20 43 41 53 54 28  - 20 ) * - CAST(
12f90 20 2b 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45   + col2 AS SIGNE
12fa0 44 20 29 20 2a 20 2d 20 63 6f 6c 30 20 2b 20 2d  D ) * - col0 + -
12fb0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
12fc0 0a 2d 2d 2d 2d 0d 0a 2d 32 31 32 31 31 0d 0a 2d  .----..-21211..-
12fd0 35 31 32 37 37 0d 0a 2d 38 37 30 36 37 0d 0a 0d  51277..-87067...
12fe0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
12ff0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
13000 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
13010 6c 61 62 65 6c 2d 34 33 34 0d 0a 53 45 4c 45 43  label-434..SELEC
13020 54 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 32  T DISTINCT ( - 2
13030 30 20 29 20 2a 20 2d 20 43 41 53 54 20 28 20 2b  0 ) * - CAST ( +
13040 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52   col2 AS INTEGER
13050 20 29 20 2a 20 2d 20 63 6f 6c 30 20 2b 20 2d 20   ) * - col0 + - 
13060 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
13070 2d 2d 2d 2d 0d 0a 2d 32 31 32 31 31 0d 0a 2d 35  ----..-21211..-5
13080 31 32 37 37 0d 0a 2d 38 37 30 36 37 0d 0a 0d 0a  1277..-87067....
13090 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
130a0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
130b0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
130c0 72 74 20 6c 61 62 65 6c 2d 34 33 35 0d 0a 53 45  rt label-435..SE
130d0 4c 45 43 54 20 41 4c 4c 20 2b 20 32 35 20 2a 20  LECT ALL + 25 * 
130e0 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
130f0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a  tab1..----..75..
13100 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
13110 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
13120 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
13130 20 6c 61 62 65 6c 2d 34 33 35 0d 0a 53 45 4c 45   label-435..SELE
13140 43 54 20 41 4c 4c 20 2b 20 32 35 20 2a 20 43 4f  CT ALL + 25 * CO
13150 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
13160 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 0d  ab1..----..75...
13170 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
13180 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
13190 43 54 20 2d 20 28 20 2d 20 31 33 20 29 20 2a 20  CT - ( - 13 ) * 
131a0 2d 20 63 6f 6c 32 20 2b 20 2b 20 28 20 2d 20 63  - col2 + + ( - c
131b0 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 2c 20 32  ol1 ) AS col0, 2
131c0 20 2b 20 2b 20 32 35 20 41 53 20 63 6f 6c 32 20   + + 25 AS col2 
131d0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
131e0 0a 2d 31 32 38 38 0d 0a 32 37 0d 0a 2d 31 35 31  .-1288..27..-151
131f0 0d 0a 32 37 0d 0a 2d 36 39 32 0d 0a 32 37 0d 0a  ..27..-692..27..
13200 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
13210 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
13220 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
13230 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
13240 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
13250 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
13260 43 54 20 2d 20 63 6f 6c 30 20 2b 20 35 39 20 2a  CT - col0 + 59 *
13270 20 2b 20 2d 20 39 32 20 2d 20 2d 20 63 6f 6c 31   + - 92 - - col1
13280 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
13290 0a 2d 2d 2d 2d 0d 0a 2d 35 34 36 35 0d 0a 2d 35  .----..-5465..-5
132a0 34 37 32 0d 0a 2d 35 35 30 38 0d 0a 0d 0a 71 75  472..-5508....qu
132b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
132c0 45 4c 45 43 54 20 2d 20 34 35 20 46 52 4f 4d 20  ELECT - 45 FROM 
132d0 74 61 62 30 20 57 48 45 52 45 20 2d 20 63 6f 6c  tab0 WHERE - col
132e0 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  0 IS NOT NULL..-
132f0 2d 2d 2d 0d 0a 2d 34 35 0d 0a 2d 34 35 0d 0a 2d  ---..-45..-45..-
13300 34 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  45....query I ro
13310 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
13320 4c 20 2b 20 63 6f 6c 31 20 2b 20 2d 20 2d 20 37  L + col1 + - - 7
13330 36 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  6 FROM tab2 AS c
13340 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 37 0d 0a  or0..----..127..
13350 31 34 33 0d 0a 31 35 33 0d 0a 0d 0a 6f 6e 6c 79  143..153....only
13360 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
13370 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
13380 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
13390 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
133a0 34 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  40..SELECT DISTI
133b0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
133c0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
133d0 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
133e0 53 49 47 4e 45 44 20 29 20 49 53 20 4e 55 4c 4c  SIGNED ) IS NULL
133f0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
13400 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
13410 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
13420 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
13430 2d 34 34 30 0d 0a 53 45 4c 45 43 54 20 44 49 53  -440..SELECT DIS
13440 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
13450 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
13460 4e 4f 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  NOT CAST ( NULL 
13470 41 53 20 49 4e 54 45 47 45 52 20 29 20 49 53 20  AS INTEGER ) IS 
13480 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
13490 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
134a0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a  ELECT ALL col2 *
134b0 20 2b 20 28 20 35 31 20 29 20 2d 20 2b 20 2d 20   + ( 51 ) - + - 
134c0 39 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  95 AS col0 FROM 
134d0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 39 32  tab0..----..2492
134e0 0d 0a 35 31 34 34 0d 0a 36 30 35 0d 0a 0d 0a 71  ..5144..605....q
134f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
13500 53 45 4c 45 43 54 20 37 34 20 46 52 4f 4d 20 74  SELECT 74 FROM t
13510 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab0 AS cor0 CROS
13520 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63  S JOIN tab2 AS c
13530 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  or1..----..9 val
13540 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 32  ues hashing to 2
13550 63 63 66 38 65 66 33 66 34 37 37 65 31 61 31 61  ccf8ef3f477e1a1a
13560 33 65 33 30 63 38 62 38 31 35 34 66 66 33 31 0d  3e30c8b8154ff31.
13570 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
13580 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 35  rt..SELECT + + 5
13590 33 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 41 53 20  3 * + - col0 AS 
135a0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
135b0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
135c0 34 33 38 0d 0a 2d 33 33 39 32 0d 0a 2d 33 39 37  438..-3392..-397
135d0 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
135e0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
135f0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
13600 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34  rowsort label-44
13610 34 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 28  4..SELECT - MAX(
13620 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 37 33   DISTINCT + + 73
13630 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
13640 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
13650 2d 2d 0d 0a 2d 37 33 0d 0a 0d 0a 73 6b 69 70 69  --..-73....skipi
13660 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
13670 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
13680 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
13690 34 34 34 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41  444..SELECT - MA
136a0 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  X ( DISTINCT + +
136b0 20 37 33 20 29 20 41 53 20 63 6f 6c 32 20 46 52   73 ) AS col2 FR
136c0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
136d0 0a 2d 2d 2d 2d 0d 0a 2d 37 33 0d 0a 0d 0a 71 75  .----..-73....qu
136e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
136f0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
13700 20 37 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   75 AS col0 FROM
13710 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
13720 20 4e 4f 54 20 2b 20 36 38 20 2a 20 2d 20 63 6f   NOT + 68 * - co
13730 6c 30 20 3c 3e 20 2d 20 33 37 0d 0a 2d 2d 2d 2d  l0 <> - 37..----
13740 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
13750 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
13760 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
13770 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34 36  owsort label-446
13780 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 43 4f 55  ..SELECT + - COU
13790 4e 54 28 20 2d 20 63 6f 6c 32 20 29 20 41 53 20  NT( - col2 ) AS 
137a0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
137b0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  S cor0..----..-3
137c0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
137d0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
137e0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
137f0 72 74 20 6c 61 62 65 6c 2d 34 34 36 0d 0a 53 45  rt label-446..SE
13800 4c 45 43 54 20 2b 20 2d 20 43 4f 55 4e 54 20 28  LECT + - COUNT (
13810 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c   - col2 ) AS col
13820 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
13830 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d  or0..----..-3...
13840 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
13850 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
13860 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
13870 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
13880 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
13890 62 65 6c 2d 34 34 37 0d 0a 53 45 4c 45 43 54 20  bel-447..SELECT 
138a0 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28  DISTINCT + CAST(
138b0 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 53   COUNT( * ) AS S
138c0 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
138d0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
138e0 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .3....skipif mys
138f0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
13900 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
13910 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34 37 0d 0a  sort label-447..
13920 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
13930 2b 20 43 41 53 54 20 28 20 43 4f 55 4e 54 20 28  + CAST ( COUNT (
13940 20 2a 20 29 20 41 53 20 49 4e 54 45 47 45 52 20   * ) AS INTEGER 
13950 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
13960 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
13970 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
13980 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d 20  .SELECT ALL ( - 
13990 36 34 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  64 ) FROM tab0 A
139a0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  S cor0..----..-6
139b0 34 0d 0a 2d 36 34 0d 0a 2d 36 34 0d 0a 0d 0a 6f  4..-64..-64....o
139c0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
139d0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
139e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
139f0 74 20 6c 61 62 65 6c 2d 34 34 39 0d 0a 53 45 4c  t label-449..SEL
13a00 45 43 54 20 41 4c 4c 20 2b 20 4d 41 58 28 20 41  ECT ALL + MAX( A
13a10 4c 4c 20 2d 20 2d 20 63 6f 6c 32 20 29 20 41 53  LL - - col2 ) AS
13a20 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
13a30 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39  AS cor0..----..9
13a40 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
13a50 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
13a60 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
13a70 6f 72 74 20 6c 61 62 65 6c 2d 34 34 39 0d 0a 53  ort label-449..S
13a80 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d 41 58 20  ELECT ALL + MAX 
13a90 28 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c 32 20 29  ( ALL - - col2 )
13aa0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
13ab0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
13ac0 0d 0a 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..99....onlyif m
13ad0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
13ae0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
13af0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
13b00 72 74 20 6c 61 62 65 6c 2d 34 35 30 0d 0a 53 45  rt label-450..SE
13b10 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 28  LECT ALL + CAST(
13b20 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
13b30 49 47 4e 45 44 20 29 20 41 53 20 53 49 47 4e 45  IGNED ) AS SIGNE
13b40 44 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  D ) AS col0 FROM
13b50 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
13b60 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
13b70 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
13b80 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
13b90 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
13ba0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35  rowsort label-45
13bb0 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  0..SELECT ALL + 
13bc0 43 41 53 54 20 28 20 43 41 53 54 20 28 20 4e 55  CAST ( CAST ( NU
13bd0 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
13be0 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
13bf0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
13c00 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
13c10 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
13c20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
13c30 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
13c40 20 63 6f 6c 30 2c 20 63 6f 6c 30 20 41 53 20 63   col0, col0 AS c
13c50 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
13c60 2d 2d 2d 0d 0a 35 31 0d 0a 35 31 0d 0a 38 35 0d  ---..51..51..85.
13c70 0a 38 35 0d 0a 39 31 0d 0a 39 31 0d 0a 0d 0a 71  .85..91..91....q
13c80 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
13c90 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
13ca0 20 2d 20 37 31 20 41 53 20 63 6f 6c 31 2c 20 36   - 71 AS col1, 6
13cb0 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
13cc0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d 0a  ab0..----..-71..
13cd0 36 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  62....onlyif mys
13ce0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
13cf0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
13d00 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
13d10 34 35 33 0d 0a 53 45 4c 45 43 54 20 37 38 20 41  453..SELECT 78 A
13d20 53 20 63 6f 6c 32 2c 20 43 4f 55 4e 54 28 20 2a  S col2, COUNT( *
13d30 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
13d40 2d 2d 0d 0a 37 38 0d 0a 33 0d 0a 0d 0a 73 6b 69  --..78..3....ski
13d50 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
13d60 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
13d70 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
13d80 65 6c 2d 34 35 33 0d 0a 53 45 4c 45 43 54 20 37  el-453..SELECT 7
13d90 38 20 41 53 20 63 6f 6c 32 2c 20 43 4f 55 4e 54  8 AS col2, COUNT
13da0 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32   ( * ) FROM tab2
13db0 0d 0a 2d 2d 2d 2d 0d 0a 37 38 0d 0a 33 0d 0a 0d  ..----..78..3...
13dc0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
13dd0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
13de0 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
13df0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35 34 0d 0a  sort label-454..
13e00 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20  SELECT + COUNT( 
13e10 2a 20 29 20 63 6f 6c 30 2c 20 2b 20 39 38 20 2b  * ) col0, + 98 +
13e20 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52   + COUNT( * ) FR
13e30 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab1..----..3
13e40 0d 0a 31 30 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..101....skipif 
13e50 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
13e60 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
13e70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
13e80 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
13e90 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
13ea0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
13eb0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
13ec0 74 20 6c 61 62 65 6c 2d 34 35 34 0d 0a 53 45 4c  t label-454..SEL
13ed0 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ECT + COUNT ( * 
13ee0 29 20 63 6f 6c 30 2c 20 2b 20 39 38 20 2b 20 2b  ) col0, + 98 + +
13ef0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
13f00 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  M tab1..----..3.
13f10 0a 31 30 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .101....query II
13f20 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
13f30 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 41 53 20 63   ALL - col0 AS c
13f40 6f 6c 32 2c 20 2d 20 38 33 20 41 53 20 63 6f 6c  ol2, - 83 AS col
13f50 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
13f60 2d 0d 0a 2d 34 36 0d 0a 2d 38 33 0d 0a 2d 36 34  -..-46..-83..-64
13f70 0d 0a 2d 38 33 0d 0a 2d 37 35 0d 0a 2d 38 33 0d  ..-83..-75..-83.
13f80 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
13f90 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
13fa0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
13fb0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35 36 0d  wsort label-456.
13fc0 0a 53 45 4c 45 43 54 20 2d 20 2d 20 53 55 4d 28  .SELECT - - SUM(
13fd0 20 63 6f 6c 31 20 29 20 63 6f 6c 31 20 46 52 4f   col1 ) col1 FRO
13fe0 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
13ff0 2d 0d 0a 31 30 33 0d 0a 0d 0a 73 6b 69 70 69 66  -..103....skipif
14000 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
14010 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
14020 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
14030 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
14040 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
14050 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
14060 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
14070 74 20 6c 61 62 65 6c 2d 34 35 36 0d 0a 53 45 4c  t label-456..SEL
14080 45 43 54 20 2d 20 2d 20 53 55 4d 20 28 20 63 6f  ECT - - SUM ( co
14090 6c 31 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74  l1 ) col1 FROM t
140a0 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
140b0 31 30 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  103....query III
140c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
140d0 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32   ALL * FROM tab2
140e0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28   AS cor0 WHERE (
140f0 20 4e 55 4c 4c 20 29 20 3c 3d 20 4e 55 4c 4c 0d   NULL ) <= NULL.
14100 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
14110 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
14120 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
14130 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
14140 6c 2d 34 35 38 0d 0a 53 45 4c 45 43 54 20 44 49  l-458..SELECT DI
14150 53 54 49 4e 43 54 20 2b 20 2b 20 43 4f 55 4e 54  STINCT + + COUNT
14160 28 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 29 20 41  ( ALL - col0 ) A
14170 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
14180 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   cor0..----..3..
14190 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
141a0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
141b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
141c0 20 6c 61 62 65 6c 2d 34 35 38 0d 0a 53 45 4c 45   label-458..SELE
141d0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20  CT DISTINCT + + 
141e0 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2d 20 63 6f  COUNT ( ALL - co
141f0 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l0 ) AS col0 FRO
14200 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
14210 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..3....onlyif m
14220 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
14230 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
14240 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
14250 2d 34 35 39 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  -459..SELECT + +
14260 20 4d 41 58 28 20 63 6f 6c 30 20 29 20 41 53 20   MAX( col0 ) AS 
14270 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
14280 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 35  S cor0..----..75
14290 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
142a0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
142b0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
142c0 72 74 20 6c 61 62 65 6c 2d 34 35 39 0d 0a 53 45  rt label-459..SE
142d0 4c 45 43 54 20 2b 20 2b 20 4d 41 58 20 28 20 63  LECT + + MAX ( c
142e0 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol0 ) AS col0 FR
142f0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
14300 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 0d 0a 73 6b 69  .----..75....ski
14310 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
14320 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
14330 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
14340 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
14350 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
14360 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
14370 20 63 6f 6c 30 20 2a 20 2b 20 38 30 20 41 53 20   col0 * + 80 AS 
14380 63 6f 6c 30 2c 20 2b 20 63 6f 6c 31 20 63 6f 6c  col0, + col1 col
14390 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
143a0 2d 0d 0a 2d 34 30 38 30 0d 0a 31 34 0d 0a 2d 36  -..-4080..14..-6
143b0 38 30 30 0d 0a 35 0d 0a 2d 37 32 38 30 0d 0a 34  800..5..-7280..4
143c0 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
143d0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
143e0 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
143f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
14400 6c 61 62 65 6c 2d 34 36 31 0d 0a 53 45 4c 45 43  label-461..SELEC
14410 54 20 41 4c 4c 20 2b 20 43 41 53 54 28 20 4e 55  T ALL + CAST( NU
14420 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 46  LL AS SIGNED ) F
14430 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
14440 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
14450 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
14460 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
14470 20 74 6f 20 63 64 37 61 37 39 30 31 65 34 37 63   to cd7a7901e47c
14480 31 35 31 35 35 34 30 34 61 66 66 30 64 32 31 36  15155404aff0d216
14490 66 65 30 62 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  fe0b....skipif m
144a0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
144b0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
144c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 31  owsort label-461
144d0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
144e0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
144f0 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62  TEGER ) FROM tab
14500 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  2 AS cor0 CROSS 
14510 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72  JOIN tab1 AS cor
14520 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
14530 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 64 37  s hashing to cd7
14540 61 37 39 30 31 65 34 37 63 31 35 31 35 35 34 30  a7901e47c1515540
14550 34 61 66 66 30 64 32 31 36 66 65 30 62 0d 0a 0d  4aff0d216fe0b...
14560 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14570 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 32  ..SELECT ALL - 2
14580 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  7 AS col1 FROM t
14590 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
145a0 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col1 IS NULL..--
145b0 2d 2d 0d 0a 2d 32 37 0d 0a 2d 32 37 0d 0a 2d 32  --..-27..-27..-2
145c0 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
145d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
145e0 20 39 20 2a 20 2b 20 2d 20 63 6f 6c 32 20 41 53   9 * + - col2 AS
145f0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
14600 0a 2d 2d 2d 2d 0d 0a 2d 32 30 37 0d 0a 2d 33 36  .----..-207..-36
14610 30 0d 0a 2d 35 32 32 0d 0a 0d 0a 6f 6e 6c 79 69  0..-522....onlyi
14620 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
14630 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
14640 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
14650 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
14660 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36  rowsort label-46
14670 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
14680 43 54 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54  CT SUM( DISTINCT
14690 20 2d 20 37 31 20 29 20 2b 20 2b 20 2d 20 43 41   - 71 ) + + - CA
146a0 53 54 28 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a  ST( + + COUNT( *
146b0 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 63   ) AS SIGNED ) c
146c0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
146d0 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
146e0 20 74 61 62 31 20 63 6f 72 31 0d 0a 2d 2d 2d 2d   tab1 cor1..----
146f0 0d 0a 2d 38 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-80....skipif 
14700 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
14710 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
14720 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
14730 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
14740 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
14750 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
14760 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14770 20 6c 61 62 65 6c 2d 34 36 34 0d 0a 53 45 4c 45   label-464..SELE
14780 43 54 20 44 49 53 54 49 4e 43 54 20 53 55 4d 20  CT DISTINCT SUM 
14790 28 20 44 49 53 54 49 4e 43 54 20 2d 20 37 31 20  ( DISTINCT - 71 
147a0 29 20 2b 20 2b 20 2d 20 43 41 53 54 20 28 20 2b  ) + + - CAST ( +
147b0 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
147c0 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f 6c 32  S INTEGER ) col2
147d0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
147e0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
147f0 62 31 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1 cor1..----..-
14800 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  80....query III 
14810 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
14820 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ALL * FROM tab0 
14830 57 48 45 52 45 20 4e 4f 54 20 28 20 2b 20 63 6f  WHERE NOT ( + co
14840 6c 31 20 49 4e 20 28 20 37 30 2c 20 31 38 20 29  l1 IN ( 70, 18 )
14850 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75   )..----..9 valu
14860 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
14870 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
14880 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
14890 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
148a0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
148b0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
148c0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 36 0d 0a  sort label-466..
148d0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
148e0 2d 20 2b 20 28 20 2d 20 35 31 20 29 20 2b 20 2b  - + ( - 51 ) + +
148f0 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f   + COUNT( * ) co
14900 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
14910 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 34 0d 0a  cor0..----..54..
14920 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
14930 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
14940 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
14950 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
14960 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
14970 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
14980 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
14990 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
149a0 34 36 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  466..SELECT DIST
149b0 49 4e 43 54 20 2d 20 2b 20 28 20 2d 20 35 31 20  INCT - + ( - 51 
149c0 29 20 2b 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20  ) + + + COUNT ( 
149d0 2a 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * ) col2 FROM ta
149e0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
149f0 0d 0a 35 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..54....onlyif m
14a00 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
14a10 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
14a20 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
14a30 2d 34 36 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -467..SELECT DIS
14a40 54 49 4e 43 54 20 2d 20 39 31 20 2a 20 43 4f 55  TINCT - 91 * COU
14a50 4e 54 28 20 2a 20 29 20 2d 20 2d 20 35 32 20 2b  NT( * ) - - 52 +
14a60 20 2d 20 4d 49 4e 28 20 28 20 63 6f 6c 31 20 29   - MIN( ( col1 )
14a70 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72   ) FROM tab1 cor
14a80 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 36 0d 0a 0d  0..----..-226...
14a90 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
14aa0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
14ab0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
14ac0 6c 61 62 65 6c 2d 34 36 37 0d 0a 53 45 4c 45 43  label-467..SELEC
14ad0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 39 31 20  T DISTINCT - 91 
14ae0 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20  * COUNT ( * ) - 
14af0 2d 20 35 32 20 2b 20 2d 20 4d 49 4e 20 28 20 28  - 52 + - MIN ( (
14b00 20 63 6f 6c 31 20 29 20 29 20 46 52 4f 4d 20 74   col1 ) ) FROM t
14b10 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1 cor0..----..
14b20 2d 32 32 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -226....query I 
14b30 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
14b40 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 37 38 20  DISTINCT - - 78 
14b50 2b 20 28 20 2d 20 2b 20 63 6f 6c 31 20 29 20 41  + ( - + col1 ) A
14b60 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
14b70 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
14b80 2d 33 0d 0a 35 37 0d 0a 37 37 0d 0a 0d 0a 73 6b  -3..57..77....sk
14b90 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
14ba0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
14bb0 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
14bc0 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
14bd0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
14be0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
14bf0 49 53 54 49 4e 43 54 20 2d 20 35 32 20 2b 20 2b  ISTINCT - 52 + +
14c00 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2b 20 63 6f   + col1 + + + co
14c10 6c 32 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 63 6f  l2 * - - col2 co
14c20 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l2 FROM tab2 cor
14c30 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 32 35 0d 0a 33  0..----..1625..3
14c40 33 37 39 0d 0a 35 32 38 0d 0a 0d 0a 71 75 65 72  379..528....quer
14c50 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
14c60 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2a  ECT ALL + col1 *
14c70 20 33 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d   30 FROM tab0..-
14c80 2d 2d 2d 0d 0a 32 34 33 30 0d 0a 33 30 0d 0a 36  ---..2430..30..6
14c90 33 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  30....onlyif mys
14ca0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
14cb0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
14cc0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
14cd0 37 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  71..SELECT DISTI
14ce0 4e 43 54 20 4d 41 58 28 20 41 4c 4c 20 2b 20 38  NCT MAX( ALL + 8
14cf0 32 20 29 20 2a 20 33 20 63 6f 6c 31 20 46 52 4f  2 ) * 3 col1 FRO
14d00 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34  M tab0..----..24
14d10 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
14d20 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
14d30 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
14d40 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
14d50 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
14d60 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
14d70 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
14d80 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
14d90 65 6c 2d 34 37 31 0d 0a 53 45 4c 45 43 54 20 44  el-471..SELECT D
14da0 49 53 54 49 4e 43 54 20 4d 41 58 20 28 20 41 4c  ISTINCT MAX ( AL
14db0 4c 20 2b 20 38 32 20 29 20 2a 20 33 20 63 6f 6c  L + 82 ) * 3 col
14dc0 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
14dd0 2d 0d 0a 32 34 36 0d 0a 0d 0a 71 75 65 72 79 20  -..246....query 
14de0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
14df0 54 20 2d 20 63 6f 6c 30 20 2a 20 32 35 20 46 52  T - col0 * 25 FR
14e00 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
14e10 31 32 37 35 0d 0a 2d 32 31 32 35 0d 0a 2d 32 32  1275..-2125..-22
14e20 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  75....onlyif mys
14e30 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
14e40 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69  yntax: DIV for i
14e50 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
14e60 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
14e70 72 74 20 6c 61 62 65 6c 2d 34 37 33 0d 0a 53 45  rt label-473..SE
14e80 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
14e90 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56  + COUNT( * ) DIV
14ea0 20 2d 20 34 38 20 46 52 4f 4d 20 74 61 62 31 20   - 48 FROM tab1 
14eb0 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 32  WHERE NOT - col2
14ec0 20 2b 20 2d 20 38 39 20 4e 4f 54 20 42 45 54 57   + - 89 NOT BETW
14ed0 45 45 4e 20 2b 20 38 30 20 2b 20 2b 20 32 38 20  EEN + 80 + + 28 
14ee0 41 4e 44 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63  AND + col0 * - c
14ef0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ol0..----..0....
14f00 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
14f10 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
14f20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
14f30 61 62 65 6c 2d 34 37 33 0d 0a 53 45 4c 45 43 54  abel-473..SELECT
14f40 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 43 4f   DISTINCT - + CO
14f50 55 4e 54 20 28 20 2a 20 29 20 2f 20 2d 20 34 38  UNT ( * ) / - 48
14f60 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
14f70 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 2b 20 2d 20   NOT - col2 + - 
14f80 38 39 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2b  89 NOT BETWEEN +
14f90 20 38 30 20 2b 20 2b 20 32 38 20 41 4e 44 20 2b   80 + + 28 AND +
14fa0 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 0d 0a   col0 * - col0..
14fb0 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ----..0....query
14fc0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
14fd0 43 54 20 41 4c 4c 20 2d 20 37 36 20 2b 20 63 6f  CT ALL - 76 + co
14fe0 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
14ff0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 0d  tab1..----..-25.
15000 0a 31 35 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79 20  .15..9....query 
15010 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
15020 54 20 28 20 2b 20 63 6f 6c 32 20 29 20 2d 20 39  T ( + col2 ) - 9
15030 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  5 AS col0 FROM t
15040 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 0d 0a  ab0..----..-48..
15050 2d 38 35 0d 0a 34 0d 0a 0d 0a 71 75 65 72 79 20  -85..4....query 
15060 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
15070 54 20 41 4c 4c 20 2b 20 28 20 28 20 2b 20 2d 20  T ALL + ( ( + - 
15080 63 6f 6c 31 20 29 20 29 20 46 52 4f 4d 20 74 61  col1 ) ) FROM ta
15090 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32  b0..----..-1..-2
150a0 31 0d 0a 2d 38 31 0d 0a 0d 0a 71 75 65 72 79 20  1..-81....query 
150b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
150c0 54 20 44 49 53 54 49 4e 43 54 20 37 36 20 41 53  T DISTINCT 76 AS
150d0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
150e0 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
150f0 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d  IN tab0 AS cor1.
15100 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 0d 0a 71 75 65  .----..76....que
15110 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
15120 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
15130 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
15140 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
15150 20 63 6f 6c 32 20 2b 20 2d 20 31 30 20 2f 20 63   col2 + - 10 / c
15160 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol1 IS NULL..---
15170 2d 0d 0a 31 0d 0a 32 31 0d 0a 38 31 0d 0a 0d 0a  -..1..21..81....
15180 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
15190 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2a 20 35  .SELECT col2 * 5
151a0 37 20 2b 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f  7 + + - col1 FRO
151b0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
151c0 2d 2d 2d 2d 0d 0a 33 33 35 38 0d 0a 33 38 32 39  ----..3358..3829
151d0 0d 0a 35 34 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..5458....onlyif
151e0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
151f0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
15200 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
15210 65 6c 2d 34 38 30 0d 0a 53 45 4c 45 43 54 20 44  el-480..SELECT D
15220 49 53 54 49 4e 43 54 20 2d 20 2b 20 53 55 4d 28  ISTINCT - + SUM(
15230 20 2b 20 2d 20 37 39 20 29 20 46 52 4f 4d 20 74   + - 79 ) FROM t
15240 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
15250 2d 0d 0a 32 33 37 0d 0a 0d 0a 73 6b 69 70 69 66  -..237....skipif
15260 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
15270 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
15280 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
15290 38 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  80..SELECT DISTI
152a0 4e 43 54 20 2d 20 2b 20 53 55 4d 20 28 20 2b 20  NCT - + SUM ( + 
152b0 2d 20 37 39 20 29 20 46 52 4f 4d 20 74 61 62 30  - 79 ) FROM tab0
152c0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
152d0 32 33 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  237....query III
152e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
152f0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
15300 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
15310 20 4e 4f 54 20 2b 20 38 30 20 2d 20 38 36 20 49   NOT + 80 - 86 I
15320 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  S NULL..----..9 
15330 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
15340 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30  o c6c0a4111b36d0
15350 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63  4dbc811a11e4d54c
15360 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  ad....query I ro
15370 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
15380 53 54 49 4e 43 54 20 2b 20 35 34 20 2a 20 2b 20  STINCT + 54 * + 
15390 28 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31  ( col2 ) AS col1
153a0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
153b0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 31 38 36 0d 0a  r0..----..3186..
153c0 33 36 37 32 0d 0a 35 31 38 34 0d 0a 0d 0a 6f 6e  3672..5184....on
153d0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
153e0 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
153f0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
15400 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
15410 38 33 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20  83..SELECT col0 
15420 2a 20 43 41 53 54 28 20 2b 20 63 6f 6c 32 20 41  * CAST( + col2 A
15430 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f  S SIGNED ) AS co
15440 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
15450 2d 2d 0d 0a 31 30 35 38 0d 0a 32 35 36 30 0d 0a  --..1058..2560..
15460 34 33 35 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  4350....skipif m
15470 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
15480 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
15490 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38 33  owsort label-483
154a0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20  ..SELECT col0 * 
154b0 43 41 53 54 20 28 20 2b 20 63 6f 6c 32 20 41 53  CAST ( + col2 AS
154c0 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
154d0 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
154e0 2d 2d 0d 0a 31 30 35 38 0d 0a 32 35 36 30 0d 0a  --..1058..2560..
154f0 34 33 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  4350....query I 
15500 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
15510 2b 20 2b 20 63 6f 6c 32 20 2a 20 33 30 20 46 52  + + col2 * 30 FR
15520 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
15530 54 20 2b 20 28 20 63 6f 6c 30 20 29 20 49 53 20  T + ( col0 ) IS 
15540 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
15550 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
15560 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
15570 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
15580 54 20 28 20 4e 55 4c 4c 20 3c 3e 20 4e 55 4c 4c  T ( NULL <> NULL
15590 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
155a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
155b0 45 43 54 20 2b 20 34 35 20 41 53 20 63 6f 6c 31  ECT + 45 AS col1
155c0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
155d0 0d 0a 34 35 0d 0a 34 35 0d 0a 34 35 0d 0a 0d 0a  ..45..45..45....
155e0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
155f0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
15600 54 20 2b 20 2d 20 34 37 20 2b 20 63 6f 6c 31 20  T + - 47 + col1 
15610 2d 20 2d 20 63 6f 6c 32 2c 20 63 6f 6c 30 20 2a  - - col2, col0 *
15620 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   - col0 FROM tab
15630 31 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  1 cor0 WHERE NOT
15640 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c   col0 IS NOT NUL
15650 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
15660 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
15670 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  CT DISTINCT col1
15680 20 2b 20 39 32 20 2a 20 28 20 2d 20 63 6f 6c 31   + 92 * ( - col1
15690 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
156a0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 37  cor0..----..-127
156b0 34 0d 0a 2d 34 32 37 37 0d 0a 2d 34 35 35 0d 0a  4..-4277..-455..
156c0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
156d0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
156e0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
156f0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38 39 0d 0a  sort label-489..
15700 53 45 4c 45 43 54 20 2b 20 28 20 2b 20 32 36 20  SELECT + ( + 26 
15710 29 20 2b 20 43 4f 55 4e 54 28 20 63 6f 6c 30 20  ) + COUNT( col0 
15720 29 20 2a 20 2d 20 2d 20 33 34 20 41 53 20 63 6f  ) * - - 34 AS co
15730 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l1 FROM tab2 cor
15740 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 38 0d 0a 0d 0a  0..----..128....
15750 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
15760 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
15770 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
15780 61 62 65 6c 2d 34 38 39 0d 0a 53 45 4c 45 43 54  abel-489..SELECT
15790 20 2b 20 28 20 2b 20 32 36 20 29 20 2b 20 43 4f   + ( + 26 ) + CO
157a0 55 4e 54 20 28 20 63 6f 6c 30 20 29 20 2a 20 2d  UNT ( col0 ) * -
157b0 20 2d 20 33 34 20 41 53 20 63 6f 6c 31 20 46 52   - 34 AS col1 FR
157c0 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
157d0 2d 2d 0d 0a 31 32 38 0d 0a 0d 0a 71 75 65 72 79  --..128....query
157e0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
157f0 43 54 20 2d 20 39 32 20 41 53 20 63 6f 6c 31 20  CT - 92 AS col1 
15800 46 52 4f 4d 20 28 20 74 61 62 31 20 41 53 20 63  FROM ( tab1 AS c
15810 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
15820 61 62 32 20 41 53 20 63 6f 72 31 20 29 0d 0a 2d  ab2 AS cor1 )..-
15830 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
15840 73 68 69 6e 67 20 74 6f 20 31 61 66 37 30 39 61  shing to 1af709a
15850 37 39 61 33 65 35 36 32 38 31 66 66 64 63 65 34  79a3e56281ffdce4
15860 64 39 33 31 64 35 39 36 35 0d 0a 0d 0a 71 75 65  d931d5965....que
15870 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
15880 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
15890 62 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  b2 WHERE NULL NO
158a0 54 20 42 45 54 57 45 45 4e 20 2b 20 28 20 2b 20  T BETWEEN + ( + 
158b0 63 6f 6c 30 20 29 20 41 4e 44 20 4e 55 4c 4c 0d  col0 ) AND NULL.
158c0 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
158d0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
158e0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
158f0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
15900 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
15910 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
15920 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
15930 43 54 20 39 31 20 2a 20 2b 20 63 6f 6c 31 20 63  CT 91 * + col1 c
15940 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
15950 2d 2d 2d 0d 0a 31 32 37 34 0d 0a 34 32 37 37 0d  ---..1274..4277.
15960 0a 34 35 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .455....query I 
15970 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
15980 41 4c 4c 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f  ALL - col0 AS co
15990 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  l0 FROM tab2 WHE
159a0 52 45 20 28 20 63 6f 6c 32 20 29 20 3c 3e 20 39  RE ( col2 ) <> 9
159b0 32 20 2a 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  2 * col2..----..
159c0 2d 34 36 0d 0a 2d 36 34 0d 0a 2d 37 35 0d 0a 0d  -46..-64..-75...
159d0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
159e0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
159f0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
15a00 6f 72 74 20 6c 61 62 65 6c 2d 34 39 34 0d 0a 53  ort label-494..S
15a10 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
15a20 20 43 4f 55 4e 54 28 20 2b 20 63 6f 6c 32 20 29   COUNT( + col2 )
15a30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
15a40 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d   NULL IS NULL..-
15a50 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66  ---..3....skipif
15a60 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
15a70 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
15a80 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
15a90 39 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  94..SELECT DISTI
15aa0 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2b 20  NCT + COUNT ( + 
15ab0 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30  col2 ) FROM tab0
15ac0 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e   WHERE NULL IS N
15ad0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  ULL..----..3....
15ae0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
15af0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
15b00 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
15b10 72 74 20 6c 61 62 65 6c 2d 34 39 35 0d 0a 53 45  rt label-495..SE
15b20 4c 45 43 54 20 2b 20 28 20 2d 20 43 4f 55 4e 54  LECT + ( - COUNT
15b30 28 20 2a 20 29 20 29 20 63 6f 6c 31 20 46 52 4f  ( * ) ) col1 FRO
15b40 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
15b50 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-3....skipif 
15b60 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
15b70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
15b80 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
15b90 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
15ba0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
15bb0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
15bc0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
15bd0 20 6c 61 62 65 6c 2d 34 39 35 0d 0a 53 45 4c 45   label-495..SELE
15be0 43 54 20 2b 20 28 20 2d 20 43 4f 55 4e 54 20 28  CT + ( - COUNT (
15bf0 20 2a 20 29 20 29 20 63 6f 6c 31 20 46 52 4f 4d   * ) ) col1 FROM
15c00 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
15c10 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-3....query I 
15c20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
15c30 2b 20 35 20 2a 20 2b 20 28 20 2b 20 2b 20 35 39  + 5 * + ( + + 59
15c40 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72   ) FROM tab1 cor
15c50 30 0d 0a 2d 2d 2d 2d 0d 0a 32 39 35 0d 0a 32 39  0..----..295..29
15c60 35 0d 0a 32 39 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  5..295....onlyif
15c70 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
15c80 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
15c90 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
15ca0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39 37 0d 0a  sort label-497..
15cb0 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f 6c 32 20  SELECT + + col2 
15cc0 2a 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 43 41 53  * - col1 + - CAS
15cd0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
15ce0 44 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  D ) AS col1 FROM
15cf0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
15d00 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
15d10 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
15d20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
15d30 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
15d40 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39  rowsort label-49
15d50 37 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f  7..SELECT + + co
15d60 6c 32 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2d 20  l2 * - col1 + - 
15d70 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
15d80 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31  NTEGER ) AS col1
15d90 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
15da0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
15db0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e  NULL..NULL....on
15dc0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
15dd0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44  regate syntax: D
15de0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
15df0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
15e00 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
15e10 2d 34 39 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -498..SELECT ALL
15e20 20 2d 20 34 34 20 44 49 56 20 2d 20 43 4f 55 4e   - 44 DIV - COUN
15e30 54 28 20 2a 20 29 20 2b 20 4d 41 58 28 20 44 49  T( * ) + MAX( DI
15e40 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 29 20  STINCT - col0 ) 
15e50 2a 20 4d 49 4e 28 20 2d 20 2d 20 32 34 20 29 20  * MIN( - - 24 ) 
15e60 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
15e70 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
15e80 0a 2d 31 30 39 30 0d 0a 0d 0a 73 6b 69 70 69 66  .-1090....skipif
15e90 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
15ea0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
15eb0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
15ec0 39 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  98..SELECT ALL -
15ed0 20 34 34 20 2f 20 2d 20 43 4f 55 4e 54 20 28 20   44 / - COUNT ( 
15ee0 2a 20 29 20 2b 20 4d 41 58 20 28 20 44 49 53 54  * ) + MAX ( DIST
15ef0 49 4e 43 54 20 2d 20 63 6f 6c 30 20 29 20 2a 20  INCT - col0 ) * 
15f00 4d 49 4e 20 28 20 2d 20 2d 20 32 34 20 29 20 41  MIN ( - - 24 ) A
15f10 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
15f20 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
15f30 2d 31 30 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49  -1090....query I
15f40 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
15f50 20 2d 20 2b 20 31 39 20 2d 20 63 6f 6c 30 20 46   - + 19 - col0 F
15f60 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
15f70 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34 0d 0a 2d 31  ..----..-104..-1
15f80 31 30 0d 0a 2d 37 30 0d 0a 0d 0a 71 75 65 72 79  10..-70....query
15f90 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
15fa0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32  CT DISTINCT col2
15fb0 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20   FROM tab1 cor0 
15fc0 57 48 45 52 45 20 2d 20 63 6f 6c 31 20 49 53 20  WHERE - col1 IS 
15fd0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
15fe0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
15ff0 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
16000 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
16010 45 44 20 74 79 70 65 3a 20 44 45 43 49 4d 41 4c  ED type: DECIMAL
16020 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
16030 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
16040 30 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  01..SELECT ALL +
16050 20 36 39 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a   69 - + COUNT( *
16060 20 29 20 2b 20 2b 20 43 41 53 54 28 20 2b 20 38   ) + + CAST( + 8
16070 37 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2d  7 AS DECIMAL ) -
16080 20 2b 20 43 41 53 54 28 20 2d 20 43 41 53 54 28   + CAST( - CAST(
16090 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
160a0 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52  ) AS SIGNED ) FR
160b0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
160c0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
160d0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
160e0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
160f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16100 62 65 6c 2d 35 30 31 0d 0a 53 45 4c 45 43 54 20  bel-501..SELECT 
16110 41 4c 4c 20 2b 20 36 39 20 2d 20 2b 20 43 4f 55  ALL + 69 - + COU
16120 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20 43 41 53  NT ( * ) + + CAS
16130 54 20 28 20 2b 20 38 37 20 41 53 20 52 45 41 4c  T ( + 87 AS REAL
16140 20 29 20 2d 20 2b 20 43 41 53 54 20 28 20 2d 20   ) - + CAST ( - 
16150 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
16160 4e 54 45 47 45 52 20 29 20 41 53 20 49 4e 54 45  NTEGER ) AS INTE
16170 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20  GER ) FROM tab0 
16180 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
16190 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
161a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
161b0 20 63 6f 6c 30 20 2b 20 2d 20 31 37 20 2a 20 37   col0 + - 17 * 7
161c0 36 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  6 * col0 AS col0
161d0 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
161e0 0a 2d 2d 2d 2d 0d 0a 2d 31 31 32 34 39 31 0d 0a  .----..-112491..
161f0 2d 31 32 35 34 32 31 0d 0a 2d 31 39 33 39 35 0d  -125421..-19395.
16200 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
16210 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
16220 4e 43 54 20 39 36 20 2b 20 2d 20 63 6f 6c 32 20  NCT 96 + - col2 
16230 2b 20 2d 20 39 39 20 46 52 4f 4d 20 74 61 62 31  + - 99 FROM tab1
16240 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
16250 2d 36 32 0d 0a 2d 37 31 0d 0a 2d 39 39 0d 0a 0d  -62..-71..-99...
16260 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16270 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 31 30 20  ..SELECT ALL 10 
16280 2b 20 37 36 20 2a 20 36 39 20 46 52 4f 4d 20 74  + 76 * 69 FROM t
16290 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 35 32 35 34 0d  ab0..----..5254.
162a0 0a 35 32 35 34 0d 0a 35 32 35 34 0d 0a 0d 0a 6f  .5254..5254....o
162b0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
162c0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
162d0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
162e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
162f0 35 30 35 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  505..SELECT - + 
16300 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
16310 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20 46  GNED ) AS col1 F
16320 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 2b  ROM tab0 WHERE +
16330 20 63 6f 6c 32 20 2f 20 2b 20 2b 20 36 30 20 2d   col2 / + + 60 -
16340 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 32   + col2 + + col2
16350 20 2b 20 2d 20 38 34 20 2b 20 63 6f 6c 31 20 2a   + - 84 + col1 *
16360 20 2d 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e   - col2 IS NOT N
16370 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ULL..----..NULL.
16380 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
16390 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
163a0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
163b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
163c0 62 65 6c 2d 35 30 35 0d 0a 53 45 4c 45 43 54 20  bel-505..SELECT 
163d0 2d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  - + CAST ( NULL 
163e0 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
163f0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 57  col1 FROM tab0 W
16400 48 45 52 45 20 2b 20 63 6f 6c 32 20 2f 20 2b 20  HERE + col2 / + 
16410 2b 20 36 30 20 2d 20 2b 20 63 6f 6c 32 20 2b 20  + 60 - + col2 + 
16420 2b 20 63 6f 6c 32 20 2b 20 2d 20 38 34 20 2b 20  + col2 + - 84 + 
16430 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20 49 53  col1 * - col2 IS
16440 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
16450 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
16460 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
16470 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28  sort..SELECT - (
16480 20 2b 20 63 6f 6c 31 20 29 20 2b 20 63 6f 6c 30   + col1 ) + col0
16490 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20   * col2 AS col2 
164a0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
164b0 0a 31 30 30 37 0d 0a 32 34 38 33 0d 0a 34 32 38  .1007..2483..428
164c0 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
164d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
164e0 20 2b 20 38 38 20 46 52 4f 4d 20 74 61 62 31 20   + 88 FROM tab1 
164f0 57 48 45 52 45 20 63 6f 6c 31 20 2a 20 2d 20 63  WHERE col1 * - c
16500 6f 6c 31 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  ol1 > NULL..----
16510 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
16520 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
16530 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  L * FROM tab0 WH
16540 45 52 45 20 4e 55 4c 4c 20 49 4e 20 28 20 2d 20  ERE NULL IN ( - 
16550 2d 20 34 32 2c 20 63 6f 6c 32 20 2f 20 2d 20 63  - 42, col2 / - c
16560 6f 6c 30 2c 20 28 20 63 6f 6c 30 20 29 2c 20 2b  ol0, ( col0 ), +
16570 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col2 )..----...
16580 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
16590 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
165a0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
165b0 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
165c0 65 6c 2d 35 30 39 0d 0a 53 45 4c 45 43 54 20 44  el-509..SELECT D
165d0 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 2a 20 43  ISTINCT col0 * C
165e0 41 53 54 28 20 2d 20 63 6f 6c 31 20 41 53 20 53  AST( - col1 AS S
165f0 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 2c  IGNED ) AS col0,
16600 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   + col2 AS col0 
16610 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
16620 0a 2d 32 33 34 36 0d 0a 32 33 0d 0a 2d 34 39 32  .-2346..23..-492
16630 38 0d 0a 34 30 0d 0a 2d 35 30 32 35 0d 0a 35 38  8..40..-5025..58
16640 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
16650 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
16660 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  e..query II rows
16670 6f 72 74 20 6c 61 62 65 6c 2d 35 30 39 0d 0a 53  ort label-509..S
16680 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
16690 6f 6c 30 20 2a 20 43 41 53 54 20 28 20 2d 20 63  ol0 * CAST ( - c
166a0 6f 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol1 AS INTEGER )
166b0 20 41 53 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c 32   AS col0, + col2
166c0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
166d0 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 34 36 0d  b2..----..-2346.
166e0 0a 32 33 0d 0a 2d 34 39 32 38 0d 0a 34 30 0d 0a  .23..-4928..40..
166f0 2d 35 30 32 35 0d 0a 35 38 0d 0a 0d 0a 71 75 65  -5025..58....que
16700 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
16710 45 4c 45 43 54 20 2d 20 35 32 20 2a 20 63 6f 6c  ELECT - 52 * col
16720 32 20 2b 20 2b 20 63 6f 6c 31 2c 20 28 20 2b 20  2 + + col1, ( + 
16730 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  + col0 ) FROM ta
16740 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
16750 0d 0a 2d 31 31 34 35 0d 0a 34 36 0d 0a 2d 32 30  ..-1145..46..-20
16760 30 33 0d 0a 36 34 0d 0a 2d 32 39 34 39 0d 0a 37  03..64..-2949..7
16770 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
16780 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
16790 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 46 52 4f  TINCT + col0 FRO
167a0 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52  M tab1 cor0 WHER
167b0 45 20 4e 4f 54 20 63 6f 6c 31 20 2b 20 32 36 20  E NOT col1 + 26 
167c0 4e 4f 54 20 42 45 54 57 45 45 4e 20 2b 20 63 6f  NOT BETWEEN + co
167d0 6c 31 20 2b 20 2d 20 63 6f 6c 32 20 2b 20 2d 20  l1 + - col2 + - 
167e0 39 37 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d  97 AND NULL..---
167f0 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
16800 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
16810 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
16820 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
16830 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16840 74 20 6c 61 62 65 6c 2d 35 31 32 0d 0a 53 45 4c  t label-512..SEL
16850 45 43 54 20 41 4c 4c 20 28 20 43 41 53 54 28 20  ECT ALL ( CAST( 
16860 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
16870 20 29 20 2a 20 28 20 2b 20 28 20 43 4f 55 4e 54   ) * ( + ( COUNT
16880 28 20 2a 20 29 20 29 20 29 20 2b 20 43 4f 55 4e  ( * ) ) ) + COUN
16890 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46  T( * ) AS col0 F
168a0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
168b0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
168c0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
168d0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
168e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
168f0 61 62 65 6c 2d 35 31 32 0d 0a 53 45 4c 45 43 54  abel-512..SELECT
16900 20 41 4c 4c 20 28 20 43 41 53 54 20 28 20 4e 55   ALL ( CAST ( NU
16910 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
16920 29 20 2a 20 28 20 2b 20 28 20 43 4f 55 4e 54 20  ) * ( + ( COUNT 
16930 28 20 2a 20 29 20 29 20 29 20 2b 20 43 4f 55 4e  ( * ) ) ) + COUN
16940 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
16950 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
16960 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
16970 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
16980 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
16990 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
169a0 6f 72 74 20 6c 61 62 65 6c 2d 35 31 33 0d 0a 53  ort label-513..S
169b0 45 4c 45 43 54 20 41 4c 4c 20 4d 41 58 28 20 44  ELECT ALL MAX( D
169c0 49 53 54 49 4e 43 54 20 2d 20 2b 20 39 34 20 29  ISTINCT - + 94 )
169d0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
169e0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 34 0d 0a 0d  b0..----..-94...
169f0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
16a00 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
16a10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
16a20 6c 61 62 65 6c 2d 35 31 33 0d 0a 53 45 4c 45 43  label-513..SELEC
16a30 54 20 41 4c 4c 20 4d 41 58 20 28 20 44 49 53 54  T ALL MAX ( DIST
16a40 49 4e 43 54 20 2d 20 2b 20 39 34 20 29 20 41 53  INCT - + 94 ) AS
16a50 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
16a60 0a 2d 2d 2d 2d 0d 0a 2d 39 34 0d 0a 0d 0a 71 75  .----..-94....qu
16a70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
16a80 45 4c 45 43 54 20 2d 20 31 30 20 2a 20 2b 20 63  ELECT - 10 * + c
16a90 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
16aa0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   tab2..----..-51
16ab0 30 0d 0a 2d 36 37 30 0d 0a 2d 37 37 30 0d 0a 0d  0..-670..-770...
16ac0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16ad0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 34  ..SELECT ALL + 4
16ae0 33 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  3 AS col2 FROM t
16af0 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
16b00 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63  S JOIN tab0 AS c
16b10 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  or1..----..9 val
16b20 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 31  ues hashing to 1
16b30 39 39 31 30 35 36 31 39 30 34 39 32 37 31 31 34  9910561904927114
16b40 37 39 35 36 64 65 35 32 65 37 66 35 65 64 34 0d  7956de52e7f5ed4.
16b50 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
16b60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
16b70 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20 28 20  col0 AS col1, ( 
16b80 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61  + col2 ) FROM ta
16b90 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
16ba0 0d 0a 31 35 0d 0a 34 37 0d 0a 38 37 0d 0a 31 30  ..15..47..87..10
16bb0 0d 0a 39 37 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72  ..97..99....quer
16bc0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
16bd0 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c  LECT ALL - + col
16be0 31 20 41 53 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c  1 AS col1, + col
16bf0 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  1 AS col0 FROM t
16c00 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
16c10 2d 35 31 0d 0a 35 31 0d 0a 2d 36 37 0d 0a 36 37  -51..51..-67..67
16c20 0d 0a 2d 37 37 0d 0a 37 37 0d 0a 0d 0a 6f 6e 6c  ..-77..77....onl
16c30 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
16c40 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
16c50 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
16c60 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31  rowsort label-51
16c70 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
16c80 43 54 20 63 6f 6c 31 20 2a 20 2d 20 28 20 2b 20  CT col1 * - ( + 
16c90 63 6f 6c 32 20 29 20 44 49 56 20 2d 20 2b 20 63  col2 ) DIV - + c
16ca0 6f 6c 32 20 2b 20 2b 20 63 6f 6c 31 20 63 6f 6c  ol2 + + col1 col
16cb0 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
16cc0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 32 0d 0a  or0..----..162..
16cd0 32 0d 0a 34 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  2..42....skipif 
16ce0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
16cf0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
16d00 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
16d10 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
16d20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
16d30 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
16d40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16d50 20 6c 61 62 65 6c 2d 35 31 38 0d 0a 53 45 4c 45   label-518..SELE
16d60 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  CT DISTINCT col1
16d70 20 2a 20 2d 20 28 20 2b 20 63 6f 6c 32 20 29 20   * - ( + col2 ) 
16d80 2f 20 2d 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 63  / - + col2 + + c
16d90 6f 6c 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ol1 col0 FROM ta
16da0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
16db0 0d 0a 31 36 32 0d 0a 32 0d 0a 34 32 0d 0a 0d 0a  ..162..2..42....
16dc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
16dd0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
16de0 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
16df0 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
16e00 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45 54 57  RE NOT NULL BETW
16e10 45 45 4e 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 63  EEN - col2 + + c
16e20 6f 6c 32 20 41 4e 44 20 2b 20 2b 20 63 6f 6c 32  ol2 AND + + col2
16e30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
16e40 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
16e50 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63  T DISTINCT - - c
16e60 6f 6c 30 20 2a 20 2d 20 32 37 20 46 52 4f 4d 20  ol0 * - 27 FROM 
16e70 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
16e80 2d 2d 0d 0a 2d 32 33 34 39 0d 0a 2d 32 36 31 39  --..-2349..-2619
16e90 0d 0a 2d 34 30 35 0d 0a 0d 0a 73 6b 69 70 69 66  ..-405....skipif
16ea0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
16eb0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
16ec0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
16ed0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
16ee0 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
16ef0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32  ort..SELECT col2
16f00 2c 20 2d 20 63 6f 6c 32 20 63 6f 6c 32 20 46 52  , - col2 col2 FR
16f10 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
16f20 54 20 34 33 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  T 43 IS NULL..--
16f30 2d 2d 0d 0a 31 30 0d 0a 2d 31 30 0d 0a 34 37 0d  --..10..-10..47.
16f40 0a 2d 34 37 0d 0a 39 39 0d 0a 2d 39 39 0d 0a 0d  .-47..99..-99...
16f50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16f60 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
16f70 54 20 2d 20 31 35 20 41 53 20 63 6f 6c 30 20 46  T - 15 AS col0 F
16f80 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
16f90 2d 31 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -15....onlyif my
16fa0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
16fb0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
16fc0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
16fd0 35 32 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  523..SELECT COUN
16fe0 54 28 20 2a 20 29 20 2b 20 43 4f 55 4e 54 28 20  T( * ) + COUNT( 
16ff0 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  * ) AS col0 FROM
17000 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
17010 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  NULL IS NULL..--
17020 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
17030 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
17040 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
17050 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32  rowsort label-52
17060 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  3..SELECT COUNT 
17070 28 20 2a 20 29 20 2b 20 43 4f 55 4e 54 20 28 20  ( * ) + COUNT ( 
17080 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  * ) AS col0 FROM
17090 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
170a0 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  NULL IS NULL..--
170b0 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
170c0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
170d0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
170e0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
170f0 6f 72 74 20 6c 61 62 65 6c 2d 35 32 34 0d 0a 53  ort label-524..S
17100 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20 43 41  ELECT + CAST( CA
17110 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
17120 45 44 20 29 20 41 53 20 53 49 47 4e 45 44 20 29  ED ) AS SIGNED )
17130 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
17140 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
17150 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
17160 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
17170 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
17180 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 34 0d 0a  sort label-524..
17190 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28 20  SELECT + CAST ( 
171a0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
171b0 4e 54 45 47 45 52 20 29 20 41 53 20 49 4e 54 45  NTEGER ) AS INTE
171c0 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  GER ) FROM tab0.
171d0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
171e0 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  L..NULL....query
171f0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
17200 43 54 20 2b 20 35 39 20 41 53 20 63 6f 6c 31 20  CT + 59 AS col1 
17210 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
17220 0a 35 39 0d 0a 35 39 0d 0a 35 39 0d 0a 0d 0a 71  .59..59..59....q
17230 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
17240 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
17250 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 63  tab2 WHERE NOT c
17260 6f 6c 31 20 3d 20 63 6f 6c 31 20 2d 20 63 6f 6c  ol1 = col1 - col
17270 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
17280 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63  s hashing to 75c
17290 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62  998aa53ac83218cb
172a0 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d  f2feb962d0a49...
172b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
172c0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
172d0 54 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  T + - col1 FROM 
172e0 74 61 62 31 20 57 48 45 52 45 20 2d 20 2b 20 28  tab1 WHERE - + (
172f0 20 2d 20 2b 20 63 6f 6c 32 20 29 20 3d 20 2b 20   - + col2 ) = + 
17300 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d  col2..----..-14.
17310 0a 2d 34 37 0d 0a 2d 35 0d 0a 0d 0a 71 75 65 72  .-47..-5....quer
17320 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
17330 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 2b  ECT ALL col2 + +
17340 20 38 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   80 AS col1 FROM
17350 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
17360 0d 0a 31 30 33 0d 0a 31 32 30 0d 0a 31 33 38 0d  ..103..120..138.
17370 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
17380 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
17390 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
173a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 39 0d  wsort label-529.
173b0 0a 53 45 4c 45 43 54 20 53 55 4d 28 20 32 39 20  .SELECT SUM( 29 
173c0 29 20 2a 20 2b 20 36 35 20 63 6f 6c 31 20 46 52  ) * + 65 col1 FR
173d0 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
173e0 2d 2d 0d 0a 35 36 35 35 0d 0a 0d 0a 73 6b 69 70  --..5655....skip
173f0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
17400 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
17410 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
17420 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
17430 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
17440 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
17450 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
17460 6f 72 74 20 6c 61 62 65 6c 2d 35 32 39 0d 0a 53  ort label-529..S
17470 45 4c 45 43 54 20 53 55 4d 20 28 20 32 39 20 29  ELECT SUM ( 29 )
17480 20 2a 20 2b 20 36 35 20 63 6f 6c 31 20 46 52 4f   * + 65 col1 FRO
17490 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
174a0 2d 0d 0a 35 36 35 35 0d 0a 0d 0a 6f 6e 6c 79 69  -..5655....onlyi
174b0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
174c0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
174d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
174e0 62 65 6c 2d 35 33 30 0d 0a 53 45 4c 45 43 54 20  bel-530..SELECT 
174f0 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  - COUNT( * ) AS 
17500 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63  col0 FROM tab1 c
17510 6f 72 30 20 57 48 45 52 45 20 28 20 63 6f 6c 31  or0 WHERE ( col1
17520 20 2a 20 2d 20 38 31 20 29 20 49 53 20 4e 55 4c   * - 81 ) IS NUL
17530 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b  L..----..0....sk
17540 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
17550 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
17560 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
17570 65 6c 2d 35 33 30 0d 0a 53 45 4c 45 43 54 20 2d  el-530..SELECT -
17580 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20   COUNT ( * ) AS 
17590 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63  col0 FROM tab1 c
175a0 6f 72 30 20 57 48 45 52 45 20 28 20 63 6f 6c 31  or0 WHERE ( col1
175b0 20 2a 20 2d 20 38 31 20 29 20 49 53 20 4e 55 4c   * - 81 ) IS NUL
175c0 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  L..----..0....qu
175d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
175e0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2b  ELECT ALL col1 +
175f0 20 2b 20 31 20 46 52 4f 4d 20 74 61 62 31 20 41   + 1 FROM tab1 A
17600 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  S cor0..----..15
17610 0d 0a 34 38 0d 0a 36 0d 0a 0d 0a 6f 6e 6c 79 69  ..48..6....onlyi
17620 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
17630 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
17640 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
17650 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 32 0d  wsort label-532.
17660 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20  .SELECT ALL - + 
17670 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
17680 47 4e 45 44 20 29 20 2b 20 63 6f 6c 31 20 41 53  GNED ) + col1 AS
17690 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
176a0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
176b0 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
176c0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
176d0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
176e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
176f0 74 20 6c 61 62 65 6c 2d 35 33 32 0d 0a 53 45 4c  t label-532..SEL
17700 45 43 54 20 41 4c 4c 20 2d 20 2b 20 43 41 53 54  ECT ALL - + CAST
17710 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
17720 45 52 20 29 20 2b 20 63 6f 6c 31 20 41 53 20 63  ER ) + col1 AS c
17730 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
17740 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
17750 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
17760 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
17770 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
17780 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
17790 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63  r0 WHERE NOT - c
177a0 6f 6c 31 20 3c 3d 20 2b 20 63 6f 6c 31 0d 0a 2d  ol1 <= + col1..-
177b0 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
177c0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
177d0 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
177e0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
177f0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
17800 6f 72 74 20 6c 61 62 65 6c 2d 35 33 34 0d 0a 53  ort label-534..S
17810 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
17820 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
17830 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45  r0 WHERE NULL BE
17840 54 57 45 45 4e 20 2b 20 43 41 53 54 28 20 63 6f  TWEEN + CAST( co
17850 6c 32 20 41 53 20 53 49 47 4e 45 44 20 29 20 2d  l2 AS SIGNED ) -
17860 20 28 20 2d 20 2d 20 28 20 2b 20 38 32 20 29 20   ( - - ( + 82 ) 
17870 29 20 2a 20 39 37 20 2b 20 2b 20 63 6f 6c 31 20  ) * 97 + + col1 
17880 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  AND NULL..----..
17890 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
178a0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
178b0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
178c0 6f 72 74 20 6c 61 62 65 6c 2d 35 33 34 0d 0a 53  ort label-534..S
178d0 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  ELECT COUNT ( * 
178e0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
178f0 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 42  or0 WHERE NULL B
17900 45 54 57 45 45 4e 20 2b 20 43 41 53 54 20 28 20  ETWEEN + CAST ( 
17910 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20  col2 AS INTEGER 
17920 29 20 2d 20 28 20 2d 20 2d 20 28 20 2b 20 38 32  ) - ( - - ( + 82
17930 20 29 20 29 20 2a 20 39 37 20 2b 20 2b 20 63 6f   ) ) * 97 + + co
17940 6c 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d  l1 AND NULL..---
17950 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..0....onlyif m
17960 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
17970 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
17980 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
17990 2d 35 33 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  -535..SELECT DIS
179a0 54 49 4e 43 54 20 4d 49 4e 28 20 41 4c 4c 20 2d  TINCT MIN( ALL -
179b0 20 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74   + col1 ) FROM t
179c0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
179d0 2d 0d 0a 2d 38 31 0d 0a 0d 0a 73 6b 69 70 69 66  -..-81....skipif
179e0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
179f0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
17a00 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
17a10 33 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  35..SELECT DISTI
17a20 4e 43 54 20 4d 49 4e 20 28 20 41 4c 4c 20 2d 20  NCT MIN ( ALL - 
17a30 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  + col1 ) FROM ta
17a40 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
17a50 0d 0a 2d 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-81....query I
17a60 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
17a70 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 2b 20 2d 20   ALL - col0 + - 
17a80 2b 20 28 20 2d 20 2d 20 28 20 2b 20 63 6f 6c 30  + ( - - ( + col0
17a90 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63   ) ) FROM tab2 c
17aa0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 38 0d  or0..----..-128.
17ab0 0a 2d 31 35 30 0d 0a 2d 39 32 0d 0a 0d 0a 71 75  .-150..-92....qu
17ac0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
17ad0 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 2c 20 63  SELECT + col2, c
17ae0 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 46 52 4f  ol0 * - col1 FRO
17af0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
17b00 2d 2d 2d 2d 0d 0a 32 33 0d 0a 2d 32 33 34 36 0d  ----..23..-2346.
17b10 0a 34 30 0d 0a 2d 34 39 32 38 0d 0a 35 38 0d 0a  .40..-4928..58..
17b20 2d 35 30 32 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -5025....onlyif 
17b30 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
17b40 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
17b50 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
17b60 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 38 0d 0a  sort label-538..
17b70 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
17b80 2b 20 31 32 20 2d 20 2b 20 63 6f 6c 32 20 44 49  + 12 - + col2 DI
17b90 56 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  V + col1 AS col0
17ba0 2c 20 28 20 34 32 20 29 20 46 52 4f 4d 20 74 61  , ( 42 ) FROM ta
17bb0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
17bc0 0d 0a 31 0d 0a 34 32 0d 0a 31 31 0d 0a 34 32 0d  ..1..42..11..42.
17bd0 0a 36 0d 0a 34 32 0d 0a 0d 0a 73 6b 69 70 69 66  .6..42....skipif
17be0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
17bf0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
17c00 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
17c10 35 33 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  538..SELECT DIST
17c20 49 4e 43 54 20 2b 20 31 32 20 2d 20 2b 20 63 6f  INCT + 12 - + co
17c30 6c 32 20 2f 20 2b 20 63 6f 6c 31 20 41 53 20 63  l2 / + col1 AS c
17c40 6f 6c 30 2c 20 28 20 34 32 20 29 20 46 52 4f 4d  ol0, ( 42 ) FROM
17c50 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
17c60 2d 2d 2d 0d 0a 31 0d 0a 34 32 0d 0a 31 31 0d 0a  ---..1..42..11..
17c70 34 32 0d 0a 36 0d 0a 34 32 0d 0a 0d 0a 6f 6e 6c  42..6..42....onl
17c80 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
17c90 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
17ca0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
17cb0 6c 61 62 65 6c 2d 35 33 39 0d 0a 53 45 4c 45 43  label-539..SELEC
17cc0 54 20 4d 41 58 28 20 2b 20 38 32 20 29 20 46 52  T MAX( + 82 ) FR
17cd0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38  OM tab2..----..8
17ce0 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  2....skipif mysq
17cf0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
17d00 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
17d10 6f 72 74 20 6c 61 62 65 6c 2d 35 33 39 0d 0a 53  ort label-539..S
17d20 45 4c 45 43 54 20 4d 41 58 20 28 20 2b 20 38 32  ELECT MAX ( + 82
17d30 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
17d40 2d 2d 0d 0a 38 32 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..82....onlyif
17d50 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
17d60 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
17d70 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
17d80 65 6c 2d 35 34 30 0d 0a 53 45 4c 45 43 54 20 2d  el-540..SELECT -
17d90 20 43 4f 55 4e 54 28 20 2b 20 63 6f 6c 32 20 29   COUNT( + col2 )
17da0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
17db0 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-3....skipif m
17dc0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
17dd0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
17de0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34 30  owsort label-540
17df0 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
17e00 20 28 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d   ( + col2 ) FROM
17e10 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   tab2..----..-3.
17e20 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
17e30 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
17e40 20 38 38 20 2b 20 2b 20 2d 20 63 6f 6c 30 20 2a   88 + + - col0 *
17e50 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   - col0 FROM tab
17e60 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 37 0d 0a 37 34  0..----..137..74
17e70 38 31 0d 0a 39 33 32 31 0d 0a 0d 0a 6f 6e 6c 79  81..9321....only
17e80 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
17e90 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
17ea0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
17eb0 61 62 65 6c 2d 35 34 32 0d 0a 53 45 4c 45 43 54  abel-542..SELECT
17ec0 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 53 55   DISTINCT ( - SU
17ed0 4d 28 20 63 6f 6c 31 20 29 20 29 20 46 52 4f 4d  M( col1 ) ) FROM
17ee0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39   tab2..----..-19
17ef0 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
17f00 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
17f10 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
17f20 6f 72 74 20 6c 61 62 65 6c 2d 35 34 32 0d 0a 53  ort label-542..S
17f30 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28  ELECT DISTINCT (
17f40 20 2d 20 53 55 4d 20 28 20 63 6f 6c 31 20 29 20   - SUM ( col1 ) 
17f50 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
17f60 2d 0d 0a 2d 31 39 35 0d 0a 0d 0a 71 75 65 72 79  -..-195....query
17f70 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
17f80 43 54 20 2d 20 39 33 20 2a 20 36 32 20 2d 20 2d  CT - 93 * 62 - -
17f90 20 28 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74   ( col1 ) FROM t
17fa0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 36 38 39  ab2..----..-5689
17fb0 0d 0a 2d 35 36 39 39 0d 0a 2d 35 37 31 35 0d 0a  ..-5699..-5715..
17fc0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
17fd0 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20 2b  rt..SELECT ( - +
17fe0 20 63 6f 6c 31 20 29 20 2d 20 28 20 63 6f 6c 31   col1 ) - ( col1
17ff0 20 29 20 2b 20 2b 20 38 35 20 2a 20 2d 20 2d 20   ) + + 85 * - - 
18000 35 35 2c 20 2d 20 35 35 20 2a 20 2b 20 28 20 2b  55, - 55 * + ( +
18010 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   + col1 ) AS col
18020 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
18030 2d 0d 0a 34 35 32 31 0d 0a 2d 34 32 33 35 0d 0a  -..4521..-4235..
18040 34 35 34 31 0d 0a 2d 33 36 38 35 0d 0a 34 35 37  4541..-3685..457
18050 33 0d 0a 2d 32 38 30 35 0d 0a 0d 0a 71 75 65 72  3..-2805....quer
18060 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
18070 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
18080 31 20 57 48 45 52 45 20 2b 20 63 6f 6c 30 20 3d  1 WHERE + col0 =
18090 20 2d 20 33 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   - 31..----....q
180a0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
180b0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
180c0 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
180d0 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 3c 3e 20  ERE NOT col2 <> 
180e0 2b 20 2d 20 33 30 20 2a 20 2b 20 2b 20 63 6f 6c  + - 30 * + + col
180f0 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  2..----....query
18100 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
18110 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
18120 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
18130 4f 54 20 28 20 4e 55 4c 4c 20 29 20 4e 4f 54 20  OT ( NULL ) NOT 
18140 42 45 54 57 45 45 4e 20 28 20 2b 20 2d 20 36 37  BETWEEN ( + - 67
18150 20 29 20 41 4e 44 20 2d 20 28 20 2d 20 2b 20 63   ) AND - ( - + c
18160 6f 6c 32 20 29 20 2a 20 2d 20 32 35 0d 0a 2d 2d  ol2 ) * - 25..--
18170 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
18180 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
18190 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
181a0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20  or0 WHERE NOT + 
181b0 63 6f 6c 31 20 3d 20 36 35 20 2a 20 2b 20 63 6f  col1 = 65 * + co
181c0 6c 30 20 2a 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  l0 * col1..----.
181d0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
181e0 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33  g to c6c0a4111b3
181f0 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64  6d04dbc811a11e4d
18200 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  54cad....onlyif 
18210 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
18220 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
18230 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
18240 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34 39 0d 0a  sort label-549..
18250 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 2b 20  SELECT + col0 + 
18260 2b 20 63 6f 6c 31 2c 20 36 31 20 41 53 20 63 6f  + col1, 61 AS co
18270 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
18280 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63  cor0 WHERE NOT c
18290 6f 6c 31 20 2a 20 2d 20 43 41 53 54 28 20 2b 20  ol1 * - CAST( + 
182a0 2b 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44  + col2 AS SIGNED
182b0 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   ) IS NULL..----
182c0 0d 0a 31 30 38 0d 0a 36 31 0d 0a 39 36 0d 0a 36  ..108..61..96..6
182d0 31 0d 0a 39 38 0d 0a 36 31 0d 0a 0d 0a 73 6b 69  1..98..61....ski
182e0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
182f0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
18300 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
18310 65 6c 2d 35 34 39 0d 0a 53 45 4c 45 43 54 20 2b  el-549..SELECT +
18320 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 2c 20   col0 + + col1, 
18330 36 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  61 AS col2 FROM 
18340 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
18350 52 45 20 4e 4f 54 20 63 6f 6c 31 20 2a 20 2d 20  RE NOT col1 * - 
18360 43 41 53 54 20 28 20 2b 20 2b 20 63 6f 6c 32 20  CAST ( + + col2 
18370 41 53 20 49 4e 54 45 47 45 52 20 29 20 49 53 20  AS INTEGER ) IS 
18380 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 30 38 0d  NULL..----..108.
18390 0a 36 31 0d 0a 39 36 0d 0a 36 31 0d 0a 39 38 0d  .61..96..61..98.
183a0 0a 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .61....query I r
183b0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
183c0 4c 4c 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30  LL col1 * - col0
183d0 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   + col1 FROM tab
183e0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
183f0 0a 2d 32 32 39 35 0d 0a 2d 34 38 35 31 0d 0a 2d  .-2295..-4851..-
18400 34 39 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  4958....onlyif m
18410 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
18420 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72   syntax: DIV for
18430 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
18440 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
18450 73 6f 72 74 20 6c 61 62 65 6c 2d 35 35 31 0d 0a  sort label-551..
18460 53 45 4c 45 43 54 20 2b 20 4d 41 58 28 20 41 4c  SELECT + MAX( AL
18470 4c 20 2b 20 33 35 20 29 20 44 49 56 20 2b 20 38  L + 35 ) DIV + 8
18480 39 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  9 col0 FROM tab1
18490 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
184a0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
184b0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
184c0 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
184d0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
184e0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
184f0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
18500 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
18510 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
18520 65 6c 2d 35 35 31 0d 0a 53 45 4c 45 43 54 20 2b  el-551..SELECT +
18530 20 4d 41 58 20 28 20 41 4c 4c 20 2b 20 33 35 20   MAX ( ALL + 35 
18540 29 20 2f 20 2b 20 38 39 20 63 6f 6c 30 20 46 52  ) / + 89 col0 FR
18550 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
18560 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .----..0....quer
18570 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
18580 4c 45 43 54 20 2b 20 63 6f 6c 30 2c 20 2d 20 63  LECT + col0, - c
18590 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol1 AS col2 FROM
185a0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
185b0 2d 2d 2d 0d 0a 31 35 0d 0a 2d 38 31 0d 0a 38 37  ---..15..-81..87
185c0 0d 0a 2d 32 31 0d 0a 39 37 0d 0a 2d 31 0d 0a 0d  ..-21..97..-1...
185d0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
185e0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
185f0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
18600 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
18610 54 20 28 20 28 20 4e 4f 54 20 38 37 20 3c 3d 20  T ( ( NOT 87 <= 
18620 2d 20 2d 20 28 20 2b 20 63 6f 6c 31 20 29 20 29  - - ( + col1 ) )
18630 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
18640 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
18650 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
18660 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
18670 4e 4f 54 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c  NOT col0 + - col
18680 31 20 2a 20 63 6f 6c 31 20 42 45 54 57 45 45 4e  1 * col1 BETWEEN
18690 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a   NULL AND NULL..
186a0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
186b0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
186c0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
186d0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
186e0 72 74 20 6c 61 62 65 6c 2d 35 35 35 0d 0a 53 45  rt label-555..SE
186f0 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 28  LECT ALL + CAST(
18700 20 28 20 2b 20 39 39 20 29 20 41 53 20 53 49 47   ( + 99 ) AS SIG
18710 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32 20  NED ) FROM tab2 
18720 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39  AS cor0..----..9
18730 39 0d 0a 39 39 0d 0a 39 39 0d 0a 0d 0a 73 6b 69  9..99..99....ski
18740 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
18750 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
18760 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
18770 6c 2d 35 35 35 0d 0a 53 45 4c 45 43 54 20 41 4c  l-555..SELECT AL
18780 4c 20 2b 20 43 41 53 54 20 28 20 28 20 2b 20 39  L + CAST ( ( + 9
18790 39 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29  9 ) AS INTEGER )
187a0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
187b0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 39 39  r0..----..99..99
187c0 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..99....query I 
187d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
187e0 2b 20 35 36 20 2a 20 28 20 2d 20 34 30 20 29 20  + 56 * ( - 40 ) 
187f0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
18800 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
18810 0a 2d 32 32 34 30 0d 0a 2d 32 32 34 30 0d 0a 2d  .-2240..-2240..-
18820 32 32 34 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  2240....onlyif m
18830 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
18840 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
18850 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
18860 72 74 20 6c 61 62 65 6c 2d 35 35 37 0d 0a 53 45  rt label-557..SE
18870 4c 45 43 54 20 41 4c 4c 20 2b 20 33 39 20 44 49  LECT ALL + 39 DI
18880 56 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  V col0 FROM tab1
18890 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
188a0 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  0..0..0....skipi
188b0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
188c0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
188d0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
188e0 35 35 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  557..SELECT ALL 
188f0 2b 20 33 39 20 2f 20 63 6f 6c 30 20 46 52 4f 4d  + 39 / col0 FROM
18900 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
18910 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
18920 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
18930 0a 53 45 4c 45 43 54 20 2d 20 36 33 20 2a 20 2d  .SELECT - 63 * -
18940 20 28 20 2b 20 2d 20 37 37 20 29 20 46 52 4f 4d   ( + - 77 ) FROM
18950 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
18960 2d 2d 2d 0d 0a 2d 34 38 35 31 0d 0a 2d 34 38 35  ---..-4851..-485
18970 31 0d 0a 2d 34 38 35 31 0d 0a 0d 0a 73 6b 69 70  1..-4851....skip
18980 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
18990 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
189a0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
189b0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
189c0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
189d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34  sort..SELECT + 4
189e0 37 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  7 col2 FROM tab2
189f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d   cor0..----..47.
18a00 0a 34 37 0d 0a 34 37 0d 0a 0d 0a 6f 6e 6c 79 69  .47..47....onlyi
18a10 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
18a20 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
18a30 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
18a40 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 30 0d  wsort label-560.
18a50 0a 53 45 4c 45 43 54 20 2b 20 36 38 20 44 49 56  .SELECT + 68 DIV
18a60 20 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   - - col1 FROM t
18a70 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
18a80 2d 0d 0a 31 0d 0a 31 33 0d 0a 34 0d 0a 0d 0a 73  -..1..13..4....s
18a90 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
18aa0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
18ab0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
18ac0 62 65 6c 2d 35 36 30 0d 0a 53 45 4c 45 43 54 20  bel-560..SELECT 
18ad0 2b 20 36 38 20 2f 20 2d 20 2d 20 63 6f 6c 31 20  + 68 / - - col1 
18ae0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
18af0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 33 0d 0a  0..----..1..13..
18b00 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  4....onlyif mysq
18b10 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
18b20 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e  ntax: DIV for in
18b30 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
18b40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18b50 74 20 6c 61 62 65 6c 2d 35 36 31 0d 0a 53 45 4c  t label-561..SEL
18b60 45 43 54 20 33 35 20 44 49 56 20 2b 20 4d 41 58  ECT 35 DIV + MAX
18b70 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20  ( DISTINCT col2 
18b80 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
18b90 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ab1..----..0....
18ba0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
18bb0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
18bc0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
18bd0 61 62 65 6c 2d 35 36 31 0d 0a 53 45 4c 45 43 54  abel-561..SELECT
18be0 20 33 35 20 2f 20 2b 20 4d 41 58 20 28 20 44 49   35 / + MAX ( DI
18bf0 53 54 49 4e 43 54 20 63 6f 6c 32 20 29 20 41 53  STINCT col2 ) AS
18c00 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
18c10 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .----..0....quer
18c20 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
18c30 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2a 20 2b  ECT ALL col0 * +
18c40 20 2b 20 32 32 20 41 53 20 63 6f 6c 30 20 46 52   + 22 AS col0 FR
18c50 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
18c60 30 31 32 0d 0a 31 34 30 38 0d 0a 31 36 35 30 0d  012..1408..1650.
18c70 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
18c80 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
18c90 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
18ca0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
18cb0 62 65 6c 2d 35 36 33 0d 0a 53 45 4c 45 43 54 20  bel-563..SELECT 
18cc0 41 56 47 20 28 20 44 49 53 54 49 4e 43 54 20 2b  AVG ( DISTINCT +
18cd0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
18ce0 49 47 4e 45 44 20 29 20 29 20 2f 20 43 41 53 54  IGNED ) ) / CAST
18cf0 28 20 2d 20 2b 20 37 37 20 41 53 20 53 49 47 4e  ( - + 77 AS SIGN
18d00 45 44 20 29 20 2b 20 2d 20 34 37 20 41 53 20 63  ED ) + - 47 AS c
18d10 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
18d20 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
18d30 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
18d40 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
18d50 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
18d60 6c 2d 35 36 33 0d 0a 53 45 4c 45 43 54 20 41 56  l-563..SELECT AV
18d70 47 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 43  G ( DISTINCT + C
18d80 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
18d90 54 45 47 45 52 20 29 20 29 20 2f 20 43 41 53 54  TEGER ) ) / CAST
18da0 20 28 20 2d 20 2b 20 37 37 20 41 53 20 49 4e 54   ( - + 77 AS INT
18db0 45 47 45 52 20 29 20 2b 20 2d 20 34 37 20 41 53  EGER ) + - 47 AS
18dc0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
18dd0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
18de0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
18df0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
18e00 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
18e10 72 74 20 6c 61 62 65 6c 2d 35 36 34 0d 0a 53 45  rt label-564..SE
18e20 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54  LECT ALL + COUNT
18e30 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 2c 20 33  ( * ) AS col2, 3
18e40 38 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  8 AS col0 FROM t
18e50 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 33 38  ab1..----..3..38
18e60 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
18e70 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
18e80 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  e..query II rows
18e90 6f 72 74 20 6c 61 62 65 6c 2d 35 36 34 0d 0a 53  ort label-564..S
18ea0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e  ELECT ALL + COUN
18eb0 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 2c  T ( * ) AS col2,
18ec0 20 33 38 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   38 AS col0 FROM
18ed0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   tab1..----..3..
18ee0 33 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  38....query I ro
18ef0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
18f00 53 54 49 4e 43 54 20 2d 20 34 38 20 2b 20 2d 20  STINCT - 48 + - 
18f10 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46  - col1 AS col0 F
18f20 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
18f30 31 39 0d 0a 32 39 0d 0a 33 0d 0a 0d 0a 71 75 65  19..29..3....que
18f40 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
18f50 4c 45 43 54 20 2b 20 31 36 20 2b 20 2b 20 2b 20  LECT + 16 + + + 
18f60 63 6f 6c 31 20 2a 20 63 6f 6c 31 20 2b 20 63 6f  col1 * col1 + co
18f70 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
18f80 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 34 0d  cor0..----..114.
18f90 0a 35 34 34 0d 0a 36 35 39 32 0d 0a 0d 0a 71 75  .544..6592....qu
18fa0 65 72 79 20 49 49 49 49 49 49 20 72 6f 77 73 6f  ery IIIIII rowso
18fb0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
18fc0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 2c  NCT * FROM tab1,
18fd0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
18fe0 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29  ERE NOT ( NULL )
18ff0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
19000 2d 2d 0d 0a 35 34 20 76 61 6c 75 65 73 20 68 61  --..54 values ha
19010 73 68 69 6e 67 20 74 6f 20 30 35 38 34 33 38 66  shing to 058438f
19020 64 65 35 66 62 38 33 38 66 32 33 62 63 62 64 64  de5fb838f23bcbdd
19030 33 39 32 36 36 64 64 63 66 0d 0a 0d 0a 73 6b 69  39266ddcf....ski
19040 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
19050 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
19060 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
19070 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
19080 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
19090 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
190a0 4c 20 32 36 20 2a 20 63 6f 6c 31 20 63 6f 6c 30  L 26 * col1 col0
190b0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
190c0 0d 0a 32 31 30 36 0d 0a 32 36 0d 0a 35 34 36 0d  ..2106..26..546.
190d0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
190e0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
190f0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
19100 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 39 0d  wsort label-569.
19110 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
19120 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20 2d   MIN( DISTINCT -
19130 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62   col0 ) FROM tab
19140 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 35 0d 0a 0d 0a  2..----..-75....
19150 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
19160 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
19170 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
19180 61 62 65 6c 2d 35 36 39 0d 0a 53 45 4c 45 43 54  abel-569..SELECT
19190 20 44 49 53 54 49 4e 43 54 20 4d 49 4e 20 28 20   DISTINCT MIN ( 
191a0 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
191b0 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
191c0 2d 0d 0a 2d 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  -..-75....onlyif
191d0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
191e0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
191f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
19200 65 6c 2d 35 37 30 0d 0a 53 45 4c 45 43 54 20 2d  el-570..SELECT -
19210 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
19220 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
19230 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
19240 20 74 61 62 30 20 63 6f 72 31 0d 0a 2d 2d 2d 2d   tab0 cor1..----
19250 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-9....skipif m
19260 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
19270 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
19280 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 37 30  owsort label-570
19290 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
192a0 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46   ( * ) AS col2 F
192b0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
192c0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30   CROSS JOIN tab0
192d0 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d   cor1..----..-9.
192e0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
192f0 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
19300 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
19310 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19320 62 65 6c 2d 35 37 31 0d 0a 53 45 4c 45 43 54 20  bel-571..SELECT 
19330 2b 20 63 6f 6c 31 20 44 49 56 20 2b 20 2b 20 31  + col1 DIV + + 1
19340 39 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  9 FROM tab1..---
19350 2d 0d 0a 30 0d 0a 30 0d 0a 32 0d 0a 0d 0a 73 6b  -..0..0..2....sk
19360 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
19370 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
19380 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
19390 65 6c 2d 35 37 31 0d 0a 53 45 4c 45 43 54 20 2b  el-571..SELECT +
193a0 20 63 6f 6c 31 20 2f 20 2b 20 2b 20 31 39 20 46   col1 / + + 19 F
193b0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
193c0 30 0d 0a 30 0d 0a 32 0d 0a 0d 0a 71 75 65 72 79  0..0..2....query
193d0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
193e0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
193f0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
19400 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
19410 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   < NULL..----...
19420 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
19430 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
19440 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30 20 2b 20 2d  ol1 * - col0 + -
19450 20 31 20 2a 20 2b 20 2b 20 63 6f 6c 30 20 41 53   1 * + + col0 AS
19460 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
19470 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
19480 31 32 33 30 0d 0a 2d 31 39 31 34 0d 0a 2d 31 39  1230..-1914..-19
19490 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  4....onlyif mysq
194a0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
194b0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
194c0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 37  rowsort label-57
194d0 34 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28  4..SELECT COUNT(
194e0 20 2a 20 29 20 2b 20 2b 20 38 34 20 63 6f 6c 32   * ) + + 84 col2
194f0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
19500 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 37 0d 0a 0d 0a  r0..----..87....
19510 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
19520 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
19530 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
19540 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
19550 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
19560 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
19570 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
19580 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 37  rowsort label-57
19590 34 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  4..SELECT COUNT 
195a0 28 20 2a 20 29 20 2b 20 2b 20 38 34 20 63 6f 6c  ( * ) + + 84 col
195b0 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
195c0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 37 0d 0a 0d  or0..----..87...
195d0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
195e0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
195f0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
19600 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
19610 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
19620 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
19630 54 20 2b 20 34 36 20 63 6f 6c 32 20 46 52 4f 4d  T + 46 col2 FROM
19640 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
19650 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20  ERE NULL IS NOT 
19660 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
19670 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
19680 45 4c 45 43 54 20 63 6f 6c 32 20 2b 20 2b 20 63  ELECT col2 + + c
19690 6f 6c 32 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 46  ol2 * - + col2 F
196a0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
196b0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 32 32 0d 0a 2d  ..----..-3422..-
196c0 34 35 35 36 0d 0a 2d 39 31 32 30 0d 0a 0d 0a 6f  4556..-9120....o
196d0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
196e0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
196f0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
19700 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
19710 35 37 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  577..SELECT DIST
19720 49 4e 43 54 20 63 6f 6c 30 20 2a 20 2d 20 35 35  INCT col0 * - 55
19730 20 2a 20 2d 20 35 31 20 2b 20 2d 20 63 6f 6c 32   * - 51 + - col2
19740 20 44 49 56 20 63 6f 6c 32 20 2b 20 2d 20 63 6f   DIV col2 + - co
19750 6c 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  l0 col2 FROM tab
19760 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
19770 0a 32 34 33 39 34 37 0d 0a 32 37 31 39 38 37 0d  .243947..271987.
19780 0a 34 32 30 35 39 0d 0a 0d 0a 73 6b 69 70 69 66  .42059....skipif
19790 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
197a0 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
197b0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
197c0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
197d0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
197e0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
197f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19800 74 20 6c 61 62 65 6c 2d 35 37 37 0d 0a 53 45 4c  t label-577..SEL
19810 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
19820 30 20 2a 20 2d 20 35 35 20 2a 20 2d 20 35 31 20  0 * - 55 * - 51 
19830 2b 20 2d 20 63 6f 6c 32 20 2f 20 63 6f 6c 32 20  + - col2 / col2 
19840 2b 20 2d 20 63 6f 6c 30 20 63 6f 6c 32 20 46 52  + - col0 col2 FR
19850 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
19860 0a 2d 2d 2d 2d 0d 0a 32 34 33 39 34 37 0d 0a 32  .----..243947..2
19870 37 31 39 38 37 0d 0a 34 32 30 35 39 0d 0a 0d 0a  71987..42059....
19880 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
19890 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
198a0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
198b0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
198c0 6c 2d 35 37 38 0d 0a 53 45 4c 45 43 54 20 44 49  l-578..SELECT DI
198d0 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 2c 20 63  STINCT + col2, c
198e0 6f 6c 30 20 2d 20 2b 20 63 6f 6c 31 20 2a 20 2b  ol0 - + col1 * +
198f0 20 43 41 53 54 28 20 2b 20 2b 20 63 6f 6c 32 20   CAST( + + col2 
19900 41 53 20 53 49 47 4e 45 44 20 29 20 2d 20 2d 20  AS SIGNED ) - - 
19910 43 41 53 54 28 20 2d 20 2d 20 63 6f 6c 32 20 41  CAST( - - col2 A
19920 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f  S SIGNED ) AS co
19930 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
19940 2d 2d 0d 0a 31 30 0d 0a 2d 31 31 33 0d 0a 34 37  --..10..-113..47
19950 0d 0a 2d 33 37 34 35 0d 0a 39 39 0d 0a 39 37 0d  ..-3745..99..97.
19960 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
19970 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
19980 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
19990 72 74 20 6c 61 62 65 6c 2d 35 37 38 0d 0a 53 45  rt label-578..SE
199a0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
199b0 63 6f 6c 32 2c 20 63 6f 6c 30 20 2d 20 2b 20 63  col2, col0 - + c
199c0 6f 6c 31 20 2a 20 2b 20 43 41 53 54 20 28 20 2b  ol1 * + CAST ( +
199d0 20 2b 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47   + col2 AS INTEG
199e0 45 52 20 29 20 2d 20 2d 20 43 41 53 54 20 28 20  ER ) - - CAST ( 
199f0 2d 20 2d 20 63 6f 6c 32 20 41 53 20 49 4e 54 45  - - col2 AS INTE
19a00 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20 46 52  GER ) AS col1 FR
19a10 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
19a20 30 0d 0a 2d 31 31 33 0d 0a 34 37 0d 0a 2d 33 37  0..-113..47..-37
19a30 34 35 0d 0a 39 39 0d 0a 39 37 0d 0a 0d 0a 71 75  45..99..97....qu
19a40 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
19a50 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20  SELECT ALL col1 
19a60 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 32 20 46 52  AS col0, col2 FR
19a70 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 35  OM tab2..----..5
19a80 31 0d 0a 32 33 0d 0a 36 37 0d 0a 35 38 0d 0a 37  1..23..67..58..7
19a90 37 0d 0a 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49  7..40....query I
19aa0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
19ab0 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
19ac0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
19ad0 57 48 45 52 45 20 2d 20 28 20 2d 20 2b 20 63 6f  WHERE - ( - + co
19ae0 6c 30 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  l0 ) IS NULL..--
19af0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
19b00 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
19b10 53 54 49 4e 43 54 20 2d 20 2b 20 31 31 20 46 52  STINCT - + 11 FR
19b20 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
19b30 2d 2d 0d 0a 2d 31 31 0d 0a 0d 0a 6f 6e 6c 79 69  --..-11....onlyi
19b40 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
19b50 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
19b60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19b70 62 65 6c 2d 35 38 32 0d 0a 53 45 4c 45 43 54 20  bel-582..SELECT 
19b80 41 4c 4c 20 43 4f 55 4e 54 28 20 2b 20 35 37 20  ALL COUNT( + 57 
19b90 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
19ba0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  ab0..----..3....
19bb0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
19bc0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
19bd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
19be0 61 62 65 6c 2d 35 38 32 0d 0a 53 45 4c 45 43 54  abel-582..SELECT
19bf0 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2b 20 35   ALL COUNT ( + 5
19c00 37 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  7 ) AS col1 FROM
19c10 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   tab0..----..3..
19c20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
19c30 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
19c40 20 33 31 2c 20 2d 20 35 37 20 41 53 20 63 6f 6c   31, - 57 AS col
19c50 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  2 FROM tab0 WHER
19c60 45 20 2d 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20  E - col2 IS NOT 
19c70 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 31 0d 0a  NULL..----..31..
19c80 2d 35 37 0d 0a 33 31 0d 0a 2d 35 37 0d 0a 33 31  -57..31..-57..31
19c90 0d 0a 2d 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-57....query I
19ca0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
19cb0 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 31 20 46 52   ALL + - col1 FR
19cc0 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 2b 20  OM tab0 WHERE + 
19cd0 28 20 2b 20 36 35 20 29 20 2a 20 2d 20 63 6f 6c  ( + 65 ) * - col
19ce0 31 20 42 45 54 57 45 45 4e 20 2b 20 33 31 20 2b  1 BETWEEN + 31 +
19cf0 20 63 6f 6c 31 20 2d 20 36 31 20 2b 20 2d 20 36   col1 - 61 + - 6
19d00 39 20 2a 20 63 6f 6c 31 20 41 4e 44 20 4e 55 4c  9 * col1 AND NUL
19d10 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
19d20 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
19d30 45 43 54 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  ECT col1 AS col2
19d40 2c 20 31 30 20 2b 20 2d 20 63 6f 6c 31 20 41 53  , 10 + - col1 AS
19d50 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
19d60 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
19d70 0d 0a 39 0d 0a 32 31 0d 0a 2d 31 31 0d 0a 38 31  ..9..21..-11..81
19d80 0d 0a 2d 37 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-71....onlyif 
19d90 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
19da0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
19db0 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
19dc0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38 36 0d  wsort label-586.
19dd0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
19de0 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
19df0 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
19e00 4e 4f 54 20 49 4e 20 28 20 63 6f 6c 31 2c 20 2d  NOT IN ( col1, -
19e10 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
19e20 49 47 4e 45 44 20 29 20 2a 20 2b 20 2b 20 63 6f  IGNED ) * + + co
19e30 6c 30 20 2a 20 2b 20 39 32 2c 20 2b 20 63 6f 6c  l0 * + 92, + col
19e40 30 20 2d 20 2d 20 28 20 63 6f 6c 31 20 29 20 2b  0 - - ( col1 ) +
19e50 20 2d 20 2b 20 39 20 2b 20 2d 20 33 30 2c 20 28   - + 9 + - 30, (
19e60 20 2d 20 33 38 20 29 20 29 0d 0a 2d 2d 2d 2d 0d   - 38 ) )..----.
19e70 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
19e80 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
19e90 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
19ea0 6f 72 74 20 6c 61 62 65 6c 2d 35 38 36 0d 0a 53  ort label-586..S
19eb0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
19ec0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
19ed0 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  r0 WHERE NULL NO
19ee0 54 20 49 4e 20 28 20 63 6f 6c 31 2c 20 2d 20 43  T IN ( col1, - C
19ef0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
19f00 54 45 47 45 52 20 29 20 2a 20 2b 20 2b 20 63 6f  TEGER ) * + + co
19f10 6c 30 20 2a 20 2b 20 39 32 2c 20 2b 20 63 6f 6c  l0 * + 92, + col
19f20 30 20 2d 20 2d 20 28 20 63 6f 6c 31 20 29 20 2b  0 - - ( col1 ) +
19f30 20 2d 20 2b 20 39 20 2b 20 2d 20 33 30 2c 20 28   - + 9 + - 30, (
19f40 20 2d 20 33 38 20 29 20 29 0d 0a 2d 2d 2d 2d 0d   - 38 ) )..----.
19f50 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
19f60 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
19f70 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
19f80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19f90 62 65 6c 2d 35 38 37 0d 0a 53 45 4c 45 43 54 20  bel-587..SELECT 
19fa0 2b 20 43 41 53 54 28 20 2d 20 63 6f 6c 30 20 41  + CAST( - col0 A
19fb0 53 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 28  S SIGNED ) + + (
19fc0 20 2d 20 63 6f 6c 32 20 29 20 2d 20 2d 20 63 6f   - col2 ) - - co
19fd0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
19fe0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 35  cor0..----..-195
19ff0 0d 0a 2d 37 36 0d 0a 31 39 0d 0a 0d 0a 73 6b 69  ..-76..19....ski
1a000 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1a010 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1a020 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1a030 6c 2d 35 38 37 0d 0a 53 45 4c 45 43 54 20 2b 20  l-587..SELECT + 
1a040 43 41 53 54 20 28 20 2d 20 63 6f 6c 30 20 41 53  CAST ( - col0 AS
1a050 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 28   INTEGER ) + + (
1a060 20 2d 20 63 6f 6c 32 20 29 20 2d 20 2d 20 63 6f   - col2 ) - - co
1a070 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
1a080 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 35  cor0..----..-195
1a090 0d 0a 2d 37 36 0d 0a 31 39 0d 0a 0d 0a 71 75 65  ..-76..19....que
1a0a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1a0b0 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 35 37 20  LECT ALL + - 57 
1a0c0 2a 20 2d 20 39 30 20 2a 20 2b 20 63 6f 6c 31 20  * - 90 * + col1 
1a0d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
1a0e0 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 31 31 31 30 0d  0..----..241110.
1a0f0 0a 32 35 36 35 30 0d 0a 37 31 38 32 30 0d 0a 0d  .25650..71820...
1a100 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
1a110 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
1a120 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1a130 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1a140 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1a150 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1a160 54 20 63 6f 6c 31 20 2b 20 33 20 63 6f 6c 30 20  T col1 + 3 col0 
1a170 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
1a180 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 34 0d 0a  0..----..24..4..
1a190 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  84....query I ro
1a1a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1a1b0 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 32 20  STINCT - + col2 
1a1c0 2a 20 2d 20 63 6f 6c 32 20 2a 20 32 36 20 2b 20  * - col2 * 26 + 
1a1d0 33 20 2d 20 2b 20 2b 20 63 6f 6c 32 20 46 52 4f  3 - + + col2 FRO
1a1e0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
1a1f0 2d 2d 2d 2d 0d 0a 31 32 30 31 35 39 0d 0a 32 33  ----..120159..23
1a200 39 35 32 33 0d 0a 39 30 34 35 30 0d 0a 0d 0a 6f  9523..90450....o
1a210 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1a220 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1a230 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1a240 74 20 6c 61 62 65 6c 2d 35 39 31 0d 0a 53 45 4c  t label-591..SEL
1a250 45 43 54 20 2d 20 33 37 20 2a 20 2d 20 2d 20 4d  ECT - 37 * - - M
1a260 41 58 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63  AX( DISTINCT - c
1a270 6f 6c 30 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28  ol0 ) * + COUNT(
1a280 20 2a 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20   * ) * - COUNT( 
1a290 41 4c 4c 20 2d 20 63 6f 6c 32 20 29 20 46 52 4f  ALL - col2 ) FRO
1a2a0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  M tab0..----..-4
1a2b0 39 39 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  995....skipif my
1a2c0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1a2d0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1a2e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39 31 0d  wsort label-591.
1a2f0 0a 53 45 4c 45 43 54 20 2d 20 33 37 20 2a 20 2d  .SELECT - 37 * -
1a300 20 2d 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43   - MAX ( DISTINC
1a310 54 20 2d 20 63 6f 6c 30 20 29 20 2a 20 2b 20 43  T - col0 ) * + C
1a320 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 43  OUNT ( * ) * - C
1a330 4f 55 4e 54 20 28 20 41 4c 4c 20 2d 20 63 6f 6c  OUNT ( ALL - col
1a340 32 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  2 ) FROM tab0..-
1a350 2d 2d 2d 0d 0a 2d 34 39 39 35 0d 0a 0d 0a 6f 6e  ---..-4995....on
1a360 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1a370 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1a380 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a390 20 6c 61 62 65 6c 2d 35 39 32 0d 0a 53 45 4c 45   label-592..SELE
1a3a0 43 54 20 2b 20 4d 49 4e 28 20 44 49 53 54 49 4e  CT + MIN( DISTIN
1a3b0 43 54 20 2d 20 2d 20 63 6f 6c 31 20 29 20 2a 20  CT - - col1 ) * 
1a3c0 2b 20 37 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74  + 71 col0 FROM t
1a3d0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 35 35 0d 0a  ab1..----..355..
1a3e0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1a3f0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1a400 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
1a410 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
1a420 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1a430 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1a440 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1a450 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1a460 35 39 32 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49  592..SELECT + MI
1a470 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 2d  N ( DISTINCT - -
1a480 20 63 6f 6c 31 20 29 20 2a 20 2b 20 37 31 20 63   col1 ) * + 71 c
1a490 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
1a4a0 2d 2d 2d 0d 0a 33 35 35 0d 0a 0d 0a 71 75 65 72  ---..355....quer
1a4b0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
1a4c0 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20 2d 20  LECT + col2 * - 
1a4d0 63 6f 6c 31 2c 20 63 6f 6c 31 20 2b 20 2b 20 2b  col1, col1 + + +
1a4e0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
1a4f0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
1a500 32 31 30 0d 0a 33 31 0d 0a 2d 33 38 30 37 0d 0a  210..31..-3807..
1a510 31 32 38 0d 0a 2d 39 39 0d 0a 31 30 30 0d 0a 0d  128..-99..100...
1a520 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1a530 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1a540 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1a550 6f 72 74 20 6c 61 62 65 6c 2d 35 39 34 0d 0a 53  ort label-594..S
1a560 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
1a570 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 35 38   COUNT( * ) * 58
1a580 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1a590 0d 0a 2d 31 37 34 0d 0a 0d 0a 73 6b 69 70 69 66  ..-174....skipif
1a5a0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1a5b0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1a5c0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
1a5d0 39 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  94..SELECT DISTI
1a5e0 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  NCT - COUNT ( * 
1a5f0 29 20 2a 20 35 38 20 46 52 4f 4d 20 74 61 62 32  ) * 58 FROM tab2
1a600 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 34 0d 0a 0d 0a  ..----..-174....
1a610 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1a620 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 41  .SELECT - col1 A
1a630 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
1a640 20 57 48 45 52 45 20 4e 55 4c 4c 20 3e 3d 20 2b   WHERE NULL >= +
1a650 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   col1..----....q
1a660 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1a670 53 45 4c 45 43 54 20 2d 20 33 35 20 2a 20 2b 20  SELECT - 35 * + 
1a680 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
1a690 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
1a6a0 37 38 35 0d 0a 2d 32 39 37 35 0d 0a 2d 33 31 38  785..-2975..-318
1a6b0 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
1a6c0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
1a6d0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
1a6e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39  rowsort label-59
1a6f0 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  7..SELECT DISTIN
1a700 43 54 20 32 33 20 2a 20 2d 20 53 55 4d 28 20 41  CT 23 * - SUM( A
1a710 4c 4c 20 39 20 29 20 41 53 20 63 6f 6c 32 20 46  LL 9 ) AS col2 F
1a720 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
1a730 2d 36 32 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -621....skipif m
1a740 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1a750 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1a760 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39 37  owsort label-597
1a770 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1a780 54 20 32 33 20 2a 20 2d 20 53 55 4d 20 28 20 41  T 23 * - SUM ( A
1a790 4c 4c 20 39 20 29 20 41 53 20 63 6f 6c 32 20 46  LL 9 ) AS col2 F
1a7a0 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
1a7b0 2d 36 32 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -621....onlyif m
1a7c0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
1a7d0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
1a7e0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1a7f0 72 74 20 6c 61 62 65 6c 2d 35 39 38 0d 0a 53 45  rt label-598..SE
1a800 4c 45 43 54 20 63 6f 6c 31 20 44 49 56 20 2d 20  LECT col1 DIV - 
1a810 32 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  20 AS col0 FROM 
1a820 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab0..----..-1..
1a830 2d 34 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  -4..0....skipif 
1a840 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1a850 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1a860 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39  rowsort label-59
1a870 38 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2f  8..SELECT col1 /
1a880 20 2d 20 32 30 20 41 53 20 63 6f 6c 30 20 46 52   - 20 AS col0 FR
1a890 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
1a8a0 31 0d 0a 2d 34 0d 0a 30 0d 0a 0d 0a 71 75 65 72  1..-4..0....quer
1a8b0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1a8c0 45 43 54 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31  ECT col2 AS col1
1a8d0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1a8e0 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 30 20  r0 WHERE + col0 
1a8f0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
1a900 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
1a910 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1a920 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  NCT * FROM tab1 
1a930 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 33 38  AS cor0 WHERE 38
1a940 20 2a 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c   * + col1 IS NUL
1a950 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
1a960 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1a970 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 63 6f  CT - col0 + + co
1a980 6c 30 20 2b 20 2d 20 2b 20 63 6f 6c 32 20 46 52  l0 + - + col2 FR
1a990 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
1a9a0 31 30 0d 0a 2d 34 37 0d 0a 2d 39 39 0d 0a 0d 0a  10..-47..-99....
1a9b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1a9c0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1a9d0 20 2b 20 2b 20 28 20 33 35 20 29 20 46 52 4f 4d   + + ( 35 ) FROM
1a9e0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52   tab1 AS cor0 CR
1a9f0 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 63 6f  OSS JOIN tab2 co
1aa00 72 31 0d 0a 2d 2d 2d 2d 0d 0a 33 35 0d 0a 0d 0a  r1..----..35....
1aa10 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
1aa20 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
1aa30 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
1aa40 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1aa50 2d 36 30 33 0d 0a 53 45 4c 45 43 54 20 2d 20 63  -603..SELECT - c
1aa60 6f 6c 32 20 44 49 56 20 2d 20 63 6f 6c 31 20 41  ol2 DIV - col1 A
1aa70 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
1aa80 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
1aa90 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  0..0....skipif m
1aaa0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1aab0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1aac0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 30 33  owsort label-603
1aad0 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20  ..SELECT - col2 
1aae0 2f 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31  / - col1 AS col1
1aaf0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
1ab00 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
1ab10 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1ab20 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
1ab30 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
1ab40 57 48 45 52 45 20 28 20 2b 20 63 6f 6c 32 20 49  WHERE ( + col2 I
1ab50 53 20 4e 4f 54 20 4e 55 4c 4c 20 29 0d 0a 2d 2d  S NOT NULL )..--
1ab60 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
1ab70 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
1ab80 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
1ab90 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72  962d0a49....quer
1aba0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1abb0 45 43 54 20 2d 20 63 6f 6c 30 20 2a 20 2b 20 63  ECT - col0 * + c
1abc0 6f 6c 32 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d  ol2 + - col2 * -
1abd0 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52   col1 AS col1 FR
1abe0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1abf0 0a 2d 2d 2d 2d 0d 0a 2d 32 39 39 32 0d 0a 2d 33  .----..-2992..-3
1ac00 35 35 32 0d 0a 2d 34 37 32 30 0d 0a 0d 0a 71 75  552..-4720....qu
1ac10 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1ac20 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
1ac30 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
1ac40 45 20 4e 55 4c 4c 20 3c 20 63 6f 6c 31 20 2a 20  E NULL < col1 * 
1ac50 2b 20 63 6f 6c 32 20 2d 20 2b 20 63 6f 6c 30 0d  + col2 - + col0.
1ac60 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
1ac70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1ac80 20 41 4c 4c 20 28 20 2d 20 39 30 20 29 20 46 52   ALL ( - 90 ) FR
1ac90 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
1aca0 0a 2d 2d 2d 2d 0d 0a 2d 39 30 0d 0a 2d 39 30 0d  .----..-90..-90.
1acb0 0a 2d 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-90....query II
1acc0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1acd0 20 28 20 2b 20 2d 20 63 6f 6c 30 20 29 20 41 53   ( + - col0 ) AS
1ace0 20 63 6f 6c 30 2c 20 63 6f 6c 30 20 41 53 20 63   col0, col0 AS c
1acf0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
1ad00 2d 2d 2d 0d 0a 2d 35 31 0d 0a 35 31 0d 0a 2d 38  ---..-51..51..-8
1ad10 35 0d 0a 38 35 0d 0a 2d 39 31 0d 0a 39 31 0d 0a  5..85..-91..91..
1ad20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1ad30 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
1ad40 43 54 20 33 31 20 2b 20 2b 20 63 6f 6c 30 20 2a  CT 31 + + col0 *
1ad50 20 2b 20 28 20 2b 20 63 6f 6c 30 20 29 20 46 52   + ( + col0 ) FR
1ad60 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b 20  OM tab2 WHERE + 
1ad70 2d 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55  - col2 IS NOT NU
1ad80 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 31 34 37 0d 0a  LL..----..2147..
1ad90 34 31 32 37 0d 0a 35 36 35 36 0d 0a 0d 0a 71 75  4127..5656....qu
1ada0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1adb0 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
1adc0 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20  ab0 WHERE NOT + 
1add0 63 6f 6c 32 20 42 45 54 57 45 45 4e 20 2b 20 2b  col2 BETWEEN + +
1ade0 20 63 6f 6c 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a   col1 AND NULL..
1adf0 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 31 0d 0a 34 37  ----..15..81..47
1ae00 0d 0a 38 37 0d 0a 32 31 0d 0a 31 30 0d 0a 0d 0a  ..87..21..10....
1ae10 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
1ae20 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
1ae30 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
1ae40 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
1ae50 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
1ae60 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1ae70 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 2d 20   DISTINCT ( - - 
1ae80 63 6f 6c 32 20 29 20 63 6f 6c 32 20 46 52 4f 4d  col2 ) col2 FROM
1ae90 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d   tab0..----..10.
1aea0 0a 34 37 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72 79  .47..99....query
1aeb0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1aec0 43 54 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20  CT col1 AS col1 
1aed0 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
1aee0 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c  NOT NULL IS NULL
1aef0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
1af00 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
1af10 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
1af20 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72  e: ..query III r
1af30 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 33  owsort label-613
1af40 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
1af50 74 61 62 32 20 63 6f 72 30 20 57 48 45 52 45 20  tab2 cor0 WHERE 
1af60 4e 4f 54 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  NOT + CAST( NULL
1af70 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2b   AS SIGNED ) * +
1af80 20 2b 20 36 36 20 49 53 20 4e 4f 54 20 4e 55 4c   + 66 IS NOT NUL
1af90 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
1afa0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63  s hashing to 75c
1afb0 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62  998aa53ac83218cb
1afc0 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d  f2feb962d0a49...
1afd0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1afe0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1aff0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1b000 74 20 6c 61 62 65 6c 2d 36 31 33 0d 0a 53 45 4c  t label-613..SEL
1b010 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
1b020 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
1b030 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
1b040 49 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 2b 20  INTEGER ) * + + 
1b050 36 36 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  66 IS NOT NULL..
1b060 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
1b070 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38  ashing to 75c998
1b080 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66  aa53ac83218cbf2f
1b090 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75  eb962d0a49....qu
1b0a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1b0b0 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2d 20 38  ELECT col1 * - 8
1b0c0 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
1b0d0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30 38 30  ab2..----..-4080
1b0e0 0d 0a 2d 35 33 36 30 0d 0a 2d 36 31 36 30 0d 0a  ..-5360..-6160..
1b0f0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1b100 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1b110 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1b120 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 35 0d 0a  sort label-615..
1b130 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
1b140 2a 20 29 20 2b 20 2b 20 33 39 20 63 6f 6c 31 20  * ) + + 39 col1 
1b150 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
1b160 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
1b170 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  1 AS cor1..----.
1b180 0a 33 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .30....skipif my
1b190 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1b1a0 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
1b1b0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
1b1c0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
1b1d0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
1b1e0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
1b1f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1b200 61 62 65 6c 2d 36 31 35 0d 0a 53 45 4c 45 43 54  abel-615..SELECT
1b210 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b   - COUNT ( * ) +
1b220 20 2b 20 33 39 20 63 6f 6c 31 20 46 52 4f 4d 20   + 39 col1 FROM 
1b230 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f  tab1 AS cor0 CRO
1b240 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20  SS JOIN tab1 AS 
1b250 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 33 30 0d 0a  cor1..----..30..
1b260 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
1b270 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
1b280 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
1b290 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
1b2a0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
1b2b0 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
1b2c0 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
1b2d0 31 20 63 6f 6c 32 2c 20 63 6f 6c 32 20 46 52 4f  1 col2, col2 FRO
1b2e0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
1b2f0 2d 2d 2d 2d 0d 0a 31 34 0d 0a 39 36 0d 0a 34 37  ----..14..96..47
1b300 0d 0a 36 38 0d 0a 35 0d 0a 35 39 0d 0a 0d 0a 6f  ..68..5..59....o
1b310 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1b320 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1b330 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1b340 74 20 6c 61 62 65 6c 2d 36 31 37 0d 0a 53 45 4c  t label-617..SEL
1b350 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 44 49 53  ECT + COUNT( DIS
1b360 54 49 4e 43 54 20 63 6f 6c 30 20 29 20 41 53 20  TINCT col0 ) AS 
1b370 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
1b380 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
1b390 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1b3a0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1b3b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1b3c0 74 20 6c 61 62 65 6c 2d 36 31 37 0d 0a 53 45 4c  t label-617..SEL
1b3d0 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 44 49  ECT + COUNT ( DI
1b3e0 53 54 49 4e 43 54 20 63 6f 6c 30 20 29 20 41 53  STINCT col0 ) AS
1b3f0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
1b400 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
1b410 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1b420 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1b430 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1b440 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 38  owsort label-618
1b450 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 28 20 2d  ..SELECT + - ( -
1b460 20 2b 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20   + ( - COUNT( * 
1b470 29 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ) ) ) AS col2 FR
1b480 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
1b490 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  .----..-3....ski
1b4a0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1b4b0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1b4c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1b4d0 6c 2d 36 31 38 0d 0a 53 45 4c 45 43 54 20 2b 20  l-618..SELECT + 
1b4e0 2d 20 28 20 2d 20 2b 20 28 20 2d 20 43 4f 55 4e  - ( - + ( - COUN
1b4f0 54 20 28 20 2a 20 29 20 29 20 29 20 41 53 20 63  T ( * ) ) ) AS c
1b500 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
1b510 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   cor0..----..-3.
1b520 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1b530 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
1b540 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
1b550 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1b560 62 65 6c 2d 36 31 39 0d 0a 53 45 4c 45 43 54 20  bel-619..SELECT 
1b570 2b 20 2b 20 43 41 53 54 28 20 39 36 20 41 53 20  + + CAST( 96 AS 
1b580 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
1b590 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39  b1 cor0..----..9
1b5a0 36 0d 0a 39 36 0d 0a 39 36 0d 0a 0d 0a 73 6b 69  6..96..96....ski
1b5b0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1b5c0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1b5d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1b5e0 6c 2d 36 31 39 0d 0a 53 45 4c 45 43 54 20 2b 20  l-619..SELECT + 
1b5f0 2b 20 43 41 53 54 20 28 20 39 36 20 41 53 20 49  + CAST ( 96 AS I
1b600 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61  NTEGER ) FROM ta
1b610 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39  b1 cor0..----..9
1b620 36 0d 0a 39 36 0d 0a 39 36 0d 0a 0d 0a 6f 6e 6c  6..96..96....onl
1b630 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1b640 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1b650 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1b660 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 32  rowsort label-62
1b670 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  0..SELECT ALL - 
1b680 38 34 20 2a 20 2d 20 2b 20 43 41 53 54 28 20 43  84 * - + CAST( C
1b690 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
1b6a0 4e 45 44 20 29 20 41 53 20 53 49 47 4e 45 44 20  NED ) AS SIGNED 
1b6b0 29 20 2d 20 2d 20 34 34 20 46 52 4f 4d 20 74 61  ) - - 44 FROM ta
1b6c0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
1b6d0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
1b6e0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
1b6f0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1b700 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1b710 73 6f 72 74 20 6c 61 62 65 6c 2d 36 32 30 0d 0a  sort label-620..
1b720 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 38 34 20  SELECT ALL - 84 
1b730 2a 20 2d 20 2b 20 43 41 53 54 20 28 20 43 41 53  * - + CAST ( CAS
1b740 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
1b750 47 45 52 20 29 20 41 53 20 49 4e 54 45 47 45 52  GER ) AS INTEGER
1b760 20 29 20 2d 20 2d 20 34 34 20 46 52 4f 4d 20 74   ) - - 44 FROM t
1b770 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
1b780 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
1b790 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ULL....query II 
1b7a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1b7b0 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 2c  DISTINCT + col1,
1b7c0 20 31 37 20 46 52 4f 4d 20 74 61 62 31 20 41 53   17 FROM tab1 AS
1b7d0 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55   cor0 WHERE ( NU
1b7e0 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  LL ) IS NULL..--
1b7f0 2d 2d 0d 0a 31 34 0d 0a 31 37 0d 0a 34 37 0d 0a  --..14..17..47..
1b800 31 37 0d 0a 35 0d 0a 31 37 0d 0a 0d 0a 6f 6e 6c  17..5..17....onl
1b810 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1b820 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1b830 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1b840 6c 61 62 65 6c 2d 36 32 32 0d 0a 53 45 4c 45 43  label-622..SELEC
1b850 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 38  T DISTINCT + - 8
1b860 39 20 2a 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a  9 * - - COUNT( *
1b870 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
1b880 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 37  cor0..----..-267
1b890 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1b8a0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1b8b0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1b8c0 72 74 20 6c 61 62 65 6c 2d 36 32 32 0d 0a 53 45  rt label-622..SE
1b8d0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1b8e0 2d 20 38 39 20 2a 20 2d 20 2d 20 43 4f 55 4e 54  - 89 * - - COUNT
1b8f0 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30   ( * ) FROM tab0
1b900 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1b910 2d 32 36 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -267....onlyif m
1b920 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1b930 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1b940 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1b950 2d 36 32 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -623..SELECT ALL
1b960 20 53 55 4d 28 20 2d 20 35 36 20 29 20 41 53 20   SUM( - 56 ) AS 
1b970 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col0 FROM tab2..
1b980 2d 2d 2d 2d 0d 0a 2d 31 36 38 0d 0a 0d 0a 73 6b  ----..-168....sk
1b990 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1b9a0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1b9b0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1b9c0 65 6c 2d 36 32 33 0d 0a 53 45 4c 45 43 54 20 41  el-623..SELECT A
1b9d0 4c 4c 20 53 55 4d 20 28 20 2d 20 35 36 20 29 20  LL SUM ( - 56 ) 
1b9e0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1b9f0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 38 0d 0a 0d  2..----..-168...
1ba00 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1ba10 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
1ba20 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
1ba30 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
1ba40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1ba50 62 65 6c 2d 36 32 34 0d 0a 53 45 4c 45 43 54 20  bel-624..SELECT 
1ba60 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  + COUNT( * ) AS 
1ba70 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 57  col1 FROM tab0 W
1ba80 48 45 52 45 20 2b 20 2b 20 32 30 20 2d 20 43 41  HERE + + 20 - CA
1ba90 53 54 28 20 36 35 20 41 53 20 53 49 47 4e 45 44  ST( 65 AS SIGNED
1baa0 20 29 20 2a 20 28 20 2b 20 34 20 29 20 3e 20 4e   ) * ( + 4 ) > N
1bab0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
1bac0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1bad0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1bae0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1baf0 61 62 65 6c 2d 36 32 34 0d 0a 53 45 4c 45 43 54  abel-624..SELECT
1bb00 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
1bb10 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
1bb20 20 57 48 45 52 45 20 2b 20 2b 20 32 30 20 2d 20   WHERE + + 20 - 
1bb30 43 41 53 54 20 28 20 36 35 20 41 53 20 49 4e 54  CAST ( 65 AS INT
1bb40 45 47 45 52 20 29 20 2a 20 28 20 2b 20 34 20 29  EGER ) * ( + 4 )
1bb50 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30   > NULL..----..0
1bb60 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
1bb70 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1bb80 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1bb90 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1bba0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1bbb0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1bbc0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
1bbd0 6c 32 20 2a 20 2b 20 34 38 20 63 6f 6c 30 20 46  l2 * + 48 col0 F
1bbe0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
1bbf0 32 38 33 32 0d 0a 33 32 36 34 0d 0a 34 36 30 38  2832..3264..4608
1bc00 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1bc10 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1bc20 63 6f 6c 31 20 2b 20 2d 20 2d 20 28 20 2d 20 63  col1 + - - ( - c
1bc30 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol1 ) AS col0 FR
1bc40 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab1..----..0
1bc50 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ..0..0....query 
1bc60 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1bc70 54 20 41 4c 4c 20 2b 20 2b 20 38 36 20 46 52 4f  T ALL + + 86 FRO
1bc80 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
1bc90 2d 2d 2d 2d 0d 0a 38 36 0d 0a 38 36 0d 0a 38 36  ----..86..86..86
1bca0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1bcb0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
1bcc0 63 6f 6c 32 20 2b 20 2b 20 2d 20 28 20 2d 20 28  col2 + + - ( - (
1bcd0 20 2d 20 2d 20 63 6f 6c 30 20 29 20 29 20 46 52   - - col0 ) ) FR
1bce0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1bcf0 0a 2d 2d 2d 2d 0d 0a 31 34 34 0d 0a 31 34 37 0d  .----..144..147.
1bd00 0a 31 35 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .159....onlyif m
1bd10 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1bd20 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1bd30 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1bd40 2d 36 32 39 0d 0a 53 45 4c 45 43 54 20 28 20 2b  -629..SELECT ( +
1bd50 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 41 53   COUNT( * ) ) AS
1bd60 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
1bd70 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
1bd80 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1bd90 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1bda0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1bdb0 72 74 20 6c 61 62 65 6c 2d 36 32 39 0d 0a 53 45  rt label-629..SE
1bdc0 4c 45 43 54 20 28 20 2b 20 43 4f 55 4e 54 20 28  LECT ( + COUNT (
1bdd0 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46   * ) ) AS col0 F
1bde0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1bdf0 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c  ..----..3....onl
1be00 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1be10 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1be20 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1be30 6c 61 62 65 6c 2d 36 33 30 0d 0a 53 45 4c 45 43  label-630..SELEC
1be40 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  T + COUNT( * ) F
1be50 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 33  ROM tab1 WHERE 3
1be60 36 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  6 IS NULL..----.
1be70 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
1be80 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1be90 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1bea0 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 30 0d 0a  sort label-630..
1beb0 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28  SELECT + COUNT (
1bec0 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 57   * ) FROM tab1 W
1bed0 48 45 52 45 20 33 36 20 49 53 20 4e 55 4c 4c 0d  HERE 36 IS NULL.
1bee0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .----..0....quer
1bef0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1bf00 45 43 54 20 31 31 20 2d 20 2b 20 63 6f 6c 30 20  ECT 11 - + col0 
1bf10 2b 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c  + + col0 * - col
1bf20 31 20 2a 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f  1 * - col1 AS co
1bf30 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
1bf40 2d 2d 0d 0a 31 31 0d 0a 33 38 32 39 31 0d 0a 39  --..11..38291..9
1bf50 38 34 31 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  8411....onlyif m
1bf60 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
1bf70 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
1bf80 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77   ..query III row
1bf90 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 32 0d 0a  sort label-632..
1bfa0 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
1bfb0 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
1bfc0 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
1bfd0 20 53 49 47 4e 45 44 20 29 20 2b 20 2d 20 2d 20   SIGNED ) + - - 
1bfe0 43 41 53 54 28 20 2d 20 38 33 20 41 53 20 53 49  CAST( - 83 AS SI
1bff0 47 4e 45 44 20 29 20 2b 20 2b 20 63 6f 6c 32 20  GNED ) + + col2 
1c000 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
1c010 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
1c020 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1c030 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  le..query III ro
1c040 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 32 0d  wsort label-632.
1c050 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
1c060 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
1c070 45 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  E + CAST ( NULL 
1c080 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d  AS INTEGER ) + -
1c090 20 2d 20 43 41 53 54 20 28 20 2d 20 38 33 20 41   - CAST ( - 83 A
1c0a0 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20  S INTEGER ) + + 
1c0b0 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col2 IS NOT NULL
1c0c0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
1c0d0 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
1c0e0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
1c0f0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  n: ..query II ro
1c100 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 33 0d  wsort label-633.
1c110 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 44 49 56  .SELECT col0 DIV
1c120 20 2b 20 63 6f 6c 32 20 63 6f 6c 31 2c 20 2d 20   + col2 col1, - 
1c130 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
1c140 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
1c150 2d 2d 2d 2d 0d 0a 31 0d 0a 2d 34 30 0d 0a 31 0d  ----..1..-40..1.
1c160 0a 2d 35 38 0d 0a 32 0d 0a 2d 32 33 0d 0a 0d 0a  .-58..2..-23....
1c170 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1c180 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
1c190 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
1c1a0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
1c1b0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
1c1c0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
1c1d0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
1c1e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1c1f0 33 33 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20  33..SELECT col0 
1c200 2f 20 2b 20 63 6f 6c 32 20 63 6f 6c 31 2c 20 2d  / + col2 col1, -
1c210 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
1c220 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
1c230 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 2d 34 30 0d 0a 31  .----..1..-40..1
1c240 0d 0a 2d 35 38 0d 0a 32 0d 0a 2d 32 33 0d 0a 0d  ..-58..2..-23...
1c250 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1c260 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1c270 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
1c280 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 34 0d 0a  sort label-634..
1c290 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 33  SELECT ALL + - 3
1c2a0 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 2c   * + COUNT( * ),
1c2b0 20 43 4f 55 4e 54 28 20 63 6f 6c 32 20 29 20 2d   COUNT( col2 ) -
1c2c0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   - COUNT( * ) AS
1c2d0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
1c2e0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1c2f0 39 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  9..6....skipif m
1c300 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1c310 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
1c320 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33  rowsort label-63
1c330 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  4..SELECT ALL + 
1c340 2d 20 33 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20  - 3 * + COUNT ( 
1c350 2a 20 29 2c 20 43 4f 55 4e 54 20 28 20 63 6f 6c  * ), COUNT ( col
1c360 32 20 29 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20  2 ) - - COUNT ( 
1c370 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  * ) AS col0 FROM
1c380 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
1c390 2d 2d 2d 0d 0a 2d 39 0d 0a 36 0d 0a 0d 0a 71 75  ---..-9..6....qu
1c3a0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
1c3b0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1c3c0 2d 20 34 36 20 2a 20 31 36 20 41 53 20 63 6f 6c  - 46 * 16 AS col
1c3d0 30 2c 20 37 38 20 46 52 4f 4d 20 74 61 62 31 20  0, 78 FROM tab1 
1c3e0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1c3f0 37 33 36 0d 0a 37 38 0d 0a 0d 0a 6f 6e 6c 79 69  736..78....onlyi
1c400 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
1c410 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
1c420 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1c430 62 65 6c 2d 36 33 36 0d 0a 53 45 4c 45 43 54 20  bel-636..SELECT 
1c440 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43 54 20  COUNT( DISTINCT 
1c450 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31  col1 ) FROM tab1
1c460 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..----..3....ski
1c470 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1c480 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1c490 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1c4a0 6c 2d 36 33 36 0d 0a 53 45 4c 45 43 54 20 43 4f  l-636..SELECT CO
1c4b0 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20 63  UNT ( DISTINCT c
1c4c0 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31 0d  ol1 ) FROM tab1.
1c4d0 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70  .----..3....skip
1c4e0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
1c4f0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
1c500 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
1c510 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
1c520 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
1c530 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1c540 54 49 4e 43 54 20 2d 20 2b 20 32 20 2b 20 2b 20  TINCT - + 2 + + 
1c550 2b 20 31 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74  + 12 col0 FROM t
1c560 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 49  ab1 WHERE NULL I
1c570 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S NULL..----..10
1c580 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
1c590 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1c5a0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1c5b0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1c5c0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1c5d0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
1c5e0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
1c5f0 6f 6c 30 20 63 6f 6c 31 2c 20 28 20 2d 20 63 6f  ol0 col1, ( - co
1c600 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l1 ) AS col2 FRO
1c610 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36  M tab2..----..46
1c620 0d 0a 2d 35 31 0d 0a 36 34 0d 0a 2d 37 37 0d 0a  ..-51..64..-77..
1c630 37 35 0d 0a 2d 36 37 0d 0a 0d 0a 6f 6e 6c 79 69  75..-67....onlyi
1c640 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
1c650 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1c660 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20  pe: ..query III 
1c670 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33  rowsort label-63
1c680 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
1c690 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
1c6a0 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45  HERE NULL NOT BE
1c6b0 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b  TWEEN NULL AND +
1c6c0 20 28 20 2d 20 28 20 63 6f 6c 32 20 29 20 29 20   ( - ( col2 ) ) 
1c6d0 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
1c6e0 53 49 47 4e 45 44 20 29 20 2a 20 2b 20 2d 20 34  SIGNED ) * + - 4
1c6f0 39 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  9..----....skipi
1c700 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1c710 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1c720 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
1c730 6c 2d 36 33 39 0d 0a 53 45 4c 45 43 54 20 44 49  l-639..SELECT DI
1c740 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
1c750 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  b1 WHERE NULL NO
1c760 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  T BETWEEN NULL A
1c770 4e 44 20 2b 20 28 20 2d 20 28 20 63 6f 6c 32 20  ND + ( - ( col2 
1c780 29 20 29 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  ) ) + CAST ( NUL
1c790 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  L AS INTEGER ) *
1c7a0 20 2b 20 2d 20 34 39 0d 0a 2d 2d 2d 2d 0d 0a 0d   + - 49..----...
1c7b0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1c7c0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1c7d0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1c7e0 6f 72 74 20 6c 61 62 65 6c 2d 36 34 30 0d 0a 53  ort label-640..S
1c7f0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
1c800 20 53 55 4d 28 20 63 6f 6c 32 20 29 20 46 52 4f   SUM( col2 ) FRO
1c810 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
1c820 48 45 52 45 20 4e 4f 54 20 2b 20 37 39 20 2a 20  HERE NOT + 79 * 
1c830 2b 20 63 6f 6c 30 20 2f 20 2d 20 39 33 20 2b 20  + col0 / - 93 + 
1c840 2d 20 2d 20 32 32 20 49 53 20 4e 55 4c 4c 0d 0a  - - 22 IS NULL..
1c850 2d 2d 2d 2d 0d 0a 2d 31 32 31 0d 0a 0d 0a 73 6b  ----..-121....sk
1c860 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1c870 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1c880 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1c890 65 6c 2d 36 34 30 0d 0a 53 45 4c 45 43 54 20 44  el-640..SELECT D
1c8a0 49 53 54 49 4e 43 54 20 2d 20 53 55 4d 20 28 20  ISTINCT - SUM ( 
1c8b0 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32  col2 ) FROM tab2
1c8c0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
1c8d0 4f 54 20 2b 20 37 39 20 2a 20 2b 20 63 6f 6c 30  OT + 79 * + col0
1c8e0 20 2f 20 2d 20 39 33 20 2b 20 2d 20 2d 20 32 32   / - 93 + - - 22
1c8f0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
1c900 2d 31 32 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  -121....skipif p
1c910 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
1c920 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
1c930 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
1c940 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
1c950 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1c960 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 35 37 20  ..SELECT ALL 57 
1c970 2a 20 2b 20 2d 20 28 20 63 6f 6c 32 20 29 20 63  * + - ( col2 ) c
1c980 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
1c990 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33   cor0..----..-13
1c9a0 31 31 0d 0a 2d 32 32 38 30 0d 0a 2d 33 33 30 36  11..-2280..-3306
1c9b0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
1c9c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1c9d0 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c 31 20 41 53   col2, - col1 AS
1c9e0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
1c9f0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
1ca00 30 0d 0a 2d 32 31 0d 0a 34 37 0d 0a 2d 38 31 0d  0..-21..47..-81.
1ca10 0a 39 39 0d 0a 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69  .99..-1....onlyi
1ca20 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
1ca30 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1ca40 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
1ca50 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 33 0d  wsort label-643.
1ca60 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d 20  .SELECT ALL ( - 
1ca70 43 41 53 54 28 20 2d 20 31 35 20 41 53 20 53 49  CAST( - 15 AS SI
1ca80 47 4e 45 44 20 29 20 29 20 46 52 4f 4d 20 74 61  GNED ) ) FROM ta
1ca90 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 31 35  b2..----..15..15
1caa0 0d 0a 31 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..15....skipif m
1cab0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1cac0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1cad0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 33  owsort label-643
1cae0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d  ..SELECT ALL ( -
1caf0 20 43 41 53 54 20 28 20 2d 20 31 35 20 41 53 20   CAST ( - 15 AS 
1cb00 49 4e 54 45 47 45 52 20 29 20 29 20 46 52 4f 4d  INTEGER ) ) FROM
1cb10 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d   tab2..----..15.
1cb20 0a 31 35 0d 0a 31 35 0d 0a 0d 0a 71 75 65 72 79  .15..15....query
1cb30 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1cb40 43 54 20 63 6f 6c 30 20 2d 20 2b 20 63 6f 6c 32  CT col0 - + col2
1cb50 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
1cb60 20 4e 4f 54 20 2d 20 31 31 20 2b 20 2b 20 63 6f   NOT - 11 + + co
1cb70 6c 31 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  l1 > NULL..----.
1cb80 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1cb90 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 35 30 20  rt..SELECT + 50 
1cba0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1cbb0 31 20 57 48 45 52 45 20 4e 4f 54 20 28 20 37 20  1 WHERE NOT ( 7 
1cbc0 29 20 3c 3d 20 33 30 0d 0a 2d 2d 2d 2d 0d 0a 0d  ) <= 30..----...
1cbd0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1cbe0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
1cbf0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol1 FROM tab2 WH
1cc00 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20  ERE NOT NULL IS 
1cc10 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
1cc20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1cc30 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
1cc40 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
1cc50 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
1cc60 31 35 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 32  15 NOT BETWEEN 2
1cc70 34 20 41 4e 44 20 63 6f 6c 30 20 2a 20 2d 20 33  4 AND col0 * - 3
1cc80 33 20 2b 20 32 38 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  3 + 28..----....
1cc90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1cca0 0a 53 45 4c 45 43 54 20 2b 20 34 37 20 2b 20 2d  .SELECT + 47 + -
1ccb0 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52   col1 AS col1 FR
1ccc0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
1ccd0 32 30 0d 0a 2d 33 30 0d 0a 2d 34 0d 0a 0d 0a 71  20..-30..-4....q
1cce0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1ccf0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1cd00 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 2b 20  + col2 * col1 + 
1cd10 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  + col0 FROM tab1
1cd20 0d 0a 2d 2d 2d 2d 0d 0a 31 33 39 35 0d 0a 33 32  ..----..1395..32
1cd30 38 37 0d 0a 33 38 30 0d 0a 0d 0a 71 75 65 72 79  87..380....query
1cd40 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
1cd50 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
1cd60 20 57 48 45 52 45 20 2d 20 63 6f 6c 32 20 3e 3d   WHERE - col2 >=
1cd70 20 2b 20 31 36 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   + 16..----....q
1cd80 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1cd90 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
1cda0 32 20 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20  2 + col0 * col2 
1cdb0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1cdc0 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 35 0d 0a 32  2..----..1035..2
1cdd0 35 32 30 0d 0a 34 32 39 32 0d 0a 0d 0a 6f 6e 6c  520..4292....onl
1cde0 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1cdf0 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1ce00 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
1ce10 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1ce20 36 35 32 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  652..SELECT * FR
1ce30 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
1ce40 54 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45  T NULL NOT BETWE
1ce50 45 4e 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53  EN CAST( NULL AS
1ce60 20 53 49 47 4e 45 44 20 29 20 41 4e 44 20 4e 55   SIGNED ) AND NU
1ce70 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  LL..----....skip
1ce80 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1ce90 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1cea0 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
1ceb0 65 6c 2d 36 35 32 0d 0a 53 45 4c 45 43 54 20 2a  el-652..SELECT *
1cec0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
1ced0 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20 42 45   NOT NULL NOT BE
1cee0 54 57 45 45 4e 20 43 41 53 54 20 28 20 4e 55 4c  TWEEN CAST ( NUL
1cef0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  L AS INTEGER ) A
1cf00 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  ND NULL..----...
1cf10 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1cf20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
1cf30 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
1cf40 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1cf50 6c 2d 36 35 33 0d 0a 53 45 4c 45 43 54 20 41 4c  l-653..SELECT AL
1cf60 4c 20 2b 20 36 36 20 2d 20 2b 20 63 6f 6c 31 20  L + 66 - + col1 
1cf70 44 49 56 20 36 38 20 41 53 20 63 6f 6c 30 20 46  DIV 68 AS col0 F
1cf80 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
1cf90 36 35 0d 0a 36 36 0d 0a 36 36 0d 0a 0d 0a 73 6b  65..66..66....sk
1cfa0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1cfb0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1cfc0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1cfd0 65 6c 2d 36 35 33 0d 0a 53 45 4c 45 43 54 20 41  el-653..SELECT A
1cfe0 4c 4c 20 2b 20 36 36 20 2d 20 2b 20 63 6f 6c 31  LL + 66 - + col1
1cff0 20 2f 20 36 38 20 41 53 20 63 6f 6c 30 20 46 52   / 68 AS col0 FR
1d000 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 36  OM tab0..----..6
1d010 35 0d 0a 36 36 0d 0a 36 36 0d 0a 0d 0a 71 75 65  5..66..66....que
1d020 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1d030 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
1d040 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 63  b0 WHERE NOT ( c
1d050 6f 6c 30 20 2a 20 2d 20 38 20 29 20 3d 20 4e 55  ol0 * - 8 ) = NU
1d060 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
1d070 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1d080 45 43 54 20 63 6f 6c 30 20 2b 20 28 20 36 38 20  ECT col0 + ( 68 
1d090 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
1d0a0 2d 0d 0a 31 31 34 0d 0a 31 33 32 0d 0a 31 34 33  -..114..132..143
1d0b0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1d0c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 38 36 20 2b  ort..SELECT 86 +
1d0d0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
1d0e0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
1d0f0 30 39 0d 0a 31 32 36 0d 0a 31 34 34 0d 0a 0d 0a  09..126..144....
1d100 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1d110 0a 53 45 4c 45 43 54 20 32 34 20 2b 20 2d 20 36  .SELECT 24 + - 6
1d120 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
1d130 2d 0d 0a 2d 33 37 0d 0a 2d 33 37 0d 0a 2d 33 37  -..-37..-37..-37
1d140 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1d150 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
1d160 6c 31 20 2d 20 2d 20 63 6f 6c 30 20 2a 20 63 6f  l1 - - col0 * co
1d170 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
1d180 74 61 62 30 20 57 48 45 52 45 20 2d 20 63 6f 6c  tab0 WHERE - col
1d190 32 20 2a 20 31 33 20 49 53 20 4e 55 4c 4c 0d 0a  2 * 13 IS NULL..
1d1a0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1d1b0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
1d1c0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
1d1d0 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77   ..query III row
1d1e0 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 39 0d 0a  sort label-659..
1d1f0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1d200 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
1d210 45 20 28 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  E ( CAST( NULL A
1d220 53 20 53 49 47 4e 45 44 20 29 20 29 20 49 53 20  S SIGNED ) ) IS 
1d230 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
1d240 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1d250 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1d260 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
1d270 72 74 20 6c 61 62 65 6c 2d 36 35 39 0d 0a 53 45  rt label-659..SE
1d280 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
1d290 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
1d2a0 28 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  ( CAST ( NULL AS
1d2b0 20 49 4e 54 45 47 45 52 20 29 20 29 20 49 53 20   INTEGER ) ) IS 
1d2c0 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
1d2d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1d2e0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
1d2f0 33 38 20 2a 20 2b 20 63 6f 6c 31 20 46 52 4f 4d  38 * + col1 FROM
1d300 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39   tab2..----..-19
1d310 33 38 0d 0a 2d 32 35 34 36 0d 0a 2d 32 39 32 36  38..-2546..-2926
1d320 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1d330 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  ort..SELECT col0
1d340 20 2a 20 2d 20 32 38 20 41 53 20 63 6f 6c 31 20   * - 28 AS col1 
1d350 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
1d360 0a 2d 31 32 38 38 0d 0a 2d 31 37 39 32 0d 0a 2d  .-1288..-1792..-
1d370 32 31 30 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  2100....query II
1d380 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1d390 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
1d3a0 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 2b  ERE NOT + col1 +
1d3b0 20 2d 20 63 6f 6c 32 20 2f 20 34 33 20 49 4e 20   - col2 / 43 IN 
1d3c0 28 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d  ( + col2 )..----
1d3d0 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
1d3e0 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
1d3f0 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
1d400 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20  d54cad....query 
1d410 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
1d420 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
1d430 57 48 45 52 45 20 4e 4f 54 20 28 20 2b 20 38 20  WHERE NOT ( + 8 
1d440 2b 20 63 6f 6c 32 20 29 20 49 53 20 4e 55 4c 4c  + col2 ) IS NULL
1d450 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
1d460 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30   hashing to c6c0
1d470 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31  a4111b36d04dbc81
1d480 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a  1a11e4d54cad....
1d490 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1d4a0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
1d4b0 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
1d4c0 2d 20 63 6f 6c 30 20 2b 20 2d 20 38 35 20 2a 20  - col0 + - 85 * 
1d4d0 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20 4e 4f 54  + ( - col0 ) NOT
1d4e0 20 42 45 54 57 45 45 4e 20 2b 20 32 31 20 41 4e   BETWEEN + 21 AN
1d4f0 44 20 2d 20 37 33 20 2b 20 2b 20 63 6f 6c 30 0d  D - 73 + + col0.
1d500 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
1d510 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
1d520 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
1d530 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1d540 6c 2d 36 36 35 0d 0a 53 45 4c 45 43 54 20 2d 20  l-665..SELECT - 
1d550 4d 49 4e 28 20 41 4c 4c 20 2b 20 28 20 2b 20 32  MIN( ALL + ( + 2
1d560 33 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  3 ) ) FROM tab0.
1d570 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 0d 0a 73 6b  .----..-23....sk
1d580 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1d590 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1d5a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1d5b0 65 6c 2d 36 36 35 0d 0a 53 45 4c 45 43 54 20 2d  el-665..SELECT -
1d5c0 20 4d 49 4e 20 28 20 41 4c 4c 20 2b 20 28 20 2b   MIN ( ALL + ( +
1d5d0 20 32 33 20 29 20 29 20 46 52 4f 4d 20 74 61 62   23 ) ) FROM tab
1d5e0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 0d 0a  0..----..-23....
1d5f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1d600 0a 53 45 4c 45 43 54 20 2b 20 28 20 2b 20 63 6f  .SELECT + ( + co
1d610 6c 30 20 29 20 2b 20 28 20 2d 20 63 6f 6c 30 20  l0 ) + ( - col0 
1d620 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
1d630 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e  -..0..0..0....on
1d640 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
1d650 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
1d660 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
1d670 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1d680 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1d690 2d 36 36 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -667..SELECT - C
1d6a0 41 53 54 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20  AST( - COUNT( * 
1d6b0 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20  ) AS SIGNED ) + 
1d6c0 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
1d6d0 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
1d6e0 2d 2d 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..6....skipif 
1d6f0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1d700 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1d710 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36  rowsort label-66
1d720 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53 54  7..SELECT - CAST
1d730 20 28 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   ( - COUNT ( * )
1d740 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20   AS INTEGER ) + 
1d750 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
1d760 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
1d770 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..6....onlyif
1d780 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
1d790 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
1d7a0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
1d7b0 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 38 0d 0a  sort label-668..
1d7c0 53 45 4c 45 43 54 20 43 41 53 54 28 20 2b 20 63  SELECT CAST( + c
1d7d0 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol2 AS SIGNED ) 
1d7e0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1d7f0 30 20 57 48 45 52 45 20 28 20 2b 20 63 6f 6c 30  0 WHERE ( + col0
1d800 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
1d810 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a 39 39  ----..10..47..99
1d820 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1d830 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1d840 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1d850 72 74 20 6c 61 62 65 6c 2d 36 36 38 0d 0a 53 45  rt label-668..SE
1d860 4c 45 43 54 20 43 41 53 54 20 28 20 2b 20 63 6f  LECT CAST ( + co
1d870 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  l2 AS INTEGER ) 
1d880 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1d890 30 20 57 48 45 52 45 20 28 20 2b 20 63 6f 6c 30  0 WHERE ( + col0
1d8a0 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
1d8b0 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a 39 39  ----..10..47..99
1d8c0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1d8d0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1d8e0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1d8f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 39  owsort label-669
1d900 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1d910 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 63  T - COUNT( * ) c
1d920 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
1d930 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69  ---..-3....skipi
1d940 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1d950 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
1d960 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
1d970 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
1d980 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
1d990 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
1d9a0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
1d9b0 72 74 20 6c 61 62 65 6c 2d 36 36 39 0d 0a 53 45  rt label-669..SE
1d9c0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
1d9d0 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 30  COUNT ( * ) col0
1d9e0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
1d9f0 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-3....query I 
1da00 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1da10 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
1da20 2a 20 2d 20 33 36 20 2b 20 2b 20 34 37 20 41 53  * - 36 + + 47 AS
1da30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
1da40 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 38 37  cor0..----..1487
1da50 0d 0a 32 31 33 35 0d 0a 38 37 35 0d 0a 0d 0a 71  ..2135..875....q
1da60 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1da70 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1da80 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  T * FROM tab1 AS
1da90 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
1daa0 20 42 45 54 57 45 45 4e 20 28 20 4e 55 4c 4c 20   BETWEEN ( NULL 
1dab0 29 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  ) AND NULL..----
1dac0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
1dad0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
1dae0 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57  FROM tab1 cor0 W
1daf0 48 45 52 45 20 28 20 2b 20 63 6f 6c 30 20 29 20  HERE ( + col0 ) 
1db00 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 63 6f  NOT BETWEEN - co
1db10 6c 32 20 2a 20 63 6f 6c 31 20 41 4e 44 20 28 20  l2 * col1 AND ( 
1db20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  NULL )..----....
1db30 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
1db40 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
1db50 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1db60 72 74 20 6c 61 62 65 6c 2d 36 37 33 0d 0a 53 45  rt label-673..SE
1db70 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20  LECT ALL COUNT( 
1db80 44 49 53 54 49 4e 43 54 20 2d 20 38 20 29 20 41  DISTINCT - 8 ) A
1db90 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
1dba0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   cor0..----..1..
1dbb0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1dbc0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1dbd0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1dbe0 20 6c 61 62 65 6c 2d 36 37 33 0d 0a 53 45 4c 45   label-673..SELE
1dbf0 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20 44  CT ALL COUNT ( D
1dc00 49 53 54 49 4e 43 54 20 2d 20 38 20 29 20 41 53  ISTINCT - 8 ) AS
1dc10 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
1dc20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d  cor0..----..1...
1dc30 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1dc40 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1dc50 54 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46  T col1 AS col0 F
1dc60 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1dc70 20 57 48 45 52 45 20 2d 20 28 20 28 20 33 35 20   WHERE - ( ( 35 
1dc80 29 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ) ) IS NOT NULL.
1dc90 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 36 37 0d 0a 37  .----..51..67..7
1dca0 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
1dcb0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1dcc0 54 49 4e 43 54 20 28 20 2b 20 32 38 20 29 20 2b  TINCT ( + 28 ) +
1dcd0 20 2b 20 37 30 20 41 53 20 63 6f 6c 31 20 46 52   + 70 AS col1 FR
1dce0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
1dcf0 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e  WHERE NOT NULL N
1dd00 4f 54 20 42 45 54 57 45 45 4e 20 2b 20 63 6f 6c  OT BETWEEN + col
1dd10 30 20 41 4e 44 20 2d 20 63 6f 6c 30 20 2a 20 63  0 AND - col0 * c
1dd20 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol1..----....que
1dd30 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1dd40 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
1dd50 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52  M tab1 cor0 WHER
1dd60 45 20 28 20 63 6f 6c 30 20 29 20 49 53 20 4e 4f  E ( col0 ) IS NO
1dd70 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  T NULL..----..9 
1dd80 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
1dd90 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30  o c6c0a4111b36d0
1dda0 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63  4dbc811a11e4d54c
1ddb0 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  ad....query I ro
1ddc0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1ddd0 4c 20 63 6f 6c 31 20 2d 20 38 39 20 46 52 4f 4d  L col1 - 89 FROM
1dde0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32   tab1..----..-42
1ddf0 0d 0a 2d 37 35 0d 0a 2d 38 34 0d 0a 0d 0a 71 75  ..-75..-84....qu
1de00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1de10 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32  ELECT ALL + col2
1de20 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1de30 62 30 20 57 48 45 52 45 20 63 6f 6c 30 20 2b 20  b0 WHERE col0 + 
1de40 63 6f 6c 32 20 3e 3d 20 2b 20 63 6f 6c 32 20 2f  col2 >= + col2 /
1de50 20 28 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d   ( col0 )..----.
1de60 0a 31 30 0d 0a 34 37 0d 0a 39 39 0d 0a 0d 0a 71  .10..47..99....q
1de70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1de80 53 45 4c 45 43 54 20 41 4c 4c 20 31 36 20 2b 20  SELECT ALL 16 + 
1de90 2d 20 38 35 20 2a 20 2d 20 63 6f 6c 32 20 46 52  - 85 * - col2 FR
1dea0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab0..----..4
1deb0 30 31 31 0d 0a 38 34 33 31 0d 0a 38 36 36 0d 0a  011..8431..866..
1dec0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1ded0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34 36 20 46  t..SELECT + 46 F
1dee0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1def0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30   CROSS JOIN tab0
1df00 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
1df10 20 68 61 73 68 69 6e 67 20 74 6f 20 33 31 38 31   hashing to 3181
1df20 38 63 39 64 34 64 33 32 35 65 62 32 34 38 37 33  8c9d4d325eb24873
1df30 35 63 39 37 63 62 31 64 63 65 33 39 0d 0a 0d 0a  5c97cb1dce39....
1df40 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1df50 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 41 53 20  .SELECT col0 AS 
1df60 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
1df70 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
1df80 20 4e 55 4c 4c 20 3e 3d 20 2b 20 63 6f 6c 31 0d   NULL >= + col1.
1df90 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
1dfa0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1dfb0 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 28 20 2d 20   ALL col2 * ( - 
1dfc0 28 20 63 6f 6c 30 20 29 20 29 20 41 53 20 63 6f  ( col0 ) ) AS co
1dfd0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
1dfe0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
1dff0 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
1e000 0a 2d 2d 2d 2d 0d 0a 2d 37 30 35 0d 0a 2d 38 37  .----..-705..-87
1e010 30 0d 0a 2d 39 36 30 33 0d 0a 0d 0a 71 75 65 72  0..-9603....quer
1e020 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
1e030 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
1e040 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
1e050 4e 4f 54 20 63 6f 6c 30 20 4e 4f 54 20 42 45 54  NOT col0 NOT BET
1e060 57 45 45 4e 20 2d 20 39 35 20 2a 20 2d 20 28 20  WEEN - 95 * - ( 
1e070 34 30 20 29 20 41 4e 44 20 2d 20 63 6f 6c 30 20  40 ) AND - col0 
1e080 2a 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  * col0..----....
1e090 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1e0a0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1e0b0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1e0c0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1e0d0 2d 36 38 34 0d 0a 53 45 4c 45 43 54 20 28 20 2d  -684..SELECT ( -
1e0e0 20 43 41 53 54 28 20 31 36 20 41 53 20 53 49 47   CAST( 16 AS SIG
1e0f0 4e 45 44 20 29 20 29 20 46 52 4f 4d 20 74 61 62  NED ) ) FROM tab
1e100 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
1e110 0a 2d 31 36 0d 0a 2d 31 36 0d 0a 2d 31 36 0d 0a  .-16..-16..-16..
1e120 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1e130 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1e140 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1e150 20 6c 61 62 65 6c 2d 36 38 34 0d 0a 53 45 4c 45   label-684..SELE
1e160 43 54 20 28 20 2d 20 43 41 53 54 20 28 20 31 36  CT ( - CAST ( 16
1e170 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
1e180 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1e190 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a 2d 31  0..----..-16..-1
1e1a0 36 0d 0a 2d 31 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  6..-16....onlyif
1e1b0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
1e1c0 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
1e1d0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
1e1e0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
1e1f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 38 35  owsort label-685
1e200 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d  ..SELECT ALL + M
1e210 41 58 28 20 63 6f 6c 30 20 29 20 2a 20 43 41 53  AX( col0 ) * CAS
1e220 54 28 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53  T( COUNT( * ) AS
1e230 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74   SIGNED ) FROM t
1e240 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
1e250 2d 0d 0a 32 37 33 0d 0a 0d 0a 73 6b 69 70 69 66  -..273....skipif
1e260 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1e270 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1e280 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1e290 38 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  85..SELECT ALL +
1e2a0 20 4d 41 58 20 28 20 63 6f 6c 30 20 29 20 2a 20   MAX ( col0 ) * 
1e2b0 43 41 53 54 20 28 20 43 4f 55 4e 54 20 28 20 2a  CAST ( COUNT ( *
1e2c0 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20   ) AS INTEGER ) 
1e2d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
1e2e0 30 0d 0a 2d 2d 2d 2d 0d 0a 32 37 33 0d 0a 0d 0a  0..----..273....
1e2f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1e300 0a 53 45 4c 45 43 54 20 2d 20 28 20 2d 20 63 6f  .SELECT - ( - co
1e310 6c 32 20 29 20 2a 20 2b 20 63 6f 6c 31 20 41 53  l2 ) * + col1 AS
1e320 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
1e330 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
1e340 33 34 34 0d 0a 32 39 35 0d 0a 33 31 39 36 0d 0a  344..295..3196..
1e350 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e360 74 0d 0a 53 45 4c 45 43 54 20 2b 20 36 31 20 2a  t..SELECT + 61 *
1e370 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
1e380 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
1e390 57 48 45 52 45 20 4e 4f 54 20 37 36 20 4e 4f 54  WHERE NOT 76 NOT
1e3a0 20 49 4e 20 28 20 35 34 20 29 0d 0a 2d 2d 2d 2d   IN ( 54 )..----
1e3b0 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
1e3c0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1e3d0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1e3e0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1e3f0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1e400 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1e410 4c 45 43 54 20 2b 20 2b 20 34 39 20 2a 20 63 6f  LECT + + 49 * co
1e420 6c 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  l2 col0 FROM tab
1e430 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
1e440 0a 31 31 32 37 0d 0a 31 39 36 30 0d 0a 32 38 34  .1127..1960..284
1e450 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  2....onlyif mysq
1e460 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
1e470 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
1e480 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1e490 6c 61 62 65 6c 2d 36 38 39 0d 0a 53 45 4c 45 43  label-689..SELEC
1e4a0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63  T DISTINCT - + c
1e4b0 6f 6c 30 20 44 49 56 20 2d 20 63 6f 6c 30 20 63  ol0 DIV - col0 c
1e4c0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
1e4d0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   cor0..----..1..
1e4e0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1e4f0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1e500 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
1e510 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
1e520 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1e530 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1e540 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1e550 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1e560 36 38 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  689..SELECT DIST
1e570 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 30 20 2f 20  INCT - + col0 / 
1e580 2d 20 63 6f 6c 30 20 63 6f 6c 32 20 46 52 4f 4d  - col0 col2 FROM
1e590 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1e5a0 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20  ---..1....query 
1e5b0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
1e5c0 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
1e5d0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
1e5e0 54 20 63 6f 6c 30 20 2d 20 2d 20 63 6f 6c 31 20  T col0 - - col1 
1e5f0 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 63 6f  NOT BETWEEN - co
1e600 6c 32 20 2a 20 63 6f 6c 30 20 41 4e 44 20 2b 20  l2 * col0 AND + 
1e610 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  col1..----....on
1e620 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
1e630 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
1e640 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
1e650 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1e660 39 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  91..SELECT DISTI
1e670 4e 43 54 20 2d 20 63 6f 6c 32 20 2f 20 2b 20 63  NCT - col2 / + c
1e680 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48  ol0 FROM tab0 WH
1e690 45 52 45 20 35 35 20 2d 20 2d 20 63 6f 6c 32 20  ERE 55 - - col2 
1e6a0 4e 4f 54 20 49 4e 20 28 20 2b 20 43 41 53 54 28  NOT IN ( + CAST(
1e6b0 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
1e6c0 29 20 2b 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d  ) + + col1 )..--
1e6d0 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
1e6e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1e6f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1e700 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 31 0d 0a  sort label-691..
1e710 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1e720 2d 20 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 30 20  - col2 / + col0 
1e730 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
1e740 35 35 20 2d 20 2d 20 63 6f 6c 32 20 4e 4f 54 20  55 - - col2 NOT 
1e750 49 4e 20 28 20 2b 20 43 41 53 54 20 28 20 4e 55  IN ( + CAST ( NU
1e760 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
1e770 2b 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d  + + col1 )..----
1e780 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1e790 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1e7a0 49 4e 43 54 20 2d 20 63 6f 6c 31 20 46 52 4f 4d  INCT - col1 FROM
1e7b0 20 74 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c   tab0 WHERE NULL
1e7c0 20 3c 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d   < - col1..----.
1e7d0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1e7e0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
1e7f0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
1e800 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
1e810 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1e820 6c 61 62 65 6c 2d 36 39 33 0d 0a 53 45 4c 45 43  label-693..SELEC
1e830 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54  T DISTINCT COUNT
1e840 28 20 2d 20 28 20 2d 20 43 41 53 54 28 20 4e 55  ( - ( - CAST( NU
1e850 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 29  LL AS SIGNED ) )
1e860 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
1e870 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
1e880 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1e890 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1e8a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39  rowsort label-69
1e8b0 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  3..SELECT DISTIN
1e8c0 43 54 20 43 4f 55 4e 54 20 28 20 2d 20 28 20 2d  CT COUNT ( - ( -
1e8d0 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
1e8e0 49 4e 54 45 47 45 52 20 29 20 29 20 29 20 46 52  INTEGER ) ) ) FR
1e8f0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab0..----..0
1e900 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1e910 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1e920 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1e930 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 34  owsort label-694
1e940 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1e950 54 20 2d 20 39 20 2a 20 43 4f 55 4e 54 28 20 2a  T - 9 * COUNT( *
1e960 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
1e970 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d  tab2..----..-27.
1e980 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1e990 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1e9a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e9b0 74 20 6c 61 62 65 6c 2d 36 39 34 0d 0a 53 45 4c  t label-694..SEL
1e9c0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 39  ECT DISTINCT - 9
1e9d0 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   * COUNT ( * ) A
1e9e0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
1e9f0 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d 0a 0d 0a 71  ..----..-27....q
1ea00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1ea10 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20 63  SELECT ALL ( + c
1ea20 6f 6c 31 20 29 20 2a 20 2d 20 63 6f 6c 31 20 41  ol1 ) * - col1 A
1ea30 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
1ea40 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 36 0d 0a 2d 32  ..----..-196..-2
1ea50 32 30 39 0d 0a 2d 32 35 0d 0a 0d 0a 71 75 65 72  209..-25....quer
1ea60 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1ea70 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
1ea80 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
1ea90 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
1eaa0 45 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32 20  E col1 * + col2 
1eab0 3c 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  < + col2..----..
1eac0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1ead0 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
1eae0 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
1eaf0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1eb00 65 6c 2d 36 39 37 0d 0a 53 45 4c 45 43 54 20 41  el-697..SELECT A
1eb10 4c 4c 20 2b 20 63 6f 6c 32 20 44 49 56 20 2b 20  LL + col2 DIV + 
1eb20 32 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  27 AS col1 FROM 
1eb30 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
1eb40 2d 2d 0d 0a 30 0d 0a 31 0d 0a 32 0d 0a 0d 0a 73  --..0..1..2....s
1eb50 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1eb60 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1eb70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1eb80 62 65 6c 2d 36 39 37 0d 0a 53 45 4c 45 43 54 20  bel-697..SELECT 
1eb90 41 4c 4c 20 2b 20 63 6f 6c 32 20 2f 20 2b 20 32  ALL + col2 / + 2
1eba0 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  7 AS col1 FROM t
1ebb0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
1ebc0 2d 0d 0a 30 0d 0a 31 0d 0a 32 0d 0a 0d 0a 71 75  -..0..1..2....qu
1ebd0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1ebe0 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 2b 20 35  ELECT + col0 + 5
1ebf0 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
1ec00 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
1ec10 2d 0d 0a 31 33 39 0d 0a 31 34 39 0d 0a 36 37 0d  -..139..149..67.
1ec20 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1ec30 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
1ec40 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
1ec50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1ec60 62 65 6c 2d 36 39 39 0d 0a 53 45 4c 45 43 54 20  bel-699..SELECT 
1ec70 43 41 53 54 28 20 63 6f 6c 31 20 41 53 20 53 49  CAST( col1 AS SI
1ec80 47 4e 45 44 20 29 20 2b 20 63 6f 6c 31 20 41 53  GNED ) + col1 AS
1ec90 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
1eca0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
1ecb0 30 32 0d 0a 31 33 34 0d 0a 31 35 34 0d 0a 0d 0a  02..134..154....
1ecc0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1ecd0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1ece0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1ecf0 61 62 65 6c 2d 36 39 39 0d 0a 53 45 4c 45 43 54  abel-699..SELECT
1ed00 20 43 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20   CAST ( col1 AS 
1ed10 49 4e 54 45 47 45 52 20 29 20 2b 20 63 6f 6c 31  INTEGER ) + col1
1ed20 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1ed30 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
1ed40 0d 0a 31 30 32 0d 0a 31 33 34 0d 0a 31 35 34 0d  ..102..134..154.
1ed50 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1ed60 72 74 0d 0a 53 45 4c 45 43 54 20 38 31 20 2b 20  rt..SELECT 81 + 
1ed70 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63  col2 FROM tab2 c
1ed80 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 34 0d 0a  or0..----..104..
1ed90 31 32 31 0d 0a 31 33 39 0d 0a 0d 0a 6f 6e 6c 79  121..139....only
1eda0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
1edb0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
1edc0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1edd0 61 62 65 6c 2d 37 30 31 0d 0a 53 45 4c 45 43 54  abel-701..SELECT
1ede0 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e   DISTINCT + COUN
1edf0 54 28 20 2a 20 29 20 2b 20 35 32 20 2a 20 2b 20  T( * ) + 52 * + 
1ee00 39 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  97 AS col0 FROM 
1ee10 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 30 34 37  tab1..----..5047
1ee20 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1ee30 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1ee40 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1ee50 72 74 20 6c 61 62 65 6c 2d 37 30 31 0d 0a 53 45  rt label-701..SE
1ee60 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1ee70 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 35 32  COUNT ( * ) + 52
1ee80 20 2a 20 2b 20 39 37 20 41 53 20 63 6f 6c 30 20   * + 97 AS col0 
1ee90 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
1eea0 0a 35 30 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49  .5047....query I
1eeb0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1eec0 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
1eed0 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 28  b2 WHERE NOT + (
1eee0 20 2d 20 36 39 20 29 20 2a 20 63 6f 6c 32 20 49   - 69 ) * col2 I
1eef0 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  S NULL..----..9 
1ef00 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
1ef10 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33  o 75c998aa53ac83
1ef20 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61  218cbf2feb962d0a
1ef30 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  49....query I ro
1ef40 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1ef50 53 54 49 4e 43 54 20 2b 20 35 34 20 46 52 4f 4d  STINCT + 54 FROM
1ef60 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52   tab0 AS cor0 CR
1ef70 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
1ef80 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 35 34 0d   cor1..----..54.
1ef90 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1efa0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
1efb0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
1efc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1efd0 62 65 6c 2d 37 30 34 0d 0a 53 45 4c 45 43 54 20  bel-704..SELECT 
1efe0 41 4c 4c 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  ALL - CAST( NULL
1eff0 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
1f000 4d 20 74 61 62 32 20 63 6f 72 30 20 43 52 4f 53  M tab2 cor0 CROS
1f010 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63  S JOIN tab1 AS c
1f020 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  or1..----..9 val
1f030 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
1f040 64 37 61 37 39 30 31 65 34 37 63 31 35 31 35 35  d7a7901e47c15155
1f050 34 30 34 61 66 66 30 64 32 31 36 66 65 30 62 0d  404aff0d216fe0b.
1f060 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1f070 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1f080 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f090 74 20 6c 61 62 65 6c 2d 37 30 34 0d 0a 53 45 4c  t label-704..SEL
1f0a0 45 43 54 20 41 4c 4c 20 2d 20 43 41 53 54 20 28  ECT ALL - CAST (
1f0b0 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
1f0c0 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72   ) FROM tab2 cor
1f0d0 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
1f0e0 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  1 AS cor1..----.
1f0f0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
1f100 67 20 74 6f 20 63 64 37 61 37 39 30 31 65 34 37  g to cd7a7901e47
1f110 63 31 35 31 35 35 34 30 34 61 66 66 30 64 32 31  c15155404aff0d21
1f120 36 66 65 30 62 0d 0a 0d 0a 71 75 65 72 79 20 49  6fe0b....query I
1f130 49 49 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  IIIII rowsort..S
1f140 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
1f150 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61 62 32   FROM tab0, tab2
1f160 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
1f170 4f 54 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e  OT ( NULL ) IS N
1f180 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35  OT NULL..----..5
1f190 34 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  4 values hashing
1f1a0 20 74 6f 20 65 61 61 33 39 34 66 31 36 32 37 63   to eaa394f1627c
1f1b0 38 64 35 65 35 33 34 30 36 64 39 63 61 33 62 30  8d5e53406d9ca3b0
1f1c0 39 34 36 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  9469....onlyif m
1f1d0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1f1e0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1f1f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1f200 2d 37 30 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -706..SELECT DIS
1f210 54 49 4e 43 54 20 2b 20 2d 20 43 4f 55 4e 54 28  TINCT + - COUNT(
1f220 20 2a 20 29 20 2b 20 43 4f 55 4e 54 28 20 2a 20   * ) + COUNT( * 
1f230 29 20 46 52 4f 4d 20 28 20 74 61 62 30 20 41 53  ) FROM ( tab0 AS
1f240 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
1f250 20 74 61 62 32 20 41 53 20 63 6f 72 31 20 29 0d   tab2 AS cor1 ).
1f260 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
1f270 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1f280 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1f290 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1f2a0 2d 37 30 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -706..SELECT DIS
1f2b0 54 49 4e 43 54 20 2b 20 2d 20 43 4f 55 4e 54 20  TINCT + - COUNT 
1f2c0 28 20 2a 20 29 20 2b 20 43 4f 55 4e 54 20 28 20  ( * ) + COUNT ( 
1f2d0 2a 20 29 20 46 52 4f 4d 20 28 20 74 61 62 30 20  * ) FROM ( tab0 
1f2e0 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
1f2f0 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72 31 20  IN tab2 AS cor1 
1f300 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e  )..----..0....on
1f310 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1f320 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1f330 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1f340 20 6c 61 62 65 6c 2d 37 30 37 0d 0a 53 45 4c 45   label-707..SELE
1f350 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20  CT COUNT( * ) * 
1f360 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
1f370 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f  tab0 AS cor0 CRO
1f380 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20  SS JOIN tab0 AS 
1f390 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a  cor1..----..81..
1f3a0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1f3b0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1f3c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1f3d0 20 6c 61 62 65 6c 2d 37 30 37 0d 0a 53 45 4c 45   label-707..SELE
1f3e0 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a  CT COUNT ( * ) *
1f3f0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
1f400 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43  M tab0 AS cor0 C
1f410 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41  ROSS JOIN tab0 A
1f420 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 38 31  S cor1..----..81
1f430 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1f440 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1f450 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1f460 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 38  owsort label-708
1f470 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1f480 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  T + COUNT( * ) A
1f490 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
1f4a0 20 57 48 45 52 45 20 33 30 20 2b 20 2b 20 63 6f   WHERE 30 + + co
1f4b0 6c 31 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  l1 = NULL..----.
1f4c0 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
1f4d0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1f4e0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1f4f0 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 38 0d 0a  sort label-708..
1f500 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1f510 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  + COUNT ( * ) AS
1f520 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
1f530 57 48 45 52 45 20 33 30 20 2b 20 2b 20 63 6f 6c  WHERE 30 + + col
1f540 31 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  1 = NULL..----..
1f550 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  0....query III r
1f560 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
1f570 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1f580 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  r0 WHERE NULL NO
1f590 54 20 42 45 54 57 45 45 4e 20 28 20 4e 55 4c 4c  T BETWEEN ( NULL
1f5a0 20 29 20 41 4e 44 20 2b 20 63 6f 6c 32 0d 0a 2d   ) AND + col2..-
1f5b0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
1f5c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1f5d0 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
1f5e0 63 6f 72 30 20 57 48 45 52 45 20 32 31 20 4e 4f  cor0 WHERE 21 NO
1f5f0 54 20 49 4e 20 28 20 2d 20 2d 20 63 6f 6c 30 20  T IN ( - - col0 
1f600 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  )..----..9 value
1f610 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63  s hashing to 75c
1f620 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62  998aa53ac83218cb
1f630 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d  f2feb962d0a49...
1f640 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1f650 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1f660 54 20 2b 20 32 32 20 2a 20 39 30 20 2a 20 2b 20  T + 22 * 90 * + 
1f670 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  col1 + col2 FROM
1f680 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
1f690 2d 2d 2d 0d 0a 31 30 31 30 30 33 0d 0a 31 33 32  ---..101003..132
1f6a0 37 31 38 0d 0a 31 35 32 35 30 30 0d 0a 0d 0a 6f  718..152500....o
1f6b0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1f6c0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
1f6d0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
1f6e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1f6f0 37 31 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  712..SELECT ALL 
1f700 2b 20 63 6f 6c 30 20 2b 20 2b 20 43 41 53 54 28  + col0 + + CAST(
1f710 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
1f720 29 20 2f 20 2b 20 43 41 53 54 28 20 2d 20 43 41  ) / + CAST( - CA
1f730 53 54 28 20 2b 20 36 35 20 41 53 20 53 49 47 4e  ST( + 65 AS SIGN
1f740 45 44 20 29 20 41 53 20 53 49 47 4e 45 44 20 29  ED ) AS SIGNED )
1f750 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1f760 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
1f770 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
1f780 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
1f790 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1f7a0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1f7b0 73 6f 72 74 20 6c 61 62 65 6c 2d 37 31 32 0d 0a  sort label-712..
1f7c0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
1f7d0 30 20 2b 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  0 + + CAST ( NUL
1f7e0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2f  L AS INTEGER ) /
1f7f0 20 2b 20 43 41 53 54 20 28 20 2d 20 43 41 53 54   + CAST ( - CAST
1f800 20 28 20 2b 20 36 35 20 41 53 20 49 4e 54 45 47   ( + 65 AS INTEG
1f810 45 52 20 29 20 41 53 20 49 4e 54 45 47 45 52 20  ER ) AS INTEGER 
1f820 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
1f830 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
1f840 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
1f850 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
1f860 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1f870 49 53 54 49 4e 43 54 20 28 20 2b 20 63 6f 6c 32  ISTINCT ( + col2
1f880 20 29 20 2b 20 32 31 20 46 52 4f 4d 20 74 61 62   ) + 21 FROM tab
1f890 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
1f8a0 0a 31 32 30 0d 0a 33 31 0d 0a 36 38 0d 0a 0d 0a  .120..31..68....
1f8b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1f8c0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
1f8d0 6c 32 20 2b 20 2b 20 2d 20 37 34 20 41 53 20 63  l2 + + - 74 AS c
1f8e0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
1f8f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37   cor0..----..-27
1f900 0d 0a 2d 36 34 0d 0a 32 35 0d 0a 0d 0a 71 75 65  ..-64..25....que
1f910 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1f920 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
1f930 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
1f940 48 45 52 45 20 28 20 2b 20 63 6f 6c 31 20 29 20  HERE ( + col1 ) 
1f950 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
1f960 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
1f970 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35 64  ing to c4b42765d
1f980 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35 33  ff94eaaa46040e53
1f990 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79  7fb43b7....query
1f9a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1f9b0 43 54 20 28 20 63 6f 6c 32 20 29 20 2b 20 2b 20  CT ( col2 ) + + 
1f9c0 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 30 20 41 53  col2 * - col0 AS
1f9d0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
1f9e0 63 6f 72 30 20 57 48 45 52 45 20 28 20 2d 20 63  cor0 WHERE ( - c
1f9f0 6f 6c 32 20 29 20 42 45 54 57 45 45 4e 20 28 20  ol2 ) BETWEEN ( 
1fa00 4e 55 4c 4c 20 29 20 41 4e 44 20 28 20 4e 55 4c  NULL ) AND ( NUL
1fa10 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  L )..----....que
1fa20 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1fa30 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
1fa40 6c 32 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c  l2 - col2 AS col
1fa50 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
1fa60 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c  or0 WHERE ( NULL
1fa70 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
1fa80 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1fa90 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
1faa0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
1fab0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1fac0 72 74 20 6c 61 62 65 6c 2d 37 31 38 0d 0a 53 45  rt label-718..SE
1fad0 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2a 20 43 41  LECT + col1 * CA
1fae0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
1faf0 45 44 20 29 20 2b 20 2b 20 36 37 20 41 53 20 63  ED ) + + 67 AS c
1fb00 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol2 FROM tab2 WH
1fb10 45 52 45 20 28 20 2b 20 2b 20 63 6f 6c 32 20 29  ERE ( + + col2 )
1fb20 20 3c 3d 20 28 20 34 32 20 29 0d 0a 2d 2d 2d 2d   <= ( 42 )..----
1fb30 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
1fb40 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1fb50 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1fb60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1fb70 61 62 65 6c 2d 37 31 38 0d 0a 53 45 4c 45 43 54  abel-718..SELECT
1fb80 20 2b 20 63 6f 6c 31 20 2a 20 43 41 53 54 20 28   + col1 * CAST (
1fb90 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
1fba0 20 29 20 2b 20 2b 20 36 37 20 41 53 20 63 6f 6c   ) + + 67 AS col
1fbb0 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  2 FROM tab2 WHER
1fbc0 45 20 28 20 2b 20 2b 20 63 6f 6c 32 20 29 20 3c  E ( + + col2 ) <
1fbd0 3d 20 28 20 34 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a  = ( 42 )..----..
1fbe0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e  NULL..NULL....on
1fbf0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1fc00 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1fc10 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1fc20 20 6c 61 62 65 6c 2d 37 31 39 0d 0a 53 45 4c 45   label-719..SELE
1fc30 43 54 20 41 4c 4c 20 2d 20 4d 49 4e 28 20 2b 20  CT ALL - MIN( + 
1fc40 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31  col1 ) FROM tab1
1fc50 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 0d 0a 73 6b  ..----..-5....sk
1fc60 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1fc70 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1fc80 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1fc90 65 6c 2d 37 31 39 0d 0a 53 45 4c 45 43 54 20 41  el-719..SELECT A
1fca0 4c 4c 20 2d 20 4d 49 4e 20 28 20 2b 20 63 6f 6c  LL - MIN ( + col
1fcb0 31 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  1 ) FROM tab1..-
1fcc0 2d 2d 2d 0d 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79 69  ---..-5....onlyi
1fcd0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
1fce0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
1fcf0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1fd00 62 65 6c 2d 37 32 30 0d 0a 53 45 4c 45 43 54 20  bel-720..SELECT 
1fd10 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20  DISTINCT COUNT( 
1fd20 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  - col0 ) FROM ta
1fd30 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  b2..----..3....s
1fd40 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1fd50 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1fd60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1fd70 62 65 6c 2d 37 32 30 0d 0a 53 45 4c 45 43 54 20  bel-720..SELECT 
1fd80 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28  DISTINCT COUNT (
1fd90 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   - col0 ) FROM t
1fda0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  ab2..----..3....
1fdb0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1fdc0 0a 53 45 4c 45 43 54 20 28 20 63 6f 6c 32 20 29  .SELECT ( col2 )
1fdd0 20 2b 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f 4d   + + - col0 FROM
1fde0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33   tab1..----..-23
1fdf0 0d 0a 2d 32 36 0d 0a 34 35 0d 0a 0d 0a 71 75 65  ..-26..45....que
1fe00 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1fe10 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
1fe20 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
1fe30 20 4e 55 4c 4c 20 3e 3d 20 2b 20 39 37 20 2a 20   NULL >= + 97 * 
1fe40 2d 20 38 33 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  - 83..----....on
1fe50 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
1fe60 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
1fe70 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
1fe80 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
1fe90 32 33 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 28  23..SELECT CAST(
1fea0 20 2b 20 37 38 20 41 53 20 53 49 47 4e 45 44 20   + 78 AS SIGNED 
1feb0 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
1fec0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 38 0d 0a 37  or0..----..78..7
1fed0 38 0d 0a 37 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  8..78....skipif 
1fee0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1fef0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1ff00 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 32  rowsort label-72
1ff10 33 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 20 28  3..SELECT CAST (
1ff20 20 2b 20 37 38 20 41 53 20 49 4e 54 45 47 45 52   + 78 AS INTEGER
1ff30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
1ff40 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 38 0d 0a  cor0..----..78..
1ff50 37 38 0d 0a 37 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  78..78....onlyif
1ff60 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
1ff70 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
1ff80 65 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67  e: DIV for integ
1ff90 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
1ffa0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1ffb0 61 62 65 6c 2d 37 32 34 0d 0a 53 45 4c 45 43 54  abel-724..SELECT
1ffc0 20 41 4c 4c 20 2b 20 2b 20 43 41 53 54 28 20 63   ALL + + CAST( c
1ffd0 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol2 AS SIGNED ) 
1ffe0 2b 20 2b 20 31 33 20 44 49 56 20 2b 20 63 6f 6c  + + 13 DIV + col
1fff0 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
20000 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34  or0..----..10..4
20010 37 0d 0a 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  7..99....skipif 
20020 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
20030 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
20040 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 32  rowsort label-72
20050 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  4..SELECT ALL + 
20060 2b 20 43 41 53 54 20 28 20 63 6f 6c 32 20 41 53  + CAST ( col2 AS
20070 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 31   INTEGER ) + + 1
20080 33 20 2f 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  3 / + col0 FROM 
20090 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
200a0 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a 39 39 0d 0a  --..10..47..99..
200b0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
200c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
200d0 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45  OM tab2 cor0 WHE
200e0 52 45 20 2b 20 63 6f 6c 31 20 3c 3d 20 2b 20 37  RE + col1 <= + 7
200f0 38 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 28  8 * - - col2 + (
20100 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 30 20 29   col0 + - col0 )
20110 20 2a 20 2b 20 39 34 0d 0a 2d 2d 2d 2d 0d 0a 39   * + 94..----..9
20120 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
20130 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38  to 75c998aa53ac8
20140 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30  3218cbf2feb962d0
20150 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  a49....query I r
20160 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
20170 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32 20 2d 20 63  ol1 * + col2 - c
20180 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
20190 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
201a0 2d 2d 2d 0d 0a 30 0d 0a 32 30 30 0d 0a 33 37 36  ---..0..200..376
201b0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  0....query III r
201c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
201d0 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 63  LL * FROM tab1 c
201e0 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20 2a  or0 WHERE col1 *
201f0 20 2b 20 2d 20 63 6f 6c 32 20 49 53 20 4e 4f 54   + - col2 IS NOT
20200 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
20210 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
20220 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34   c6c0a4111b36d04
20230 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61  dbc811a11e4d54ca
20240 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  d....onlyif mysq
20250 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
20260 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
20270 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
20280 6c 61 62 65 6c 2d 37 32 38 0d 0a 53 45 4c 45 43  label-728..SELEC
20290 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
202a0 31 20 2b 20 2d 20 63 6f 6c 30 20 44 49 56 20 63  1 + - col0 DIV c
202b0 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
202c0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
202d0 2d 2d 2d 0d 0a 2d 31 32 0d 0a 31 31 0d 0a 34 36  ---..-12..11..46
202e0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
202f0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
20300 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
20310 72 74 20 6c 61 62 65 6c 2d 37 32 38 0d 0a 53 45  rt label-728..SE
20320 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
20330 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 30 20 2f 20  col1 + - col0 / 
20340 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f  col1 AS col0 FRO
20350 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
20360 2d 2d 2d 2d 0d 0a 2d 31 32 0d 0a 31 31 0d 0a 34  ----..-12..11..4
20370 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
20380 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
20390 54 49 4e 43 54 20 2b 20 39 35 20 2a 20 2d 20 35  TINCT + 95 * - 5
203a0 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  5 AS col0 FROM t
203b0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
203c0 2d 0d 0a 2d 35 32 32 35 0d 0a 0d 0a 71 75 65 72  -..-5225....quer
203d0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
203e0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
203f0 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
20400 2b 20 37 35 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d 2d  + 75 >= NULL..--
20410 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
20420 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
20430 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
20440 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
20450 52 45 20 37 33 20 2b 20 2b 20 31 39 20 49 53 20  RE 73 + + 19 IS 
20460 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
20470 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
20480 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
20490 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
204a0 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  43b7....query I 
204b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
204c0 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20  DISTINCT + col0 
204d0 2a 20 2d 20 63 6f 6c 30 20 2a 20 2b 20 28 20 2b  * - col0 * + ( +
204e0 20 63 6f 6c 31 20 29 20 2a 20 2b 20 2b 20 63 6f   col1 ) * + + co
204f0 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
20500 2d 2d 0d 0a 2d 32 30 31 38 35 30 38 38 0d 0a 2d  --..-20185088..-
20510 32 38 32 36 35 36 32 35 0d 0a 2d 34 39 36 34 31  28265625..-49641
20520 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  36....query I ro
20530 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
20540 4c 20 34 35 20 2a 20 63 6f 6c 30 20 2a 20 2b 20  L 45 * col0 * + 
20550 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46  + col0 AS col1 F
20560 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
20570 31 31 37 30 34 35 0d 0a 33 32 35 31 32 35 0d 0a  117045..325125..
20580 33 37 32 36 34 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  372645....onlyif
20590 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
205a0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
205b0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
205c0 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 34 0d 0a  sort label-734..
205d0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41 53  SELECT ALL - CAS
205e0 54 28 20 2d 20 2d 20 63 6f 6c 31 20 41 53 20 53  T( - - col1 AS S
205f0 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
20600 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
20610 4e 55 4c 4c 20 49 4e 20 28 20 63 6f 6c 32 20 29  NULL IN ( col2 )
20620 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
20630 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
20640 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
20650 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
20660 33 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  34..SELECT ALL -
20670 20 43 41 53 54 20 28 20 2d 20 2d 20 63 6f 6c 31   CAST ( - - col1
20680 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
20690 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
206a0 57 48 45 52 45 20 4e 55 4c 4c 20 49 4e 20 28 20  WHERE NULL IN ( 
206b0 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col2 )..----....
206c0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
206d0 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49  AST syntax: DECI
206e0 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  MAL type: ..quer
206f0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
20700 62 65 6c 2d 37 33 35 0d 0a 53 45 4c 45 43 54 20  bel-735..SELECT 
20710 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ALL * FROM tab0 
20720 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
20730 54 20 28 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  T ( - CAST( NULL
20740 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 29 20   AS DECIMAL ) ) 
20750 2d 20 2d 20 2d 20 63 6f 6c 30 20 49 53 20 4e 55  - - - col0 IS NU
20760 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  LL..----....skip
20770 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
20780 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
20790 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
207a0 65 6c 2d 37 33 35 0d 0a 53 45 4c 45 43 54 20 41  el-735..SELECT A
207b0 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41  LL * FROM tab0 A
207c0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
207d0 20 28 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c   ( - CAST ( NULL
207e0 20 41 53 20 52 45 41 4c 20 29 20 29 20 2d 20 2d   AS REAL ) ) - -
207f0 20 2d 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d   - col0 IS NULL.
20800 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
20810 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
20820 20 41 4c 4c 20 33 36 20 46 52 4f 4d 20 74 61 62   ALL 36 FROM tab
20830 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
20840 4e 4f 54 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 32  NOT + col2 * - 2
20850 30 20 49 4e 20 28 20 2b 20 35 35 20 2b 20 2d 20  0 IN ( + 55 + - 
20860 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 33 36  col0 )..----..36
20870 0d 0a 33 36 0d 0a 33 36 0d 0a 0d 0a 6f 6e 6c 79  ..36..36....only
20880 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
20890 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
208a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
208b0 61 62 65 6c 2d 37 33 37 0d 0a 53 45 4c 45 43 54  abel-737..SELECT
208c0 20 2b 20 38 30 20 2a 20 43 4f 55 4e 54 28 20 2a   + 80 * COUNT( *
208d0 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
208e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 30 0d  cor0..----..240.
208f0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
20900 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
20910 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
20920 74 20 6c 61 62 65 6c 2d 37 33 37 0d 0a 53 45 4c  t label-737..SEL
20930 45 43 54 20 2b 20 38 30 20 2a 20 43 4f 55 4e 54  ECT + 80 * COUNT
20940 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30   ( * ) FROM tab0
20950 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
20960 32 34 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  240....onlyif my
20970 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
20980 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
20990 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
209a0 74 20 6c 61 62 65 6c 2d 37 33 38 0d 0a 53 45 4c  t label-738..SEL
209b0 45 43 54 20 2b 20 2b 20 33 36 20 44 49 56 20 2b  ECT + + 36 DIV +
209c0 20 63 6f 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20   col0 col0 FROM 
209d0 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
209e0 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73  --..0..0..0....s
209f0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
20a00 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
20a10 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
20a20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
20a30 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
20a40 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
20a50 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
20a60 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 38  owsort label-738
20a70 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 33 36 20  ..SELECT + + 36 
20a80 2f 20 2b 20 63 6f 6c 30 20 63 6f 6c 30 20 46 52  / + col0 col0 FR
20a90 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
20aa0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
20ab0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
20ac0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
20ad0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
20ae0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
20af0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
20b00 6c 61 62 65 6c 2d 37 33 39 0d 0a 53 45 4c 45 43  label-739..SELEC
20b10 54 20 41 4c 4c 20 2d 20 2b 20 43 41 53 54 28 20  T ALL - + CAST( 
20b20 2b 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20  + SUM( DISTINCT 
20b30 2b 20 2d 20 33 31 20 29 20 41 53 20 53 49 47 4e  + - 31 ) AS SIGN
20b40 45 44 20 29 20 41 53 20 63 6f 6c 31 2c 20 35 39  ED ) AS col1, 59
20b50 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
20b60 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
20b70 0d 0a 33 31 0d 0a 35 39 0d 0a 0d 0a 73 6b 69 70  ..31..59....skip
20b80 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
20b90 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
20ba0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
20bb0 6c 2d 37 33 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-739..SELECT AL
20bc0 4c 20 2d 20 2b 20 43 41 53 54 20 28 20 2b 20 53  L - + CAST ( + S
20bd0 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  UM ( DISTINCT + 
20be0 2d 20 33 31 20 29 20 41 53 20 49 4e 54 45 47 45  - 31 ) AS INTEGE
20bf0 52 20 29 20 41 53 20 63 6f 6c 31 2c 20 35 39 20  R ) AS col1, 59 
20c00 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
20c10 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
20c20 0a 33 31 0d 0a 35 39 0d 0a 0d 0a 71 75 65 72 79  .31..59....query
20c30 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
20c40 43 54 20 44 49 53 54 49 4e 43 54 20 35 36 20 2b  CT DISTINCT 56 +
20c50 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
20c60 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
20c70 54 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20  T col1 + + col2 
20c80 2a 20 2b 20 2d 20 28 20 2b 20 2d 20 39 20 29 20  * + - ( + - 9 ) 
20c90 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31  IS NULL..----..1
20ca0 30 33 0d 0a 31 35 35 0d 0a 36 36 0d 0a 0d 0a 71  03..155..66....q
20cb0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
20cc0 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 2c 20  .SELECT + col1, 
20cd0 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  5 AS col0 FROM t
20ce0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 35 0d  ab0..----..1..5.
20cf0 0a 32 31 0d 0a 35 0d 0a 38 31 0d 0a 35 0d 0a 0d  .21..5..81..5...
20d00 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
20d10 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
20d20 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
20d30 6f 72 74 20 6c 61 62 65 6c 2d 37 34 32 0d 0a 53  ort label-742..S
20d40 45 4c 45 43 54 20 2b 20 53 55 4d 28 20 41 4c 4c  ELECT + SUM( ALL
20d50 20 2b 20 63 6f 6c 32 20 29 20 2a 20 31 35 20 46   + col2 ) * 15 F
20d60 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
20d70 32 33 34 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  2340....skipif m
20d80 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
20d90 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
20da0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 32  owsort label-742
20db0 0d 0a 53 45 4c 45 43 54 20 2b 20 53 55 4d 20 28  ..SELECT + SUM (
20dc0 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 29 20 2a 20   ALL + col2 ) * 
20dd0 31 35 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  15 FROM tab0..--
20de0 2d 2d 0d 0a 32 33 34 30 0d 0a 0d 0a 71 75 65 72  --..2340....quer
20df0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
20e00 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
20e10 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20  2 WHERE NOT ( - 
20e20 2d 20 28 20 2b 20 63 6f 6c 32 20 29 20 2a 20 2b  - ( + col2 ) * +
20e30 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 2b   col0 * - col1 +
20e40 20 63 6f 6c 30 20 29 20 3c 20 4e 55 4c 4c 0d 0a   col0 ) < NULL..
20e50 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
20e60 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
20e70 41 4c 4c 20 2d 20 2d 20 63 6f 6c 30 20 46 52 4f  ALL - - col0 FRO
20e80 4d 20 74 61 62 30 20 57 48 45 52 45 20 28 20 4e  M tab0 WHERE ( N
20e90 55 4c 4c 20 29 20 3c 20 2d 20 37 36 0d 0a 2d 2d  ULL ) < - 76..--
20ea0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  --....query II r
20eb0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
20ec0 4c 4c 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c  LL - col2 AS col
20ed0 32 2c 20 63 6f 6c 32 20 2a 20 2b 20 33 30 20 46  2, col2 * + 30 F
20ee0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
20ef0 2d 35 39 0d 0a 31 37 37 30 0d 0a 2d 36 38 0d 0a  -59..1770..-68..
20f00 32 30 34 30 0d 0a 2d 39 36 0d 0a 32 38 38 30 0d  2040..-96..2880.
20f10 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
20f20 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
20f30 4e 43 54 20 2d 20 33 30 20 2b 20 2b 20 2d 20 63  NCT - 30 + + - c
20f40 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol2 AS col1 FROM
20f50 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
20f60 2d 2d 2d 0d 0a 2d 35 33 0d 0a 2d 37 30 0d 0a 2d  ---..-53..-70..-
20f70 38 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  88....onlyif mys
20f80 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
20f90 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
20fa0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
20fb0 34 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 31  47..SELECT ALL 1
20fc0 36 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  6 * - COUNT( * )
20fd0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
20fe0 0d 0a 2d 34 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-48....skipif 
20ff0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
21000 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
21010 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34  rowsort label-74
21020 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 31 36  7..SELECT ALL 16
21030 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   * - COUNT ( * )
21040 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
21050 0d 0a 2d 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-48....query I
21060 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
21070 20 63 6f 6c 30 20 2b 20 31 32 20 2b 20 2b 20 63   col0 + 12 + + c
21080 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
21090 2d 2d 2d 0d 0a 31 30 34 0d 0a 31 34 30 0d 0a 31  ---..104..140..1
210a0 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  62....query III 
210b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
210c0 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
210d0 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d  tab2 WHERE NOT -
210e0 20 32 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d   21 IS NULL..---
210f0 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
21100 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35  ing to 75c998aa5
21110 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39  3ac83218cbf2feb9
21120 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79  62d0a49....query
21130 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
21140 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
21150 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
21160 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 3e 3d  RE NOT ( NULL >=
21170 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   NULL )..----...
21180 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
21190 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
211a0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
211b0 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 32   cor0 WHERE col2
211c0 20 2f 20 63 6f 6c 31 20 3d 20 4e 55 4c 4c 0d 0a   / col1 = NULL..
211d0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
211e0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
211f0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
21200 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
21210 6f 72 74 20 6c 61 62 65 6c 2d 37 35 32 0d 0a 53  ort label-752..S
21220 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
21230 20 2b 20 63 6f 6c 30 20 44 49 56 20 2b 20 63 6f   + col0 DIV + co
21240 6c 32 2c 20 33 39 20 41 53 20 63 6f 6c 30 20 46  l2, 39 AS col0 F
21250 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d  ROM tab2 cor0..-
21260 2d 2d 2d 0d 0a 2d 31 0d 0a 33 39 0d 0a 2d 32 0d  ---..-1..39..-2.
21270 0a 33 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .39....skipif my
21280 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
21290 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
212a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 32  owsort label-752
212b0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
212c0 54 20 2d 20 2b 20 63 6f 6c 30 20 2f 20 2b 20 63  T - + col0 / + c
212d0 6f 6c 32 2c 20 33 39 20 41 53 20 63 6f 6c 30 20  ol2, 39 AS col0 
212e0 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a  FROM tab2 cor0..
212f0 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 33 39 0d 0a 2d 32  ----..-1..39..-2
21300 0d 0a 33 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..39....onlyif m
21310 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
21320 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
21330 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
21340 2d 37 35 33 0d 0a 53 45 4c 45 43 54 20 44 49 53  -753..SELECT DIS
21350 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a  TINCT + COUNT( *
21360 20 29 20 2b 20 2d 20 33 32 20 46 52 4f 4d 20 74   ) + - 32 FROM t
21370 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
21380 2d 0d 0a 2d 32 39 0d 0a 0d 0a 73 6b 69 70 69 66  -..-29....skipif
21390 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
213a0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
213b0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
213c0 35 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  53..SELECT DISTI
213d0 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  NCT + COUNT ( * 
213e0 29 20 2b 20 2d 20 33 32 20 46 52 4f 4d 20 74 61  ) + - 32 FROM ta
213f0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
21400 0d 0a 2d 32 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-29....query I
21410 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
21420 20 2d 20 2b 20 33 37 20 2b 20 2b 20 36 30 20 41   - + 37 + + 60 A
21430 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
21440 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
21450 32 33 0d 0a 32 33 0d 0a 32 33 0d 0a 0d 0a 73 6b  23..23..23....sk
21460 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
21470 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
21480 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
21490 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
214a0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20  lumns..query II 
214b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
214c0 41 4c 4c 20 2d 20 35 38 20 2b 20 63 6f 6c 32 20  ALL - 58 + col2 
214d0 41 53 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 32 20  AS col0, - col2 
214e0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
214f0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
21500 38 0d 0a 2d 34 30 0d 0a 2d 33 35 0d 0a 2d 32 33  8..-40..-35..-23
21510 0d 0a 30 0d 0a 2d 35 38 0d 0a 0d 0a 71 75 65 72  ..0..-58....quer
21520 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
21530 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
21540 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
21550 45 52 45 20 2b 20 31 37 20 2a 20 2b 20 2d 20 35  ERE + 17 * + - 5
21560 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
21570 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21580 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
21590 28 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  ( + col0 ) FROM 
215a0 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45 20  tab0 cor0 WHERE 
215b0 4e 55 4c 4c 20 49 4e 20 28 20 31 34 2c 20 2d 20  NULL IN ( 14, - 
215c0 28 20 2d 20 28 20 2b 20 2b 20 63 6f 6c 30 20 29  ( - ( + + col0 )
215d0 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b   ) )..----....sk
215e0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
215f0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
21600 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
21610 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
21620 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
21630 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
21640 20 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f 4d 20   col0 col1 FROM 
21650 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
21660 52 45 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e  RE ( NULL ) IS N
21670 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a  ULL..----..-15..
21680 2d 38 37 0d 0a 2d 39 37 0d 0a 0d 0a 71 75 65 72  -87..-97....quer
21690 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
216a0 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
216b0 20 74 61 62 30 20 57 48 45 52 45 20 2d 20 63 6f   tab0 WHERE - co
216c0 6c 30 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  l0 > NULL..----.
216d0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
216e0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
216f0 4e 43 54 20 28 20 2d 20 2d 20 35 38 20 29 20 46  NCT ( - - 58 ) F
21700 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
21710 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  58....onlyif mys
21720 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
21730 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
21740 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
21750 36 31 0d 0a 53 45 4c 45 43 54 20 2b 20 38 33 20  61..SELECT + 83 
21760 2a 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  * + + COUNT( * )
21770 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
21780 0d 0a 32 34 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..249....skipif 
21790 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
217a0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
217b0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36  rowsort label-76
217c0 31 0d 0a 53 45 4c 45 43 54 20 2b 20 38 33 20 2a  1..SELECT + 83 *
217d0 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
217e0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
217f0 0d 0a 32 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..249....onlyif 
21800 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
21810 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
21820 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
21830 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
21840 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 32 0d  wsort label-762.
21850 0a 53 45 4c 45 43 54 20 43 41 53 54 28 20 2b 20  .SELECT CAST( + 
21860 2b 20 53 55 4d 28 20 2d 20 63 6f 6c 31 20 29 20  + SUM( - col1 ) 
21870 41 53 20 53 49 47 4e 45 44 20 29 20 2d 20 35 33  AS SIGNED ) - 53
21880 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
21890 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 38 0d 0a  b2..----..-248..
218a0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
218b0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
218c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
218d0 20 6c 61 62 65 6c 2d 37 36 32 0d 0a 53 45 4c 45   label-762..SELE
218e0 43 54 20 43 41 53 54 20 28 20 2b 20 2b 20 53 55  CT CAST ( + + SU
218f0 4d 20 28 20 2d 20 63 6f 6c 31 20 29 20 41 53 20  M ( - col1 ) AS 
21900 49 4e 54 45 47 45 52 20 29 20 2d 20 35 33 20 41  INTEGER ) - 53 A
21910 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
21920 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 38 0d 0a 0d 0a  ..----..-248....
21930 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
21940 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
21950 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
21960 72 74 20 6c 61 62 65 6c 2d 37 36 33 0d 0a 53 45  rt label-763..SE
21970 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55  LECT DISTINCT SU
21980 4d 28 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 32 20  M( ALL + - col2 
21990 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
219a0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 0d  ab2..----..-121.
219b0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
219c0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
219d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
219e0 74 20 6c 61 62 65 6c 2d 37 36 33 0d 0a 53 45 4c  t label-763..SEL
219f0 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55 4d  ECT DISTINCT SUM
21a00 20 28 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 32 20   ( ALL + - col2 
21a10 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
21a20 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 0d  ab2..----..-121.
21a30 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
21a40 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
21a50 4e 43 54 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  NCT + col2 AS co
21a60 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
21a70 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
21a80 55 4c 4c 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20  ULL IS NULL AND 
21a90 2b 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20  + col0 * + col0 
21aa0 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
21ab0 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
21ac0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
21ad0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
21ae0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36  rowsort label-76
21af0 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  5..SELECT DISTIN
21b00 43 54 20 4d 49 4e 28 20 41 4c 4c 20 2b 20 2b 20  CT MIN( ALL + + 
21b10 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46  col1 ) AS col1 F
21b20 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
21b30 35 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  51....skipif mys
21b40 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
21b50 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
21b60 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 35 0d 0a  sort label-765..
21b70 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
21b80 4d 49 4e 20 28 20 41 4c 4c 20 2b 20 2b 20 63 6f  MIN ( ALL + + co
21b90 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l1 ) AS col1 FRO
21ba0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 35 31  M tab2..----..51
21bb0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
21bc0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
21bd0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
21be0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 36  owsort label-766
21bf0 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e 28 20  ..SELECT - MIN( 
21c00 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 31  col0 ) FROM tab1
21c10 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a 73  ..----..-51....s
21c20 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
21c30 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
21c40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
21c50 62 65 6c 2d 37 36 36 0d 0a 53 45 4c 45 43 54 20  bel-766..SELECT 
21c60 2d 20 4d 49 4e 20 28 20 63 6f 6c 30 20 29 20 46  - MIN ( col0 ) F
21c70 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
21c80 2d 35 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  -51....query III
21c90 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
21ca0 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
21cb0 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45 54 57  RE NOT NULL BETW
21cc0 45 45 4e 20 2d 20 63 6f 6c 32 20 41 4e 44 20 2d  EEN - col2 AND -
21cd0 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   col2..----....q
21ce0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
21cf0 53 45 4c 45 43 54 20 63 6f 6c 32 20 2b 20 63 6f  SELECT col2 + co
21d00 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l2 FROM tab0 WHE
21d10 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 3e 3d  RE NOT + col0 >=
21d20 20 2b 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d   + + col1..----.
21d30 0a 39 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .94....onlyif my
21d40 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
21d50 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
21d60 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
21d70 6f 72 74 20 6c 61 62 65 6c 2d 37 36 39 0d 0a 53  ort label-769..S
21d80 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
21d90 32 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 2b 20  2 WHERE NOT + + 
21da0 38 31 20 3d 20 2b 20 63 6f 6c 30 20 2a 20 2b 20  81 = + col0 * + 
21db0 63 6f 6c 31 20 2a 20 43 41 53 54 28 20 4e 55 4c  col1 * CAST( NUL
21dc0 4c 20 41 53 20 53 49 47 4e 45 44 20 29 0d 0a 2d  L AS SIGNED )..-
21dd0 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ---....skipif my
21de0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
21df0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20  ible..query III 
21e00 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36  rowsort label-76
21e10 39 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  9..SELECT * FROM
21e20 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
21e30 2b 20 2b 20 38 31 20 3d 20 2b 20 63 6f 6c 30 20  + + 81 = + col0 
21e40 2a 20 2b 20 63 6f 6c 31 20 2a 20 43 41 53 54 20  * + col1 * CAST 
21e50 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
21e60 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  R )..----....que
21e70 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
21e80 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
21e90 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
21ea0 20 4e 4f 54 20 63 6f 6c 31 20 49 4e 20 28 20 2b   NOT col1 IN ( +
21eb0 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39   col0 )..----..9
21ec0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
21ed0 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34  to c4b42765dff94
21ee0 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34  eaaa46040e537fb4
21ef0 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  3b7....query III
21f00 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
21f10 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
21f20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
21f30 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63  ULL NOT IN ( - c
21f40 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31 2c 20 63 6f  ol2 + - col1, co
21f50 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  l1 )..----....qu
21f60 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
21f70 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
21f80 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
21f90 57 48 45 52 45 20 2d 20 63 6f 6c 30 20 49 53 20  WHERE - col0 IS 
21fa0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
21fb0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
21fc0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
21fd0 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
21fe0 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
21ff0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
22000 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
22010 49 53 54 49 4e 43 54 20 2d 20 2b 20 36 33 20 2a  ISTINCT - + 63 *
22020 20 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f 4d 20   col2 col0 FROM 
22030 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
22040 2d 2d 0d 0a 2d 31 34 34 39 0d 0a 2d 32 35 32 30  --..-1449..-2520
22050 0d 0a 2d 33 36 35 34 0d 0a 0d 0a 71 75 65 72 79  ..-3654....query
22060 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
22070 43 54 20 2b 20 34 39 20 2a 20 31 39 20 41 53 20  CT + 49 * 19 AS 
22080 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
22090 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 33  S cor0..----..93
220a0 31 0d 0a 39 33 31 0d 0a 39 33 31 0d 0a 0d 0a 73  1..931..931....s
220b0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
220c0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
220d0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
220e0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
220f0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
22100 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
22110 41 4c 4c 20 35 39 20 63 6f 6c 32 20 46 52 4f 4d  ALL 59 col2 FROM
22120 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
22130 2d 2d 2d 0d 0a 35 39 0d 0a 35 39 0d 0a 35 39 0d  ---..59..59..59.
22140 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
22150 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
22160 4e 43 54 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  NCT + col1 FROM 
22170 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45 20  tab0 cor0 WHERE 
22180 34 37 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d  47 NOT BETWEEN -
22190 20 39 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d   91 AND NULL..--
221a0 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  --....skipif pos
221b0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
221c0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
221d0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
221e0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
221f0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
22200 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
22210 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 63 6f  l1 * + - col1 co
22220 6c 32 2c 20 2b 20 39 30 20 41 53 20 63 6f 6c 30  l2, + 90 AS col0
22230 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
22240 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 30 31 0d 0a  r0..----..2601..
22250 39 30 0d 0a 34 34 38 39 0d 0a 39 30 0d 0a 35 39  90..4489..90..59
22260 32 39 0d 0a 39 30 0d 0a 0d 0a 71 75 65 72 79 20  29..90....query 
22270 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
22280 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
22290 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 3e  WHERE NOT col2 >
222a0 3d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  = col2..----....
222b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
222c0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31  .SELECT ALL col1
222d0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
222e0 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
222f0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
22300 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
22310 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20  CT DISTINCT - ( 
22320 37 31 20 29 20 2a 20 2b 20 63 6f 6c 31 20 41 53  71 ) * + col1 AS
22330 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
22340 0a 2d 2d 2d 2d 0d 0a 2d 33 36 32 31 0d 0a 2d 34  .----..-3621..-4
22350 37 35 37 0d 0a 2d 35 34 36 37 0d 0a 0d 0a 71 75  757..-5467....qu
22360 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
22370 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
22380 20 63 6f 6c 30 20 2a 20 2d 20 36 32 20 41 53 20   col0 * - 62 AS 
22390 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
223a0 2d 2d 2d 2d 0d 0a 32 38 35 32 0d 0a 33 39 36 38  ----..2852..3968
223b0 0d 0a 34 36 35 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..4650....onlyif
223c0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
223d0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
223e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
223f0 65 6c 2d 37 38 32 0d 0a 53 45 4c 45 43 54 20 44  el-782..SELECT D
22400 49 53 54 49 4e 43 54 20 35 36 20 2a 20 43 4f 55  ISTINCT 56 * COU
22410 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
22420 32 0d 0a 2d 2d 2d 2d 0d 0a 31 36 38 0d 0a 0d 0a  2..----..168....
22430 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
22440 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
22450 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
22460 61 62 65 6c 2d 37 38 32 0d 0a 53 45 4c 45 43 54  abel-782..SELECT
22470 20 44 49 53 54 49 4e 43 54 20 35 36 20 2a 20 43   DISTINCT 56 * C
22480 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
22490 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 36 38 0d  tab2..----..168.
224a0 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
224b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
224c0 6c 30 20 41 53 20 63 6f 6c 32 2c 20 38 39 20 2b  l0 AS col2, 89 +
224d0 20 2b 20 39 39 20 46 52 4f 4d 20 74 61 62 30 0d   + 99 FROM tab0.
224e0 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 31 38 38 0d  .----..-15..188.
224f0 0a 2d 38 37 0d 0a 31 38 38 0d 0a 2d 39 37 0d 0a  .-87..188..-97..
22500 31 38 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  188....query I r
22510 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
22520 20 63 6f 6c 31 20 2b 20 2d 20 33 36 20 41 53 20   col1 + - 36 AS 
22530 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
22540 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 2d 33 31 0d 0a  ----..-22..-31..
22550 31 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  11....query I ro
22560 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
22570 63 6f 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c 31 20  col0 + + + col1 
22580 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
22590 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 36 0d 0a 2d 39  0..----..-66..-9
225a0 36 0d 0a 36 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  6..66....onlyif 
225b0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
225c0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
225d0 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
225e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 38 36 0d  wsort label-786.
225f0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
22600 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
22610 63 6f 72 30 20 57 48 45 52 45 20 43 41 53 54 28  cor0 WHERE CAST(
22620 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
22630 29 20 3c 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 0d  ) < col0 * col2.
22640 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
22650 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
22660 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
22670 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
22680 37 38 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  786..SELECT DIST
22690 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  INCT * FROM tab1
226a0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 43   AS cor0 WHERE C
226b0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
226c0 54 45 47 45 52 20 29 20 3c 20 63 6f 6c 30 20 2a  TEGER ) < col0 *
226d0 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   col2..----....o
226e0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
226f0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
22700 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22710 74 20 6c 61 62 65 6c 2d 37 38 37 0d 0a 53 45 4c  t label-787..SEL
22720 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 44 49 53  ECT + COUNT( DIS
22730 54 49 4e 43 54 20 63 6f 6c 31 20 29 20 2a 20 2d  TINCT col1 ) * -
22740 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
22750 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
22760 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69  ---..-9....skipi
22770 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
22780 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
22790 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
227a0 37 38 37 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  787..SELECT + CO
227b0 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20 63  UNT ( DISTINCT c
227c0 6f 6c 31 20 29 20 2a 20 2d 20 43 4f 55 4e 54 20  ol1 ) * - COUNT 
227d0 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
227e0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
227f0 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  9....query III r
22800 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
22810 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
22820 72 30 20 57 48 45 52 45 20 28 20 2b 20 33 38 20  r0 WHERE ( + 38 
22830 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  ) IS NULL..----.
22840 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
22850 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
22860 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
22870 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
22880 62 65 6c 2d 37 38 39 0d 0a 53 45 4c 45 43 54 20  bel-789..SELECT 
22890 44 49 53 54 49 4e 43 54 20 2d 20 39 20 44 49 56  DISTINCT - 9 DIV
228a0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
228b0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
228c0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
228d0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
228e0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
228f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
22900 2d 37 38 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  -789..SELECT DIS
22910 54 49 4e 43 54 20 2d 20 39 20 2f 20 63 6f 6c 32  TINCT - 9 / col2
22920 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
22930 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
22940 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
22950 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
22960 6f 6c 32 20 2a 20 35 37 20 2d 20 2b 20 39 31 20  ol2 * 57 - + 91 
22970 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
22980 30 0d 0a 2d 2d 2d 2d 0d 0a 33 32 37 32 0d 0a 33  0..----..3272..3
22990 37 38 35 0d 0a 35 33 38 31 0d 0a 0d 0a 6f 6e 6c  785..5381....onl
229a0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
229b0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
229c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
229d0 6c 61 62 65 6c 2d 37 39 31 0d 0a 53 45 4c 45 43  label-791..SELEC
229e0 54 20 41 4c 4c 20 2b 20 2d 20 4d 41 58 28 20 2b  T ALL + - MAX( +
229f0 20 39 33 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20   93 ) col1 FROM 
22a00 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
22a10 2d 2d 0d 0a 2d 39 33 0d 0a 0d 0a 73 6b 69 70 69  --..-93....skipi
22a20 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
22a30 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
22a40 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
22a50 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
22a60 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
22a70 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
22a80 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
22a90 72 74 20 6c 61 62 65 6c 2d 37 39 31 0d 0a 53 45  rt label-791..SE
22aa0 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 4d 41 58  LECT ALL + - MAX
22ab0 20 28 20 2b 20 39 33 20 29 20 63 6f 6c 31 20 46   ( + 93 ) col1 F
22ac0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
22ad0 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 33 0d 0a 0d 0a 71  ..----..-93....q
22ae0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
22af0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
22b00 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
22b10 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
22b20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20  IS NOT NULL AND 
22b30 28 20 4e 4f 54 20 28 20 4e 4f 54 20 4e 55 4c 4c  ( NOT ( NOT NULL
22b40 20 4e 4f 54 20 49 4e 20 28 20 2b 20 34 30 20 29   NOT IN ( + 40 )
22b50 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e   ) )..----....on
22b60 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
22b70 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
22b80 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
22b90 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
22ba0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
22bb0 2d 37 39 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -793..SELECT ALL
22bc0 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   + - CAST( NULL 
22bd0 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20  AS SIGNED ) + + 
22be0 36 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  6 + - COUNT( * )
22bf0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
22c00 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
22c10 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
22c20 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
22c30 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
22c40 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
22c50 39 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  93..SELECT ALL +
22c60 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
22c70 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20  S INTEGER ) + + 
22c80 36 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  6 + - COUNT ( * 
22c90 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
22ca0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
22cb0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  -..NULL....query
22cc0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
22cd0 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 2a 20  CT ALL - col2 * 
22ce0 2b 20 63 6f 6c 32 20 2d 20 2b 20 31 32 20 41 53  + col2 - + 12 AS
22cf0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
22d00 0a 2d 2d 2d 2d 0d 0a 2d 31 31 32 0d 0a 2d 32 32  .----..-112..-22
22d10 32 31 0d 0a 2d 39 38 31 33 0d 0a 0d 0a 71 75 65  21..-9813....que
22d20 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
22d30 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
22d40 62 31 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20  b1 WHERE ( NULL 
22d50 29 20 3e 3d 20 2b 20 33 37 0d 0a 2d 2d 2d 2d 0d  ) >= + 37..----.
22d60 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
22d70 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
22d80 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
22d90 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d   DECIMAL type: .
22da0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
22db0 20 6c 61 62 65 6c 2d 37 39 36 0d 0a 53 45 4c 45   label-796..SELE
22dc0 43 54 20 41 4c 4c 20 43 41 53 54 28 20 4e 55 4c  CT ALL CAST( NUL
22dd0 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2a  L AS DECIMAL ) *
22de0 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20   + + COUNT( * ) 
22df0 2b 20 2d 20 36 20 46 52 4f 4d 20 74 61 62 30 0d  + - 6 FROM tab0.
22e00 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
22e10 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
22e20 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
22e30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
22e40 62 65 6c 2d 37 39 36 0d 0a 53 45 4c 45 43 54 20  bel-796..SELECT 
22e50 41 4c 4c 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  ALL CAST ( NULL 
22e60 41 53 20 52 45 41 4c 20 29 20 2a 20 2b 20 2b 20  AS REAL ) * + + 
22e70 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20  COUNT ( * ) + - 
22e80 36 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  6 FROM tab0..---
22e90 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  -..NULL....query
22ea0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
22eb0 43 54 20 2b 20 63 6f 6c 31 20 2b 20 2d 20 34 34  CT + col1 + - 44
22ec0 20 2d 20 37 34 20 41 53 20 63 6f 6c 30 20 46 52   - 74 AS col0 FR
22ed0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
22ee0 31 31 37 0d 0a 2d 33 37 0d 0a 2d 39 37 0d 0a 0d  117..-37..-97...
22ef0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
22f00 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
22f10 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
22f20 6f 72 74 20 6c 61 62 65 6c 2d 37 39 38 0d 0a 53  ort label-798..S
22f30 45 4c 45 43 54 20 41 4c 4c 20 38 36 20 2d 20 2b  ELECT ALL 86 - +
22f40 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
22f50 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38 33 0d   tab2..----..83.
22f60 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
22f70 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
22f80 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22f90 74 20 6c 61 62 65 6c 2d 37 39 38 0d 0a 53 45 4c  t label-798..SEL
22fa0 45 43 54 20 41 4c 4c 20 38 36 20 2d 20 2b 20 43  ECT ALL 86 - + C
22fb0 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
22fc0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38 33 0d 0a  tab2..----..83..
22fd0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
22fe0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
22ff0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
23000 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 39 0d 0a  sort label-799..
23010 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
23020 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 4d 41 58  COUNT( * ) * MAX
23030 28 20 2b 20 34 36 20 29 20 46 52 4f 4d 20 74 61  ( + 46 ) FROM ta
23040 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 2d  b0 WHERE NOT + -
23050 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45   col2 NOT BETWEE
23060 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d  N NULL AND NULL.
23070 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
23080 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
23090 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
230a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
230b0 62 65 6c 2d 37 39 39 0d 0a 53 45 4c 45 43 54 20  bel-799..SELECT 
230c0 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28  DISTINCT COUNT (
230d0 20 2a 20 29 20 2a 20 4d 41 58 20 28 20 2b 20 34   * ) * MAX ( + 4
230e0 36 20 29 20 46 52 4f 4d 20 74 61 62 30 20 57 48  6 ) FROM tab0 WH
230f0 45 52 45 20 4e 4f 54 20 2b 20 2d 20 63 6f 6c 32  ERE NOT + - col2
23100 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c   NOT BETWEEN NUL
23110 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  L AND NULL..----
23120 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
23130 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
23140 54 20 2b 20 28 20 2b 20 2b 20 63 6f 6c 30 20 29  T + ( + + col0 )
23150 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
23160 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
23170 0d 0a 35 31 0d 0a 38 35 0d 0a 39 31 0d 0a 0d 0a  ..51..85..91....
23180 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
23190 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
231a0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
231b0 72 74 20 6c 61 62 65 6c 2d 38 30 31 0d 0a 53 45  rt label-801..SE
231c0 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54  LECT ALL - COUNT
231d0 28 20 2d 20 32 31 20 29 20 41 53 20 63 6f 6c 30  ( - 21 ) AS col0
231e0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
231f0 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-3....skipif m
23200 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
23210 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
23220 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 31  owsort label-801
23230 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43  ..SELECT ALL - C
23240 4f 55 4e 54 20 28 20 2d 20 32 31 20 29 20 41 53  OUNT ( - 21 ) AS
23250 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
23260 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65  .----..-3....que
23270 72 79 20 49 49 49 49 49 49 20 72 6f 77 73 6f 72  ry IIIIII rowsor
23280 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
23290 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52   tab0 AS cor0 CR
232a0 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53  OSS JOIN tab0 AS
232b0 20 63 6f 72 31 20 57 48 45 52 45 20 28 20 4e 55   cor1 WHERE ( NU
232c0 4c 4c 20 29 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d  LL ) <> NULL..--
232d0 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
232e0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
232f0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
23300 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
23310 30 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  03..SELECT DISTI
23320 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 44 49 53  NCT + COUNT( DIS
23330 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20 29 20 46  TINCT - col2 ) F
23340 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
23350 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..----..3....ski
23360 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
23370 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
23380 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
23390 6c 2d 38 30 33 0d 0a 53 45 4c 45 43 54 20 44 49  l-803..SELECT DI
233a0 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28  STINCT + COUNT (
233b0 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32   DISTINCT - col2
233c0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
233d0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  cor0..----..3...
233e0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
233f0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
23400 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
23410 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 34 0d 0a  sort label-804..
23420 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 38 35 2c  SELECT ALL + 85,
23430 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
23440 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol1 FROM tab0 co
23450 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 35 0d 0a 33 0d  r0..----..85..3.
23460 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
23470 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
23480 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
23490 72 74 20 6c 61 62 65 6c 2d 38 30 34 0d 0a 53 45  rt label-804..SE
234a0 4c 45 43 54 20 41 4c 4c 20 2b 20 38 35 2c 20 43  LECT ALL + 85, C
234b0 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
234c0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l1 FROM tab0 cor
234d0 30 0d 0a 2d 2d 2d 2d 0d 0a 38 35 0d 0a 33 0d 0a  0..----..85..3..
234e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
234f0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
23500 35 36 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  56 AS col2 FROM 
23510 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
23520 0a 35 36 0d 0a 35 36 0d 0a 35 36 0d 0a 0d 0a 71  .56..56..56....q
23530 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
23540 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
23550 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
23560 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c   WHERE NOT + col
23570 31 20 3c 3d 20 2d 20 2d 20 34 38 20 2a 20 2b 20  1 <= - - 48 * + 
23580 63 6f 6c 31 20 2a 20 63 6f 6c 30 0d 0a 2d 2d 2d  col1 * col0..---
23590 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
235a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
235b0 32 20 2a 20 63 6f 6c 31 20 2a 20 2d 20 2b 20 63  2 * col1 * - + c
235c0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
235d0 2d 2d 2d 0d 0a 2d 31 32 33 32 30 30 0d 0a 2d 32  ---..-123200..-2
235e0 32 35 33 38 38 0d 0a 2d 32 36 39 37 39 0d 0a 0d  25388..-26979...
235f0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
23600 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
23610 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
23620 20 35 39 20 4e 4f 54 20 49 4e 20 28 20 63 6f 6c   59 NOT IN ( col
23630 32 2c 20 39 20 2a 20 2d 20 2b 20 63 6f 6c 32 20  2, 9 * - + col2 
23640 2f 20 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d  / - col2 )..----
23650 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
23660 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32  ort..SELECT col2
23670 20 2a 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f   * + col2 * - co
23680 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
23690 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 38  tab0..----..-178
236a0 39 32 39 0d 0a 2d 32 31 30 30 0d 0a 2d 39 38 30  929..-2100..-980
236b0 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
236c0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
236d0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
236e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31  rowsort label-81
236f0 30 0d 0a 53 45 4c 45 43 54 20 2b 20 41 56 47 20  0..SELECT + AVG 
23700 28 20 41 4c 4c 20 63 6f 6c 30 20 29 20 2b 20 43  ( ALL col0 ) + C
23710 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
23720 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  2 FROM tab1 WHER
23730 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 49  E NOT ( NULL ) I
23740 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S NULL..----..NU
23750 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
23760 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
23770 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
23780 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 30 0d 0a  sort label-810..
23790 53 45 4c 45 43 54 20 2b 20 41 56 47 20 28 20 41  SELECT + AVG ( A
237a0 4c 4c 20 63 6f 6c 30 20 29 20 2b 20 43 4f 55 4e  LL col0 ) + COUN
237b0 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  T ( * ) AS col2 
237c0 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
237d0 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 49 53 20  NOT ( NULL ) IS 
237e0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
237f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
23800 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
23810 2b 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 31 20  + col0 * + col1 
23820 2a 20 2b 20 37 20 46 52 4f 4d 20 74 61 62 31 0d  * + 7 FROM tab1.
23830 0a 2d 2d 2d 2d 0d 0a 32 39 37 35 0d 0a 32 39 39  .----..2975..299
23840 33 39 0d 0a 34 39 39 38 0d 0a 0d 0a 71 75 65 72  39..4998....quer
23850 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23860 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 2b  ECT ALL col2 * +
23870 20 63 6f 6c 31 20 2a 20 2b 20 39 20 2a 20 28 20   col1 * + 9 * ( 
23880 2b 20 38 34 20 29 20 41 53 20 63 6f 6c 30 20 46  + 84 ) AS col0 F
23890 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
238a0 31 30 31 36 30 36 34 0d 0a 32 32 33 30 32 30 0d  1016064..223020.
238b0 0a 32 34 31 36 31 37 36 0d 0a 0d 0a 71 75 65 72  .2416176....quer
238c0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
238d0 4c 45 43 54 20 63 6f 6c 30 20 2a 20 2b 20 63 6f  LECT col0 * + co
238e0 6c 30 20 41 53 20 63 6f 6c 32 2c 20 2b 20 63 6f  l0 AS col2, + co
238f0 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
23900 2d 2d 0d 0a 32 32 35 0d 0a 38 31 0d 0a 37 35 36  --..225..81..756
23910 39 0d 0a 32 31 0d 0a 39 34 30 39 0d 0a 31 0d 0a  9..21..9409..1..
23920 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
23930 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
23940 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
23950 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
23960 65 6c 2d 38 31 34 0d 0a 53 45 4c 45 43 54 20 44  el-814..SELECT D
23970 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28 20  ISTINCT + CAST( 
23980 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
23990 20 2a 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 2b 20   * + col0 * + + 
239a0 33 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  32 FROM tab0..--
239b0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
239c0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
239d0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
239e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
239f0 2d 38 31 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -814..SELECT DIS
23a00 54 49 4e 43 54 20 2b 20 43 41 53 54 20 28 20 4e  TINCT + CAST ( N
23a10 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
23a20 20 2a 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 2b 20   * + col0 * + + 
23a30 33 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  32 FROM tab0..--
23a40 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
23a50 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23a60 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 36  ECT DISTINCT + 6
23a70 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20   + col1 AS col2 
23a80 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
23a90 0a 35 37 0d 0a 37 33 0d 0a 38 33 0d 0a 0d 0a 71  .57..73..83....q
23aa0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
23ab0 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
23ac0 74 61 62 32 20 57 48 45 52 45 20 2b 20 33 38 20  tab2 WHERE + 38 
23ad0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
23ae0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
23af0 0d 0a 53 45 4c 45 43 54 20 2b 20 35 30 20 2a 20  ..SELECT + 50 * 
23b00 2b 20 2d 20 35 35 20 2d 20 2b 20 63 6f 6c 32 20  + - 55 - + col2 
23b10 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
23b20 32 20 57 48 45 52 45 20 63 6f 6c 31 20 2b 20 63  2 WHERE col1 + c
23b30 6f 6c 31 20 42 45 54 57 45 45 4e 20 2b 20 2d 20  ol1 BETWEEN + - 
23b40 63 6f 6c 30 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d  col0 AND NULL..-
23b50 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
23b60 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
23b70 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45   * FROM tab0 WHE
23b80 52 45 20 2d 20 63 6f 6c 30 20 2d 20 2d 20 2b 20  RE - col0 - - + 
23b90 36 31 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 2a 20  61 * - - col2 * 
23ba0 2d 20 39 34 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  - 94 IS NULL..--
23bb0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
23bc0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
23bd0 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 41 53  STINCT - col0 AS
23be0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
23bf0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
23c00 63 6f 6c 31 20 2b 20 2d 20 2b 20 63 6f 6c 32 20  col1 + - + col2 
23c10 2a 20 63 6f 6c 30 20 42 45 54 57 45 45 4e 20 4e  * col0 BETWEEN N
23c20 55 4c 4c 20 41 4e 44 20 2d 20 2d 20 31 35 20 2b  ULL AND - - 15 +
23c30 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d   + col1..----...
23c40 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
23c50 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
23c60 37 33 20 2a 20 2b 20 2d 20 33 35 20 2b 20 28 20  73 * + - 35 + ( 
23c70 2d 20 2d 20 34 36 20 29 2c 20 2b 20 63 6f 6c 31  - - 46 ), + col1
23c80 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
23c90 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 30 39 0d  r0..----..-2509.
23ca0 0a 31 34 0d 0a 2d 32 35 30 39 0d 0a 34 37 0d 0a  .14..-2509..47..
23cb0 2d 32 35 30 39 0d 0a 35 0d 0a 0d 0a 6f 6e 6c 79  -2509..5....only
23cc0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
23cd0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
23ce0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
23cf0 61 62 65 6c 2d 38 32 31 0d 0a 53 45 4c 45 43 54  abel-821..SELECT
23d00 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2d 20 32 34   COUNT( ALL - 24
23d10 20 29 20 2b 20 2d 20 36 35 20 41 53 20 63 6f 6c   ) + - 65 AS col
23d20 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
23d30 2d 0d 0a 2d 36 32 0d 0a 0d 0a 73 6b 69 70 69 66  -..-62....skipif
23d40 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
23d50 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
23d60 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
23d70 32 31 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  21..SELECT COUNT
23d80 20 28 20 41 4c 4c 20 2d 20 32 34 20 29 20 2b 20   ( ALL - 24 ) + 
23d90 2d 20 36 35 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 65 AS col1 FRO
23da0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  M tab0..----..-6
23db0 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
23dc0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
23dd0 31 20 2b 20 2b 20 28 20 2d 20 39 35 20 29 20 46  1 + + ( - 95 ) F
23de0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
23df0 2d 31 34 0d 0a 2d 37 34 0d 0a 2d 39 34 0d 0a 0d  -14..-74..-94...
23e00 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
23e10 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
23e20 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
23e30 6f 72 74 20 6c 61 62 65 6c 2d 38 32 33 0d 0a 53  ort label-823..S
23e40 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
23e50 20 2b 20 4d 41 58 28 20 2d 20 28 20 63 6f 6c 31   + MAX( - ( col1
23e60 20 29 20 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20   ) ) + - COUNT( 
23e70 2a 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * ) col2 FROM ta
23e80 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 0d 0a  b1..----..-5....
23e90 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
23ea0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
23eb0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
23ec0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
23ed0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
23ee0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
23ef0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
23f00 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32  rowsort label-82
23f10 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  3..SELECT COUNT 
23f20 28 20 2a 20 29 20 2b 20 4d 41 58 20 28 20 2d 20  ( * ) + MAX ( - 
23f30 28 20 63 6f 6c 31 20 29 20 29 20 2b 20 2d 20 43  ( col1 ) ) + - C
23f40 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 32 20  OUNT ( * ) col2 
23f50 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
23f60 0a 2d 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .-5....query I r
23f70 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
23f80 49 53 54 49 4e 43 54 20 2d 20 31 35 20 46 52 4f  ISTINCT - 15 FRO
23f90 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43  M tab1 AS cor0 C
23fa0 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41  ROSS JOIN tab2 A
23fb0 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor1..----..-1
23fc0 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
23fd0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
23fe0 20 2b 20 2d 20 30 20 41 53 20 63 6f 6c 30 20 46   + - 0 AS col0 F
23ff0 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d  ROM tab0 cor0..-
24000 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
24010 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
24020 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
24030 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
24040 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
24050 6c 2d 38 32 36 0d 0a 53 45 4c 45 43 54 20 44 49  l-826..SELECT DI
24060 53 54 49 4e 43 54 20 2b 20 28 20 2d 20 2b 20 63  STINCT + ( - + c
24070 6f 6c 31 20 29 20 2b 20 63 6f 6c 30 20 41 53 20  ol1 ) + col0 AS 
24080 63 6f 6c 32 2c 20 2d 20 35 38 20 44 49 56 20 2b  col2, - 58 DIV +
24090 20 32 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   25 AS col2 FROM
240a0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
240b0 2d 2d 2d 0d 0a 2d 31 33 0d 0a 2d 32 0d 0a 2d 35  ---..-13..-2..-5
240c0 0d 0a 2d 32 0d 0a 38 0d 0a 2d 32 0d 0a 0d 0a 73  ..-2..8..-2....s
240d0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
240e0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
240f0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
24100 61 62 65 6c 2d 38 32 36 0d 0a 53 45 4c 45 43 54  abel-826..SELECT
24110 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2d 20   DISTINCT + ( - 
24120 2b 20 63 6f 6c 31 20 29 20 2b 20 63 6f 6c 30 20  + col1 ) + col0 
24130 41 53 20 63 6f 6c 32 2c 20 2d 20 35 38 20 2f 20  AS col2, - 58 / 
24140 2b 20 32 35 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 25 AS col2 FRO
24150 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
24160 2d 2d 2d 2d 0d 0a 2d 31 33 0d 0a 2d 32 0d 0a 2d  ----..-13..-2..-
24170 35 0d 0a 2d 32 0d 0a 38 0d 0a 2d 32 0d 0a 0d 0a  5..-2..8..-2....
24180 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
24190 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
241a0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
241b0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
241c0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
241d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
241e0 20 44 49 53 54 49 4e 43 54 20 2d 20 37 39 20 2b   DISTINCT - 79 +
241f0 20 2d 20 63 6f 6c 31 20 63 6f 6c 31 20 46 52 4f   - col1 col1 FRO
24200 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
24210 2d 2d 2d 2d 0d 0a 2d 31 30 30 0d 0a 2d 31 36 30  ----..-100..-160
24220 0d 0a 2d 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-80....query I
24230 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
24240 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 2b 20 2d 20   ALL - col0 + - 
24250 2b 20 36 39 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 69 AS col2 FRO
24260 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
24270 2d 2d 2d 2d 0d 0a 2d 31 35 36 0d 0a 2d 31 36 36  ----..-156..-166
24280 0d 0a 2d 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-84....query I
24290 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
242a0 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 2a 20 2b 20   ALL + col0 * + 
242b0 2b 20 35 20 2d 20 2d 20 2d 20 63 6f 6c 32 20 2d  + 5 - - - col2 -
242c0 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
242d0 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38  2 cor0..----..18
242e0 34 0d 0a 32 34 30 0d 0a 32 35 39 0d 0a 0d 0a 6f  4..240..259....o
242f0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
24300 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
24310 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
24320 74 20 6c 61 62 65 6c 2d 38 33 30 0d 0a 53 45 4c  t label-830..SEL
24330 45 43 54 20 4d 41 58 28 20 44 49 53 54 49 4e 43  ECT MAX( DISTINC
24340 54 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  T - col0 ) FROM 
24350 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
24360 2d 2d 0d 0a 2d 31 35 0d 0a 0d 0a 73 6b 69 70 69  --..-15....skipi
24370 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
24380 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
24390 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
243a0 38 33 30 0d 0a 53 45 4c 45 43 54 20 4d 41 58 20  830..SELECT MAX 
243b0 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c  ( DISTINCT - col
243c0 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  0 ) FROM tab0 AS
243d0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   cor0..----..-15
243e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
243f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 56 47 20  ort..SELECT AVG 
24400 28 20 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20  ( + col1 ) FROM 
24410 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
24420 52 45 20 4e 55 4c 4c 20 3e 20 4e 55 4c 4c 0d 0a  RE NULL > NULL..
24430 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ----..NULL....qu
24440 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
24450 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 46  ELECT ALL col1 F
24460 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
24470 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ULL NOT BETWEEN 
24480 4e 55 4c 4c 20 41 4e 44 20 28 20 63 6f 6c 31 20  NULL AND ( col1 
24490 29 20 41 4e 44 20 4e 55 4c 4c 20 49 53 20 4e 55  ) AND NULL IS NU
244a0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
244b0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
244c0 45 43 54 20 2d 20 63 6f 6c 31 20 2d 20 2b 20 35  ECT - col1 - + 5
244d0 33 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 38  3 - - col1 * + 8
244e0 38 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  8 FROM tab2..---
244f0 2d 0d 0a 34 33 38 34 0d 0a 35 37 37 36 0d 0a 36  -..4384..5776..6
24500 36 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  646....query I r
24510 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
24520 4c 4c 20 2b 20 63 6f 6c 32 20 2b 20 34 39 20 46  LL + col2 + 49 F
24530 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
24540 31 30 38 0d 0a 31 31 37 0d 0a 31 34 35 0d 0a 0d  108..117..145...
24550 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
24560 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
24570 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
24580 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 35 0d 0a  sort label-835..
24590 53 45 4c 45 43 54 20 32 34 20 41 53 20 63 6f 6c  SELECT 24 AS col
245a0 30 2c 20 43 4f 55 4e 54 28 20 2a 20 29 20 2d 20  0, COUNT( * ) - 
245b0 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  + COUNT( * ) FRO
245c0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34  M tab2..----..24
245d0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
245e0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
245f0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
24600 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 35  owsort label-835
24610 0d 0a 53 45 4c 45 43 54 20 32 34 20 41 53 20 63  ..SELECT 24 AS c
24620 6f 6c 30 2c 20 43 4f 55 4e 54 20 28 20 2a 20 29  ol0, COUNT ( * )
24630 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   - + COUNT ( * )
24640 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
24650 0d 0a 32 34 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ..24..0....query
24660 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
24670 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
24680 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
24690 4f 54 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f  OT + col1 + + co
246a0 6c 30 20 2b 20 2d 20 63 6f 6c 30 20 3c 3e 20 4e  l0 + - col0 <> N
246b0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
246c0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
246d0 4c 45 43 54 20 2d 20 36 35 20 2a 20 2d 20 31 35  LECT - 65 * - 15
246e0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
246f0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
24700 0d 0a 39 37 35 0d 0a 39 37 35 0d 0a 39 37 35 0d  ..975..975..975.
24710 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
24720 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
24730 4e 43 54 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 31  NCT + + col0 * 1
24740 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  8 AS col2 FROM t
24750 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
24760 2d 0d 0a 31 35 33 30 0d 0a 31 36 33 38 0d 0a 39  -..1530..1638..9
24770 31 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  18....query I ro
24780 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
24790 2d 20 36 35 20 2a 20 2d 20 2b 20 63 6f 6c 31 20  - 65 * - + col1 
247a0 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  + col2 FROM tab0
247b0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
247c0 31 33 37 35 0d 0a 31 36 34 0d 0a 35 33 31 32 0d  1375..164..5312.
247d0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
247e0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
247f0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
24800 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34 30 0d  wsort label-840.
24810 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 2b 20 63  .SELECT MAX( + c
24820 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ol2 ) FROM tab2 
24830 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35  AS cor0..----..5
24840 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
24850 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
24860 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
24870 6f 72 74 20 6c 61 62 65 6c 2d 38 34 30 0d 0a 53  ort label-840..S
24880 45 4c 45 43 54 20 4d 41 58 20 28 20 2b 20 63 6f  ELECT MAX ( + co
24890 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  l2 ) FROM tab2 A
248a0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 38  S cor0..----..58
248b0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
248c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
248d0 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 41 53 20  TINCT + col1 AS 
248e0 63 6f 6c 30 2c 20 38 32 20 46 52 4f 4d 20 74 61  col0, 82 FROM ta
248f0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
24900 0d 0a 31 0d 0a 38 32 0d 0a 32 31 0d 0a 38 32 0d  ..1..82..21..82.
24910 0a 38 31 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79  .81..82....query
24920 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
24930 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20  CT DISTINCT + + 
24940 41 56 47 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 32  AVG ( ALL + col2
24950 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
24960 63 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c  cor0 WHERE + col
24970 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  2 IS NULL..----.
24980 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .NULL....onlyif 
24990 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
249a0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
249b0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
249c0 6f 72 74 20 6c 61 62 65 6c 2d 38 34 33 0d 0a 53  ort label-843..S
249d0 45 4c 45 43 54 20 2b 20 2d 20 43 41 53 54 28 20  ELECT + - CAST( 
249e0 2d 20 28 20 35 33 20 29 20 41 53 20 53 49 47 4e  - ( 53 ) AS SIGN
249f0 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63  ED ) FROM tab2 c
24a00 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a 35  or0..----..53..5
24a10 33 0d 0a 35 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  3..53....skipif 
24a20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
24a30 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
24a40 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34  rowsort label-84
24a50 33 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 43 41  3..SELECT + - CA
24a60 53 54 20 28 20 2d 20 28 20 35 33 20 29 20 41 53  ST ( - ( 53 ) AS
24a70 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
24a80 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
24a90 0a 35 33 0d 0a 35 33 0d 0a 35 33 0d 0a 0d 0a 71  .53..53..53....q
24aa0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
24ab0 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20  SELECT ALL col0 
24ac0 2b 20 37 31 20 2a 20 2b 20 2b 20 37 35 20 2b 20  + 71 * + + 75 + 
24ad0 2d 20 63 6f 6c 31 20 2d 20 2d 20 2b 20 63 6f 6c  - col1 - - + col
24ae0 30 20 2b 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f  0 + + + col1 FRO
24af0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
24b00 2d 2d 2d 2d 0d 0a 35 34 31 37 0d 0a 35 34 35 33  ----..5417..5453
24b10 0d 0a 35 34 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..5475....onlyif
24b20 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
24b30 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
24b40 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
24b50 65 6c 2d 38 34 35 0d 0a 53 45 4c 45 43 54 20 2b  el-845..SELECT +
24b60 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   - COUNT( * ) * 
24b70 32 34 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20  24 * COUNT( * ) 
24b80 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
24b90 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 36 0d 0a 0d  0..----..-216...
24ba0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
24bb0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
24bc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
24bd0 6c 61 62 65 6c 2d 38 34 35 0d 0a 53 45 4c 45 43  label-845..SELEC
24be0 54 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  T + - COUNT ( * 
24bf0 29 20 2a 20 32 34 20 2a 20 43 4f 55 4e 54 20 28  ) * 24 * COUNT (
24c00 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   * ) FROM tab1 A
24c10 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
24c20 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  16....query I ro
24c30 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
24c40 4c 20 2d 20 31 38 20 41 53 20 63 6f 6c 30 20 46  L - 18 AS col0 F
24c50 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
24c60 2d 31 38 0d 0a 2d 31 38 0d 0a 2d 31 38 0d 0a 0d  -18..-18..-18...
24c70 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
24c80 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
24c90 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
24ca0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
24cb0 6c 2d 38 34 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-847..SELECT DI
24cc0 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 46 52  STINCT + col0 FR
24cd0 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
24ce0 54 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20  T NULL NOT IN ( 
24cf0 63 6f 6c 30 20 2d 20 2b 20 43 41 53 54 28 20 4e  col0 - + CAST( N
24d00 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 2c  ULL AS SIGNED ),
24d10 20 2d 20 63 6f 6c 32 20 2d 20 2d 20 2b 20 63 6f   - col2 - - + co
24d20 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  l2 )..----....sk
24d30 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
24d40 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
24d50 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
24d60 65 6c 2d 38 34 37 0d 0a 53 45 4c 45 43 54 20 44  el-847..SELECT D
24d70 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 46  ISTINCT + col0 F
24d80 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
24d90 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28  OT NULL NOT IN (
24da0 20 63 6f 6c 30 20 2d 20 2b 20 43 41 53 54 20 28   col0 - + CAST (
24db0 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
24dc0 20 29 2c 20 2d 20 63 6f 6c 32 20 2d 20 2d 20 2b   ), - col2 - - +
24dd0 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col2 )..----...
24de0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24df0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
24e00 54 20 2d 20 34 36 20 46 52 4f 4d 20 74 61 62 30  T - 46 FROM tab0
24e10 2c 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  , tab0 cor0..---
24e20 2d 0d 0a 2d 34 36 0d 0a 0d 0a 71 75 65 72 79 20  -..-46....query 
24e30 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
24e40 54 20 2b 20 28 20 2b 20 31 32 20 29 20 2d 20 2d  T + ( + 12 ) - -
24e50 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
24e60 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20  AS cor0 WHERE + 
24e70 63 6f 6c 32 20 2b 20 2d 20 2d 20 33 31 20 3e 20  col2 + - - 31 > 
24e80 28 20 63 6f 6c 32 20 29 20 2b 20 2d 20 28 20 63  ( col2 ) + - ( c
24e90 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 30 38  ol0 )..----..108
24ea0 0d 0a 37 31 0d 0a 38 30 0d 0a 0d 0a 71 75 65 72  ..71..80....quer
24eb0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
24ec0 45 43 54 20 2d 20 2d 20 36 30 20 2b 20 28 20 2b  ECT - - 60 + ( +
24ed0 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62   col0 ) FROM tab
24ee0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
24ef0 0a 31 34 37 0d 0a 31 35 37 0d 0a 37 35 0d 0a 0d  .147..157..75...
24f00 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24f10 0d 0a 53 45 4c 45 43 54 20 36 33 20 2b 20 2b 20  ..SELECT 63 + + 
24f20 2d 20 33 38 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 38 AS col1 FRO
24f30 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
24f40 2d 2d 2d 2d 0d 0a 32 35 0d 0a 32 35 0d 0a 32 35  ----..25..25..25
24f50 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
24f60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
24f70 49 4e 43 54 20 31 35 20 2b 20 2d 20 63 6f 6c 32  INCT 15 + - col2
24f80 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
24f90 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 0d 0a 2d  r0..----..-25..-
24fa0 34 33 0d 0a 2d 38 0d 0a 0d 0a 73 6b 69 70 69 66  43..-8....skipif
24fb0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
24fc0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
24fd0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
24fe0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
24ff0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
25000 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
25010 4e 43 54 20 2d 20 2b 20 36 37 20 2a 20 63 6f 6c  NCT - + 67 * col
25020 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  0 col2 FROM tab0
25030 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
25040 2d 31 30 30 35 0d 0a 2d 35 38 32 39 0d 0a 2d 36  -1005..-5829..-6
25050 34 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  499....query I r
25060 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
25070 4c 4c 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 2b 20  LL - col2 * + + 
25080 36 31 20 2b 20 2d 20 63 6f 6c 32 20 2b 20 2d 20  61 + - col2 + - 
25090 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
250a0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
250b0 2d 2d 2d 2d 0d 0a 2d 31 34 37 32 0d 0a 2d 32 35  ----..-1472..-25
250c0 34 34 0d 0a 2d 33 36 37 31 0d 0a 0d 0a 71 75 65  44..-3671....que
250d0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
250e0 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
250f0 4d 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52  M tab0 cor0 WHER
25100 45 20 4e 4f 54 20 2b 20 28 20 63 6f 6c 32 20 29  E NOT + ( col2 )
25110 20 3c 20 2d 20 36 33 20 2b 20 63 6f 6c 32 0d 0a   < - 63 + col2..
25120 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
25130 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37  ashing to c4b427
25140 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30  65dff94eaaa46040
25150 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e  e537fb43b7....on
25160 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
25170 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
25180 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
25190 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
251a0 35 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  56..SELECT DISTI
251b0 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20 2d 20 2b  NCT + + col1 - +
251c0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
251d0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
251e0 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
251f0 53 49 47 4e 45 44 20 29 20 3d 20 4e 55 4c 4c 0d  SIGNED ) = NULL.
25200 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
25210 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
25220 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
25230 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35  rowsort label-85
25240 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  6..SELECT DISTIN
25250 43 54 20 2b 20 2b 20 63 6f 6c 31 20 2d 20 2b 20  CT + + col1 - + 
25260 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
25270 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
25280 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
25290 49 4e 54 45 47 45 52 20 29 20 3d 20 4e 55 4c 4c  INTEGER ) = NULL
252a0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
252b0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
252c0 43 54 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 2b 20  CT + - col1 + + 
252d0 2d 20 38 35 20 2d 20 2d 20 63 6f 6c 31 20 2a 20  - 85 - - col1 * 
252e0 2b 20 2d 20 63 6f 6c 31 2c 20 63 6f 6c 31 20 46  + - col1, col1 F
252f0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
25300 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 35 0d 0a 35 0d  ..----..-115..5.
25310 0a 2d 32 33 34 31 0d 0a 34 37 0d 0a 2d 32 39 35  .-2341..47..-295
25320 0d 0a 31 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..14....onlyif m
25330 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
25340 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
25350 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
25360 2d 38 35 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -858..SELECT ALL
25370 20 2d 20 43 4f 55 4e 54 28 20 2b 20 63 6f 6c 31   - COUNT( + col1
25380 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
25390 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66  --..-3....skipif
253a0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
253b0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
253c0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
253d0 35 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  58..SELECT ALL -
253e0 20 43 4f 55 4e 54 20 28 20 2b 20 63 6f 6c 31 20   COUNT ( + col1 
253f0 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
25400 2d 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..-3....onlyif 
25410 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
25420 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
25430 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
25440 6c 2d 38 35 39 0d 0a 53 45 4c 45 43 54 20 2b 20  l-859..SELECT + 
25450 28 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ( + - COUNT( * )
25460 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
25470 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66  --..-3....skipif
25480 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
25490 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
254a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
254b0 35 39 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 2b  59..SELECT + ( +
254c0 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29   - COUNT ( * ) )
254d0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
254e0 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..-3....onlyif m
254f0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
25500 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
25510 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
25520 2d 38 36 30 0d 0a 53 45 4c 45 43 54 20 44 49 53  -860..SELECT DIS
25530 54 49 4e 43 54 20 2d 20 4d 41 58 28 20 38 39 20  TINCT - MAX( 89 
25540 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
25550 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39 0d 0a  ab1..----..-89..
25560 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
25570 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
25580 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25590 20 6c 61 62 65 6c 2d 38 36 30 0d 0a 53 45 4c 45   label-860..SELE
255a0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d 41  CT DISTINCT - MA
255b0 58 20 28 20 38 39 20 29 20 41 53 20 63 6f 6c 32  X ( 89 ) AS col2
255c0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
255d0 0d 0a 2d 38 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-89....query I
255e0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
255f0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
25600 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2b 20  HERE NOT col0 + 
25610 2b 20 63 6f 6c 32 20 3c 20 2b 20 31 31 0d 0a 2d  + col2 < + 11..-
25620 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
25630 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31  shing to c6c0a41
25640 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31  11b36d04dbc811a1
25650 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65  1e4d54cad....que
25660 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
25670 45 4c 45 43 54 20 63 6f 6c 31 2c 20 2b 20 63 6f  ELECT col1, + co
25680 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
25690 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 39  tab0..----..1..9
256a0 39 0d 0a 32 31 0d 0a 31 30 0d 0a 38 31 0d 0a 34  9..21..10..81..4
256b0 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  7....query II ro
256c0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
256d0 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 41 53  STINCT - col0 AS
256e0 20 63 6f 6c 31 2c 20 2d 20 63 6f 6c 30 20 41 53   col1, - col0 AS
256f0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
25700 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20  cor0 WHERE col1 
25710 2f 20 2d 20 2d 20 28 20 2d 20 63 6f 6c 30 20 29  / - - ( - col0 )
25720 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   > NULL..----...
25730 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
25740 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
25750 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
25760 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
25770 6c 2d 38 36 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-864..SELECT DI
25780 53 54 49 4e 43 54 20 2b 20 32 32 20 44 49 56 20  STINCT + 22 DIV 
25790 63 6f 6c 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74  col1 col2 FROM t
257a0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
257b0 2d 0d 0a 30 0d 0a 31 0d 0a 32 32 0d 0a 0d 0a 73  -..0..1..22....s
257c0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
257d0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
257e0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
257f0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
25800 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
25810 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
25820 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
25830 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 34  owsort label-864
25840 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
25850 54 20 2b 20 32 32 20 2f 20 63 6f 6c 31 20 63 6f  T + 22 / col1 co
25860 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
25870 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31  cor0..----..0..1
25880 0d 0a 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..22....query II
25890 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
258a0 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
258b0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
258c0 28 20 63 6f 6c 31 20 29 20 49 53 20 4e 55 4c 4c  ( col1 ) IS NULL
258d0 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
258e0 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34   hashing to c4b4
258f0 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30  2765dff94eaaa460
25900 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a  40e537fb43b7....
25910 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
25920 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49  AST syntax: DECI
25930 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  MAL type: ..quer
25940 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
25950 65 6c 2d 38 36 36 0d 0a 53 45 4c 45 43 54 20 44  el-866..SELECT D
25960 49 53 54 49 4e 43 54 20 2d 20 43 41 53 54 28 20  ISTINCT - CAST( 
25970 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20  NULL AS DECIMAL 
25980 29 20 41 53 20 63 6f 6c 31 2c 20 63 6f 6c 32 20  ) AS col1, col2 
25990 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
259a0 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  1 cor0..----..NU
259b0 4c 4c 0d 0a 35 39 0d 0a 4e 55 4c 4c 0d 0a 36 38  LL..59..NULL..68
259c0 0d 0a 4e 55 4c 4c 0d 0a 39 36 0d 0a 0d 0a 73 6b  ..NULL..96....sk
259d0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
259e0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
259f0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
25a00 62 65 6c 2d 38 36 36 0d 0a 53 45 4c 45 43 54 20  bel-866..SELECT 
25a10 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53 54 20  DISTINCT - CAST 
25a20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29  ( NULL AS REAL )
25a30 20 41 53 20 63 6f 6c 31 2c 20 63 6f 6c 32 20 41   AS col1, col2 A
25a40 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
25a50 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
25a60 4c 0d 0a 35 39 0d 0a 4e 55 4c 4c 0d 0a 36 38 0d  L..59..NULL..68.
25a70 0a 4e 55 4c 4c 0d 0a 39 36 0d 0a 0d 0a 71 75 65  .NULL..96....que
25a80 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
25a90 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
25aa0 32 38 20 2a 20 2d 20 2d 20 28 20 2b 20 2b 20 63  28 * - - ( + + c
25ab0 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ol0 ) FROM tab2 
25ac0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 38 38  cor0..----..1288
25ad0 0d 0a 31 37 39 32 0d 0a 32 31 30 30 0d 0a 0d 0a  ..1792..2100....
25ae0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
25af0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
25b00 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
25b10 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
25b20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
25b30 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
25b40 20 37 32 20 2a 20 2b 20 39 35 20 2d 20 2b 20 63   72 * + 95 - + c
25b50 6f 6c 30 20 2d 20 2d 20 2b 20 63 6f 6c 32 20 2b  ol0 - - + col2 +
25b60 20 63 6f 6c 31 20 63 6f 6c 31 20 46 52 4f 4d 20   col1 col1 FROM 
25b70 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
25b80 2d 2d 0d 0a 36 38 36 38 0d 0a 36 38 39 30 0d 0a  --..6868..6890..
25b90 36 38 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  6893....query I 
25ba0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
25bb0 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2b 20 37  DISTINCT + ( + 7
25bc0 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  2 ) FROM tab1 AS
25bd0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 32 0d   cor0..----..72.
25be0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
25bf0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
25c00 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
25c10 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37 30 0d  wsort label-870.
25c20 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
25c30 54 28 20 2a 20 29 20 2d 20 2d 20 2b 20 43 4f 55  T( * ) - - + COU
25c40 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
25c50 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
25c60 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72  JOIN tab0 AS cor
25c70 31 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d 0a 0d 0a 73  1..----..18....s
25c80 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
25c90 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
25ca0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
25cb0 62 65 6c 2d 38 37 30 0d 0a 53 45 4c 45 43 54 20  bel-870..SELECT 
25cc0 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ALL COUNT ( * ) 
25cd0 2d 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  - - + COUNT ( * 
25ce0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
25cf0 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
25d00 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab0 AS cor1..---
25d10 2d 0d 0a 31 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..18....onlyif 
25d20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
25d30 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
25d40 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  : DIV for intege
25d50 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
25d60 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
25d70 61 62 65 6c 2d 38 37 31 0d 0a 53 45 4c 45 43 54  abel-871..SELECT
25d80 20 2b 20 63 6f 6c 32 20 63 6f 6c 31 2c 20 63 6f   + col2 col1, co
25d90 6c 30 20 2b 20 2d 20 63 6f 6c 32 20 2d 20 2d 20  l0 + - col2 - - 
25da0 2b 20 43 41 53 54 28 20 2b 20 63 6f 6c 31 20 41  + CAST( + col1 A
25db0 53 20 53 49 47 4e 45 44 20 29 20 44 49 56 20 2b  S SIGNED ) DIV +
25dc0 20 36 35 20 2b 20 2d 20 33 34 20 46 52 4f 4d 20   65 + - 34 FROM 
25dd0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a  tab0..----..10..
25de0 34 33 0d 0a 34 37 0d 0a 2d 36 35 0d 0a 39 39 0d  43..47..-65..99.
25df0 0a 2d 33 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-36....skipif m
25e00 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
25e10 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
25e20 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
25e30 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
25e40 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
25e50 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
25e60 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
25e70 20 6c 61 62 65 6c 2d 38 37 31 0d 0a 53 45 4c 45   label-871..SELE
25e80 43 54 20 2b 20 63 6f 6c 32 20 63 6f 6c 31 2c 20  CT + col2 col1, 
25e90 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 32 20 2d 20  col0 + - col2 - 
25ea0 2d 20 2b 20 43 41 53 54 20 28 20 2b 20 63 6f 6c  - + CAST ( + col
25eb0 31 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2f  1 AS INTEGER ) /
25ec0 20 2b 20 36 35 20 2b 20 2d 20 33 34 20 46 52 4f   + 65 + - 34 FRO
25ed0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab0..----..10
25ee0 0d 0a 34 33 0d 0a 34 37 0d 0a 2d 36 35 0d 0a 39  ..43..47..-65..9
25ef0 39 0d 0a 2d 33 36 0d 0a 0d 0a 73 6b 69 70 69 66  9..-36....skipif
25f00 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
25f10 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
25f20 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
25f30 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
25f40 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
25f50 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
25f60 49 4e 43 54 20 2d 20 63 6f 6c 31 20 63 6f 6c 31  INCT - col1 col1
25f70 2c 20 2d 20 31 35 20 2a 20 31 30 20 46 52 4f 4d  , - 15 * 10 FROM
25f80 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   tab2..----..-51
25f90 0d 0a 2d 31 35 30 0d 0a 2d 36 37 0d 0a 2d 31 35  ..-150..-67..-15
25fa0 30 0d 0a 2d 37 37 0d 0a 2d 31 35 30 0d 0a 0d 0a  0..-77..-150....
25fb0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
25fc0 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
25fd0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
25fe0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
25ff0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
26000 62 65 6c 2d 38 37 33 0d 0a 53 45 4c 45 43 54 20  bel-873..SELECT 
26010 2d 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20  - MAX( DISTINCT 
26020 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
26030 47 4e 45 44 20 29 20 29 20 41 53 20 63 6f 6c 30  GNED ) ) AS col0
26040 2c 20 2b 20 28 20 2b 20 53 55 4d 28 20 44 49 53  , + ( + SUM( DIS
26050 54 49 4e 43 54 20 2b 20 2d 20 34 33 20 29 20 29  TINCT + - 43 ) )
26060 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
26070 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 42 45 54 57   NOT ( NULL BETW
26080 45 45 4e 20 63 6f 6c 32 20 41 4e 44 20 4e 55 4c  EEN col2 AND NUL
26090 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  L )..----..NULL.
260a0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
260b0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
260c0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
260d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
260e0 37 33 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58  73..SELECT - MAX
260f0 20 28 20 44 49 53 54 49 4e 43 54 20 43 41 53 54   ( DISTINCT CAST
26100 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
26110 45 52 20 29 20 29 20 41 53 20 63 6f 6c 30 2c 20  ER ) ) AS col0, 
26120 2b 20 28 20 2b 20 53 55 4d 20 28 20 44 49 53 54  + ( + SUM ( DIST
26130 49 4e 43 54 20 2b 20 2d 20 34 33 20 29 20 29 20  INCT + - 43 ) ) 
26140 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
26150 4e 4f 54 20 28 20 4e 55 4c 4c 20 42 45 54 57 45  NOT ( NULL BETWE
26160 45 4e 20 63 6f 6c 32 20 41 4e 44 20 4e 55 4c 4c  EN col2 AND NULL
26170 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a   )..----..NULL..
26180 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
26190 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
261a0 41 4c 4c 20 63 6f 6c 30 20 2a 20 33 36 20 2a 20  ALL col0 * 36 * 
261b0 38 34 20 2a 20 2d 20 63 6f 6c 31 20 46 52 4f 4d  84 * - col1 FROM
261c0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32   tab1..----..-12
261d0 38 35 32 30 30 0d 0a 2d 31 32 39 33 33 36 34 38  85200..-12933648
261e0 0d 0a 2d 32 31 35 39 31 33 36 0d 0a 0d 0a 71 75  ..-2159136....qu
261f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
26200 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30  ELECT ALL + col0
26210 20 2b 20 2b 20 33 32 20 41 53 20 63 6f 6c 30 20   + + 32 AS col0 
26220 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
26230 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c  NOT NULL IS NULL
26240 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
26250 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
26260 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
26270 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
26280 65 6c 2d 38 37 36 0d 0a 53 45 4c 45 43 54 20 44  el-876..SELECT D
26290 49 53 54 49 4e 43 54 20 53 55 4d 28 20 2d 20 2b  ISTINCT SUM( - +
262a0 20 37 32 20 29 20 46 52 4f 4d 20 74 61 62 31 0d   72 ) FROM tab1.
262b0 0a 2d 2d 2d 2d 0d 0a 2d 32 31 36 0d 0a 0d 0a 73  .----..-216....s
262c0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
262d0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
262e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
262f0 62 65 6c 2d 38 37 36 0d 0a 53 45 4c 45 43 54 20  bel-876..SELECT 
26300 44 49 53 54 49 4e 43 54 20 53 55 4d 20 28 20 2d  DISTINCT SUM ( -
26310 20 2b 20 37 32 20 29 20 46 52 4f 4d 20 74 61 62   + 72 ) FROM tab
26320 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 36 0d 0a 0d  1..----..-216...
26330 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
26340 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
26350 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
26360 6f 72 74 20 6c 61 62 65 6c 2d 38 37 37 0d 0a 53  ort label-877..S
26370 45 4c 45 43 54 20 2d 20 36 37 20 2b 20 2b 20 43  ELECT - 67 + + C
26380 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
26390 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
263a0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 34 0d 0a  or0..----..-64..
263b0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
263c0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
263d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
263e0 20 6c 61 62 65 6c 2d 38 37 37 0d 0a 53 45 4c 45   label-877..SELE
263f0 43 54 20 2d 20 36 37 20 2b 20 2b 20 43 4f 55 4e  CT - 67 + + COUN
26400 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  T ( * ) AS col2 
26410 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
26420 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 34 0d 0a 0d 0a  0..----..-64....
26430 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
26440 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
26450 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
26460 72 74 20 6c 61 62 65 6c 2d 38 37 38 0d 0a 53 45  rt label-878..SE
26470 4c 45 43 54 20 41 4c 4c 20 2b 20 35 37 20 2a 20  LECT ALL + 57 * 
26480 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  - + COUNT( * ) A
26490 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
264a0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37   cor0..----..-17
264b0 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
264c0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
264d0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
264e0 6f 72 74 20 6c 61 62 65 6c 2d 38 37 38 0d 0a 53  ort label-878..S
264f0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 35 37 20 2a  ELECT ALL + 57 *
26500 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   - + COUNT ( * )
26510 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
26520 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0 cor0..----..-
26530 31 37 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  171....query I r
26540 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
26550 4c 4c 20 63 6f 6c 31 20 2a 20 63 6f 6c 30 20 2a  LL col1 * col0 *
26560 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20   - col0 AS col2 
26570 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
26580 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 37 39 31 36  0..----..-107916
26590 0d 0a 2d 33 31 35 33 39 32 0d 0a 2d 33 37 36 38  ..-315392..-3768
265a0 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  75....query III 
265b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
265c0 2a 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  * FROM tab0 cor0
265d0 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 37 33 20   WHERE NOT - 73 
265e0 2a 20 2b 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20  * + col2 IS NOT 
265f0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
26600 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
26610 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
26620 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
26630 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
26640 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20  lumns..query II 
26650 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
26660 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 35 38 20  DISTINCT - - 58 
26670 63 6f 6c 31 2c 20 63 6f 6c 31 20 41 53 20 63 6f  col1, col1 AS co
26680 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
26690 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a  cor0..----..58..
266a0 31 0d 0a 35 38 0d 0a 32 31 0d 0a 35 38 0d 0a 38  1..58..21..58..8
266b0 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
266c0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
266d0 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
266e0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
266f0 74 20 6c 61 62 65 6c 2d 38 38 32 0d 0a 53 45 4c  t label-882..SEL
26700 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
26710 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
26720 63 6f 6c 32 20 2d 20 2b 20 63 6f 6c 31 20 2b 20  col2 - + col1 + 
26730 2d 20 2d 20 32 36 20 2a 20 31 30 20 2a 20 2b 20  - - 26 * 10 * + 
26740 2d 20 28 20 63 6f 6c 32 20 29 20 2a 20 63 6f 6c  - ( col2 ) * col
26750 31 20 2a 20 2d 20 38 38 20 2b 20 2d 20 2b 20 43  1 * - 88 + - + C
26760 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
26770 4e 45 44 20 29 20 2b 20 2b 20 2d 20 32 31 20 2f  NED ) + + - 21 /
26780 20 2d 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32   - col0 * + col2
26790 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
267a0 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
267b0 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63   to 75c998aa53ac
267c0 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64  83218cbf2feb962d
267d0 30 61 34 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  0a49....skipif m
267e0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
267f0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49  tible..query III
26800 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
26810 38 32 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  82..SELECT * FRO
26820 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
26830 48 45 52 45 20 2d 20 63 6f 6c 32 20 2d 20 2b 20  HERE - col2 - + 
26840 63 6f 6c 31 20 2b 20 2d 20 2d 20 32 36 20 2a 20  col1 + - - 26 * 
26850 31 30 20 2a 20 2b 20 2d 20 28 20 63 6f 6c 32 20  10 * + - ( col2 
26860 29 20 2a 20 63 6f 6c 31 20 2a 20 2d 20 38 38 20  ) * col1 * - 88 
26870 2b 20 2d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  + - + CAST ( NUL
26880 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b  L AS INTEGER ) +
26890 20 2b 20 2d 20 32 31 20 2f 20 2d 20 63 6f 6c 30   + - 21 / - col0
268a0 20 2a 20 2b 20 63 6f 6c 32 20 49 53 20 4e 55 4c   * + col2 IS NUL
268b0 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
268c0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63  s hashing to 75c
268d0 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62  998aa53ac83218cb
268e0 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d  f2feb962d0a49...
268f0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
26900 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
26910 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
26920 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
26930 62 65 6c 2d 38 38 33 0d 0a 53 45 4c 45 43 54 20  bel-883..SELECT 
26940 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
26950 45 20 2b 20 43 41 53 54 28 20 63 6f 6c 32 20 41  E + CAST( col2 A
26960 53 20 53 49 47 4e 45 44 20 29 20 49 53 20 4e 55  S SIGNED ) IS NU
26970 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  LL..----....skip
26980 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
26990 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
269a0 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
269b0 65 6c 2d 38 38 33 0d 0a 53 45 4c 45 43 54 20 2a  el-883..SELECT *
269c0 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
269d0 20 2b 20 43 41 53 54 20 28 20 63 6f 6c 32 20 41   + CAST ( col2 A
269e0 53 20 49 4e 54 45 47 45 52 20 29 20 49 53 20 4e  S INTEGER ) IS N
269f0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ULL..----....ski
26a00 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
26a10 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
26a20 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
26a30 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
26a40 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
26a50 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
26a60 53 54 49 4e 43 54 20 34 35 20 2b 20 2d 20 2b 20  STINCT 45 + - + 
26a70 36 37 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  67 col1 FROM tab
26a80 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 0d 0a  2..----..-22....
26a90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
26aa0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 34 36 20 2a  .SELECT ALL 46 *
26ab0 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
26ac0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab0..----..4
26ad0 30 30 32 0d 0a 34 34 36 32 0d 0a 36 39 30 0d 0a  002..4462..690..
26ae0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
26af0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
26b00 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
26b10 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 36 0d 0a  sort label-886..
26b20 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
26b30 2a 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2a  * ) * + COUNT( *
26b40 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d   ) FROM tab1..--
26b50 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69 66  --..-9....skipif
26b60 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
26b70 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
26b80 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
26b90 38 36 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  86..SELECT - COU
26ba0 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55  NT ( * ) * + COU
26bb0 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
26bc0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a  b1..----..-9....
26bd0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
26be0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
26bf0 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c 31   - - col1 + col1
26c00 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
26c10 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b0 WHERE NOT NUL
26c20 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  L IS NULL..----.
26c30 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
26c40 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
26c50 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
26c60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
26c70 62 65 6c 2d 38 38 38 0d 0a 53 45 4c 45 43 54 20  bel-888..SELECT 
26c80 36 39 20 44 49 56 20 2d 20 37 33 20 41 53 20 63  69 DIV - 73 AS c
26c90 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
26ca0 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
26cb0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
26cc0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
26cd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
26ce0 61 62 65 6c 2d 38 38 38 0d 0a 53 45 4c 45 43 54  abel-888..SELECT
26cf0 20 36 39 20 2f 20 2d 20 37 33 20 41 53 20 63 6f   69 / - 73 AS co
26d00 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
26d10 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71  --..0..0..0....q
26d20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
26d30 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20  SELECT ALL col0 
26d40 2a 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63  * - + col2 * + c
26d50 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
26d60 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30   tab0..----..-10
26d70 35 37 35 0d 0a 2d 37 35 36 39 30 0d 0a 2d 39 33  575..-75690..-93
26d80 31 34 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49  1491....query II
26d90 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
26da0 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 30 2c 20 2d   + col2 * - 0, -
26db0 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
26dc0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab1..----..0
26dd0 0d 0a 2d 35 31 0d 0a 30 0d 0a 2d 38 35 0d 0a 30  ..-51..0..-85..0
26de0 0d 0a 2d 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-91....onlyif 
26df0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
26e00 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
26e10 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
26e20 6f 72 74 20 6c 61 62 65 6c 2d 38 39 31 0d 0a 53  ort label-891..S
26e30 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54 28 20  ELECT ALL CAST( 
26e40 2d 20 32 36 20 41 53 20 53 49 47 4e 45 44 20 29  - 26 AS SIGNED )
26e50 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
26e60 0d 0a 2d 32 36 0d 0a 2d 32 36 0d 0a 2d 32 36 0d  ..-26..-26..-26.
26e70 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
26e80 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
26e90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26ea0 74 20 6c 61 62 65 6c 2d 38 39 31 0d 0a 53 45 4c  t label-891..SEL
26eb0 45 43 54 20 41 4c 4c 20 43 41 53 54 20 28 20 2d  ECT ALL CAST ( -
26ec0 20 32 36 20 41 53 20 49 4e 54 45 47 45 52 20 29   26 AS INTEGER )
26ed0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
26ee0 0d 0a 2d 32 36 0d 0a 2d 32 36 0d 0a 2d 32 36 0d  ..-26..-26..-26.
26ef0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
26f00 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
26f10 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
26f20 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
26f30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
26f40 6c 61 62 65 6c 2d 38 39 32 0d 0a 53 45 4c 45 43  label-892..SELEC
26f50 54 20 44 49 53 54 49 4e 43 54 20 2b 20 53 55 4d  T DISTINCT + SUM
26f60 28 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53  ( DISTINCT - CAS
26f70 54 28 20 2b 20 39 37 20 41 53 20 53 49 47 4e 45  T( + 97 AS SIGNE
26f80 44 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 20  D ) ) FROM tab0 
26f90 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 37 0d  cor0..----..-97.
26fa0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
26fb0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
26fc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26fd0 74 20 6c 61 62 65 6c 2d 38 39 32 0d 0a 53 45 4c  t label-892..SEL
26fe0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 53  ECT DISTINCT + S
26ff0 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20  UM ( DISTINCT - 
27000 43 41 53 54 20 28 20 2b 20 39 37 20 41 53 20 49  CAST ( + 97 AS I
27010 4e 54 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20  NTEGER ) ) FROM 
27020 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
27030 0a 2d 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-97....query I 
27040 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
27050 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c  DISTINCT - + col
27060 31 20 2b 20 32 39 20 46 52 4f 4d 20 74 61 62 31  1 + 29 FROM tab1
27070 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
27080 2d 31 38 0d 0a 31 35 0d 0a 32 34 0d 0a 0d 0a 71  -18..15..24....q
27090 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
270a0 53 45 4c 45 43 54 20 2d 20 2b 20 63 6f 6c 31 20  SELECT - + col1 
270b0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
270c0 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
270d0 28 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55  ( NOT NULL IS NU
270e0 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  LL )..----....on
270f0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
27100 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
27110 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27120 20 6c 61 62 65 6c 2d 38 39 35 0d 0a 53 45 4c 45   label-895..SELE
27130 43 54 20 2b 20 2b 20 53 55 4d 28 20 2d 20 34 30  CT + + SUM( - 40
27140 20 29 20 2b 20 2b 20 2d 20 28 20 2d 20 2b 20 43   ) + + - ( - + C
27150 4f 55 4e 54 28 20 2a 20 29 20 29 20 46 52 4f 4d  OUNT( * ) ) FROM
27160 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
27170 2d 2d 2d 0d 0a 2d 31 31 37 0d 0a 0d 0a 73 6b 69  ---..-117....ski
27180 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
27190 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
271a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
271b0 6c 2d 38 39 35 0d 0a 53 45 4c 45 43 54 20 2b 20  l-895..SELECT + 
271c0 2b 20 53 55 4d 20 28 20 2d 20 34 30 20 29 20 2b  + SUM ( - 40 ) +
271d0 20 2b 20 2d 20 28 20 2d 20 2b 20 43 4f 55 4e 54   + - ( - + COUNT
271e0 20 28 20 2a 20 29 20 29 20 46 52 4f 4d 20 74 61   ( * ) ) FROM ta
271f0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
27200 0d 0a 2d 31 31 37 0d 0a 0d 0a 71 75 65 72 79 20  ..-117....query 
27210 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
27220 54 20 41 4c 4c 20 2b 20 31 35 20 2b 20 2b 20 63  T ALL + 15 + + c
27230 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 2a 20 63  ol0 * + col0 * c
27240 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol0 AS col1 FROM
27250 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
27260 2d 2d 2d 0d 0a 31 33 32 36 36 36 0d 0a 36 31 34  ---..132666..614
27270 31 34 30 0d 0a 37 35 33 35 38 36 0d 0a 0d 0a 6f  140..753586....o
27280 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
27290 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
272a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
272b0 74 20 6c 61 62 65 6c 2d 38 39 37 0d 0a 53 45 4c  t label-897..SEL
272c0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 38  ECT DISTINCT + 8
272d0 39 20 2b 20 2b 20 4d 41 58 28 20 44 49 53 54 49  9 + + MAX( DISTI
272e0 4e 43 54 20 2d 20 63 6f 6c 30 20 29 20 41 53 20  NCT - col0 ) AS 
272f0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
27300 2d 2d 2d 2d 0d 0a 37 34 0d 0a 0d 0a 73 6b 69 70  ----..74....skip
27310 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
27320 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
27330 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
27340 2d 38 39 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -897..SELECT DIS
27350 54 49 4e 43 54 20 2b 20 38 39 20 2b 20 2b 20 4d  TINCT + 89 + + M
27360 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20  AX ( DISTINCT - 
27370 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46  col0 ) AS col0 F
27380 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
27390 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  74....query I ro
273a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
273b0 6c 31 20 2b 20 2b 20 36 34 20 2b 20 2b 20 63 6f  l1 + + 64 + + co
273c0 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
273d0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 32 39 0d  tab1..----..129.
273e0 0a 31 35 34 0d 0a 32 30 32 0d 0a 0d 0a 71 75 65  .154..202....que
273f0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
27400 4c 45 43 54 20 2d 20 63 6f 6c 30 20 46 52 4f 4d  LECT - col0 FROM
27410 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52 45   tab2 cor0 WHERE
27420 20 2b 20 35 33 20 2a 20 2d 20 2d 20 63 6f 6c 32   + 53 * - - col2
27430 20 2a 20 2d 20 28 20 2b 20 63 6f 6c 30 20 29 20   * - ( + col0 ) 
27440 49 4e 20 28 20 2d 20 35 31 20 29 0d 0a 2d 2d 2d  IN ( - 51 )..---
27450 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  -....query II ro
27460 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
27470 35 38 20 2b 20 36 2c 20 63 6f 6c 31 20 2a 20 2b  58 + 6, col1 * +
27480 20 2b 20 35 39 20 2b 20 63 6f 6c 31 20 46 52 4f   + 59 + col1 FRO
27490 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
274a0 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f  HERE NOT NULL NO
274b0 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  T BETWEEN NULL A
274c0 4e 44 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  ND + col1..----.
274d0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
274e0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
274f0 4e 43 54 20 2d 20 28 20 2d 20 2d 20 63 6f 6c 31  NCT - ( - - col1
27500 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
27510 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
27520 2d 2d 0d 0a 2d 31 34 0d 0a 2d 34 37 0d 0a 2d 35  --..-14..-47..-5
27530 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
27540 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  sort..SELECT - -
27550 20 63 6f 6c 30 2c 20 63 6f 6c 30 20 2a 20 2d 20   col0, col0 * - 
27560 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  col1 AS col2 FRO
27570 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
27580 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20  HERE NOT + col1 
27590 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
275a0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
275b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
275c0 20 2b 20 36 33 20 2a 20 2b 20 2b 20 39 37 20 41   + 63 * + + 97 A
275d0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
275e0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
275f0 28 20 4e 55 4c 4c 20 29 20 3c 3e 20 2d 20 33 33  ( NULL ) <> - 33
27600 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
27610 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
27620 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
27630 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
27640 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30 34 0d 0a  sort label-904..
27650 53 45 4c 45 43 54 20 2d 20 38 20 41 53 20 63 6f  SELECT - 8 AS co
27660 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
27670 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 39  cor0 WHERE NOT 9
27680 30 20 49 53 20 4e 55 4c 4c 20 41 4e 44 20 43 41  0 IS NULL AND CA
27690 53 54 28 20 2b 20 35 32 20 41 53 20 53 49 47 4e  ST( + 52 AS SIGN
276a0 45 44 20 29 20 2b 20 2b 20 63 6f 6c 30 20 2b 20  ED ) + + col0 + 
276b0 63 6f 6c 32 20 2f 20 2d 20 2b 20 31 36 20 2a 20  col2 / - + 16 * 
276c0 2d 20 2d 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c  - - col1 IS NULL
276d0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
276e0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
276f0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
27700 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
27710 30 34 0d 0a 53 45 4c 45 43 54 20 2d 20 38 20 41  04..SELECT - 8 A
27720 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
27730 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
27740 4f 54 20 39 30 20 49 53 20 4e 55 4c 4c 20 41 4e  OT 90 IS NULL AN
27750 44 20 43 41 53 54 20 28 20 2b 20 35 32 20 41 53  D CAST ( + 52 AS
27760 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 63   INTEGER ) + + c
27770 6f 6c 30 20 2b 20 63 6f 6c 32 20 2f 20 2d 20 2b  ol0 + col2 / - +
27780 20 31 36 20 2a 20 2d 20 2d 20 63 6f 6c 31 20 49   16 * - - col1 I
27790 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
277a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
277b0 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
277c0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 45  egate syntax: DE
277d0 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75  CIMAL type: ..qu
277e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
277f0 62 65 6c 2d 39 30 35 0d 0a 53 45 4c 45 43 54 20  bel-905..SELECT 
27800 2b 20 2b 20 43 4f 55 4e 54 28 20 2b 20 43 41 53  + + COUNT( + CAS
27810 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d  T( NULL AS DECIM
27820 41 4c 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31  AL ) ) FROM tab1
27830 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
27840 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
27850 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
27860 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
27870 6f 72 74 20 6c 61 62 65 6c 2d 39 30 35 0d 0a 53  ort label-905..S
27880 45 4c 45 43 54 20 2b 20 2b 20 43 4f 55 4e 54 20  ELECT + + COUNT 
27890 28 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  ( + CAST ( NULL 
278a0 41 53 20 52 45 41 4c 20 29 20 29 20 46 52 4f 4d  AS REAL ) ) FROM
278b0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
278c0 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..0....onlyif
278d0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
278e0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
278f0 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  e: ..query II ro
27900 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30 36 0d  wsort label-906.
27910 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
27920 20 2b 20 35 34 20 41 53 20 63 6f 6c 30 2c 20 2b   + 54 AS col0, +
27930 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
27940 49 47 4e 45 44 20 29 20 2b 20 2d 20 2d 20 39 35  IGNED ) + - - 95
27950 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
27960 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
27970 0d 0a 35 34 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ..54..NULL....sk
27980 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
27990 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
279a0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
279b0 62 65 6c 2d 39 30 36 0d 0a 53 45 4c 45 43 54 20  bel-906..SELECT 
279c0 44 49 53 54 49 4e 43 54 20 2b 20 35 34 20 41 53  DISTINCT + 54 AS
279d0 20 63 6f 6c 30 2c 20 2b 20 43 41 53 54 20 28 20   col0, + CAST ( 
279e0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
279f0 29 20 2b 20 2d 20 2d 20 39 35 20 41 53 20 63 6f  ) + - - 95 AS co
27a00 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
27a10 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 34 0d 0a  cor0..----..54..
27a20 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
27a30 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
27a40 41 4c 4c 20 63 6f 6c 30 20 2a 20 2b 20 28 20 63  ALL col0 * + ( c
27a50 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ol2 ) AS col2 FR
27a60 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
27a70 0a 2d 2d 2d 2d 0d 0a 31 30 35 38 0d 0a 32 35 36  .----..1058..256
27a80 30 0d 0a 34 33 35 30 0d 0a 0d 0a 71 75 65 72 79  0..4350....query
27a90 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
27aa0 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2a 20  CT ALL + col2 * 
27ab0 2d 20 38 35 20 46 52 4f 4d 20 74 61 62 30 0d 0a  - 85 FROM tab0..
27ac0 2d 2d 2d 2d 0d 0a 2d 33 39 39 35 0d 0a 2d 38 34  ----..-3995..-84
27ad0 31 35 0d 0a 2d 38 35 30 0d 0a 0d 0a 6f 6e 6c 79  15..-850....only
27ae0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
27af0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
27b00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
27b10 61 62 65 6c 2d 39 30 39 0d 0a 53 45 4c 45 43 54  abel-909..SELECT
27b20 20 41 4c 4c 20 4d 49 4e 28 20 44 49 53 54 49 4e   ALL MIN( DISTIN
27b30 43 54 20 2b 20 2b 20 63 6f 6c 31 20 29 20 41 53  CT + + col1 ) AS
27b40 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
27b50 0a 2d 2d 2d 2d 0d 0a 35 0d 0a 0d 0a 73 6b 69 70  .----..5....skip
27b60 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
27b70 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
27b80 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
27b90 2d 39 30 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -909..SELECT ALL
27ba0 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20   MIN ( DISTINCT 
27bb0 2b 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f  + + col1 ) AS co
27bc0 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
27bd0 2d 2d 0d 0a 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..5....onlyif 
27be0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
27bf0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
27c00 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
27c10 6c 2d 39 31 30 0d 0a 53 45 4c 45 43 54 20 44 49  l-910..SELECT DI
27c20 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20  STINCT - COUNT( 
27c30 44 49 53 54 49 4e 43 54 20 34 32 20 29 20 46 52  DISTINCT 42 ) FR
27c40 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
27c50 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
27c60 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
27c70 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
27c80 6f 72 74 20 6c 61 62 65 6c 2d 39 31 30 0d 0a 53  ort label-910..S
27c90 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
27ca0 20 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43   COUNT ( DISTINC
27cb0 54 20 34 32 20 29 20 46 52 4f 4d 20 74 61 62 31  T 42 ) FROM tab1
27cc0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 71 75  ..----..-1....qu
27cd0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
27ce0 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
27cf0 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
27d00 45 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 4e 4f 54  E NOT + col0 NOT
27d10 20 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c 32 20   BETWEEN - col2 
27d20 2f 20 63 6f 6c 32 20 2b 20 2d 20 33 32 20 41 4e  / col2 + - 32 AN
27d30 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D NULL..----....
27d40 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
27d50 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
27d60 20 2b 20 2d 20 38 39 20 41 53 20 63 6f 6c 31 20   + - 89 AS col1 
27d70 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
27d80 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39 0d 0a 0d 0a  0..----..-89....
27d90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
27da0 0a 53 45 4c 45 43 54 20 2d 20 31 33 20 46 52 4f  .SELECT - 13 FRO
27db0 4d 20 28 20 74 61 62 32 20 63 6f 72 30 20 43 52  M ( tab2 cor0 CR
27dc0 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53  OSS JOIN tab2 AS
27dd0 20 63 6f 72 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39   cor1 )..----..9
27de0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
27df0 74 6f 20 65 39 35 66 35 66 34 62 64 30 66 34 38  to e95f5f4bd0f48
27e00 30 33 39 37 63 63 65 64 35 66 35 65 38 61 32 33  0397cced5f5e8a23
27e10 37 39 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  792....onlyif my
27e20 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
27e30 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
27e40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
27e50 74 20 6c 61 62 65 6c 2d 39 31 34 0d 0a 53 45 4c  t label-914..SEL
27e60 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 44 49 56  ECT ALL col0 DIV
27e70 20 2d 20 28 20 2b 20 2d 20 38 33 20 29 20 41 53   - ( + - 83 ) AS
27e80 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
27e90 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
27ea0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
27eb0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
27ec0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27ed0 20 6c 61 62 65 6c 2d 39 31 34 0d 0a 53 45 4c 45   label-914..SELE
27ee0 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2f 20 2d 20  CT ALL col0 / - 
27ef0 28 20 2b 20 2d 20 38 33 20 29 20 41 53 20 63 6f  ( + - 83 ) AS co
27f00 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
27f10 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71  --..0..0..0....q
27f20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
27f30 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 63  SELECT ALL - - c
27f40 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 2b 20 2d  ol0 * + col0 + -
27f50 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
27f60 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
27f70 0a 31 37 38 0d 0a 37 35 35 39 0d 0a 39 33 31 30  .178..7559..9310
27f80 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
27f90 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
27fa0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
27fb0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
27fc0 20 6c 61 62 65 6c 2d 39 31 36 0d 0a 53 45 4c 45   label-916..SELE
27fd0 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
27fe0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
27ff0 20 2b 20 63 6f 6c 30 20 2a 20 43 41 53 54 28 20   + col0 * CAST( 
28000 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
28010 20 42 45 54 57 45 45 4e 20 2b 20 34 38 20 41 4e   BETWEEN + 48 AN
28020 44 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D col2..----....
28030 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
28040 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
28050 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
28060 20 6c 61 62 65 6c 2d 39 31 36 0d 0a 53 45 4c 45   label-916..SELE
28070 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
28080 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
28090 20 2b 20 63 6f 6c 30 20 2a 20 43 41 53 54 20 28   + col0 * CAST (
280a0 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
280b0 20 29 20 42 45 54 57 45 45 4e 20 2b 20 34 38 20   ) BETWEEN + 48 
280c0 41 4e 44 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  AND col2..----..
280d0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
280e0 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
280f0 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
28100 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
28110 65 6c 2d 39 31 37 0d 0a 53 45 4c 45 43 54 20 2b  el-917..SELECT +
28120 20 2b 20 63 6f 6c 30 20 44 49 56 20 63 6f 6c 32   + col0 DIV col2
28130 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
28140 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  b1 cor0..----..0
28150 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66  ..1..1....skipif
28160 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
28170 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
28180 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
28190 31 37 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63  17..SELECT + + c
281a0 6f 6c 30 20 2f 20 63 6f 6c 32 20 41 53 20 63 6f  ol0 / col2 AS co
281b0 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l1 FROM tab1 cor
281c0 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 31  0..----..0..1..1
281d0 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
281e0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
281f0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
28200 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
28210 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
28220 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
28230 4c 45 43 54 20 2b 20 28 20 2d 20 38 39 20 29 20  LECT + ( - 89 ) 
28240 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63  col2 FROM tab0 c
28250 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39 0d 0a  or0..----..-89..
28260 2d 38 39 0d 0a 2d 38 39 0d 0a 0d 0a 6f 6e 6c 79  -89..-89....only
28270 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
28280 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20  syntax: DECIMAL 
28290 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
282a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31  rowsort label-91
282b0 39 0d 0a 53 45 4c 45 43 54 20 28 20 63 6f 6c 31  9..SELECT ( col1
282c0 20 29 20 2a 20 2b 20 63 6f 6c 32 20 2b 20 43 41   ) * + col2 + CA
282d0 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49  ST( NULL AS DECI
282e0 4d 41 4c 20 29 20 2b 20 39 35 20 2a 20 2b 20 2b  MAL ) + 95 * + +
282f0 20 36 35 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   65 AS col1 FROM
28300 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
28310 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
28320 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
28330 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
28340 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
28350 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31  rowsort label-91
28360 39 0d 0a 53 45 4c 45 43 54 20 28 20 63 6f 6c 31  9..SELECT ( col1
28370 20 29 20 2a 20 2b 20 63 6f 6c 32 20 2b 20 43 41   ) * + col2 + CA
28380 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41  ST ( NULL AS REA
28390 4c 20 29 20 2b 20 39 35 20 2a 20 2b 20 2b 20 36  L ) + 95 * + + 6
283a0 35 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  5 AS col1 FROM t
283b0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
283c0 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
283d0 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
283e0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
283f0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
28400 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
28410 39 32 30 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49  920..SELECT - MI
28420 4e 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20  N( DISTINCT + + 
28430 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31  col1 ) FROM tab1
28440 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
28450 2d 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -5....skipif mys
28460 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
28470 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
28480 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32 30 0d 0a  sort label-920..
28490 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20 28 20 44  SELECT - MIN ( D
284a0 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31  ISTINCT + + col1
284b0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
284c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a  cor0..----..-5..
284d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
284e0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32 36  t..SELECT ALL 26
284f0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
28500 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  r0 WHERE NULL IS
28510 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d   NULL..----..26.
28520 0a 32 36 0d 0a 32 36 0d 0a 0d 0a 71 75 65 72 79  .26..26....query
28530 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
28540 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  CT DISTINCT col1
28550 20 2b 20 2d 20 37 39 20 2b 20 2d 20 2b 20 32 36   + - 79 + - + 26
28560 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
28570 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 30 0d 0a  r0..----..-100..
28580 2d 35 38 0d 0a 2d 39 31 0d 0a 0d 0a 71 75 65 72  -58..-91....quer
28590 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
285a0 45 43 54 20 2d 20 2d 20 63 6f 6c 31 20 41 53 20  ECT - - col1 AS 
285b0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
285c0 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20 63  S cor0 WHERE - c
285d0 6f 6c 30 20 2d 20 63 6f 6c 31 20 49 53 20 4e 55  ol0 - col1 IS NU
285e0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  LL..----....skip
285f0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
28600 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
28610 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
28620 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
28630 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
28640 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
28650 6f 6c 31 20 2b 20 2b 20 33 30 20 2b 20 2b 20 2d  ol1 + + 30 + + -
28660 20 37 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   70 col0 FROM ta
28670 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0 cor0..----..-
28680 31 39 0d 0a 2d 33 39 0d 0a 34 31 0d 0a 0d 0a 6f  19..-39..41....o
28690 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
286a0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
286b0 44 20 74 79 70 65 3a 20 44 49 56 20 66 6f 72 20  D type: DIV for 
286c0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
286d0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
286e0 6f 72 74 20 6c 61 62 65 6c 2d 39 32 35 0d 0a 53  ort label-925..S
286f0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
28700 20 63 6f 6c 31 20 2b 20 2b 20 43 41 53 54 28 20   col1 + + CAST( 
28710 2b 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44  + col2 AS SIGNED
28720 20 29 20 44 49 56 20 63 6f 6c 31 20 2b 20 2b 20   ) DIV col1 + + 
28730 2d 20 38 38 20 63 6f 6c 30 20 46 52 4f 4d 20 74  - 88 col0 FROM t
28740 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 37 0d 0a  ab0..----..-67..
28750 2d 37 0d 0a 31 32 0d 0a 0d 0a 73 6b 69 70 69 66  -7..12....skipif
28760 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
28770 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
28780 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
28790 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
287a0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
287b0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
287c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
287d0 74 20 6c 61 62 65 6c 2d 39 32 35 0d 0a 53 45 4c  t label-925..SEL
287e0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
287f0 6f 6c 31 20 2b 20 2b 20 43 41 53 54 20 28 20 2b  ol1 + + CAST ( +
28800 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52   col2 AS INTEGER
28810 20 29 20 2f 20 63 6f 6c 31 20 2b 20 2b 20 2d 20   ) / col1 + + - 
28820 38 38 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  88 col0 FROM tab
28830 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 37 0d 0a 2d 37  0..----..-67..-7
28840 0d 0a 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..12....query II
28850 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
28860 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
28870 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f  1 WHERE NOT + co
28880 6c 31 20 2a 20 2b 20 63 6f 6c 30 20 2a 20 2d 20  l1 * + col0 * - 
28890 28 20 2d 20 2d 20 35 20 29 20 49 53 20 4e 4f 54  ( - - 5 ) IS NOT
288a0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
288b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
288c0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
288d0 2d 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20  - col0 * - col0 
288e0 2a 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c  * - col1 + + col
288f0 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
28900 2d 0d 0a 2d 31 30 37 38 37 30 0d 0a 2d 33 31 35  -..-107870..-315
28910 33 32 38 0d 0a 2d 33 37 36 38 30 30 0d 0a 0d 0a  328..-376800....
28920 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
28930 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
28940 20 39 35 20 2a 20 2b 20 32 38 20 2a 20 2d 20 63   95 * + 28 * - c
28950 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol1 AS col2 FROM
28960 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32   tab1..----..-12
28970 35 30 32 30 0d 0a 2d 31 33 33 30 30 0d 0a 2d 33  5020..-13300..-3
28980 37 32 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  7240....query I 
28990 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
289a0 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20  DISTINCT + col2 
289b0 2a 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 2b 20 34  * + col1 * + + 4
289c0 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
289d0 2d 0d 0a 31 32 30 39 35 0d 0a 31 33 31 30 33 36  -..12095..131036
289e0 0d 0a 35 35 31 30 34 0d 0a 0d 0a 73 6b 69 70 69  ..55104....skipi
289f0 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
28a00 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
28a10 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
28a20 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
28a30 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
28a40 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
28a50 63 6f 6c 31 20 2a 20 2b 20 2b 20 36 36 20 63 6f  col1 * + + 66 co
28a60 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
28a70 2d 2d 0d 0a 33 31 30 32 0d 0a 33 33 30 0d 0a 39  --..3102..330..9
28a80 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  24....query I ro
28a90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
28aa0 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 2a 20  STINCT + col1 * 
28ab0 2d 20 28 20 2d 20 36 39 20 29 20 41 53 20 63 6f  - ( - 69 ) AS co
28ac0 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
28ad0 2d 2d 0d 0a 33 32 34 33 0d 0a 33 34 35 0d 0a 39  --..3243..345..9
28ae0 36 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  66....query II r
28af0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
28b00 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 2c 20  ISTINCT - col0, 
28b10 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
28b20 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 39 36 0d 0a 2d  ----..-51..96..-
28b30 38 35 0d 0a 35 39 0d 0a 2d 39 31 0d 0a 36 38 0d  85..59..-91..68.
28b40 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
28b50 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
28b60 63 6f 6c 32 20 41 53 20 63 6f 6c 30 2c 20 63 6f  col2 AS col0, co
28b70 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
28b80 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a  tab0..----..10..
28b90 31 30 0d 0a 34 37 0d 0a 34 37 0d 0a 39 39 0d 0a  10..47..47..99..
28ba0 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  99....query III 
28bb0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
28bc0 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
28bd0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
28be0 54 20 2b 20 63 6f 6c 32 20 3c 3e 20 4e 55 4c 4c  T + col2 <> NULL
28bf0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
28c00 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
28c10 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
28c20 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
28c30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20   WHERE ( NULL ) 
28c40 49 4e 20 28 20 63 6f 6c 32 2c 20 63 6f 6c 30 20  IN ( col2, col0 
28c50 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
28c60 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
28c70 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
28c80 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
28c90 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
28ca0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33  rowsort label-93
28cb0 36 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  6..SELECT + COUN
28cc0 54 28 20 44 49 53 54 49 4e 43 54 20 43 41 53 54  T( DISTINCT CAST
28cd0 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
28ce0 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   ) ) FROM tab1 A
28cf0 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
28d00 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 0d 0a  N tab1 AS cor1..
28d10 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  ----..0....skipi
28d20 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
28d30 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
28d40 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
28d50 39 33 36 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  936..SELECT + CO
28d60 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20 43  UNT ( DISTINCT C
28d70 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
28d80 54 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20 74  TEGER ) ) FROM t
28d90 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab1 AS cor0 CROS
28da0 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63  S JOIN tab1 AS c
28db0 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  or1..----..0....
28dc0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
28dd0 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
28de0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
28df0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
28e00 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
28e10 62 65 6c 2d 39 33 37 0d 0a 53 45 4c 45 43 54 20  bel-937..SELECT 
28e20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 43  - COUNT( * ) * C
28e30 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
28e40 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 2c 20 2d  NED ) AS col0, -
28e50 20 4d 49 4e 28 20 63 6f 6c 31 20 29 20 2b 20 2d   MIN( col1 ) + -
28e60 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
28e70 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c   SIGNED ) AS col
28e80 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
28e90 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
28ea0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
28eb0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
28ec0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
28ed0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
28ee0 33 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  37..SELECT - COU
28ef0 4e 54 20 28 20 2a 20 29 20 2a 20 43 41 53 54 20  NT ( * ) * CAST 
28f00 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
28f10 52 20 29 20 41 53 20 63 6f 6c 30 2c 20 2d 20 4d  R ) AS col0, - M
28f20 49 4e 20 28 20 63 6f 6c 31 20 29 20 2b 20 2d 20  IN ( col1 ) + - 
28f30 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
28f40 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
28f50 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
28f60 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
28f70 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
28f80 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
28f90 54 20 2b 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 63  T + + col1 * + c
28fa0 6f 6c 32 20 2b 20 2b 20 35 38 20 46 52 4f 4d 20  ol2 + + 58 FROM 
28fb0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
28fc0 2d 2d 0d 0a 31 32 33 31 0d 0a 33 31 33 38 0d 0a  --..1231..3138..
28fd0 33 39 34 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  3944....query I 
28fe0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
28ff0 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20  DISTINCT + col0 
29000 2a 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 2b  * - - col2 + + +
29010 20 37 36 20 46 52 4f 4d 20 74 61 62 32 20 41 53   76 FROM tab2 AS
29020 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
29030 4e 55 4c 4c 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d  NULL > NULL..---
29040 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
29050 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
29060 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
29070 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34  rowsort label-94
29080 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
29090 43 54 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20  CT + - COUNT( * 
290a0 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  ) col0 FROM tab2
290b0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
290c0 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
290d0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
290e0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
290f0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
29100 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
29110 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
29120 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
29130 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
29140 62 65 6c 2d 39 34 30 0d 0a 53 45 4c 45 43 54 20  bel-940..SELECT 
29150 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 43 4f 55  DISTINCT + - COU
29160 4e 54 20 28 20 2a 20 29 20 63 6f 6c 30 20 46 52  NT ( * ) col0 FR
29170 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
29180 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65  .----..-3....que
29190 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
291a0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
291b0 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
291c0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 31 36  or0 WHERE NOT 16
291d0 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e   BETWEEN NULL AN
291e0 44 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D col2..----....
291f0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
29200 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
29210 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
29220 6f 72 74 20 6c 61 62 65 6c 2d 39 34 32 0d 0a 53  ort label-942..S
29230 45 4c 45 43 54 20 41 4c 4c 20 38 33 20 41 53 20  ELECT ALL 83 AS 
29240 63 6f 6c 30 2c 20 4d 49 4e 28 20 2d 20 2d 20 34  col0, MIN( - - 4
29250 35 20 29 20 2a 20 2d 20 32 38 20 2b 20 2b 20 43  5 ) * - 28 + + C
29260 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74  OUNT( * ) FROM t
29270 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38 33 0d 0a 2d  ab2..----..83..-
29280 31 32 35 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  1257....skipif m
29290 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
292a0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
292b0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34  rowsort label-94
292c0 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 33  2..SELECT ALL 83
292d0 20 41 53 20 63 6f 6c 30 2c 20 4d 49 4e 20 28 20   AS col0, MIN ( 
292e0 2d 20 2d 20 34 35 20 29 20 2a 20 2d 20 32 38 20  - - 45 ) * - 28 
292f0 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  + + COUNT ( * ) 
29300 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
29310 0a 38 33 0d 0a 2d 31 32 35 37 0d 0a 0d 0a 71 75  .83..-1257....qu
29320 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
29330 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
29340 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
29350 63 6f 6c 32 20 3c 3e 20 2b 20 36 31 20 2a 20 2d  col2 <> + 61 * -
29360 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30   - col0 * - col0
29370 20 2a 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d   * - col1..----.
29380 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
29390 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
293a0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
293b0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34 34 0d  wsort label-944.
293c0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
293d0 20 2b 20 36 37 20 2a 20 2d 20 2d 20 43 4f 55 4e   + 67 * - - COUN
293e0 54 28 20 2a 20 29 20 63 6f 6c 30 20 46 52 4f 4d  T( * ) col0 FROM
293f0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 31   tab2..----..201
29400 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
29410 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
29420 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
29430 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
29440 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
29450 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
29460 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
29470 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
29480 6c 2d 39 34 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-944..SELECT DI
29490 53 54 49 4e 43 54 20 2b 20 36 37 20 2a 20 2d 20  STINCT + 67 * - 
294a0 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f  - COUNT ( * ) co
294b0 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
294c0 2d 2d 0d 0a 32 30 31 0d 0a 0d 0a 6f 6e 6c 79 69  --..201....onlyi
294d0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
294e0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
294f0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
29500 61 62 65 6c 2d 39 34 35 0d 0a 53 45 4c 45 43 54  abel-945..SELECT
29510 20 34 32 20 41 53 20 63 6f 6c 30 2c 20 43 4f 55   42 AS col0, COU
29520 4e 54 28 20 2a 20 29 20 2a 20 43 4f 55 4e 54 28  NT( * ) * COUNT(
29530 20 2d 20 36 38 20 29 20 46 52 4f 4d 20 74 61 62   - 68 ) FROM tab
29540 32 0d 0a 2d 2d 2d 2d 0d 0a 34 32 0d 0a 39 0d 0a  2..----..42..9..
29550 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
29560 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
29570 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
29580 74 20 6c 61 62 65 6c 2d 39 34 35 0d 0a 53 45 4c  t label-945..SEL
29590 45 43 54 20 34 32 20 41 53 20 63 6f 6c 30 2c 20  ECT 42 AS col0, 
295a0 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 43 4f  COUNT ( * ) * CO
295b0 55 4e 54 20 28 20 2d 20 36 38 20 29 20 46 52 4f  UNT ( - 68 ) FRO
295c0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 32  M tab2..----..42
295d0 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ..9....query III
295e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
295f0 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30   ALL * FROM tab0
29600 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 63   AS cor0 WHERE c
29610 6f 6c 31 20 2b 20 2d 20 2d 20 36 39 20 49 53 20  ol1 + - - 69 IS 
29620 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
29630 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
29640 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
29650 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
29660 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49  43b7....query II
29670 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
29680 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
29690 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
296a0 4e 4f 54 20 33 33 20 2a 20 2b 20 2d 20 28 20 36  NOT 33 * + - ( 6
296b0 36 20 29 20 3e 3d 20 2d 20 63 6f 6c 30 0d 0a 2d  6 ) >= - col0..-
296c0 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
296d0 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61  shing to 75c998a
296e0 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65  a53ac83218cbf2fe
296f0 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65  b962d0a49....que
29700 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
29710 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
29720 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
29730 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 2a 20 34 31   NOT - col2 * 41
29740 20 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   <= NULL..----..
29750 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29760 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
29770 32 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20  2 + - col0 FROM 
29780 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
29790 2d 2d 0d 0a 2d 34 38 0d 0a 2d 36 36 0d 0a 2d 37  --..-48..-66..-7
297a0 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
297b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
297c0 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 31 20 2b  TINCT - + col1 +
297d0 20 2b 20 28 20 63 6f 6c 30 20 29 20 41 53 20 63   + ( col0 ) AS c
297e0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol1 FROM tab1 co
297f0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a 34 34  r0..----..37..44
29800 0d 0a 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..80....query II
29810 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
29820 20 2d 20 32 34 20 2a 20 38 32 20 41 53 20 63 6f   - 24 * 82 AS co
29830 6c 32 2c 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  l2, + col1 AS co
29840 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
29850 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 36  cor0..----..-196
29860 38 0d 0a 31 34 0d 0a 2d 31 39 36 38 0d 0a 34 37  8..14..-1968..47
29870 0d 0a 2d 31 39 36 38 0d 0a 35 0d 0a 0d 0a 6f 6e  ..-1968..5....on
29880 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
29890 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
298a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
298b0 20 6c 61 62 65 6c 2d 39 35 32 0d 0a 53 45 4c 45   label-952..SELE
298c0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f  CT DISTINCT + CO
298d0 55 4e 54 28 20 41 4c 4c 20 32 31 20 29 20 2b 20  UNT( ALL 21 ) + 
298e0 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  + - COUNT( * ) F
298f0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
29900 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
29910 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
29920 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
29930 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
29940 6c 2d 39 35 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-952..SELECT DI
29950 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28  STINCT + COUNT (
29960 20 41 4c 4c 20 32 31 20 29 20 2b 20 2b 20 2d 20   ALL 21 ) + + - 
29970 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
29980 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
29990 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
299a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
299b0 54 20 41 4c 4c 20 30 20 2a 20 2d 20 63 6f 6c 31  T ALL 0 * - col1
299c0 20 2a 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74   * - col0 FROM t
299d0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
299e0 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75  -..0..0..0....qu
299f0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
29a00 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
29a10 61 62 31 20 63 6f 72 30 20 57 48 45 52 45 20 28  ab1 cor0 WHERE (
29a20 20 4e 55 4c 4c 20 29 20 3e 3d 20 2d 20 63 6f 6c   NULL ) >= - col
29a30 32 20 2b 20 2d 20 39 36 0d 0a 2d 2d 2d 2d 0d 0a  2 + - 96..----..
29a40 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
29a50 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
29a60 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
29a70 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35 35 0d 0a  sort label-955..
29a80 53 45 4c 45 43 54 20 32 31 20 2a 20 43 4f 55 4e  SELECT 21 * COUN
29a90 54 28 20 2a 20 29 20 2a 20 2b 20 2b 20 4d 41 58  T( * ) * + + MAX
29aa0 28 20 2b 20 37 39 20 29 20 63 6f 6c 30 20 46 52  ( + 79 ) col0 FR
29ab0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab2..----..4
29ac0 39 37 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  977....skipif my
29ad0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
29ae0 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
29af0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
29b00 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
29b10 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
29b20 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
29b30 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
29b40 61 62 65 6c 2d 39 35 35 0d 0a 53 45 4c 45 43 54  abel-955..SELECT
29b50 20 32 31 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20   21 * COUNT ( * 
29b60 29 20 2a 20 2b 20 2b 20 4d 41 58 20 28 20 2b 20  ) * + + MAX ( + 
29b70 37 39 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74  79 ) col0 FROM t
29b80 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 39 37 37 0d  ab2..----..4977.
29b90 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
29ba0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
29bb0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
29bc0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35 36 0d  wsort label-956.
29bd0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
29be0 54 28 20 2d 20 63 6f 6c 31 20 29 20 2b 20 2b 20  T( - col1 ) + + 
29bf0 2b 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  + ( - COUNT( * )
29c00 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
29c10 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  tab1..----..0...
29c20 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
29c30 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
29c40 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
29c50 6c 61 62 65 6c 2d 39 35 36 0d 0a 53 45 4c 45 43  label-956..SELEC
29c60 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2d 20  T ALL COUNT ( - 
29c70 63 6f 6c 31 20 29 20 2b 20 2b 20 2b 20 28 20 2d  col1 ) + + + ( -
29c80 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 41   COUNT ( * ) ) A
29c90 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
29ca0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65  ..----..0....que
29cb0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
29cc0 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20  LECT ALL + col1 
29cd0 2a 20 33 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  * 32 AS col2 FRO
29ce0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 35  M tab0..----..25
29cf0 39 32 0d 0a 33 32 0d 0a 36 37 32 0d 0a 0d 0a 6f  92..32..672....o
29d00 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
29d10 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
29d20 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
29d30 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
29d40 39 35 38 0d 0a 53 45 4c 45 43 54 20 36 32 20 2a  958..SELECT 62 *
29d50 20 63 6f 6c 31 20 44 49 56 20 2d 20 28 20 2b 20   col1 DIV - ( + 
29d60 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
29d70 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d 0a 2d 36 38  ..----..-55..-68
29d80 0d 0a 2d 37 34 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-74....skipif 
29d90 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
29da0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
29db0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35  rowsort label-95
29dc0 38 0d 0a 53 45 4c 45 43 54 20 36 32 20 2a 20 63  8..SELECT 62 * c
29dd0 6f 6c 31 20 2f 20 2d 20 28 20 2b 20 63 6f 6c 30  ol1 / - ( + col0
29de0 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
29df0 2d 2d 0d 0a 2d 35 35 0d 0a 2d 36 38 0d 0a 2d 37  --..-55..-68..-7
29e00 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  4....onlyif mysq
29e10 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
29e20 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
29e30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
29e40 6c 61 62 65 6c 2d 39 35 39 0d 0a 53 45 4c 45 43  label-959..SELEC
29e50 54 20 41 4c 4c 20 63 6f 6c 31 20 44 49 56 20 2d  T ALL col1 DIV -
29e60 20 35 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   52 FROM tab2..-
29e70 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 30 0d 0a  ---..-1..-1..0..
29e80 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
29e90 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
29ea0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
29eb0 20 6c 61 62 65 6c 2d 39 35 39 0d 0a 53 45 4c 45   label-959..SELE
29ec0 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2f 20 2d 20  CT ALL col1 / - 
29ed0 35 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  52 FROM tab2..--
29ee0 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 30 0d 0a 0d  --..-1..-1..0...
29ef0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
29f00 0d 0a 53 45 4c 45 43 54 20 2b 20 38 34 20 2d 20  ..SELECT + 84 - 
29f10 2b 20 2d 20 63 6f 6c 31 20 2a 20 63 6f 6c 31 20  + - col1 * col1 
29f20 2a 20 2b 20 33 33 20 41 53 20 63 6f 6c 30 20 46  * + 33 AS col0 F
29f30 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
29f40 36 35 35 32 0d 0a 37 32 39 38 31 0d 0a 39 30 39  6552..72981..909
29f50 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
29f60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
29f70 35 30 20 2a 20 63 6f 6c 31 20 41 53 20 63 6f 6c  50 * col1 AS col
29f80 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  1 FROM tab1 WHER
29f90 45 20 4e 4f 54 20 28 20 4e 4f 54 20 2d 20 63 6f  E NOT ( NOT - co
29fa0 6c 32 20 49 53 20 4e 55 4c 4c 20 29 0d 0a 2d 2d  l2 IS NULL )..--
29fb0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
29fc0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
29fd0 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
29fe0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
29ff0 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 28  LL NOT BETWEEN (
2a000 20 4e 55 4c 4c 20 29 20 41 4e 44 20 2b 20 2d 20   NULL ) AND + - 
2a010 38 39 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  89..----....only
2a020 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2a030 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2a040 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2a050 61 62 65 6c 2d 39 36 33 0d 0a 53 45 4c 45 43 54  abel-963..SELECT
2a060 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20   + COUNT( * ) + 
2a070 2b 20 31 39 20 46 52 4f 4d 20 74 61 62 32 20 63  + 19 FROM tab2 c
2a080 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 0d  or0..----..22...
2a090 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2a0a0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2a0b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2a0c0 6c 61 62 65 6c 2d 39 36 33 0d 0a 53 45 4c 45 43  label-963..SELEC
2a0d0 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T + COUNT ( * ) 
2a0e0 2b 20 2b 20 31 39 20 46 52 4f 4d 20 74 61 62 32  + + 19 FROM tab2
2a0f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d   cor0..----..22.
2a100 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2a110 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 39 36 20  rt..SELECT - 96 
2a120 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2a130 30 20 57 48 45 52 45 20 28 20 4e 4f 54 20 4e 55  0 WHERE ( NOT NU
2a140 4c 4c 20 49 53 20 4e 55 4c 4c 20 29 20 4f 52 20  LL IS NULL ) OR 
2a150 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 4e 4f 54  NOT ( NULL ) NOT
2a160 20 42 45 54 57 45 45 4e 20 37 34 20 2a 20 2d 20   BETWEEN 74 * - 
2a170 2d 20 28 20 2b 20 63 6f 6c 30 20 29 20 2f 20 2b  - ( + col0 ) / +
2a180 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 30 20 41   col1 * + col0 A
2a190 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  ND NULL..----...
2a1a0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2a1b0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2a1c0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
2a1d0 57 48 45 52 45 20 39 36 20 3e 20 4e 55 4c 4c 0d  WHERE 96 > NULL.
2a1e0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
2a1f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2a200 20 35 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   58 AS col2 FROM
2a210 20 74 61 62 30 20 63 6f 72 30 20 43 52 4f 53 53   tab0 cor0 CROSS
2a220 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f   JOIN tab0 AS co
2a230 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  r1..----..9 valu
2a240 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 65 66  es hashing to ef
2a250 36 65 36 33 61 65 65 64 32 35 38 31 61 31 36 38  6e63aeed2581a168
2a260 66 30 37 36 34 36 64 32 35 38 66 36 36 36 0d 0a  f07646d258f666..
2a270 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2a280 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2a290 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  x: ..query II ro
2a2a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 37 0d  wsort label-967.
2a2b0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 34 33 20 41  .SELECT ALL 43 A
2a2c0 53 20 63 6f 6c 31 2c 20 2b 20 43 4f 55 4e 54 28  S col1, + COUNT(
2a2d0 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c 30 20 29 20   ALL - - col0 ) 
2a2e0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2a2f0 0a 34 33 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66  .43..3....skipif
2a300 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2a310 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2a320 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2a330 39 36 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  967..SELECT ALL 
2a340 34 33 20 41 53 20 63 6f 6c 31 2c 20 2b 20 43 4f  43 AS col1, + CO
2a350 55 4e 54 20 28 20 41 4c 4c 20 2d 20 2d 20 63 6f  UNT ( ALL - - co
2a360 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a  l0 ) FROM tab1..
2a370 2d 2d 2d 2d 0d 0a 34 33 0d 0a 33 0d 0a 0d 0a 71  ----..43..3....q
2a380 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
2a390 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2a3a0 20 32 31 20 41 53 20 63 6f 6c 32 2c 20 63 6f 6c   21 AS col2, col
2a3b0 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
2a3c0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2a3d0 2d 0d 0a 32 31 0d 0a 35 39 0d 0a 32 31 0d 0a 36  -..21..59..21..6
2a3e0 38 0d 0a 32 31 0d 0a 39 36 0d 0a 0d 0a 71 75 65  8..21..96....que
2a3f0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2a400 4c 45 43 54 20 2b 20 63 6f 6c 30 20 41 53 20 63  LECT + col0 AS c
2a410 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol2 FROM tab1 co
2a420 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
2a430 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  L IS NOT NULL..-
2a440 2d 2d 2d 0d 0a 35 31 0d 0a 38 35 0d 0a 39 31 0d  ---..51..85..91.
2a450 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
2a460 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
2a470 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2a480 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 4f 54   WHERE NOT ( NOT
2a490 20 28 20 2b 20 63 6f 6c 32 20 49 53 20 4e 4f 54   ( + col2 IS NOT
2a4a0 20 4e 55 4c 4c 20 29 20 29 0d 0a 2d 2d 2d 2d 0d   NULL ) )..----.
2a4b0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
2a4c0 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61  g to 75c998aa53a
2a4d0 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32  c83218cbf2feb962
2a4e0 64 30 61 34 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  d0a49....skipif 
2a4f0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
2a500 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
2a510 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
2a520 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
2a530 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a540 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2a550 43 54 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63 6f  CT - col1 * + co
2a560 6c 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  l0 col2 FROM tab
2a570 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
2a580 0a 2d 32 33 34 36 0d 0a 2d 34 39 32 38 0d 0a 2d  .-2346..-4928..-
2a590 35 30 32 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  5025....onlyif m
2a5a0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
2a5b0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
2a5c0 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
2a5d0 6f 72 74 20 6c 61 62 65 6c 2d 39 37 32 0d 0a 53  ort label-972..S
2a5e0 45 4c 45 43 54 20 2d 20 2b 20 35 35 20 44 49 56  ELECT - + 55 DIV
2a5f0 20 2d 20 36 35 20 63 6f 6c 31 2c 20 28 20 2b 20   - 65 col1, ( + 
2a600 63 6f 6c 30 20 29 20 2b 20 2b 20 2b 20 63 6f 6c  col0 ) + + + col
2a610 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
2a620 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 39  or0..----..0..19
2a630 36 0d 0a 30 0d 0a 36 32 0d 0a 30 0d 0a 39 37 0d  6..0..62..0..97.
2a640 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2a650 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2a660 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
2a670 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
2a680 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
2a690 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
2a6a0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
2a6b0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
2a6c0 6c 2d 39 37 32 0d 0a 53 45 4c 45 43 54 20 2d 20  l-972..SELECT - 
2a6d0 2b 20 35 35 20 2f 20 2d 20 36 35 20 63 6f 6c 31  + 55 / - 65 col1
2a6e0 2c 20 28 20 2b 20 63 6f 6c 30 20 29 20 2b 20 2b  , ( + col0 ) + +
2a6f0 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
2a700 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
2a710 0a 30 0d 0a 31 39 36 0d 0a 30 0d 0a 36 32 0d 0a  .0..196..0..62..
2a720 30 0d 0a 39 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  0..97....onlyif 
2a730 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2a740 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2a750 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2a760 6f 72 74 20 6c 61 62 65 6c 2d 39 37 33 0d 0a 53  ort label-973..S
2a770 45 4c 45 43 54 20 41 4c 4c 20 2d 20 35 20 2f 20  ELECT ALL - 5 / 
2a780 2d 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 63 6f 6c  - col0 * - - col
2a790 31 20 2a 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  1 * + CAST( NULL
2a7a0 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
2a7b0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
2a7c0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
2a7d0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
2a7e0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2a7f0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2a800 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2a810 37 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  73..SELECT ALL -
2a820 20 35 20 2f 20 2d 20 63 6f 6c 30 20 2a 20 2d 20   5 / - col0 * - 
2a830 2d 20 63 6f 6c 31 20 2a 20 2b 20 43 41 53 54 20  - col1 * + CAST 
2a840 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
2a850 52 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  R ) FROM tab1 AS
2a860 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
2a870 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
2a880 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2a890 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
2a8a0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
2a8b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2a8c0 6c 2d 39 37 34 0d 0a 53 45 4c 45 43 54 20 31 33  l-974..SELECT 13
2a8d0 20 44 49 56 20 2b 20 34 30 20 2a 20 2b 20 2b 20   DIV + 40 * + + 
2a8e0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
2a8f0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S cor0..----..0.
2a900 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .0..0....skipif 
2a910 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2a920 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2a930 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37  rowsort label-97
2a940 34 0d 0a 53 45 4c 45 43 54 20 31 33 20 2f 20 2b  4..SELECT 13 / +
2a950 20 34 30 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 46   40 * + + col1 F
2a960 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2a970 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
2a980 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
2a990 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
2a9a0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2a9b0 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c   WHERE NOT ( NUL
2a9c0 4c 20 3e 3d 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d  L >= + col0 )..-
2a9d0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
2a9e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2a9f0 2b 20 28 20 2b 20 63 6f 6c 32 20 29 2c 20 2d 20  + ( + col2 ), - 
2aa00 28 20 2d 20 2b 20 63 6f 6c 32 20 29 20 41 53 20  ( - + col2 ) AS 
2aa10 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
2aa20 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33  S cor0..----..23
2aa30 0d 0a 32 33 0d 0a 34 30 0d 0a 34 30 0d 0a 35 38  ..23..40..40..58
2aa40 0d 0a 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..58....query I 
2aa50 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2aa60 41 4c 4c 20 2b 20 2b 20 31 20 46 52 4f 4d 20 74  ALL + + 1 FROM t
2aa70 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2aa80 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 6f 6e  -..1..1..1....on
2aa90 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
2aaa0 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
2aab0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
2aac0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2aad0 37 38 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53  78..SELECT - CAS
2aae0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
2aaf0 44 20 29 20 2a 20 2b 20 31 35 20 63 6f 6c 31 20  D ) * + 15 col1 
2ab00 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2ab10 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
2ab20 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
2ab30 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2ab40 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
2ab50 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
2ab60 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
2ab70 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
2ab80 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
2ab90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2aba0 65 6c 2d 39 37 38 0d 0a 53 45 4c 45 43 54 20 2d  el-978..SELECT -
2abb0 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
2abc0 49 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 31 35  INTEGER ) * + 15
2abd0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
2abe0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
2abf0 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  L..NULL....onlyi
2ac00 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2ac10 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2ac20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2ac30 62 65 6c 2d 39 37 39 0d 0a 53 45 4c 45 43 54 20  bel-979..SELECT 
2ac40 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 63 6f 6c  ALL + COUNT( col
2ac50 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  2 ) AS col0 FROM
2ac60 20 74 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c   tab0 WHERE NULL
2ac70 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
2ac80 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
2ac90 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2aca0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2acb0 6f 72 74 20 6c 61 62 65 6c 2d 39 37 39 0d 0a 53  ort label-979..S
2acc0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e  ELECT ALL + COUN
2acd0 54 20 28 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  T ( col2 ) AS co
2ace0 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l0 FROM tab0 WHE
2acf0 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d  RE NULL IS NULL.
2ad00 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79  .----..3....only
2ad10 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
2ad20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
2ad30 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
2ad40 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 30  owsort label-980
2ad50 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41 53  ..SELECT ALL CAS
2ad60 54 28 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45  T( col2 AS SIGNE
2ad70 44 20 29 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2d  D ) * - col1 + -
2ad80 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
2ad90 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
2ada0 31 33 35 38 0d 0a 2d 33 30 30 0d 0a 2d 33 32 34  1358..-300..-324
2adb0 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
2adc0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2add0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2ade0 6f 72 74 20 6c 61 62 65 6c 2d 39 38 30 0d 0a 53  ort label-980..S
2adf0 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54 20 28  ELECT ALL CAST (
2ae00 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52   col2 AS INTEGER
2ae10 20 29 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2d 20   ) * - col1 + - 
2ae20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  col1 AS col2 FRO
2ae30 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
2ae40 33 35 38 0d 0a 2d 33 30 30 0d 0a 2d 33 32 34 33  358..-300..-3243
2ae50 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
2ae60 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
2ae70 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
2ae80 4e 4f 54 20 2d 20 32 33 20 49 53 20 4e 55 4c 4c  NOT - 23 IS NULL
2ae90 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
2aea0 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39   hashing to 75c9
2aeb0 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66  98aa53ac83218cbf
2aec0 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a  2feb962d0a49....
2aed0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2aee0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2aef0 20 63 6f 6c 31 20 2b 20 2b 20 38 31 20 46 52 4f   col1 + + 81 FRO
2af00 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 33  M tab2..----..13
2af10 32 0d 0a 31 34 38 0d 0a 31 35 38 0d 0a 0d 0a 71  2..148..158....q
2af20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2af30 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2af40 2b 20 36 35 20 2b 20 2b 20 37 36 20 46 52 4f 4d  + 65 + + 76 FROM
2af50 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
2af60 2d 2d 2d 0d 0a 31 34 31 0d 0a 0d 0a 71 75 65 72  ---..141....quer
2af70 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
2af80 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
2af90 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
2afa0 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54  ERE NOT NULL NOT
2afb0 20 42 45 54 57 45 45 4e 20 28 20 4e 55 4c 4c 20   BETWEEN ( NULL 
2afc0 29 20 41 4e 44 20 31 0d 0a 2d 2d 2d 2d 0d 0a 0d  ) AND 1..----...
2afd0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
2afe0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
2aff0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
2b000 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
2b010 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
2b020 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2b030 54 20 44 49 53 54 49 4e 43 54 20 33 38 20 63 6f  T DISTINCT 38 co
2b040 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
2b050 2d 2d 0d 0a 33 38 0d 0a 0d 0a 71 75 65 72 79 20  --..38....query 
2b060 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
2b070 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
2b080 61 62 31 20 57 48 45 52 45 20 28 20 2d 20 63 6f  ab1 WHERE ( - co
2b090 6c 31 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  l1 ) IS NOT NULL
2b0a0 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
2b0b0 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30   hashing to c6c0
2b0c0 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31  a4111b36d04dbc81
2b0d0 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a  1a11e4d54cad....
2b0e0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
2b0f0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
2b100 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
2b110 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
2b120 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
2b130 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2b140 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 2b 20 63 6f   ALL - col2 + co
2b150 6c 30 20 2a 20 32 35 20 2a 20 63 6f 6c 32 20 63  l0 * 25 * col2 c
2b160 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
2b170 2d 2d 2d 0d 0a 31 32 32 33 30 34 0d 0a 31 32 35  ---..122304..125
2b180 33 31 36 0d 0a 31 35 34 36 33 32 0d 0a 0d 0a 71  316..154632....q
2b190 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2b1a0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 38 34 20  SELECT ALL - 84 
2b1b0 2a 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  * + + col2 AS co
2b1c0 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
2b1d0 2d 2d 0d 0a 2d 31 39 33 32 0d 0a 2d 33 33 36 30  --..-1932..-3360
2b1e0 0d 0a 2d 34 38 37 32 0d 0a 0d 0a 6f 6e 6c 79 69  ..-4872....onlyi
2b1f0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2b200 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2b210 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2b220 62 65 6c 2d 39 38 39 0d 0a 53 45 4c 45 43 54 20  bel-989..SELECT 
2b230 44 49 53 54 49 4e 43 54 20 32 34 20 2a 20 43 4f  DISTINCT 24 * CO
2b240 55 4e 54 28 20 2a 20 29 20 2b 20 2b 20 34 20 46  UNT( * ) + + 4 F
2b250 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
2b260 37 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  76....skipif mys
2b270 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2b280 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2b290 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 39 0d 0a  sort label-989..
2b2a0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2b2b0 32 34 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29  24 * COUNT ( * )
2b2c0 20 2b 20 2b 20 34 20 46 52 4f 4d 20 74 61 62 30   + + 4 FROM tab0
2b2d0 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 0d 0a 71 75  ..----..76....qu
2b2e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2b2f0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2b300 20 63 6f 6c 31 20 2b 20 63 6f 6c 30 20 2a 20 2b   col1 + col0 * +
2b310 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
2b320 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 30  0 cor0..----..30
2b330 36 0d 0a 37 35 39 30 0d 0a 39 34 31 30 0d 0a 0d  6..7590..9410...
2b340 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2b350 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2b360 54 20 28 20 2d 20 41 56 47 20 28 20 44 49 53 54  T ( - AVG ( DIST
2b370 49 4e 43 54 20 2b 20 35 39 20 29 20 29 20 41 53  INCT + 59 ) ) AS
2b380 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
2b390 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 35 36  AS cor0 WHERE 56
2b3a0 20 42 45 54 57 45 45 4e 20 2b 20 2d 20 63 6f 6c   BETWEEN + - col
2b3b0 31 20 2a 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20  1 * col2 * col1 
2b3c0 2b 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c  + - col0 + - col
2b3d0 31 20 2a 20 2d 20 2d 20 31 33 20 2b 20 2d 20 63  1 * - - 13 + - c
2b3e0 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 2b  ol2 + - col1 + +
2b3f0 20 39 37 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d   97 AND NULL..--
2b400 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  --..NULL....only
2b410 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2b420 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2b430 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b440 61 62 65 6c 2d 39 39 32 0d 0a 53 45 4c 45 43 54  abel-992..SELECT
2b450 20 44 49 53 54 49 4e 43 54 20 2b 20 4d 49 4e 28   DISTINCT + MIN(
2b460 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 29   DISTINCT col0 )
2b470 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
2b480 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
2b490 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
2b4a0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2b4b0 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
2b4c0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
2b4d0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
2b4e0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
2b4f0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
2b500 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2b510 65 6c 2d 39 39 32 0d 0a 53 45 4c 45 43 54 20 44  el-992..SELECT D
2b520 49 53 54 49 4e 43 54 20 2b 20 4d 49 4e 20 28 20  ISTINCT + MIN ( 
2b530 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 29 20  DISTINCT col0 ) 
2b540 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
2b550 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  S cor0..----..15
2b560 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2b570 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2b580 49 4e 43 54 20 63 6f 6c 30 20 2b 20 2d 20 28 20  INCT col0 + - ( 
2b590 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31  + col0 ) AS col1
2b5a0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
2b5b0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71  r0..----..0....q
2b5c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2b5d0 53 45 4c 45 43 54 20 2d 20 39 32 20 2b 20 2d 20  SELECT - 92 + - 
2b5e0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63  col2 FROM tab1 c
2b5f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 31 0d  or0..----..-151.
2b600 0a 2d 31 36 30 0d 0a 2d 31 38 38 0d 0a 0d 0a 6f  .-160..-188....o
2b610 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2b620 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2b630 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b640 74 20 6c 61 62 65 6c 2d 39 39 35 0d 0a 53 45 4c  t label-995..SEL
2b650 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ECT + COUNT( * )
2b660 20 2b 20 2b 20 2b 20 37 20 41 53 20 63 6f 6c 30   + + + 7 AS col0
2b670 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2b680 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 0d 0a  r0..----..10....
2b690 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2b6a0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2b6b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b6c0 61 62 65 6c 2d 39 39 35 0d 0a 53 45 4c 45 43 54  abel-995..SELECT
2b6d0 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b   + COUNT ( * ) +
2b6e0 20 2b 20 2b 20 37 20 41 53 20 63 6f 6c 30 20 46   + + 7 AS col0 F
2b6f0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
2b700 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 0d 0a 6f 6e  ..----..10....on
2b710 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
2b720 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
2b730 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
2b740 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2b750 39 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  96..SELECT DISTI
2b760 4e 43 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  NCT CAST( NULL A
2b770 53 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 63  S SIGNED ) + + c
2b780 6f 6c 32 20 2d 20 2b 20 63 6f 6c 30 20 2b 20 2d  ol2 - + col0 + -
2b790 20 2b 20 63 6f 6c 31 20 2a 20 39 32 20 2b 20 2d   + col1 * 92 + -
2b7a0 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 38 32 20 2a   - col1 + + 82 *
2b7b0 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 30   - col0 + + col0
2b7c0 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
2b7d0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
2b7e0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2b7f0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2b800 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2b810 62 65 6c 2d 39 39 36 0d 0a 53 45 4c 45 43 54 20  bel-996..SELECT 
2b820 44 49 53 54 49 4e 43 54 20 43 41 53 54 20 28 20  DISTINCT CAST ( 
2b830 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
2b840 29 20 2b 20 2b 20 63 6f 6c 32 20 2d 20 2b 20 63  ) + + col2 - + c
2b850 6f 6c 30 20 2b 20 2d 20 2b 20 63 6f 6c 31 20 2a  ol0 + - + col1 *
2b860 20 39 32 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 2b   92 + - - col1 +
2b870 20 2b 20 38 32 20 2a 20 2d 20 63 6f 6c 30 20 2b   + 82 * - col0 +
2b880 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
2b890 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  0 cor0..----..NU
2b8a0 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  LL....query I ro
2b8b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
2b8c0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57  col1 FROM tab1 W
2b8d0 48 45 52 45 20 2b 20 63 6f 6c 32 20 3d 20 2b 20  HERE + col2 = + 
2b8e0 2b 20 38 31 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d  + 81 + col0..---
2b8f0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
2b900 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
2b910 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
2b920 61 62 31 20 57 48 45 52 45 20 2d 20 63 6f 6c 32  ab1 WHERE - col2
2b930 20 3e 3d 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d   >= - col1..----
2b940 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2b950 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2b960 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2b970 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b980 61 62 65 6c 2d 39 39 39 0d 0a 53 45 4c 45 43 54  abel-999..SELECT
2b990 20 41 4c 4c 20 37 30 20 2d 20 2d 20 2b 20 43 41   ALL 70 - - + CA
2b9a0 53 54 28 20 2b 20 32 37 20 41 53 20 53 49 47 4e  ST( + 27 AS SIGN
2b9b0 45 44 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ED ) col2 FROM t
2b9c0 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 49  ab1 WHERE NULL I
2b9d0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
2b9e0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2b9f0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2ba00 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
2ba10 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
2ba20 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
2ba30 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
2ba40 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
2ba50 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2ba60 6c 2d 39 39 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-999..SELECT AL
2ba70 4c 20 37 30 20 2d 20 2d 20 2b 20 43 41 53 54 20  L 70 - - + CAST 
2ba80 28 20 2b 20 32 37 20 41 53 20 49 4e 54 45 47 45  ( + 27 AS INTEGE
2ba90 52 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  R ) col2 FROM ta
2baa0 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  b1 WHERE NULL IS
2bab0 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
2bac0 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
2bad0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2bae0 49 4e 43 54 20 63 6f 6c 30 20 2d 20 2d 20 2d 20  INCT col0 - - - 
2baf0 63 6f 6c 31 2c 20 28 20 37 32 20 29 20 2a 20 63  col1, ( 72 ) * c
2bb00 6f 6c 31 20 2a 20 2b 20 39 32 20 41 53 20 63 6f  ol1 * + 92 AS co
2bb10 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
2bb20 2d 2d 0d 0a 33 37 0d 0a 39 32 37 33 36 0d 0a 34  --..37..92736..4
2bb30 34 0d 0a 33 31 31 33 32 38 0d 0a 38 30 0d 0a 33  4..311328..80..3
2bb40 33 31 32 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  3120....query II
2bb50 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2bb60 20 2d 20 32 20 2a 20 63 6f 6c 30 20 41 53 20 63   - 2 * col0 AS c
2bb70 6f 6c 30 2c 20 2b 20 39 30 20 46 52 4f 4d 20 74  ol0, + 90 FROM t
2bb80 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 32 0d  ab1..----..-102.
2bb90 0a 39 30 0d 0a 2d 31 37 30 0d 0a 39 30 0d 0a 2d  .90..-170..90..-
2bba0 31 38 32 0d 0a 39 30 0d 0a 0d 0a 71 75 65 72 79  182..90....query
2bbb0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
2bbc0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
2bbd0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
2bbe0 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54  NOT NULL NOT BET
2bbf0 57 45 45 4e 20 2d 20 63 6f 6c 32 20 2a 20 2b 20  WEEN - col2 * + 
2bc00 63 6f 6c 30 20 41 4e 44 20 2d 20 28 20 63 6f 6c  col0 AND - ( col
2bc10 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  1 )..----....onl
2bc20 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
2bc30 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
2bc40 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
2bc50 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
2bc60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2bc70 31 30 30 33 0d 0a 53 45 4c 45 43 54 20 2d 20 28  1003..SELECT - (
2bc80 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43 54   COUNT( DISTINCT
2bc90 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
2bca0 49 47 4e 45 44 20 29 20 29 20 29 20 41 53 20 63  IGNED ) ) ) AS c
2bcb0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
2bcc0 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
2bcd0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2bce0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2bcf0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2bd00 30 30 33 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20  003..SELECT - ( 
2bd10 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54  COUNT ( DISTINCT
2bd20 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
2bd30 49 4e 54 45 47 45 52 20 29 20 29 20 29 20 41 53  INTEGER ) ) ) AS
2bd40 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
2bd50 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .----..0....quer
2bd60 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
2bd70 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
2bd80 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
2bd90 63 6f 6c 32 20 2a 20 63 6f 6c 30 20 2b 20 2b 20  col2 * col0 + + 
2bda0 63 6f 6c 32 20 2b 20 2b 20 38 35 20 49 53 20 4e  col2 + + 85 IS N
2bdb0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
2bdc0 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37  ues hashing to 7
2bdd0 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38  5c998aa53ac83218
2bde0 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d  cbf2feb962d0a49.
2bdf0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2be00 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
2be10 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
2be20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2be30 62 65 6c 2d 31 30 30 35 0d 0a 53 45 4c 45 43 54  bel-1005..SELECT
2be40 20 2b 20 2d 20 63 6f 6c 30 20 44 49 56 20 34 20   + - col0 DIV 4 
2be50 2a 20 35 38 20 41 53 20 63 6f 6c 30 20 46 52 4f  * 58 AS col0 FRO
2be60 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
2be70 2d 2d 2d 2d 0d 0a 2d 31 32 31 38 0d 0a 2d 31 32  ----..-1218..-12
2be80 37 36 0d 0a 2d 36 39 36 0d 0a 0d 0a 73 6b 69 70  76..-696....skip
2be90 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2bea0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2beb0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2bec0 2d 31 30 30 35 0d 0a 53 45 4c 45 43 54 20 2b 20  -1005..SELECT + 
2bed0 2d 20 63 6f 6c 30 20 2f 20 34 20 2a 20 35 38 20  - col0 / 4 * 58 
2bee0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2bef0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
2bf00 0a 2d 31 32 31 38 0d 0a 2d 31 32 37 36 0d 0a 2d  .-1218..-1276..-
2bf10 36 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  696....query I r
2bf20 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2bf30 4c 4c 20 32 33 20 46 52 4f 4d 20 74 61 62 32 20  LL 23 FROM tab2 
2bf40 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
2bf50 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d  IN tab0 AS cor1.
2bf60 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
2bf70 68 61 73 68 69 6e 67 20 74 6f 20 64 39 34 66 61  hashing to d94fa
2bf80 64 63 63 31 63 38 63 63 34 66 63 35 31 62 37 38  dcc1c8cc4fc51b78
2bf90 62 38 33 65 30 34 37 39 35 66 32 0d 0a 0d 0a 6f  b83e04795f2....o
2bfa0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2bfb0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2bfc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2bfd0 74 20 6c 61 62 65 6c 2d 31 30 30 37 0d 0a 53 45  t label-1007..SE
2bfe0 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 28 20 44 49  LECT ALL MIN( DI
2bff0 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 30 20  STINCT + + col0 
2c000 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
2c010 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d  or0..----..51...
2c020 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2c030 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2c040 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2c050 6c 61 62 65 6c 2d 31 30 30 37 0d 0a 53 45 4c 45  label-1007..SELE
2c060 43 54 20 41 4c 4c 20 4d 49 4e 20 28 20 44 49 53  CT ALL MIN ( DIS
2c070 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 30 20 29  TINCT + + col0 )
2c080 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2c090 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a  r0..----..51....
2c0a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2c0b0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
2c0c0 6c 30 20 2a 20 2b 20 31 30 20 2b 20 2b 20 34 33  l0 * + 10 + + 43
2c0d0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2c0e0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 37 0d 0a  r0..----..-467..
2c0f0 2d 38 30 37 0d 0a 2d 38 36 37 0d 0a 0d 0a 6f 6e  -807..-867....on
2c100 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
2c110 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
2c120 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
2c130 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2c140 30 30 39 0d 0a 53 45 4c 45 43 54 20 2d 20 38 32  009..SELECT - 82
2c150 20 2a 20 2d 20 63 6f 6c 30 20 44 49 56 20 2b 20   * - col0 DIV + 
2c160 28 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  ( - col0 ) FROM 
2c170 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
2c180 2d 2d 0d 0a 2d 38 32 0d 0a 2d 38 32 0d 0a 2d 38  --..-82..-82..-8
2c190 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  2....skipif mysq
2c1a0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2c1b0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2c1c0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 30 39 0d 0a  ort label-1009..
2c1d0 53 45 4c 45 43 54 20 2d 20 38 32 20 2a 20 2d 20  SELECT - 82 * - 
2c1e0 63 6f 6c 30 20 2f 20 2b 20 28 20 2d 20 63 6f 6c  col0 / + ( - col
2c1f0 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  0 ) FROM tab2 AS
2c200 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 32   cor0..----..-82
2c210 0d 0a 2d 38 32 0d 0a 2d 38 32 0d 0a 0d 0a 6f 6e  ..-82..-82....on
2c220 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
2c230 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
2c240 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c250 20 6c 61 62 65 6c 2d 31 30 31 30 0d 0a 53 45 4c   label-1010..SEL
2c260 45 43 54 20 41 4c 4c 20 2d 20 2d 20 37 39 20 2a  ECT ALL - - 79 *
2c270 20 2d 20 2d 20 33 35 20 2a 20 2d 20 43 4f 55 4e   - - 35 * - COUN
2c280 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31  T( * ) FROM tab1
2c290 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 32   cor0..----..-82
2c2a0 39 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  95....skipif mys
2c2b0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2c2c0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2c2d0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 31 30 0d  sort label-1010.
2c2e0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20  .SELECT ALL - - 
2c2f0 37 39 20 2a 20 2d 20 2d 20 33 35 20 2a 20 2d 20  79 * - - 35 * - 
2c300 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
2c310 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
2c320 0d 0a 2d 38 32 39 35 0d 0a 0d 0a 71 75 65 72 79  ..-8295....query
2c330 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
2c340 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
2c350 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
2c360 4f 54 20 28 20 4e 55 4c 4c 20 29 20 4e 4f 54 20  OT ( NULL ) NOT 
2c370 42 45 54 57 45 45 4e 20 35 35 20 2d 20 2b 20 35  BETWEEN 55 - + 5
2c380 33 20 2d 20 2b 20 2d 20 63 6f 6c 30 20 2f 20 2b  3 - + - col0 / +
2c390 20 63 6f 6c 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a   col1 AND NULL..
2c3a0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
2c3b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2c3c0 41 4c 4c 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c  ALL col2 + - col
2c3d0 30 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20  0 + + + col2 AS 
2c3e0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
2c3f0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
2c400 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 30 20 2a   col2 * + col0 *
2c410 20 2b 20 2d 20 36 34 20 4e 4f 54 20 42 45 54 57   + - 64 NOT BETW
2c420 45 45 4e 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d  EEN + - col1 * -
2c430 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 30 20 41   col0 + - col0 A
2c440 4e 44 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d  ND ( NULL )..---
2c450 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  -....query II ro
2c460 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
2c470 63 6f 6c 30 20 41 53 20 63 6f 6c 32 2c 20 2d 20  col0 AS col2, - 
2c480 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  col1 AS col1 FRO
2c490 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
2c4a0 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 38 31 0d 0a  ----..-15..-81..
2c4b0 2d 38 37 0d 0a 2d 32 31 0d 0a 2d 39 37 0d 0a 2d  -87..-21..-97..-
2c4c0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
2c4d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
2c4e0 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
2c4f0 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
2c500 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55  E NOT NULL IS NU
2c510 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
2c520 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
2c530 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
2c540 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
2c550 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2c560 31 35 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53  15..SELECT - CAS
2c570 54 28 20 63 6f 6c 31 20 41 53 20 53 49 47 4e 45  T( col1 AS SIGNE
2c580 44 20 29 2c 20 2d 20 63 6f 6c 32 20 2d 20 63 6f  D ), - col2 - co
2c590 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
2c5a0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab0..----..-1..
2c5b0 2d 31 39 36 0d 0a 2d 32 31 0d 0a 2d 39 37 0d 0a  -196..-21..-97..
2c5c0 2d 38 31 0d 0a 2d 36 32 0d 0a 0d 0a 73 6b 69 70  -81..-62....skip
2c5d0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2c5e0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2c5f0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
2c600 6c 2d 31 30 31 35 0d 0a 53 45 4c 45 43 54 20 2d  l-1015..SELECT -
2c610 20 43 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20   CAST ( col1 AS 
2c620 49 4e 54 45 47 45 52 20 29 2c 20 2d 20 63 6f 6c  INTEGER ), - col
2c630 32 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31  2 - col0 AS col1
2c640 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
2c650 0d 0a 2d 31 0d 0a 2d 31 39 36 0d 0a 2d 32 31 0d  ..-1..-196..-21.
2c660 0a 2d 39 37 0d 0a 2d 38 31 0d 0a 2d 36 32 0d 0a  .-97..-81..-62..
2c670 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
2c680 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20  rt..SELECT col2 
2c690 41 53 20 63 6f 6c 32 2c 20 63 6f 6c 31 20 2b 20  AS col2, col1 + 
2c6a0 2b 20 31 39 20 46 52 4f 4d 20 74 61 62 31 0d 0a  + 19 FROM tab1..
2c6b0 2d 2d 2d 2d 0d 0a 35 39 0d 0a 32 34 0d 0a 36 38  ----..59..24..68
2c6c0 0d 0a 36 36 0d 0a 39 36 0d 0a 33 33 0d 0a 0d 0a  ..66..96..33....
2c6d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2c6e0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 37 32  .SELECT ALL + 72
2c6f0 20 2a 20 2b 20 39 37 20 46 52 4f 4d 20 74 61 62   * + 97 FROM tab
2c700 31 0d 0a 2d 2d 2d 2d 0d 0a 36 39 38 34 0d 0a 36  1..----..6984..6
2c710 39 38 34 0d 0a 36 39 38 34 0d 0a 0d 0a 6f 6e 6c  984..6984....onl
2c720 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
2c730 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
2c740 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
2c750 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2c760 30 31 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  018..SELECT DIST
2c770 49 4e 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c  INCT + CAST( NUL
2c780 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20  L AS SIGNED ) + 
2c790 2b 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c 31 20 41  + col0, + col1 A
2c7a0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
2c7b0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31 0d  ..----..NULL..1.
2c7c0 0a 4e 55 4c 4c 0d 0a 32 31 0d 0a 4e 55 4c 4c 0d  .NULL..21..NULL.
2c7d0 0a 38 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .81....skipif my
2c7e0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2c7f0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
2c800 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 31  owsort label-101
2c810 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
2c820 43 54 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c  CT + CAST ( NULL
2c830 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20   AS INTEGER ) + 
2c840 2b 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c 31 20 41  + col0, + col1 A
2c850 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
2c860 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31 0d  ..----..NULL..1.
2c870 0a 4e 55 4c 4c 0d 0a 32 31 0d 0a 4e 55 4c 4c 0d  .NULL..21..NULL.
2c880 0a 38 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .81....onlyif my
2c890 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
2c8a0 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
2c8b0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2c8c0 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
2c8d0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 31 39 0d  sort label-1019.
2c8e0 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28  .SELECT - COUNT(
2c8f0 20 2a 20 29 20 41 53 20 63 6f 6c 31 2c 20 2b 20   * ) AS col1, + 
2c900 43 41 53 54 28 20 2d 20 39 32 20 41 53 20 53 49  CAST( - 92 AS SI
2c910 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32  GNED ) FROM tab2
2c920 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 39 32 0d  ..----..-3..-92.
2c930 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2c940 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2c950 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
2c960 72 74 20 6c 61 62 65 6c 2d 31 30 31 39 0d 0a 53  rt label-1019..S
2c970 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20  ELECT - COUNT ( 
2c980 2a 20 29 20 41 53 20 63 6f 6c 31 2c 20 2b 20 43  * ) AS col1, + C
2c990 41 53 54 20 28 20 2d 20 39 32 20 41 53 20 49 4e  AST ( - 92 AS IN
2c9a0 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62  TEGER ) FROM tab
2c9b0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 39 32  2..----..-3..-92
2c9c0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
2c9d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
2c9e0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2c9f0 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
2ca00 20 3c 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d   < + col0..----.
2ca10 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2ca20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
2ca30 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
2ca40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2ca50 62 65 6c 2d 31 30 32 31 0d 0a 53 45 4c 45 43 54  bel-1021..SELECT
2ca60 20 44 49 53 54 49 4e 43 54 20 2b 20 35 30 20 2b   DISTINCT + 50 +
2ca70 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   + - CAST( NULL 
2ca80 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20  AS SIGNED ) + + 
2ca90 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 2a 20  col0 * - col0 * 
2caa0 37 31 20 2a 20 63 6f 6c 31 20 2a 20 63 6f 6c 30  71 * col1 * col0
2cab0 20 2f 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 63 6f   / - col0 + - co
2cac0 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
2cad0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab0..----..NULL
2cae0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2caf0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2cb00 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2cb10 72 74 20 6c 61 62 65 6c 2d 31 30 32 31 0d 0a 53  rt label-1021..S
2cb20 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2cb30 20 35 30 20 2b 20 2b 20 2d 20 43 41 53 54 20 28   50 + + - CAST (
2cb40 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
2cb50 20 29 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 2d 20   ) + + col0 * - 
2cb60 63 6f 6c 30 20 2a 20 37 31 20 2a 20 63 6f 6c 31  col0 * 71 * col1
2cb70 20 2a 20 63 6f 6c 30 20 2f 20 2d 20 63 6f 6c 30   * col0 / - col0
2cb80 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c   + - col2 AS col
2cb90 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
2cba0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
2cbb0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
2cbc0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
2cbd0 70 65 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  pe: DIV for inte
2cbe0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2cbf0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2cc00 6c 61 62 65 6c 2d 31 30 32 32 0d 0a 53 45 4c 45  label-1022..SELE
2cc10 43 54 20 31 36 20 2b 20 2b 20 43 41 53 54 28 20  CT 16 + + CAST( 
2cc20 2b 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44  + col2 AS SIGNED
2cc30 20 29 20 2b 20 2d 20 2b 20 63 6f 6c 31 20 44 49   ) + - + col1 DI
2cc40 56 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 2b 20 63  V + col0 * - + c
2cc50 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
2cc60 2d 2d 2d 0d 0a 31 31 32 0d 0a 37 35 0d 0a 38 34  ---..112..75..84
2cc70 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2cc80 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2cc90 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2cca0 72 74 20 6c 61 62 65 6c 2d 31 30 32 32 0d 0a 53  rt label-1022..S
2ccb0 45 4c 45 43 54 20 31 36 20 2b 20 2b 20 43 41 53  ELECT 16 + + CAS
2ccc0 54 20 28 20 2b 20 63 6f 6c 32 20 41 53 20 49 4e  T ( + col2 AS IN
2ccd0 54 45 47 45 52 20 29 20 2b 20 2d 20 2b 20 63 6f  TEGER ) + - + co
2cce0 6c 31 20 2f 20 2b 20 63 6f 6c 30 20 2a 20 2d 20  l1 / + col0 * - 
2ccf0 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  + col0 FROM tab1
2cd00 0d 0a 2d 2d 2d 2d 0d 0a 31 31 32 0d 0a 37 35 0d  ..----..112..75.
2cd10 0a 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .84....query I r
2cd20 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
2cd30 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 30  ISTINCT - + col0
2cd40 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2cd50 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
2cd60 4c 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63 6f 6c  L NOT IN ( - col
2cd70 32 2c 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d  2, col1 )..----.
2cd80 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2cd90 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2cda0 4e 43 54 20 63 6f 6c 30 20 2b 20 2d 20 2b 20 63  NCT col0 + - + c
2cdb0 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 41 53 20  ol0 * - col1 AS 
2cdc0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 63  col0 FROM tab0 c
2cdd0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 33 30 0d  or0..----..1230.
2cde0 0a 31 39 31 34 0d 0a 31 39 34 0d 0a 0d 0a 71 75  .1914..194....qu
2cdf0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2ce00 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 34  ELECT DISTINCT 4
2ce10 32 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 63  2 * + - col0 + c
2ce20 6f 6c 31 20 2d 20 2d 20 63 6f 6c 31 20 46 52 4f  ol1 - - col1 FRO
2ce30 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
2ce40 2d 0d 0a 2d 32 31 31 34 0d 0a 2d 33 35 36 30 0d  -..-2114..-3560.
2ce50 0a 2d 33 37 32 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  .-3728....onlyif
2ce60 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2ce70 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
2ce80 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2ce90 65 6c 2d 31 30 32 36 0d 0a 53 45 4c 45 43 54 20  el-1026..SELECT 
2cea0 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ALL + COUNT( * )
2ceb0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
2cec0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
2ced0 4c 4c 20 3c 3e 20 28 20 2d 20 38 20 29 20 2a 20  LL <> ( - 8 ) * 
2cee0 28 20 2d 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d  ( - col0 )..----
2cef0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
2cf00 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2cf10 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
2cf20 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
2cf30 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
2cf40 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
2cf50 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
2cf60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2cf70 61 62 65 6c 2d 31 30 32 36 0d 0a 53 45 4c 45 43  abel-1026..SELEC
2cf80 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20  T ALL + COUNT ( 
2cf90 2a 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  * ) col0 FROM ta
2cfa0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
2cfb0 20 4e 55 4c 4c 20 3c 3e 20 28 20 2d 20 38 20 29   NULL <> ( - 8 )
2cfc0 20 2a 20 28 20 2d 20 63 6f 6c 30 20 29 0d 0a 2d   * ( - col0 )..-
2cfd0 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
2cfe0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2cff0 54 20 38 33 20 2a 20 2b 20 63 6f 6c 30 20 41 53  T 83 * + col0 AS
2d000 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
2d010 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
2d020 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
2d030 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
2d040 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2d050 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 33 33 20  DISTINCT + + 33 
2d060 2a 20 2b 20 63 6f 6c 30 20 2d 20 2b 20 2d 20 63  * + col0 - + - c
2d070 6f 6c 30 20 2b 20 39 31 20 2a 20 2d 20 39 39 20  ol0 + 91 * - 99 
2d080 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2d090 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 31 35 0d 0a  0..----..-5915..
2d0a0 2d 36 31 31 39 0d 0a 2d 37 32 37 35 0d 0a 0d 0a  -6119..-7275....
2d0b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2d0c0 0a 53 45 4c 45 43 54 20 2d 20 32 36 20 2d 20 2b  .SELECT - 26 - +
2d0d0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
2d0e0 0a 2d 2d 2d 2d 0d 0a 2d 31 31 33 0d 0a 2d 31 32  .----..-113..-12
2d0f0 33 0d 0a 2d 34 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  3..-41....onlyif
2d100 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2d110 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2d120 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  n: ..query II ro
2d130 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 30  wsort label-1030
2d140 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2d150 54 20 2d 20 63 6f 6c 30 20 2d 20 63 6f 6c 32 20  T - col0 - col2 
2d160 2b 20 2b 20 38 36 2c 20 2b 20 63 6f 6c 30 20 44  + + 86, + col0 D
2d170 49 56 20 2b 20 32 33 20 63 6f 6c 32 20 46 52 4f  IV + 23 col2 FRO
2d180 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
2d190 31 0d 0a 33 0d 0a 2d 31 31 30 0d 0a 34 0d 0a 32  1..3..-110..4..2
2d1a0 34 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  4..0....skipif m
2d1b0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2d1c0 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
2d1d0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
2d1e0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
2d1f0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
2d200 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
2d210 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
2d220 20 6c 61 62 65 6c 2d 31 30 33 30 0d 0a 53 45 4c   label-1030..SEL
2d230 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
2d240 6f 6c 30 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 38  ol0 - col2 + + 8
2d250 36 2c 20 2b 20 63 6f 6c 30 20 2f 20 2b 20 32 33  6, + col0 / + 23
2d260 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
2d270 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d 0a 33 0d 0a 2d  .----..-11..3..-
2d280 31 31 30 0d 0a 34 0d 0a 32 34 0d 0a 30 0d 0a 0d  110..4..24..0...
2d290 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2d2a0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20  ..SELECT col1 * 
2d2b0 2d 20 2d 20 37 30 20 46 52 4f 4d 20 74 61 62 32  - - 70 FROM tab2
2d2c0 20 57 48 45 52 45 20 2b 20 2d 20 63 6f 6c 30 20   WHERE + - col0 
2d2d0 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
2d2e0 2d 0d 0a 33 35 37 30 0d 0a 34 36 39 30 0d 0a 35  -..3570..4690..5
2d2f0 33 39 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  390....skipif po
2d300 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
2d310 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
2d320 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
2d330 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
2d340 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2d350 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32  .SELECT ALL col2
2d360 20 2a 20 2b 20 30 20 2d 20 2d 20 63 6f 6c 32 20   * + 0 - - col2 
2d370 2b 20 33 34 20 63 6f 6c 31 20 46 52 4f 4d 20 74  + 34 col1 FROM t
2d380 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 37  ab2..----..57..7
2d390 34 0d 0a 39 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  4..92....onlyif 
2d3a0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2d3b0 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
2d3c0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
2d3d0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
2d3e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 33  wsort label-1033
2d3f0 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 28 20 2d  ..SELECT + ( ( -
2d400 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 29 20   COUNT( * ) ) ) 
2d410 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
2d420 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 32  SIGNED ) AS col2
2d430 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
2d440 20 2b 20 39 38 20 49 53 20 4e 55 4c 4c 0d 0a 2d   + 98 IS NULL..-
2d450 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
2d460 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2d470 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2d480 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2d490 6c 2d 31 30 33 33 0d 0a 53 45 4c 45 43 54 20 2b  l-1033..SELECT +
2d4a0 20 28 20 28 20 2d 20 43 4f 55 4e 54 20 28 20 2a   ( ( - COUNT ( *
2d4b0 20 29 20 29 20 29 20 2b 20 43 41 53 54 20 28 20   ) ) ) + CAST ( 
2d4c0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
2d4d0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
2d4e0 61 62 31 20 57 48 45 52 45 20 2b 20 39 38 20 49  ab1 WHERE + 98 I
2d4f0 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S NULL..----..NU
2d500 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  LL....query I ro
2d510 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
2d520 63 6f 6c 32 20 2d 20 63 6f 6c 30 20 2a 20 2d 20  col2 - col0 * - 
2d530 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  + col1 FROM tab0
2d540 0d 0a 2d 2d 2d 2d 0d 0a 31 32 36 32 0d 0a 31 38  ..----..1262..18
2d550 33 37 0d 0a 31 39 36 0d 0a 0d 0a 6f 6e 6c 79 69  37..196....onlyi
2d560 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
2d570 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
2d580 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
2d590 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 35  wsort label-1035
2d5a0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20  ..SELECT col0 * 
2d5b0 2b 20 2d 20 63 6f 6c 31 20 2d 20 2d 20 63 6f 6c  + - col1 - - col
2d5c0 31 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  1 + + CAST( NULL
2d5d0 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
2d5e0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
2d5f0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
2d600 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
2d610 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2d620 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2d630 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2d640 30 33 35 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  035..SELECT col0
2d650 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 2d 20 2d 20   * + - col1 - - 
2d660 63 6f 6c 31 20 2b 20 2b 20 43 41 53 54 20 28 20  col1 + + CAST ( 
2d670 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
2d680 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
2d690 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
2d6a0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .NULL..NULL....o
2d6b0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2d6c0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2d6d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2d6e0 74 20 6c 61 62 65 6c 2d 31 30 33 36 0d 0a 53 45  t label-1036..SE
2d6f0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f  LECT DISTINCT CO
2d700 55 4e 54 28 20 2a 20 29 20 2d 20 2b 20 34 35 20  UNT( * ) - + 45 
2d710 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2d720 0a 2d 34 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-42....skipif m
2d730 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2d740 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2d750 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33  owsort label-103
2d760 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  6..SELECT DISTIN
2d770 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d  CT COUNT ( * ) -
2d780 20 2b 20 34 35 20 46 52 4f 4d 20 74 61 62 31 0d   + 45 FROM tab1.
2d790 0a 2d 2d 2d 2d 0d 0a 2d 34 32 0d 0a 0d 0a 71 75  .----..-42....qu
2d7a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2d7b0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 38  ELECT DISTINCT 8
2d7c0 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
2d7d0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38 32 0d 0a 0d  ab2..----..82...
2d7e0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2d7f0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2d800 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  NCT * FROM tab1 
2d810 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
2d820 54 20 2b 20 38 32 20 2a 20 63 6f 6c 32 20 49 53  T + 82 * col2 IS
2d830 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
2d840 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
2d850 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34   c6c0a4111b36d04
2d860 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61  dbc811a11e4d54ca
2d870 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  d....onlyif mysq
2d880 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
2d890 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2d8a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2d8b0 6c 61 62 65 6c 2d 31 30 33 39 0d 0a 53 45 4c 45  label-1039..SELE
2d8c0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 31 35  CT DISTINCT - 15
2d8d0 20 44 49 56 20 2b 20 37 33 20 46 52 4f 4d 20 74   DIV + 73 FROM t
2d8e0 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
2d8f0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
2d900 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2d910 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2d920 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 39 0d 0a  ort label-1039..
2d930 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2d940 2d 20 31 35 20 2f 20 2b 20 37 33 20 46 52 4f 4d  - 15 / + 73 FROM
2d950 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
2d960 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
2d970 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
2d980 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 41 53 20  ISTINCT col0 AS 
2d990 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57  col0 FROM tab0 W
2d9a0 48 45 52 45 20 4e 55 4c 4c 20 49 4e 20 28 20 2d  HERE NULL IN ( -
2d9b0 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col2 )..----...
2d9c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2d9d0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2d9e0 54 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c  T + col1 * - col
2d9f0 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
2da00 61 62 32 20 57 48 45 52 45 20 2b 20 63 6f 6c 32  ab2 WHERE + col2
2da10 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
2da20 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2da30 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
2da40 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
2da50 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
2da60 61 62 65 6c 2d 31 30 34 32 0d 0a 53 45 4c 45 43  abel-1042..SELEC
2da70 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
2da80 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
2da90 4e 55 4c 4c 20 49 4e 20 28 20 28 20 2d 20 2d 20  NULL IN ( ( - - 
2daa0 63 6f 6c 31 20 29 20 2f 20 2d 20 2d 20 63 6f 6c  col1 ) / - - col
2dab0 32 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d  2 * + - col1 * -
2dac0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
2dad0 49 47 4e 45 44 20 29 20 2d 20 2b 20 63 6f 6c 31  IGNED ) - + col1
2dae0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70   )..----....skip
2daf0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2db00 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2db10 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
2db20 65 6c 2d 31 30 34 32 0d 0a 53 45 4c 45 43 54 20  el-1042..SELECT 
2db30 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ALL * FROM tab0 
2db40 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
2db50 4c 4c 20 49 4e 20 28 20 28 20 2d 20 2d 20 63 6f  LL IN ( ( - - co
2db60 6c 31 20 29 20 2f 20 2d 20 2d 20 63 6f 6c 32 20  l1 ) / - - col2 
2db70 2a 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 43  * + - col1 * - C
2db80 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
2db90 54 45 47 45 52 20 29 20 2d 20 2b 20 63 6f 6c 31  TEGER ) - + col1
2dba0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
2dbb0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2dbc0 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2a  ECT ALL + col2 *
2dbd0 20 2d 20 2b 20 36 37 20 2b 20 63 6f 6c 32 20 46   - + 67 + col2 F
2dbe0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2dbf0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 31 38 0d 0a 2d  ..----..-1518..-
2dc00 32 36 34 30 0d 0a 2d 33 38 32 38 0d 0a 0d 0a 6f  2640..-3828....o
2dc10 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2dc20 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2dc30 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
2dc40 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
2dc50 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2dc60 6c 2d 31 30 34 34 0d 0a 53 45 4c 45 43 54 20 2b  l-1044..SELECT +
2dc70 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20   COUNT( * ) * + 
2dc80 4d 49 4e 28 20 2d 20 63 6f 6c 30 20 29 20 2a 20  MIN( - col0 ) * 
2dc90 43 4f 55 4e 54 28 20 2a 20 29 20 2d 20 2b 20 2b  COUNT( * ) - + +
2dca0 20 35 33 20 44 49 56 20 2d 20 2d 20 38 35 20 2b   53 DIV - - 85 +
2dcb0 20 37 35 20 2b 20 39 20 2a 20 2d 20 34 39 20 46   75 + 9 * - 49 F
2dcc0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2dcd0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34 31 0d 0a 0d  ..----..-1041...
2dce0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2dcf0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2dd00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2dd10 6c 61 62 65 6c 2d 31 30 34 34 0d 0a 53 45 4c 45  label-1044..SELE
2dd20 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  CT + COUNT ( * )
2dd30 20 2a 20 2b 20 4d 49 4e 20 28 20 2d 20 63 6f 6c   * + MIN ( - col
2dd40 30 20 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20  0 ) * COUNT ( * 
2dd50 29 20 2d 20 2b 20 2b 20 35 33 20 2f 20 2d 20 2d  ) - + + 53 / - -
2dd60 20 38 35 20 2b 20 37 35 20 2b 20 39 20 2a 20 2d   85 + 75 + 9 * -
2dd70 20 34 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53   49 FROM tab2 AS
2dd80 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30   cor0..----..-10
2dd90 34 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  41....query III 
2dda0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2ddb0 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
2ddc0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
2ddd0 63 6f 6c 32 20 3c 3d 20 2d 20 35 36 0d 0a 2d 2d  col2 <= - 56..--
2dde0 2d 2d 0d 0a 34 36 0d 0a 35 31 0d 0a 32 33 0d 0a  --..46..51..23..
2ddf0 36 34 0d 0a 37 37 0d 0a 34 30 0d 0a 0d 0a 6f 6e  64..77..40....on
2de00 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
2de10 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
2de20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2de30 20 6c 61 62 65 6c 2d 31 30 34 36 0d 0a 53 45 4c   label-1046..SEL
2de40 45 43 54 20 2d 20 4d 41 58 28 20 44 49 53 54 49  ECT - MAX( DISTI
2de50 4e 43 54 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  NCT col0 ) FROM 
2de60 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
2de70 2d 2d 0d 0a 2d 37 35 0d 0a 0d 0a 73 6b 69 70 69  --..-75....skipi
2de80 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2de90 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2dea0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2deb0 31 30 34 36 0d 0a 53 45 4c 45 43 54 20 2d 20 4d  1046..SELECT - M
2dec0 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f  AX ( DISTINCT co
2ded0 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  l0 ) FROM tab2 A
2dee0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37  S cor0..----..-7
2def0 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
2df00 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2df10 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2df20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2df30 34 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28  47..SELECT ALL (
2df40 20 2d 20 28 20 2b 20 2d 20 28 20 2b 20 43 4f 55   - ( + - ( + COU
2df50 4e 54 28 20 2a 20 29 20 29 20 29 20 29 20 41 53  NT( * ) ) ) ) AS
2df60 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
2df70 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
2df80 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2df90 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2dfa0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2dfb0 72 74 20 6c 61 62 65 6c 2d 31 30 34 37 0d 0a 53  rt label-1047..S
2dfc0 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d 20 28 20  ELECT ALL ( - ( 
2dfd0 2b 20 2d 20 28 20 2b 20 43 4f 55 4e 54 20 28 20  + - ( + COUNT ( 
2dfe0 2a 20 29 20 29 20 29 20 29 20 41 53 20 63 6f 6c  * ) ) ) ) AS col
2dff0 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
2e000 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
2e010 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2e020 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2e030 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2e040 72 74 20 6c 61 62 65 6c 2d 31 30 34 38 0d 0a 53  rt label-1048..S
2e050 45 4c 45 43 54 20 2d 20 53 55 4d 28 20 2b 20 2b  ELECT - SUM( + +
2e060 20 28 20 2b 20 37 39 20 29 20 29 20 41 53 20 63   ( + 79 ) ) AS c
2e070 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
2e080 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33   cor0..----..-23
2e090 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
2e0a0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2e0b0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2e0c0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34 38 0d 0a  ort label-1048..
2e0d0 53 45 4c 45 43 54 20 2d 20 53 55 4d 20 28 20 2b  SELECT - SUM ( +
2e0e0 20 2b 20 28 20 2b 20 37 39 20 29 20 29 20 41 53   + ( + 79 ) ) AS
2e0f0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
2e100 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
2e110 32 33 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  237....query II 
2e120 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2e130 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 2c 20 39  DISTINCT col1, 9
2e140 35 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  5 FROM tab2..---
2e150 2d 0d 0a 35 31 0d 0a 39 35 0d 0a 36 37 0d 0a 39  -..51..95..67..9
2e160 35 0d 0a 37 37 0d 0a 39 35 0d 0a 0d 0a 6f 6e 6c  5..77..95....onl
2e170 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
2e180 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
2e190 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
2e1a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2e1b0 31 30 35 30 0d 0a 53 45 4c 45 43 54 20 2a 20 46  1050..SELECT * F
2e1c0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
2e1d0 4f 54 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 31  OT col1 + - col1
2e1e0 20 2a 20 2b 20 2d 20 43 41 53 54 28 20 37 33 20   * + - CAST( 73 
2e1f0 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 63 6f  AS SIGNED ) + co
2e200 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  l2 IS NOT NULL..
2e210 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ----....skipif m
2e220 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2e230 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49  tible..query III
2e240 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2e250 30 35 30 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  050..SELECT * FR
2e260 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
2e270 54 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 31 20  T col1 + - col1 
2e280 2a 20 2b 20 2d 20 43 41 53 54 20 28 20 37 33 20  * + - CAST ( 73 
2e290 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 63  AS INTEGER ) + c
2e2a0 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol2 IS NOT NULL.
2e2b0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
2e2c0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2e2d0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2e2e0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2e2f0 6c 2d 31 30 35 31 0d 0a 53 45 4c 45 43 54 20 44  l-1051..SELECT D
2e300 49 53 54 49 4e 43 54 20 53 55 4d 28 20 2b 20 2d  ISTINCT SUM( + -
2e310 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 20   col1 ) AS col0 
2e320 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2e330 0a 2d 36 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-66....skipif m
2e340 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2e350 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2e360 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35  owsort label-105
2e370 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  1..SELECT DISTIN
2e380 43 54 20 53 55 4d 20 28 20 2b 20 2d 20 63 6f 6c  CT SUM ( + - col
2e390 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  1 ) AS col0 FROM
2e3a0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 36   tab1..----..-66
2e3b0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2e3c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2e3d0 49 4e 43 54 20 2b 20 2b 20 28 20 63 6f 6c 30 20  INCT + + ( col0 
2e3e0 29 20 2b 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b  ) + - + col2 * +
2e3f0 20 38 33 20 2b 20 2b 20 2d 20 63 6f 6c 30 20 46   83 + + - col0 F
2e400 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
2e410 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL IS NULL..---
2e420 2d 0d 0a 2d 33 39 30 31 0d 0a 2d 38 32 31 37 0d  -..-3901..-8217.
2e430 0a 2d 38 33 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .-830....onlyif 
2e440 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
2e450 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
2e460 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2e470 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 33 0d 0a  ort label-1053..
2e480 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 44 49  SELECT + col2 DI
2e490 56 20 2b 20 2d 20 28 20 2d 20 2b 20 63 6f 6c 31  V + - ( - + col1
2e4a0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
2e4b0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31  tab1..----..1..1
2e4c0 31 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  1..6....skipif m
2e4d0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2e4e0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2e4f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35  owsort label-105
2e500 33 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32  3..SELECT + col2
2e510 20 2f 20 2b 20 2d 20 28 20 2d 20 2b 20 63 6f 6c   / + - ( - + col
2e520 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  1 ) AS col1 FROM
2e530 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   tab1..----..1..
2e540 31 31 0d 0a 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  11..6....onlyif 
2e550 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2e560 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2e570 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2e580 6c 2d 31 30 35 34 0d 0a 53 45 4c 45 43 54 20 44  l-1054..SELECT D
2e590 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a  ISTINCT COUNT( *
2e5a0 20 29 20 2a 20 2b 20 2d 20 34 32 20 41 53 20 63   ) * + - 42 AS c
2e5b0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
2e5c0 2d 2d 2d 0d 0a 2d 31 32 36 0d 0a 0d 0a 73 6b 69  ---..-126....ski
2e5d0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2e5e0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2e5f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2e600 6c 2d 31 30 35 34 0d 0a 53 45 4c 45 43 54 20 44  l-1054..SELECT D
2e610 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20  ISTINCT COUNT ( 
2e620 2a 20 29 20 2a 20 2b 20 2d 20 34 32 20 41 53 20  * ) * + - 42 AS 
2e630 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col1 FROM tab0..
2e640 2d 2d 2d 2d 0d 0a 2d 31 32 36 0d 0a 0d 0a 71 75  ----..-126....qu
2e650 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2e660 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
2e670 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48  ol0 FROM tab0 WH
2e680 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3d 20 2d  ERE NOT NULL = -
2e690 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   col0..----....o
2e6a0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
2e6b0 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
2e6c0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 45 43  gate syntax: DEC
2e6d0 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65  IMAL type: ..que
2e6e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2e6f0 65 6c 2d 31 30 35 36 0d 0a 53 45 4c 45 43 54 20  el-1056..SELECT 
2e700 41 4c 4c 20 43 4f 55 4e 54 28 20 2b 20 43 41 53  ALL COUNT( + CAS
2e710 54 28 20 2d 20 2b 20 36 33 20 41 53 20 44 45 43  T( - + 63 AS DEC
2e720 49 4d 41 4c 20 29 20 29 20 2a 20 2b 20 37 31 20  IMAL ) ) * + 71 
2e730 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
2e740 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f  2 WHERE NOT - co
2e750 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l1 IS NULL..----
2e760 0d 0a 32 31 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..213....skipif 
2e770 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2e780 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2e790 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2e7a0 35 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43  56..SELECT ALL C
2e7b0 4f 55 4e 54 20 28 20 2b 20 43 41 53 54 20 28 20  OUNT ( + CAST ( 
2e7c0 2d 20 2b 20 36 33 20 41 53 20 52 45 41 4c 20 29  - + 63 AS REAL )
2e7d0 20 29 20 2a 20 2b 20 37 31 20 41 53 20 63 6f 6c   ) * + 71 AS col
2e7e0 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  1 FROM tab2 WHER
2e7f0 45 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 49 53 20  E NOT - col1 IS 
2e800 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 31 33 0d  NULL..----..213.
2e810 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
2e820 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
2e830 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 2d  ROM tab0 WHERE -
2e840 20 63 6f 6c 32 20 3e 20 2d 20 63 6f 6c 30 0d 0a   col2 > - col0..
2e850 2d 2d 2d 2d 0d 0a 38 37 0d 0a 32 31 0d 0a 31 30  ----..87..21..10
2e860 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2e870 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31 33 20 2b  ort..SELECT 13 +
2e880 20 63 6f 6c 31 20 2b 20 2d 20 2b 20 63 6f 6c 30   col1 + - + col0
2e890 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
2e8a0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 33 0d 0a 2d  r0..----..-53..-
2e8b0 38 33 0d 0a 37 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  83..79....onlyif
2e8c0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2e8d0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
2e8e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2e8f0 65 6c 2d 31 30 35 39 0d 0a 53 45 4c 45 43 54 20  el-1059..SELECT 
2e900 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b  + + COUNT( * ) +
2e910 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
2e920 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
2e930 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a   cor0..----..6..
2e940 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2e950 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2e960 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e970 20 6c 61 62 65 6c 2d 31 30 35 39 0d 0a 53 45 4c   label-1059..SEL
2e980 45 43 54 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20  ECT + + COUNT ( 
2e990 2a 20 29 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  * ) + COUNT ( * 
2e9a0 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
2e9b0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2e9c0 2d 0d 0a 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..6....onlyif m
2e9d0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
2e9e0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
2e9f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2ea00 2d 31 30 36 30 0d 0a 53 45 4c 45 43 54 20 2b 20  -1060..SELECT + 
2ea10 33 32 20 2b 20 2b 20 36 39 20 2a 20 2d 20 43 4f  32 + + 69 * - CO
2ea20 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
2ea30 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
2ea40 20 28 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 63 6f   ( - col0 + - co
2ea50 6c 32 20 2b 20 2d 20 32 20 2a 20 2b 20 63 6f 6c  l2 + - 2 * + col
2ea60 31 20 2a 20 2b 20 63 6f 6c 31 20 29 20 49 53 20  1 * + col1 ) IS 
2ea70 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a  NULL..----..32..
2ea80 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2ea90 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2eaa0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2eab0 20 6c 61 62 65 6c 2d 31 30 36 30 0d 0a 53 45 4c   label-1060..SEL
2eac0 45 43 54 20 2b 20 33 32 20 2b 20 2b 20 36 39 20  ECT + 32 + + 69 
2ead0 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  * - COUNT ( * ) 
2eae0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2eaf0 30 20 57 48 45 52 45 20 28 20 2d 20 63 6f 6c 30  0 WHERE ( - col0
2eb00 20 2b 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 32 20   + - col2 + - 2 
2eb10 2a 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c  * + col1 * + col
2eb20 31 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  1 ) IS NULL..---
2eb30 2d 0d 0a 33 32 0d 0a 0d 0a 71 75 65 72 79 20 49  -..32....query I
2eb40 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2eb50 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2d 20   DISTINCT + ( - 
2eb60 38 32 20 29 20 2a 20 2b 20 63 6f 6c 30 20 2b 20  82 ) * + col0 + 
2eb70 2d 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  - - col0 FROM ta
2eb80 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
2eb90 0d 0a 2d 33 37 32 36 0d 0a 2d 35 31 38 34 0d 0a  ..-3726..-5184..
2eba0 2d 36 30 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49  -6075....query I
2ebb0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
2ebc0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
2ebd0 53 20 63 6f 72 30 20 57 48 45 52 45 20 32 38 20  S cor0 WHERE 28 
2ebe0 2a 20 2d 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55  * - + col1 IS NU
2ebf0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
2ec00 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2ec10 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2ec20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2ec30 61 62 65 6c 2d 31 30 36 33 0d 0a 53 45 4c 45 43  abel-1063..SELEC
2ec40 54 20 2b 20 2d 20 4d 49 4e 28 20 41 4c 4c 20 2d  T + - MIN( ALL -
2ec50 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31 20   col1 ) AS col1 
2ec60 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2ec70 30 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 0d 0a 73  0..----..47....s
2ec80 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2ec90 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2eca0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2ecb0 62 65 6c 2d 31 30 36 33 0d 0a 53 45 4c 45 43 54  bel-1063..SELECT
2ecc0 20 2b 20 2d 20 4d 49 4e 20 28 20 41 4c 4c 20 2d   + - MIN ( ALL -
2ecd0 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31 20   col1 ) AS col1 
2ece0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2ecf0 30 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 0d 0a 71  0..----..47....q
2ed00 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
2ed10 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
2ed20 74 61 62 31 20 57 48 45 52 45 20 63 6f 6c 32 20  tab1 WHERE col2 
2ed30 2a 20 63 6f 6c 30 20 3e 3d 20 2b 20 34 31 0d 0a  * col0 >= + 41..
2ed40 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
2ed50 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34  ashing to c6c0a4
2ed60 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61  111b36d04dbc811a
2ed70 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75  11e4d54cad....qu
2ed80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2ed90 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
2eda0 20 36 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   65 AS col2 FROM
2edb0 20 74 61 62 30 20 57 48 45 52 45 20 2b 20 32 32   tab0 WHERE + 22
2edc0 20 2b 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54   + - col0 IS NOT
2edd0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35   NULL..----..-65
2ede0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2edf0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2ee00 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2ee10 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36  owsort label-106
2ee20 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20  6..SELECT ALL ( 
2ee30 2d 20 2b 20 4d 49 4e 28 20 41 4c 4c 20 63 6f 6c  - + MIN( ALL col
2ee40 32 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52  2 ) ) AS col0 FR
2ee50 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
2ee60 35 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  59....skipif mys
2ee70 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2ee80 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2ee90 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 36 0d  sort label-1066.
2eea0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d 20  .SELECT ALL ( - 
2eeb0 2b 20 4d 49 4e 20 28 20 41 4c 4c 20 63 6f 6c 32  + MIN ( ALL col2
2eec0 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   ) ) AS col0 FRO
2eed0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  M tab1..----..-5
2eee0 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
2eef0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2ef00 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2ef10 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2ef20 36 37 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  67..SELECT COUNT
2ef30 28 20 2a 20 29 20 2d 20 2d 20 2d 20 34 33 20 2d  ( * ) - - - 43 -
2ef40 20 2d 20 2b 20 33 39 20 46 52 4f 4d 20 74 61 62   - + 39 FROM tab
2ef50 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
2ef60 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-1....skipif my
2ef70 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2ef80 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2ef90 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 37  wsort label-1067
2efa0 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28  ..SELECT COUNT (
2efb0 20 2a 20 29 20 2d 20 2d 20 2d 20 34 33 20 2d 20   * ) - - - 43 - 
2efc0 2d 20 2b 20 33 39 20 46 52 4f 4d 20 74 61 62 32  - + 39 FROM tab2
2efd0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2efe0 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  -1....onlyif mys
2eff0 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
2f000 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
2f010 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2f020 20 6c 61 62 65 6c 2d 31 30 36 38 0d 0a 53 45 4c   label-1068..SEL
2f030 45 43 54 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 63  ECT col1 + + - c
2f040 6f 6c 30 20 44 49 56 20 2d 20 2b 20 63 6f 6c 30  ol0 DIV - + col0
2f050 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
2f060 0a 2d 2d 2d 2d 0d 0a 32 0d 0a 32 32 0d 0a 38 32  .----..2..22..82
2f070 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2f080 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2f090 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2f0a0 72 74 20 6c 61 62 65 6c 2d 31 30 36 38 0d 0a 53  rt label-1068..S
2f0b0 45 4c 45 43 54 20 63 6f 6c 31 20 2b 20 2b 20 2d  ELECT col1 + + -
2f0c0 20 63 6f 6c 30 20 2f 20 2d 20 2b 20 63 6f 6c 30   col0 / - + col0
2f0d0 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
2f0e0 0a 2d 2d 2d 2d 0d 0a 32 0d 0a 32 32 0d 0a 38 32  .----..2..22..82
2f0f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2f100 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2f110 34 37 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63  47 + + col2 AS c
2f120 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
2f130 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 36   cor0..----..106
2f140 0d 0a 31 31 35 0d 0a 31 34 33 0d 0a 0d 0a 71 75  ..115..143....qu
2f150 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2f160 45 4c 45 43 54 20 63 6f 6c 30 20 2b 20 2d 20 63  ELECT col0 + - c
2f170 6f 6c 30 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f  ol0 + - col1 FRO
2f180 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
2f190 2d 0d 0a 2d 31 0d 0a 2d 32 31 0d 0a 2d 38 31 0d  -..-1..-21..-81.
2f1a0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2f1b0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
2f1c0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
2f1d0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 31  wsort label-1071
2f1e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
2f1f0 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 2b   MAX( DISTINCT +
2f200 20 2d 20 32 20 29 20 2b 20 2d 20 36 36 20 46 52   - 2 ) + - 66 FR
2f210 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
2f220 2d 2d 0d 0a 2d 36 34 0d 0a 0d 0a 73 6b 69 70 69  --..-64....skipi
2f230 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2f240 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2f250 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2f260 31 30 37 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1071..SELECT ALL
2f270 20 2b 20 2d 20 4d 41 58 20 28 20 44 49 53 54 49   + - MAX ( DISTI
2f280 4e 43 54 20 2b 20 2d 20 32 20 29 20 2b 20 2d 20  NCT + - 2 ) + - 
2f290 36 36 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  66 FROM tab0 cor
2f2a0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 34 0d 0a 0d 0a  0..----..-64....
2f2b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2f2c0 0a 53 45 4c 45 43 54 20 32 38 20 2a 20 2d 20 63  .SELECT 28 * - c
2f2d0 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol1 AS col1 FROM
2f2e0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
2f2f0 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20  ERE NULL IS NOT 
2f300 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
2f310 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2f320 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
2f330 6f 6c 31 20 2b 20 2d 20 2d 20 39 34 20 2b 20 63  ol1 + - - 94 + c
2f340 6f 6c 32 20 2d 20 28 20 39 32 20 29 20 2a 20 2d  ol2 - ( 92 ) * -
2f350 20 63 6f 6c 32 20 2a 20 63 6f 6c 30 20 41 53 20   col2 * col0 AS 
2f360 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
2f370 2d 2d 2d 2d 0d 0a 34 35 30 36 33 36 0d 0a 34 36  ----..450636..46
2f380 31 35 33 38 0d 0a 35 36 39 35 30 35 0d 0a 0d 0a  1538..569505....
2f390 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2f3a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2f3b0 20 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20 46 52   ( + - col1 ) FR
2f3c0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
2f3d0 31 0d 0a 2d 32 31 0d 0a 2d 38 31 0d 0a 0d 0a 71  1..-21..-81....q
2f3e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2f3f0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
2f400 31 20 2b 20 2b 20 30 20 46 52 4f 4d 20 74 61 62  1 + + 0 FROM tab
2f410 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  2 WHERE NULL IS 
2f420 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
2f430 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2f440 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2f450 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  x: ..query II ro
2f460 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 36  wsort label-1076
2f470 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
2f480 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 53 55  OUNT( * ) * - SU
2f490 4d 28 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63  M( - col0 ) AS c
2f4a0 6f 6c 32 2c 20 2d 20 35 34 20 2a 20 2d 20 2b 20  ol2, - 54 * - + 
2f4b0 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c 31 20  COUNT( * ) col1 
2f4c0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2f4d0 0a 36 38 31 0d 0a 31 36 32 0d 0a 0d 0a 73 6b 69  .681..162....ski
2f4e0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2f4f0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
2f500 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2f510 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2f520 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2f530 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2f540 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
2f550 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 36  wsort label-1076
2f560 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
2f570 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 53  OUNT ( * ) * - S
2f580 55 4d 20 28 20 2d 20 63 6f 6c 30 20 29 20 41 53  UM ( - col0 ) AS
2f590 20 63 6f 6c 32 2c 20 2d 20 35 34 20 2a 20 2d 20   col2, - 54 * - 
2f5a0 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f  + COUNT ( * ) co
2f5b0 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
2f5c0 2d 2d 0d 0a 36 38 31 0d 0a 31 36 32 0d 0a 0d 0a  --..681..162....
2f5d0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
2f5e0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
2f5f0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
2f600 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
2f610 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
2f620 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2f630 20 37 36 20 2a 20 63 6f 6c 31 20 2a 20 2b 20 2b   76 * col1 * + +
2f640 20 28 20 2d 20 2d 20 63 6f 6c 32 20 29 20 63 6f   ( - - col2 ) co
2f650 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
2f660 2d 2d 0d 0a 32 33 34 30 38 30 0d 0a 32 39 35 33  --..234080..2953
2f670 33 36 0d 0a 38 39 31 34 38 0d 0a 0d 0a 6f 6e 6c  36..89148....onl
2f680 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2f690 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
2f6a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2f6b0 6c 61 62 65 6c 2d 31 30 37 38 0d 0a 53 45 4c 45  label-1078..SELE
2f6c0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f  CT DISTINCT - CO
2f6d0 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 31 30 20  UNT( * ) * - 10 
2f6e0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
2f6f0 2d 2d 2d 2d 0d 0a 33 30 0d 0a 0d 0a 73 6b 69 70  ----..30....skip
2f700 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2f710 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
2f720 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
2f730 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
2f740 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
2f750 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
2f760 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
2f770 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 38 0d 0a  ort label-1078..
2f780 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2f790 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  - COUNT ( * ) * 
2f7a0 2d 20 31 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74  - 10 col1 FROM t
2f7b0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 30 0d 0a 0d  ab1..----..30...
2f7c0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2f7d0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2f7e0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2f7f0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 39 0d 0a  ort label-1079..
2f800 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2b 20  SELECT COUNT( + 
2f810 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30  - col2 ) AS col0
2f820 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
2f830 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..3....skipif my
2f840 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2f850 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2f860 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 39  wsort label-1079
2f870 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28  ..SELECT COUNT (
2f880 20 2b 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63   + - col2 ) AS c
2f890 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
2f8a0 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66  ---..3....skipif
2f8b0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
2f8c0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
2f8d0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
2f8e0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
2f8f0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
2f900 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2f910 4e 43 54 20 63 6f 6c 30 20 2a 20 2b 20 38 39 20  NCT col0 * + 89 
2f920 2a 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 2b  * - - col1 * + +
2f930 20 31 36 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   16 col2 FROM ta
2f940 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 33 34 30 37 30  b2..----..334070
2f950 34 0d 0a 37 30 31 37 34 37 32 0d 0a 37 31 35 35  4..7017472..7155
2f960 36 30 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  600....query III
2f970 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2f980 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32   ALL * FROM tab2
2f990 20 57 48 45 52 45 20 2b 20 2b 20 63 6f 6c 31 20   WHERE + + col1 
2f9a0 2b 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55  + col1 IS NOT NU
2f9b0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
2f9c0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
2f9d0 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
2f9e0 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
2f9f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2fa00 74 0d 0a 53 45 4c 45 43 54 20 2d 20 33 38 20 2a  t..SELECT - 38 *
2fa10 20 2d 20 33 20 2a 20 2b 20 33 30 20 46 52 4f 4d   - 3 * + 30 FROM
2fa20 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
2fa30 2d 2d 2d 0d 0a 33 34 32 30 0d 0a 33 34 32 30 0d  ---..3420..3420.
2fa40 0a 33 34 32 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .3420....query I
2fa50 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
2fa60 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
2fa70 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
2fa80 20 39 37 20 3c 20 2b 20 32 31 0d 0a 2d 2d 2d 2d   97 < + 21..----
2fa90 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2faa0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  ort..SELECT + + 
2fab0 28 20 63 6f 6c 31 20 29 20 2b 20 2b 20 33 39 20  ( col1 ) + + 39 
2fac0 2a 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46  * col1 AS col2 F
2fad0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2fae0 0d 0a 2d 2d 2d 2d 0d 0a 32 30 34 30 0d 0a 32 36  ..----..2040..26
2faf0 38 30 0d 0a 33 30 38 30 0d 0a 0d 0a 6f 6e 6c 79  80..3080....only
2fb00 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2fb10 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2fb20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2fb30 61 62 65 6c 2d 31 30 38 35 0d 0a 53 45 4c 45 43  abel-1085..SELEC
2fb40 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a  T ALL - COUNT( *
2fb50 20 29 20 2a 20 2b 20 28 20 2b 20 2b 20 4d 49 4e   ) * + ( + + MIN
2fb60 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20  ( DISTINCT col0 
2fb70 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ) ) FROM tab1 AS
2fb80 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   cor0..----..-15
2fb90 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
2fba0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2fbb0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2fbc0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 35 0d 0a  ort label-1085..
2fbd0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55  SELECT ALL - COU
2fbe0 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 28 20 2b  NT ( * ) * + ( +
2fbf0 20 2b 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43   + MIN ( DISTINC
2fc00 54 20 63 6f 6c 30 20 29 20 29 20 46 52 4f 4d 20  T col0 ) ) FROM 
2fc10 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
2fc20 2d 2d 0d 0a 2d 31 35 33 0d 0a 0d 0a 6f 6e 6c 79  --..-153....only
2fc30 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
2fc40 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
2fc50 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
2fc60 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2fc70 30 38 36 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  086..SELECT * FR
2fc80 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
2fc90 57 48 45 52 45 20 4e 4f 54 20 2b 20 34 31 20 49  WHERE NOT + 41 I
2fca0 4e 20 28 20 2d 20 39 20 2a 20 2b 20 43 41 53 54  N ( - 9 * + CAST
2fcb0 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
2fcc0 20 29 20 2a 20 63 6f 6c 32 20 2f 20 2d 20 32 20   ) * col2 / - 2 
2fcd0 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  + + CAST( NULL A
2fce0 53 20 53 49 47 4e 45 44 20 29 20 29 0d 0a 2d 2d  S SIGNED ) )..--
2fcf0 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
2fd00 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2fd10 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
2fd20 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38  owsort label-108
2fd30 36 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  6..SELECT * FROM
2fd40 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
2fd50 45 52 45 20 4e 4f 54 20 2b 20 34 31 20 49 4e 20  ERE NOT + 41 IN 
2fd60 28 20 2d 20 39 20 2a 20 2b 20 43 41 53 54 20 28  ( - 9 * + CAST (
2fd70 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
2fd80 20 29 20 2a 20 63 6f 6c 32 20 2f 20 2d 20 32 20   ) * col2 / - 2 
2fd90 2b 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + + CAST ( NULL 
2fda0 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 0d 0a  AS INTEGER ) )..
2fdb0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
2fdc0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2fdd0 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
2fde0 30 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c  0 cor0 WHERE col
2fdf0 32 20 3c 3e 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d  2 <> - col0..---
2fe00 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
2fe10 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35 64  ing to c4b42765d
2fe20 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35 33  ff94eaaa46040e53
2fe30 37 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69  7fb43b7....onlyi
2fe40 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2fe50 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2fe60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2fe70 62 65 6c 2d 31 30 38 38 0d 0a 53 45 4c 45 43 54  bel-1088..SELECT
2fe80 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 4d 41   DISTINCT + - MA
2fe90 58 28 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 29 20  X( ALL + col2 ) 
2fea0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2feb0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a 0d 0a  0..----..-99....
2fec0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2fed0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2fee0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2fef0 61 62 65 6c 2d 31 30 38 38 0d 0a 53 45 4c 45 43  abel-1088..SELEC
2ff00 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 4d  T DISTINCT + - M
2ff10 41 58 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 32 20  AX ( ALL + col2 
2ff20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
2ff30 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a  or0..----..-99..
2ff40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2ff50 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2ff60 43 54 20 2b 20 34 35 20 2a 20 63 6f 6c 30 20 41  CT + 45 * col0 A
2ff70 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
2ff80 0d 0a 2d 2d 2d 2d 0d 0a 32 30 37 30 0d 0a 32 38  ..----..2070..28
2ff90 38 30 0d 0a 33 33 37 35 0d 0a 0d 0a 71 75 65 72  80..3375....quer
2ffa0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
2ffb0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
2ffc0 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 3e 3d 20  1 WHERE NULL >= 
2ffd0 2d 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 2d 20 63  - + col0 + + - c
2ffe0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ol1..----....ski
2fff0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
30000 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
30010 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
30020 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
30030 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
30040 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
30050 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 63 6f 6c 31  l0 * - col1 col1
30060 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
30070 0d 0a 2d 32 33 34 36 0d 0a 2d 34 39 32 38 0d 0a  ..-2346..-4928..
30080 2d 35 30 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49  -5025....query I
30090 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
300a0 54 20 41 4c 4c 20 63 6f 6c 30 20 2a 20 2d 20 35  T ALL col0 * - 5
300b0 2c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  , col0 FROM tab2
300c0 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 30 0d 0a 34 36  ..----..-230..46
300d0 0d 0a 2d 33 32 30 0d 0a 36 34 0d 0a 2d 33 37 35  ..-320..64..-375
300e0 0d 0a 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..75....query I 
300f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
30100 44 49 53 54 49 4e 43 54 20 33 33 20 2a 20 2d 20  DISTINCT 33 * - 
30110 31 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  15 AS col2 FROM 
30120 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 39 35  tab1..----..-495
30130 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
30140 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
30150 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
30160 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
30170 61 62 65 6c 2d 31 30 39 34 0d 0a 53 45 4c 45 43  abel-1094..SELEC
30180 54 20 41 4c 4c 20 63 6f 6c 31 20 2a 20 2d 20 43  T ALL col1 * - C
30190 41 53 54 28 20 2b 20 63 6f 6c 32 20 41 53 20 53  AST( + col2 AS S
301a0 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 32 20  IGNED ) AS col2 
301b0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
301c0 0a 2d 31 33 34 34 0d 0a 2d 32 39 35 0d 0a 2d 33  .-1344..-295..-3
301d0 31 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  196....skipif my
301e0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
301f0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
30200 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 34  wsort label-1094
30210 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
30220 31 20 2a 20 2d 20 43 41 53 54 20 28 20 2b 20 63  1 * - CAST ( + c
30230 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol2 AS INTEGER )
30240 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
30250 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 34 34 0d  b1..----..-1344.
30260 0a 2d 32 39 35 0d 0a 2d 33 31 39 36 0d 0a 0d 0a  .-295..-3196....
30270 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
30280 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
30290 6f 6c 31 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  ol1 + col1 AS co
302a0 6c 32 2c 20 63 6f 6c 30 20 2a 20 2b 20 2d 20 33  l2, col0 * + - 3
302b0 35 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  5 FROM tab0..---
302c0 2d 0d 0a 30 0d 0a 2d 33 30 34 35 0d 0a 30 0d 0a  -..0..-3045..0..
302d0 2d 33 33 39 35 0d 0a 30 0d 0a 2d 35 32 35 0d 0a  -3395..0..-525..
302e0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
302f0 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
30300 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
30310 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
30320 65 6c 2d 31 30 39 36 0d 0a 53 45 4c 45 43 54 20  el-1096..SELECT 
30330 2b 20 38 31 20 44 49 56 20 2b 20 63 6f 6c 30 20  + 81 DIV + col0 
30340 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
30350 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d 0a 73 6b 69 70  .0..0..1....skip
30360 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
30370 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
30380 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
30390 2d 31 30 39 36 0d 0a 53 45 4c 45 43 54 20 2b 20  -1096..SELECT + 
303a0 38 31 20 2f 20 2b 20 63 6f 6c 30 20 46 52 4f 4d  81 / + col0 FROM
303b0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   tab1..----..0..
303c0 30 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  0..1....onlyif m
303d0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
303e0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
303f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
30400 2d 31 30 39 37 0d 0a 53 45 4c 45 43 54 20 31 20  -1097..SELECT 1 
30410 2a 20 2b 20 35 38 20 2a 20 43 4f 55 4e 54 28 20  * + 58 * COUNT( 
30420 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
30430 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 37 34   tab1..----..174
30440 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
30450 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
30460 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
30470 72 74 20 6c 61 62 65 6c 2d 31 30 39 37 0d 0a 53  rt label-1097..S
30480 45 4c 45 43 54 20 31 20 2a 20 2b 20 35 38 20 2a  ELECT 1 * + 58 *
30490 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20   COUNT ( * ) AS 
304a0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
304b0 2d 2d 2d 2d 0d 0a 31 37 34 0d 0a 0d 0a 6f 6e 6c  ----..174....onl
304c0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
304d0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
304e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
304f0 6c 61 62 65 6c 2d 31 30 39 38 0d 0a 53 45 4c 45  label-1098..SELE
30500 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20  CT ALL + COUNT( 
30510 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  * ) FROM tab2 AS
30520 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
30530 20 3d 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d   = + col2..----.
30540 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
30550 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
30560 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
30570 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 38 0d  sort label-1098.
30580 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f  .SELECT ALL + CO
30590 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
305a0 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
305b0 45 20 4e 55 4c 4c 20 3d 20 2b 20 63 6f 6c 32 0d  E NULL = + col2.
305c0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .----..0....quer
305d0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
305e0 45 43 54 20 2d 20 2b 20 32 34 20 46 52 4f 4d 20  ECT - + 24 FROM 
305f0 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
30600 52 45 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 63 6f  RE + col1 * + co
30610 6c 31 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63 6f  l1 + col0 + - co
30620 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l1 IS NULL..----
30630 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
30640 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
30650 2b 20 2b 20 37 37 20 2b 20 63 6f 6c 30 20 2a 20  + + 77 + col0 * 
30660 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
30670 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
30680 2d 2d 2d 2d 0d 0a 31 31 33 35 0d 0a 32 36 33 37  ----..1135..2637
30690 0d 0a 34 34 32 37 0d 0a 0d 0a 71 75 65 72 79 20  ..4427....query 
306a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
306b0 54 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 38  T + col2 + + - 8
306c0 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
306d0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
306e0 2d 0d 0a 2d 33 35 0d 0a 2d 37 32 0d 0a 31 37 0d  -..-35..-72..17.
306f0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
30700 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
30710 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
30720 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
30730 62 65 6c 2d 31 31 30 32 0d 0a 53 45 4c 45 43 54  bel-1102..SELECT
30740 20 44 49 53 54 49 4e 43 54 20 43 41 53 54 28 20   DISTINCT CAST( 
30750 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
30760 20 2b 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 28 20   + - - col2 + ( 
30770 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46  col1 ) AS col2 F
30780 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
30790 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
307a0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
307b0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
307c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30  owsort label-110
307d0 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  2..SELECT DISTIN
307e0 43 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41  CT CAST ( NULL A
307f0 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d 20  S INTEGER ) + - 
30800 2d 20 63 6f 6c 32 20 2b 20 28 20 63 6f 6c 31 20  - col2 + ( col1 
30810 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
30820 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
30830 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
30840 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
30850 2d 20 32 34 2c 20 63 6f 6c 30 20 2a 20 2b 20 63  - 24, col0 * + c
30860 6f 6c 32 20 2b 20 2b 20 31 31 20 41 53 20 63 6f  ol2 + + 11 AS co
30870 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
30880 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 0d  cor0..----..-24.
30890 0a 37 31 36 0d 0a 2d 32 34 0d 0a 38 38 31 0d 0a  .716..-24..881..
308a0 2d 32 34 0d 0a 39 36 31 34 0d 0a 0d 0a 71 75 65  -24..9614....que
308b0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
308c0 45 4c 45 43 54 20 2d 20 32 33 20 41 53 20 63 6f  ELECT - 23 AS co
308d0 6c 31 2c 20 31 33 20 41 53 20 63 6f 6c 32 20 46  l1, 13 AS col2 F
308e0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
308f0 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 31 33 0d  ..----..-23..13.
30900 0a 2d 32 33 0d 0a 31 33 0d 0a 2d 32 33 0d 0a 31  .-23..13..-23..1
30910 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  3....skipif post
30920 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
30930 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
30940 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
30950 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
30960 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
30970 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 41 53  SELECT + col2 AS
30980 20 63 6f 6c 30 2c 20 2b 20 37 30 20 63 6f 6c 31   col0, + 70 col1
30990 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
309a0 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
309b0 4c 20 3e 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  L > col0..----..
309c0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
309d0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
309e0 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  x: ..query II ro
309f0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30 36  wsort label-1106
30a00 0d 0a 53 45 4c 45 43 54 20 31 2c 20 2d 20 28 20  ..SELECT 1, - ( 
30a10 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 41  - COUNT( * ) ) A
30a20 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
30a30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 33 0d 0a 0d 0a  ..----..1..3....
30a40 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
30a50 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
30a60 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
30a70 6c 61 62 65 6c 2d 31 31 30 36 0d 0a 53 45 4c 45  label-1106..SELE
30a80 43 54 20 31 2c 20 2d 20 28 20 2d 20 43 4f 55 4e  CT 1, - ( - COUN
30a90 54 20 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c  T ( * ) ) AS col
30aa0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
30ab0 2d 0d 0a 31 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69  -..1..3....onlyi
30ac0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
30ad0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
30ae0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
30af0 62 65 6c 2d 31 31 30 37 0d 0a 53 45 4c 45 43 54  bel-1107..SELECT
30b00 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2d 20   DISTINCT + ( - 
30b10 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 41  - COUNT( * ) ) A
30b20 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
30b30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..----..3....ski
30b40 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
30b50 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
30b60 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
30b70 6c 2d 31 31 30 37 0d 0a 53 45 4c 45 43 54 20 44  l-1107..SELECT D
30b80 49 53 54 49 4e 43 54 20 2b 20 28 20 2d 20 2d 20  ISTINCT + ( - - 
30b90 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 41 53  COUNT ( * ) ) AS
30ba0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
30bb0 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70  .----..3....skip
30bc0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
30bd0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
30be0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
30bf0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
30c00 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
30c10 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
30c20 6f 6c 30 20 2b 20 2d 20 63 6f 6c 32 20 63 6f 6c  ol0 + - col2 col
30c30 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  2 FROM tab2 WHER
30c40 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2a 20 63  E NOT - col0 * c
30c50 6f 6c 30 20 2a 20 2b 20 32 32 20 3d 20 37 30 0d  ol0 * + 22 = 70.
30c60 0a 2d 2d 2d 2d 0d 0a 31 37 0d 0a 32 33 0d 0a 32  .----..17..23..2
30c70 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  4....onlyif mysq
30c80 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
30c90 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
30ca0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
30cb0 6c 61 62 65 6c 2d 31 31 30 39 0d 0a 53 45 4c 45  label-1109..SELE
30cc0 43 54 20 2d 20 43 41 53 54 28 20 28 20 2d 20 2b  CT - CAST( ( - +
30cd0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
30ce0 49 47 4e 45 44 20 29 20 29 20 41 53 20 53 49 47  IGNED ) ) AS SIG
30cf0 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20 46 52  NED ) AS col0 FR
30d00 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
30d10 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
30d20 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
30d30 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
30d40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
30d50 74 20 6c 61 62 65 6c 2d 31 31 30 39 0d 0a 53 45  t label-1109..SE
30d60 4c 45 43 54 20 2d 20 43 41 53 54 20 28 20 28 20  LECT - CAST ( ( 
30d70 2d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  - + CAST ( NULL 
30d80 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 41  AS INTEGER ) ) A
30d90 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63  S INTEGER ) AS c
30da0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
30db0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
30dc0 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49  .NULL....query I
30dd0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
30de0 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 2a 20 2d 20   ALL + col0 * - 
30df0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57  col0 FROM tab1 W
30e00 48 45 52 45 20 2b 20 2b 20 33 33 20 2a 20 2b 20  HERE + + 33 * + 
30e10 32 35 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  25 IS NULL..----
30e20 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
30e30 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
30e40 32 2c 20 36 30 20 41 53 20 63 6f 6c 30 20 46 52  2, 60 AS col0 FR
30e50 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
30e60 30 0d 0a 36 30 0d 0a 34 37 0d 0a 36 30 0d 0a 39  0..60..47..60..9
30e70 39 0d 0a 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49  9..60....query I
30e80 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
30e90 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
30ea0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
30eb0 54 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 38 34 20  T + col0 + - 84 
30ec0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39  IS NULL..----..9
30ed0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
30ee0 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38  to 75c998aa53ac8
30ef0 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30  3218cbf2feb962d0
30f00 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  a49....onlyif my
30f10 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
30f20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
30f30 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
30f40 31 31 31 33 0d 0a 53 45 4c 45 43 54 20 2d 20 4d  1113..SELECT - M
30f50 41 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63  AX( DISTINCT + c
30f60 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ol2 ) AS col2 FR
30f70 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
30f80 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a 0d 0a 73 6b  .----..-99....sk
30f90 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
30fa0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
30fb0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
30fc0 65 6c 2d 31 31 31 33 0d 0a 53 45 4c 45 43 54 20  el-1113..SELECT 
30fd0 2d 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54  - MAX ( DISTINCT
30fe0 20 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c   + col2 ) AS col
30ff0 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
31000 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a  or0..----..-99..
31010 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31020 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f  t..SELECT - - co
31030 6c 32 20 2a 20 2d 20 2d 20 36 35 20 2a 20 2d 20  l2 * - - 65 * - 
31040 2b 20 38 31 20 46 52 4f 4d 20 74 61 62 32 20 41  + 81 FROM tab2 A
31050 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
31060 32 31 30 39 35 0d 0a 2d 32 31 30 36 30 30 0d 0a  21095..-210600..
31070 2d 33 30 35 33 37 30 0d 0a 0d 0a 73 6b 69 70 69  -305370....skipi
31080 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
31090 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
310a0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
310b0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
310c0 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ns..query II row
310d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
310e0 6f 6c 32 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 63  ol2 * - - col2 c
310f0 6f 6c 32 2c 20 2d 20 63 6f 6c 32 20 41 53 20 63  ol2, - col2 AS c
31100 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
31110 2d 2d 2d 0d 0a 2d 33 34 38 31 0d 0a 2d 35 39 0d  ---..-3481..-59.
31120 0a 2d 34 36 32 34 0d 0a 2d 36 38 0d 0a 2d 39 32  .-4624..-68..-92
31130 31 36 0d 0a 2d 39 36 0d 0a 0d 0a 6f 6e 6c 79 69  16..-96....onlyi
31140 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
31150 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
31160 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
31170 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 36  wsort label-1116
31180 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
31190 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
311a0 53 49 47 4e 45 44 20 29 20 2a 20 2b 20 63 6f 6c  SIGNED ) * + col
311b0 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
311c0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
311d0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
311e0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
311f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31200 74 20 6c 61 62 65 6c 2d 31 31 31 36 0d 0a 53 45  t label-1116..SE
31210 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41  LECT DISTINCT CA
31220 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
31230 45 47 45 52 20 29 20 2a 20 2b 20 63 6f 6c 31 20  EGER ) * + col1 
31240 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
31250 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  1..----..NULL...
31260 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
31270 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
31280 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
31290 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 37 0d 0a  ort label-1117..
312a0 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20  SELECT + COUNT( 
312b0 2b 20 2b 20 35 38 20 29 20 41 53 20 63 6f 6c 30  + + 58 ) AS col0
312c0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
312d0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  r0..----..3....s
312e0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
312f0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
31300 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
31310 62 65 6c 2d 31 31 31 37 0d 0a 53 45 4c 45 43 54  bel-1117..SELECT
31320 20 2b 20 43 4f 55 4e 54 20 28 20 2b 20 2b 20 35   + COUNT ( + + 5
31330 38 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  8 ) AS col0 FROM
31340 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
31350 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..3....onlyif
31360 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
31370 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
31380 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
31390 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 38 0d  sort label-1118.
313a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
313b0 20 2d 20 63 6f 6c 32 20 44 49 56 20 2d 20 63 6f   - col2 DIV - co
313c0 6c 31 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 32 31  l1 + + col0 + 21
313d0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
313e0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 37 0d 0a 38 35  r0..----..67..85
313f0 0d 0a 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..96....skipif m
31400 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
31410 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
31420 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31  owsort label-111
31430 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
31440 43 54 20 2d 20 63 6f 6c 32 20 2f 20 2d 20 63 6f  CT - col2 / - co
31450 6c 31 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 32 31  l1 + + col0 + 21
31460 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
31470 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 37 0d 0a 38 35  r0..----..67..85
31480 0d 0a 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..96....query I 
31490 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
314a0 41 4c 4c 20 63 6f 6c 30 20 2b 20 33 20 46 52 4f  ALL col0 + 3 FRO
314b0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
314c0 2d 2d 2d 2d 0d 0a 35 34 0d 0a 38 38 0d 0a 39 34  ----..54..88..94
314d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
314e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
314f0 49 4e 43 54 20 2d 20 63 6f 6c 30 20 2b 20 63 6f  INCT - col0 + co
31500 6c 31 20 2b 20 38 35 20 46 52 4f 4d 20 74 61 62  l1 + 85 FROM tab
31510 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
31520 0a 2d 31 31 0d 0a 31 35 31 0d 0a 31 39 0d 0a 0d  .-11..151..19...
31530 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
31540 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
31550 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
31560 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
31570 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
31580 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31590 54 20 2b 20 28 20 2b 20 63 6f 6c 32 20 29 20 63  T + ( + col2 ) c
315a0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol0 FROM tab0 co
315b0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37  r0..----..10..47
315c0 0d 0a 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..99....onlyif m
315d0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
315e0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
315f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
31600 2d 31 31 32 32 0d 0a 53 45 4c 45 43 54 20 41 4c  -1122..SELECT AL
31610 4c 20 2d 20 2b 20 31 35 20 2b 20 2b 20 2d 20 43  L - + 15 + + - C
31620 4f 55 4e 54 28 20 2a 20 29 20 2b 20 53 55 4d 28  OUNT( * ) + SUM(
31630 20 44 49 53 54 49 4e 43 54 20 2b 20 38 33 20 29   DISTINCT + 83 )
31640 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
31650 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 35 0d 0a 0d 0a  r0..----..65....
31660 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
31670 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
31680 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
31690 61 62 65 6c 2d 31 31 32 32 0d 0a 53 45 4c 45 43  abel-1122..SELEC
316a0 54 20 41 4c 4c 20 2d 20 2b 20 31 35 20 2b 20 2b  T ALL - + 15 + +
316b0 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b   - COUNT ( * ) +
316c0 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20   SUM ( DISTINCT 
316d0 2b 20 38 33 20 29 20 46 52 4f 4d 20 74 61 62 32  + 83 ) FROM tab2
316e0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
316f0 36 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  65....onlyif mys
31700 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
31710 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
31720 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
31730 31 32 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  123..SELECT DIST
31740 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20  INCT + COUNT( * 
31750 29 20 2b 20 2b 20 53 55 4d 28 20 41 4c 4c 20 63  ) + + SUM( ALL c
31760 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol0 ) AS col0 FR
31770 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
31780 38 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  88....skipif mys
31790 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
317a0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
317b0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 33 0d  sort label-1123.
317c0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
317d0 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b   + COUNT ( * ) +
317e0 20 2b 20 53 55 4d 20 28 20 41 4c 4c 20 63 6f 6c   + SUM ( ALL col
317f0 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  0 ) AS col0 FROM
31800 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 38 38   tab2..----..188
31810 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
31820 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
31830 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
31840 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
31850 61 62 65 6c 2d 31 31 32 34 0d 0a 53 45 4c 45 43  abel-1124..SELEC
31860 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 36 39 20  T ALL col2 + 69 
31870 2b 20 2b 20 63 6f 6c 31 20 2d 20 32 20 2a 20 2d  + + col1 - 2 * -
31880 20 2b 20 37 33 20 44 49 56 20 32 32 20 46 52 4f   + 73 DIV 22 FRO
31890 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33  M tab1..----..13
318a0 39 0d 0a 31 38 35 0d 0a 31 39 30 0d 0a 0d 0a 73  9..185..190....s
318b0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
318c0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
318d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
318e0 62 65 6c 2d 31 31 32 34 0d 0a 53 45 4c 45 43 54  bel-1124..SELECT
318f0 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 36 39 20 2b   ALL col2 + 69 +
31900 20 2b 20 63 6f 6c 31 20 2d 20 32 20 2a 20 2d 20   + col1 - 2 * - 
31910 2b 20 37 33 20 2f 20 32 32 20 46 52 4f 4d 20 74  + 73 / 22 FROM t
31920 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 39 0d 0a  ab1..----..139..
31930 31 38 35 0d 0a 31 39 30 0d 0a 0d 0a 71 75 65 72  185..190....quer
31940 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
31950 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 46 52 4f  ECT ALL col2 FRO
31960 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
31970 20 28 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e   ( NOT NULL IS N
31980 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d  ULL )..----..10.
31990 0a 34 37 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72 79  .47..99....query
319a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
319b0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
319c0 6c 31 20 2b 20 2b 20 37 39 20 46 52 4f 4d 20 74  l1 + + 79 FROM t
319d0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 32 36 0d 0a  ab1..----..126..
319e0 38 34 0d 0a 39 33 0d 0a 0d 0a 71 75 65 72 79 20  84..93....query 
319f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31a00 54 20 63 6f 6c 31 20 2b 20 2b 20 39 37 20 41 53  T col1 + + 97 AS
31a10 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
31a20 0a 2d 2d 2d 2d 0d 0a 31 31 38 0d 0a 31 37 38 0d  .----..118..178.
31a30 0a 39 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .98....onlyif my
31a40 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
31a50 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
31a60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31a70 74 20 6c 61 62 65 6c 2d 31 31 32 38 0d 0a 53 45  t label-1128..SE
31a80 4c 45 43 54 20 35 33 20 44 49 56 20 2b 20 38 32  LECT 53 DIV + 82
31a90 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20   FROM tab2 cor0 
31aa0 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55  WHERE NULL IS NU
31ab0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  LL..----..0..0..
31ac0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
31ad0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
31ae0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
31af0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 38 0d 0a  ort label-1128..
31b00 53 45 4c 45 43 54 20 35 33 20 2f 20 2b 20 38 32  SELECT 53 / + 82
31b10 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20   FROM tab2 cor0 
31b20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55  WHERE NULL IS NU
31b30 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  LL..----..0..0..
31b40 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
31b50 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
31b60 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
31b70 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
31b80 32 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43  29..SELECT ALL C
31b90 4f 55 4e 54 28 20 2a 20 29 20 2d 20 43 4f 55 4e  OUNT( * ) - COUN
31ba0 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30  T( * ) FROM tab0
31bb0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
31bc0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
31bd0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
31be0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
31bf0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 39 0d 0a  ort label-1129..
31c00 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54  SELECT ALL COUNT
31c10 20 28 20 2a 20 29 20 2d 20 43 4f 55 4e 54 20 28   ( * ) - COUNT (
31c20 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41   * ) FROM tab0 A
31c30 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S cor0..----..0.
31c40 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
31c50 72 74 0d 0a 53 45 4c 45 43 54 20 32 36 20 2b 20  rt..SELECT 26 + 
31c60 2d 20 35 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  - 5 AS col1 FROM
31c70 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 31 0d   tab1..----..21.
31c80 0a 32 31 0d 0a 32 31 0d 0a 0d 0a 6f 6e 6c 79 69  .21..21....onlyi
31c90 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
31ca0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
31cb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
31cc0 62 65 6c 2d 31 31 33 31 0d 0a 53 45 4c 45 43 54  bel-1131..SELECT
31cd0 20 41 4c 4c 20 2d 20 36 32 20 2a 20 2d 20 4d 49   ALL - 62 * - MI
31ce0 4e 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20 41 53  N( ALL col1 ) AS
31cf0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
31d00 0a 2d 2d 2d 2d 0d 0a 36 32 0d 0a 0d 0a 73 6b 69  .----..62....ski
31d10 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
31d20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
31d30 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
31d40 6c 2d 31 31 33 31 0d 0a 53 45 4c 45 43 54 20 41  l-1131..SELECT A
31d50 4c 4c 20 2d 20 36 32 20 2a 20 2d 20 4d 49 4e 20  LL - 62 * - MIN 
31d60 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20 41 53 20  ( ALL col1 ) AS 
31d70 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
31d80 2d 2d 2d 2d 0d 0a 36 32 0d 0a 0d 0a 71 75 65 72  ----..62....quer
31d90 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
31da0 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
31db0 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
31dc0 28 20 4e 55 4c 4c 20 29 20 3c 3d 20 2d 20 28 20  ( NULL ) <= - ( 
31dd0 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a  - col2 )..----..
31de0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31df0 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 41  t..SELECT col2 A
31e00 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
31e10 20 57 48 45 52 45 20 28 20 2b 20 63 6f 6c 30 20   WHERE ( + col0 
31e20 29 20 3c 3d 20 34 35 20 2a 20 63 6f 6c 31 20 2d  ) <= 45 * col1 -
31e30 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d   col1..----..23.
31e40 0a 34 30 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79 69  .40..58....onlyi
31e50 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
31e60 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
31e70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
31e80 62 65 6c 2d 31 31 33 34 0d 0a 53 45 4c 45 43 54  bel-1134..SELECT
31e90 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   + COUNT( * ) AS
31ea0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
31eb0 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e  WHERE NOT NULL >
31ec0 3d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  = col1..----..0.
31ed0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
31ee0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
31ef0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31f00 74 20 6c 61 62 65 6c 2d 31 31 33 34 0d 0a 53 45  t label-1134..SE
31f10 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a  LECT + COUNT ( *
31f20 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
31f30 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab2 WHERE NOT N
31f40 55 4c 4c 20 3e 3d 20 63 6f 6c 31 0d 0a 2d 2d 2d  ULL >= col1..---
31f50 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  -..0....query II
31f60 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31f70 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
31f80 45 52 45 20 4e 4f 54 20 33 30 20 3d 20 28 20 4e  ERE NOT 30 = ( N
31f90 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ULL )..----....o
31fa0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
31fb0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
31fc0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
31fd0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31fe0 31 31 33 36 0d 0a 53 45 4c 45 43 54 20 28 20 33  1136..SELECT ( 3
31ff0 33 20 29 20 44 49 56 20 2b 20 32 35 20 46 52 4f  3 ) DIV + 25 FRO
32000 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  M tab1..----..1.
32010 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  .1..1....skipif 
32020 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
32030 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
32040 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
32050 33 36 0d 0a 53 45 4c 45 43 54 20 28 20 33 33 20  36..SELECT ( 33 
32060 29 20 2f 20 2b 20 32 35 20 46 52 4f 4d 20 74 61  ) / + 25 FROM ta
32070 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a  b1..----..1..1..
32080 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
32090 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
320a0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
320b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
320c0 6c 61 62 65 6c 2d 31 31 33 37 0d 0a 53 45 4c 45  label-1137..SELE
320d0 43 54 20 28 20 2b 20 63 6f 6c 32 20 29 20 44 49  CT ( + col2 ) DI
320e0 56 20 2d 20 32 38 20 46 52 4f 4d 20 74 61 62 32  V - 28 FROM tab2
320f0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32 0d 0a  ..----..-1..-2..
32100 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
32110 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
32120 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
32130 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33 37 0d 0a  ort label-1137..
32140 53 45 4c 45 43 54 20 28 20 2b 20 63 6f 6c 32 20  SELECT ( + col2 
32150 29 20 2f 20 2d 20 32 38 20 46 52 4f 4d 20 74 61  ) / - 28 FROM ta
32160 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32  b2..----..-1..-2
32170 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
32180 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
32190 20 28 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74   ( col2 ) FROM t
321a0 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 49  ab1 WHERE NULL I
321b0 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35 39  S NULL..----..59
321c0 0d 0a 36 38 0d 0a 39 36 0d 0a 0d 0a 6f 6e 6c 79  ..68..96....only
321d0 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
321e0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
321f0 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
32200 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33  owsort label-113
32210 39 0d 0a 53 45 4c 45 43 54 20 34 34 20 44 49 56  9..SELECT 44 DIV
32220 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
32230 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 34 0d 0a  .----..0..0..4..
32240 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
32250 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
32260 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32270 20 6c 61 62 65 6c 2d 31 31 33 39 0d 0a 53 45 4c   label-1139..SEL
32280 45 43 54 20 34 34 20 2f 20 63 6f 6c 32 20 46 52  ECT 44 / col2 FR
32290 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab0..----..0
322a0 0d 0a 30 0d 0a 34 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..0..4....onlyif
322b0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
322c0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
322d0 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72  e: ..query III r
322e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34  owsort label-114
322f0 30 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  0..SELECT * FROM
32300 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
32310 2d 20 63 6f 6c 30 20 2d 20 2b 20 43 41 53 54 28  - col0 - + CAST(
32320 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
32330 29 20 2f 20 2b 20 63 6f 6c 32 20 49 53 20 4e 4f  ) / + col2 IS NO
32340 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  T NULL..----..9 
32350 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
32360 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65  o c4b42765dff94e
32370 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33  aaa46040e537fb43
32380 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  b7....skipif mys
32390 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
323a0 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
323b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34  owsort label-114
323c0 30 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  0..SELECT * FROM
323d0 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
323e0 2d 20 63 6f 6c 30 20 2d 20 2b 20 43 41 53 54 20  - col0 - + CAST 
323f0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
32400 52 20 29 20 2f 20 2b 20 63 6f 6c 32 20 49 53 20  R ) / + col2 IS 
32410 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
32420 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
32430 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
32440 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
32450 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  43b7....query I 
32460 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
32470 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
32480 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
32490 30 20 57 48 45 52 45 20 2b 20 33 37 20 2a 20 63  0 WHERE + 37 * c
324a0 6f 6c 30 20 4e 4f 54 20 49 4e 20 28 20 2b 20 63  ol0 NOT IN ( + c
324b0 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30  ol1 )..----..-10
324c0 0d 0a 2d 34 37 0d 0a 2d 39 39 0d 0a 0d 0a 71 75  ..-47..-99....qu
324d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
324e0 45 4c 45 43 54 20 2b 20 28 20 2b 20 63 6f 6c 31  ELECT + ( + col1
324f0 20 29 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74   ) + col0 FROM t
32500 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 38 0d 0a  ab1..----..138..
32510 36 35 0d 0a 39 30 0d 0a 0d 0a 71 75 65 72 79 20  65..90....query 
32520 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
32530 54 20 2b 20 31 38 20 2b 20 63 6f 6c 31 20 41 53  T + 18 + col1 AS
32540 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
32550 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a 38 35 0d 0a 39  .----..69..85..9
32560 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
32570 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
32580 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
32590 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
325a0 6c 61 62 65 6c 2d 31 31 34 34 0d 0a 53 45 4c 45  label-1144..SELE
325b0 43 54 20 2b 20 63 6f 6c 31 20 44 49 56 20 34 31  CT + col1 DIV 41
325c0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
325d0 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a  .----..1..1..1..
325e0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
325f0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
32600 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
32610 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
32620 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
32630 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
32640 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
32650 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
32660 31 31 34 34 0d 0a 53 45 4c 45 43 54 20 2b 20 63  1144..SELECT + c
32670 6f 6c 31 20 2f 20 34 31 20 63 6f 6c 32 20 46 52  ol1 / 41 col2 FR
32680 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
32690 0d 0a 31 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..1..1....onlyif
326a0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
326b0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
326c0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
326d0 65 6c 2d 31 31 34 35 0d 0a 53 45 4c 45 43 54 20  el-1145..SELECT 
326e0 41 4c 4c 20 2b 20 4d 49 4e 28 20 41 4c 4c 20 63  ALL + MIN( ALL c
326f0 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ol2 ) FROM tab2 
32700 57 48 45 52 45 20 2b 20 63 6f 6c 31 20 49 53 20  WHERE + col1 IS 
32710 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
32720 32 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  23....skipif mys
32730 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
32740 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
32750 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34 35 0d  sort label-1145.
32760 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d 49  .SELECT ALL + MI
32770 4e 20 28 20 41 4c 4c 20 63 6f 6c 32 20 29 20 46  N ( ALL col2 ) F
32780 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b  ROM tab2 WHERE +
32790 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55 4c   col1 IS NOT NUL
327a0 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 0d 0a 71  L..----..23....q
327b0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
327c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
327d0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 2d  ROM tab1 WHERE -
327e0 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 3c   col0 * - col1 <
327f0 3e 20 28 20 2d 20 63 6f 6c 31 20 29 0d 0a 2d 2d  > ( - col1 )..--
32800 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
32810 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31  hing to c6c0a411
32820 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31  1b36d04dbc811a11
32830 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72  e4d54cad....quer
32840 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
32850 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
32860 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20  2 WHERE NOT ( - 
32870 36 33 20 2a 20 2d 20 63 6f 6c 32 20 29 20 49 53  63 * - col2 ) IS
32880 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
32890 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
328a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
328b0 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 28  ROM tab0 WHERE (
328c0 20 36 33 20 2b 20 2d 20 63 6f 6c 30 20 29 20 49   63 + - col0 ) I
328d0 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
328e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
328f0 0a 53 45 4c 45 43 54 20 34 20 2b 20 2b 20 34 35  .SELECT 4 + + 45
32900 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
32910 0d 0a 34 39 0d 0a 34 39 0d 0a 34 39 0d 0a 0d 0a  ..49..49..49....
32920 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
32930 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
32940 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
32950 72 74 20 6c 61 62 65 6c 2d 31 31 35 30 0d 0a 53  rt label-1150..S
32960 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d  ELECT DISTINCT M
32970 49 4e 28 20 28 20 2b 20 63 6f 6c 30 20 29 20 29  IN( ( + col0 ) )
32980 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
32990 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 0d 0a  b2..----..46....
329a0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
329b0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
329c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
329d0 61 62 65 6c 2d 31 31 35 30 0d 0a 53 45 4c 45 43  abel-1150..SELEC
329e0 54 20 44 49 53 54 49 4e 43 54 20 4d 49 4e 20 28  T DISTINCT MIN (
329f0 20 28 20 2b 20 63 6f 6c 30 20 29 20 29 20 41 53   ( + col0 ) ) AS
32a00 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
32a10 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 0d 0a 71 75 65  .----..46....que
32a20 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32a30 4c 45 43 54 20 63 6f 6c 32 20 2b 20 28 20 63 6f  LECT col2 + ( co
32a40 6c 32 20 29 20 2a 20 31 38 20 41 53 20 63 6f 6c  l2 ) * 18 AS col
32a50 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
32a60 2d 0d 0a 31 31 30 32 0d 0a 34 33 37 0d 0a 37 36  -..1102..437..76
32a70 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
32a80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
32a90 30 20 2a 20 39 38 20 2b 20 63 6f 6c 31 20 41 53  0 * 98 + col1 AS
32aa0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
32ab0 0a 2d 2d 2d 2d 0d 0a 34 35 35 39 0d 0a 36 33 34  .----..4559..634
32ac0 39 0d 0a 37 34 31 37 0d 0a 0d 0a 71 75 65 72 79  9..7417....query
32ad0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
32ae0 43 54 20 2d 20 38 33 20 2d 20 2b 20 38 32 20 46  CT - 83 - + 82 F
32af0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
32b00 2d 31 36 35 0d 0a 2d 31 36 35 0d 0a 2d 31 36 35  -165..-165..-165
32b10 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
32b20 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
32b30 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
32b40 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35  owsort label-115
32b50 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
32b60 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT + COUNT( * ) 
32b70 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
32b80 4e 4f 54 20 28 20 37 35 20 2a 20 2b 20 28 20 2d  NOT ( 75 * + ( -
32b90 20 28 20 38 30 20 29 20 29 20 2d 20 2b 20 63 6f   ( 80 ) ) - + co
32ba0 6c 30 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  l0 ) IS NULL..--
32bb0 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..3....skipif 
32bc0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
32bd0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
32be0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
32bf0 35 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  54..SELECT DISTI
32c00 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  NCT + COUNT ( * 
32c10 29 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  ) FROM tab0 WHER
32c20 45 20 4e 4f 54 20 28 20 37 35 20 2a 20 2b 20 28  E NOT ( 75 * + (
32c30 20 2d 20 28 20 38 30 20 29 20 29 20 2d 20 2b 20   - ( 80 ) ) - + 
32c40 63 6f 6c 30 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  col0 ) IS NULL..
32c50 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79  ----..3....query
32c60 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
32c70 43 54 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 63 6f  CT + col0 * + co
32c80 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
32c90 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab0 WHERE NOT N
32ca0 55 4c 4c 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  ULL > NULL..----
32cb0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
32cc0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
32cd0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
32ce0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35  owsort label-115
32cf0 36 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  6..SELECT + COUN
32d00 54 28 20 2a 20 29 20 2b 20 2b 20 38 35 20 41 53  T( * ) + + 85 AS
32d10 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
32d20 0a 2d 2d 2d 2d 0d 0a 38 38 0d 0a 0d 0a 73 6b 69  .----..88....ski
32d30 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
32d40 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
32d50 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
32d60 6c 2d 31 31 35 36 0d 0a 53 45 4c 45 43 54 20 2b  l-1156..SELECT +
32d70 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2b   COUNT ( * ) + +
32d80 20 38 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   85 AS col2 FROM
32d90 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38 38 0d   tab2..----..88.
32da0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
32db0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
32dc0 4e 43 54 20 2d 20 63 6f 6c 32 20 2b 20 35 39 20  NCT - col2 + 59 
32dd0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
32de0 0a 2d 33 37 0d 0a 2d 39 0d 0a 30 0d 0a 0d 0a 6f  .-37..-9..0....o
32df0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
32e00 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
32e10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
32e20 74 20 6c 61 62 65 6c 2d 31 31 35 38 0d 0a 53 45  t label-1158..SE
32e30 4c 45 43 54 20 4d 41 58 28 20 41 4c 4c 20 63 6f  LECT MAX( ALL co
32e40 6c 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l1 ) AS col0 FRO
32e50 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 37 37  M tab2..----..77
32e60 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
32e70 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
32e80 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
32e90 72 74 20 6c 61 62 65 6c 2d 31 31 35 38 0d 0a 53  rt label-1158..S
32ea0 45 4c 45 43 54 20 4d 41 58 20 28 20 41 4c 4c 20  ELECT MAX ( ALL 
32eb0 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 20 46  col1 ) AS col0 F
32ec0 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
32ed0 37 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  77....query III 
32ee0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
32ef0 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
32f00 74 61 62 31 20 57 48 45 52 45 20 2d 20 63 6f 6c  tab1 WHERE - col
32f10 31 20 2a 20 28 20 32 35 20 29 20 2b 20 2b 20 63  1 * ( 25 ) + + c
32f20 6f 6c 32 20 49 4e 20 28 20 63 6f 6c 30 20 29 0d  ol2 IN ( col0 ).
32f30 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
32f40 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
32f50 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
32f60 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
32f70 6c 2d 31 31 36 30 0d 0a 53 45 4c 45 43 54 20 4d  l-1160..SELECT M
32f80 49 4e 28 20 44 49 53 54 49 4e 43 54 20 2b 20 35  IN( DISTINCT + 5
32f90 38 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  8 ) FROM tab0..-
32fa0 2d 2d 2d 0d 0a 35 38 0d 0a 0d 0a 73 6b 69 70 69  ---..58....skipi
32fb0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
32fc0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
32fd0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
32fe0 31 31 36 30 0d 0a 53 45 4c 45 43 54 20 4d 49 4e  1160..SELECT MIN
32ff0 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 35 38   ( DISTINCT + 58
33000 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
33010 2d 2d 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..58....onlyif
33020 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
33030 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
33040 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
33050 65 6c 2d 31 31 36 31 0d 0a 53 45 4c 45 43 54 20  el-1161..SELECT 
33060 41 4c 4c 20 53 55 4d 28 20 2b 20 63 6f 6c 31 20  ALL SUM( + col1 
33070 29 20 2b 20 32 32 20 41 53 20 63 6f 6c 32 20 46  ) + 22 AS col2 F
33080 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
33090 31 32 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  125....skipif my
330a0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
330b0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
330c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 31  wsort label-1161
330d0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 53 55 4d  ..SELECT ALL SUM
330e0 20 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20 32 32   ( + col1 ) + 22
330f0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
33100 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 35 0d 0a 0d  b0..----..125...
33110 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
33120 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
33130 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
33140 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
33150 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
33160 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
33170 54 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 63 6f 6c  T ALL col2 * col
33180 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  1 col2 FROM tab0
33190 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
331a0 4f 54 20 2d 20 35 31 20 3c 3e 20 4e 55 4c 4c 0d  OT - 51 <> NULL.
331b0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
331c0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
331d0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
331e0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
331f0 20 28 20 36 38 20 2b 20 2b 20 63 6f 6c 30 20 2a   ( 68 + + col0 *
33200 20 63 6f 6c 30 20 29 20 4e 4f 54 20 42 45 54 57   col0 ) NOT BETW
33210 45 45 4e 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20  EEN col0 * col1 
33220 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c  + - col2 * - col
33230 31 20 41 4e 44 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  1 AND col2..----
33240 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
33250 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
33260 49 4e 43 54 20 39 38 20 2b 20 2d 20 63 6f 6c 30  INCT 98 + - col0
33270 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
33280 20 4e 4f 54 20 28 20 2d 20 63 6f 6c 30 20 29 20   NOT ( - col0 ) 
33290 4e 4f 54 20 49 4e 20 28 20 2b 20 63 6f 6c 30 20  NOT IN ( + col0 
332a0 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  )..----....query
332b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
332c0 43 54 20 31 31 20 46 52 4f 4d 20 74 61 62 30 20  CT 11 FROM tab0 
332d0 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
332e0 49 4e 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39  IN tab2..----..9
332f0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
33300 74 6f 20 66 34 64 31 39 39 35 38 34 62 34 34 37  to f4d199584b447
33310 33 32 66 31 61 38 39 37 65 36 36 39 31 62 34 65  32f1a897e6691b4e
33320 61 30 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  a00....onlyif my
33330 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
33340 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
33350 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
33360 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
33370 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 36 0d 0a  ort label-1166..
33380 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20  SELECT COUNT( * 
33390 29 20 2d 20 4d 41 58 28 20 41 4c 4c 20 43 41 53  ) - MAX( ALL CAS
333a0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
333b0 44 20 29 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28  D ) ) * - COUNT(
333c0 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
333d0 4d 20 74 61 62 30 20 57 48 45 52 45 20 63 6f 6c  M tab0 WHERE col
333e0 32 20 2b 20 2d 20 33 39 20 49 53 20 4e 4f 54 20  2 + - 39 IS NOT 
333f0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
33400 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
33410 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
33420 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
33430 72 74 20 6c 61 62 65 6c 2d 31 31 36 36 0d 0a 53  rt label-1166..S
33440 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  ELECT COUNT ( * 
33450 29 20 2d 20 4d 41 58 20 28 20 41 4c 4c 20 43 41  ) - MAX ( ALL CA
33460 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
33470 45 47 45 52 20 29 20 29 20 2a 20 2d 20 43 4f 55  EGER ) ) * - COU
33480 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32  NT ( * ) AS col2
33490 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
334a0 20 63 6f 6c 32 20 2b 20 2d 20 33 39 20 49 53 20   col2 + - 39 IS 
334b0 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
334c0 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
334d0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
334e0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
334f0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
33500 72 74 20 6c 61 62 65 6c 2d 31 31 36 37 0d 0a 53  rt label-1167..S
33510 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43  ELECT DISTINCT C
33520 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
33530 4e 45 44 20 29 20 2a 20 43 41 53 54 28 20 4e 55  NED ) * CAST( NU
33540 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 46  LL AS SIGNED ) F
33550 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
33560 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
33570 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
33580 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
33590 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
335a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
335b0 61 62 65 6c 2d 31 31 36 37 0d 0a 53 45 4c 45 43  abel-1167..SELEC
335c0 54 20 44 49 53 54 49 4e 43 54 20 43 41 53 54 20  T DISTINCT CAST 
335d0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
335e0 52 20 29 20 2a 20 43 41 53 54 20 28 20 4e 55 4c  R ) * CAST ( NUL
335f0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46  L AS INTEGER ) F
33600 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
33610 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
33620 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
33630 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
33640 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
33650 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
33660 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
33670 2d 31 31 36 38 0d 0a 53 45 4c 45 43 54 20 2b 20  -1168..SELECT + 
33680 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
33690 47 4e 45 44 20 29 20 2a 20 2b 20 33 38 20 2b 20  GNED ) * + 38 + 
336a0 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  col1 AS col2 FRO
336b0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab2..----..NU
336c0 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
336d0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
336e0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
336f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33700 20 6c 61 62 65 6c 2d 31 31 36 38 0d 0a 53 45 4c   label-1168..SEL
33710 45 43 54 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  ECT + CAST ( NUL
33720 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  L AS INTEGER ) *
33730 20 2b 20 33 38 20 2b 20 63 6f 6c 31 20 41 53 20   + 38 + col1 AS 
33740 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
33750 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
33760 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..NULL....onlyif
33770 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
33780 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
33790 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
337a0 65 6c 2d 31 31 36 39 0d 0a 53 45 4c 45 43 54 20  el-1169..SELECT 
337b0 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20  DISTINCT COUNT( 
337c0 2a 20 29 20 2b 20 2d 20 36 30 20 2a 20 33 34 20  * ) + - 60 * 34 
337d0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
337e0 2d 2d 2d 2d 0d 0a 2d 32 30 33 37 0d 0a 0d 0a 73  ----..-2037....s
337f0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
33800 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
33810 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
33820 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
33830 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
33840 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
33850 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
33860 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36  owsort label-116
33870 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
33880 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b  CT COUNT ( * ) +
33890 20 2d 20 36 30 20 2a 20 33 34 20 63 6f 6c 32 20   - 60 * 34 col2 
338a0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
338b0 0a 2d 32 30 33 37 0d 0a 0d 0a 6f 6e 6c 79 69 66  .-2037....onlyif
338c0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
338d0 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66  te syntax: DIV f
338e0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
338f0 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
33900 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37  owsort label-117
33910 30 0d 0a 53 45 4c 45 43 54 20 28 20 35 35 20 29  0..SELECT ( 55 )
33920 20 44 49 56 20 2d 20 4d 41 58 28 20 44 49 53 54   DIV - MAX( DIST
33930 49 4e 43 54 20 28 20 28 20 2b 20 63 6f 6c 32 20  INCT ( ( + col2 
33940 29 20 29 20 29 20 2b 20 2d 20 43 4f 55 4e 54 28  ) ) ) + - COUNT(
33950 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   * ) FROM tab1 A
33960 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  S cor0..----..-3
33970 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
33980 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
33990 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
339a0 72 74 20 6c 61 62 65 6c 2d 31 31 37 30 0d 0a 53  rt label-1170..S
339b0 45 4c 45 43 54 20 28 20 35 35 20 29 20 2f 20 2d  ELECT ( 55 ) / -
339c0 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20   MAX ( DISTINCT 
339d0 28 20 28 20 2b 20 63 6f 6c 32 20 29 20 29 20 29  ( ( + col2 ) ) )
339e0 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   + - COUNT ( * )
339f0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
33a00 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a  r0..----..-3....
33a10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
33a20 0a 53 45 4c 45 43 54 20 41 4c 4c 20 39 33 20 46  .SELECT ALL 93 F
33a30 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 57 48  ROM tab0 cor0 WH
33a40 45 52 45 20 28 20 2d 20 35 37 20 29 20 49 53 20  ERE ( - 57 ) IS 
33a50 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
33a60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
33a70 45 4c 45 43 54 20 2d 20 37 20 2b 20 2b 20 63 6f  ELECT - 7 + + co
33a80 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
33a90 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
33aa0 2d 2d 0d 0a 34 34 0d 0a 36 30 0d 0a 37 30 0d 0a  --..44..60..70..
33ab0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
33ac0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
33ad0 43 54 20 2b 20 35 34 20 2b 20 2b 20 63 6f 6c 31  CT + 54 + + col1
33ae0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
33af0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
33b00 0d 0a 31 30 35 0d 0a 31 32 31 0d 0a 31 33 31 0d  ..105..121..131.
33b10 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
33b20 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
33b30 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
33b40 20 57 48 45 52 45 20 63 6f 6c 30 20 3c 3d 20 63   WHERE col0 <= c
33b50 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38  ol1..----..15..8
33b60 31 0d 0a 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49  1..47....query I
33b70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
33b80 20 44 49 53 54 49 4e 43 54 20 2b 20 38 35 20 2b   DISTINCT + 85 +
33b90 20 36 36 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   66 AS col0 FROM
33ba0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
33bb0 2d 2d 2d 0d 0a 31 35 31 0d 0a 0d 0a 73 6b 69 70  ---..151....skip
33bc0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
33bd0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
33be0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
33bf0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
33c00 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
33c10 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37 31 20  sort..SELECT 71 
33c20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
33c30 53 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c  S cor0 WHERE col
33c40 32 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  2 > NULL..----..
33c50 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
33c60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
33c70 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
33c80 57 48 45 52 45 20 2d 20 63 6f 6c 31 20 4e 4f 54  WHERE - col1 NOT
33c90 20 42 45 54 57 45 45 4e 20 28 20 4e 55 4c 4c 20   BETWEEN ( NULL 
33ca0 29 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  ) AND NULL..----
33cb0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
33cc0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
33cd0 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a  DECIMAL type: ..
33ce0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
33cf0 74 20 6c 61 62 65 6c 2d 31 31 37 38 0d 0a 53 45  t label-1178..SE
33d00 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
33d10 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d   AS cor0 WHERE -
33d20 20 32 30 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c   20 BETWEEN NULL
33d30 20 41 4e 44 20 28 20 2b 20 43 41 53 54 28 20 4e   AND ( + CAST( N
33d40 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29  ULL AS DECIMAL )
33d50 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70   )..----....skip
33d60 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
33d70 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
33d80 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
33d90 65 6c 2d 31 31 37 38 0d 0a 53 45 4c 45 43 54 20  el-1178..SELECT 
33da0 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
33db0 6f 72 30 20 57 48 45 52 45 20 2d 20 32 30 20 42  or0 WHERE - 20 B
33dc0 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
33dd0 28 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  ( + CAST ( NULL 
33de0 41 53 20 52 45 41 4c 20 29 20 29 0d 0a 2d 2d 2d  AS REAL ) )..---
33df0 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
33e00 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
33e10 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
33e20 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
33e30 6c 61 62 65 6c 2d 31 31 37 39 0d 0a 53 45 4c 45  label-1179..SELE
33e40 43 54 20 32 33 20 2b 20 63 6f 6c 31 20 2a 20 33  CT 23 + col1 * 3
33e50 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  1 AS col0 FROM t
33e60 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
33e70 45 20 28 20 4e 55 4c 4c 20 29 20 49 4e 20 28 20  E ( NULL ) IN ( 
33e80 43 41 53 54 28 20 63 6f 6c 31 20 41 53 20 53 49  CAST( col1 AS SI
33e90 47 4e 45 44 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a  GNED ) )..----..
33ea0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
33eb0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
33ec0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33ed0 20 6c 61 62 65 6c 2d 31 31 37 39 0d 0a 53 45 4c   label-1179..SEL
33ee0 45 43 54 20 32 33 20 2b 20 63 6f 6c 31 20 2a 20  ECT 23 + col1 * 
33ef0 33 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  31 AS col0 FROM 
33f00 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
33f10 52 45 20 28 20 4e 55 4c 4c 20 29 20 49 4e 20 28  RE ( NULL ) IN (
33f20 20 43 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20   CAST ( col1 AS 
33f30 49 4e 54 45 47 45 52 20 29 20 29 0d 0a 2d 2d 2d  INTEGER ) )..---
33f40 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
33f50 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
33f60 20 38 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48   82 FROM tab2 WH
33f70 45 52 45 20 28 20 2b 20 35 33 20 29 20 49 53 20  ERE ( + 53 ) IS 
33f80 4e 4f 54 20 4e 55 4c 4c 20 4f 52 20 4e 4f 54 20  NOT NULL OR NOT 
33f90 37 39 20 2b 20 2d 20 63 6f 6c 32 20 4e 4f 54 20  79 + - col2 NOT 
33fa0 42 45 54 57 45 45 4e 20 2b 20 63 6f 6c 32 20 2a  BETWEEN + col2 *
33fb0 20 2d 20 63 6f 6c 30 20 41 4e 44 20 28 20 2d 20   - col0 AND ( - 
33fc0 34 37 20 2a 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d  47 * col1 )..---
33fd0 2d 0d 0a 38 32 0d 0a 38 32 0d 0a 38 32 0d 0a 0d  -..82..82..82...
33fe0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33ff0 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20  ..SELECT - col1 
34000 2a 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  * + + col1 FROM 
34010 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab0..----..-1..
34020 2d 34 34 31 0d 0a 2d 36 35 36 31 0d 0a 0d 0a 6f  -441..-6561....o
34030 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
34040 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
34050 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34060 74 20 6c 61 62 65 6c 2d 31 31 38 32 0d 0a 53 45  t label-1182..SE
34070 4c 45 43 54 20 2d 20 4d 49 4e 28 20 36 20 29 20  LECT - MIN( 6 ) 
34080 2a 20 2d 20 34 35 20 41 53 20 63 6f 6c 31 20 46  * - 45 AS col1 F
34090 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
340a0 32 37 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  270....skipif my
340b0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
340c0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
340d0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 32  wsort label-1182
340e0 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20 28  ..SELECT - MIN (
340f0 20 36 20 29 20 2a 20 2d 20 34 35 20 41 53 20 63   6 ) * - 45 AS c
34100 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
34110 2d 2d 2d 0d 0a 32 37 30 0d 0a 0d 0a 71 75 65 72  ---..270....quer
34120 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
34130 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
34140 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
34150 20 4e 4f 54 20 63 6f 6c 30 20 2b 20 63 6f 6c 30   NOT col0 + col0
34160 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
34170 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
34180 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31 20  wsort..SELECT 1 
34190 2d 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 63  - - - col1 + - c
341a0 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
341b0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34   tab2..----..-14
341c0 30 0d 0a 2d 31 34 31 0d 0a 2d 39 36 0d 0a 0d 0a  0..-141..-96....
341d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
341e0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
341f0 6c 30 20 2b 20 2b 20 63 6f 6c 31 20 2d 20 2b 20  l0 + + col1 - + 
34200 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
34210 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
34220 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 34 39 0d 0a 39 38  ----..-1..49..98
34230 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
34240 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
34250 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
34260 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
34270 61 62 65 6c 2d 31 31 38 36 0d 0a 53 45 4c 45 43  abel-1186..SELEC
34280 54 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 2d  T - - col1 + + -
34290 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
342a0 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
342b0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
342c0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
342d0 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
342e0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
342f0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
34300 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 36 0d 0a  ort label-1186..
34310 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f 6c 31 20  SELECT - - col1 
34320 2b 20 2b 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  + + - CAST ( NUL
34330 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46  L AS INTEGER ) F
34340 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
34350 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
34360 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  LL..NULL....only
34370 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
34380 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
34390 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
343a0 61 62 65 6c 2d 31 31 38 37 0d 0a 53 45 4c 45 43  abel-1187..SELEC
343b0 54 20 41 4c 4c 20 2b 20 37 31 20 2a 20 43 4f 55  T ALL + 71 * COU
343c0 4e 54 28 20 2a 20 29 20 2b 20 2b 20 43 4f 55 4e  NT( * ) + + COUN
343d0 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30  T( * ) FROM tab0
343e0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
343f0 32 31 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  216....skipif my
34400 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
34410 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
34420 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 37  wsort label-1187
34430 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 37  ..SELECT ALL + 7
34440 31 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  1 * COUNT ( * ) 
34450 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  + + COUNT ( * ) 
34460 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
34470 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31 36 0d 0a 0d 0a  0..----..216....
34480 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
34490 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
344a0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
344b0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
344c0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
344d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
344e0 20 2b 20 63 6f 6c 32 20 2a 20 28 20 63 6f 6c 31   + col2 * ( col1
344f0 20 2a 20 63 6f 6c 32 20 29 20 63 6f 6c 32 20 46   * col2 ) col2 F
34500 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b  ROM tab2 WHERE +
34510 20 63 6f 6c 32 20 2b 20 35 35 20 49 53 20 4e 55   col2 + 55 IS NU
34520 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  LL..----....skip
34530 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
34540 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
34550 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
34560 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
34570 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
34580 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28  sort..SELECT - (
34590 20 37 36 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20   76 ) col1 FROM 
345a0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 36 0d  tab2..----..-76.
345b0 0a 2d 37 36 0d 0a 2d 37 36 0d 0a 0d 0a 71 75 65  .-76..-76....que
345c0 72 79 20 49 49 49 49 49 49 20 72 6f 77 73 6f 72  ry IIIIII rowsor
345d0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
345e0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52   tab1 AS cor0 CR
345f0 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 63 6f  OSS JOIN tab0 co
34600 72 31 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20  r1 WHERE ( NULL 
34610 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  ) IS NULL..----.
34620 0a 35 34 20 76 61 6c 75 65 73 20 68 61 73 68 69  .54 values hashi
34630 6e 67 20 74 6f 20 30 35 38 34 33 38 66 64 65 35  ng to 058438fde5
34640 66 62 38 33 38 66 32 33 62 63 62 64 64 33 39 32  fb838f23bcbdd392
34650 36 36 64 64 63 66 0d 0a 0d 0a 71 75 65 72 79 20  66ddcf....query 
34660 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
34670 54 20 41 4c 4c 20 2b 20 35 33 20 41 53 20 63 6f  T ALL + 53 AS co
34680 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
34690 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
346a0 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab0 AS cor1..--
346b0 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
346c0 68 69 6e 67 20 74 6f 20 66 65 64 65 36 30 33 33  hing to fede6033
346d0 64 65 65 33 34 36 64 62 64 32 37 32 30 38 35 63  dee346dbd272085c
346e0 30 35 37 32 34 66 64 61 0d 0a 0d 0a 6f 6e 6c 79  05724fda....only
346f0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
34700 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
34710 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
34720 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
34730 39 32 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  92..SELECT + col
34740 32 20 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 32 20  2 AS col0, col2 
34750 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
34760 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
34770 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 4e 55  b1..----..59..NU
34780 4c 4c 0d 0a 36 38 0d 0a 4e 55 4c 4c 0d 0a 39 36  LL..68..NULL..96
34790 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
347a0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
347b0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
347c0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
347d0 31 31 39 32 0d 0a 53 45 4c 45 43 54 20 2b 20 63  1192..SELECT + c
347e0 6f 6c 32 20 41 53 20 63 6f 6c 30 2c 20 63 6f 6c  ol2 AS col0, col
347f0 32 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  2 + CAST ( NULL 
34800 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
34810 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 39  M tab1..----..59
34820 0d 0a 4e 55 4c 4c 0d 0a 36 38 0d 0a 4e 55 4c 4c  ..NULL..68..NULL
34830 0d 0a 39 36 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ..96..NULL....qu
34840 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
34850 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
34860 20 2b 20 32 38 20 46 52 4f 4d 20 74 61 62 31 20   + 28 FROM tab1 
34870 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
34880 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d  IN tab0 AS cor1.
34890 0a 2d 2d 2d 2d 0d 0a 32 38 0d 0a 0d 0a 71 75 65  .----..28....que
348a0 72 79 20 49 49 49 49 49 49 20 72 6f 77 73 6f 72  ry IIIIII rowsor
348b0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
348c0 20 74 61 62 30 20 63 6f 72 30 20 4a 4f 49 4e 20   tab0 cor0 JOIN 
348d0 74 61 62 30 20 41 53 20 63 6f 72 31 20 4f 4e 20  tab0 AS cor1 ON 
348e0 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  NULL IS NULL..--
348f0 2d 2d 0d 0a 35 34 20 76 61 6c 75 65 73 20 68 61  --..54 values ha
34900 73 68 69 6e 67 20 74 6f 20 34 32 64 61 61 30 33  shing to 42daa03
34910 65 34 38 61 61 36 37 35 35 64 65 66 64 30 61 33  e48aa6755defd0a3
34920 32 30 36 65 35 31 64 38 65 0d 0a 0d 0a 71 75 65  206e51d8e....que
34930 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
34940 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 41 53 20  ELECT - col0 AS 
34950 63 6f 6c 31 2c 20 2d 20 31 39 20 46 52 4f 4d 20  col1, - 19 FROM 
34960 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d  tab1..----..-51.
34970 0a 2d 31 39 0d 0a 2d 38 35 0d 0a 2d 31 39 0d 0a  .-19..-85..-19..
34980 2d 39 31 0d 0a 2d 31 39 0d 0a 0d 0a 71 75 65 72  -91..-19....quer
34990 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
349a0 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
349b0 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
349c0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  or0 WHERE NOT co
349d0 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l0 IS NULL..----
349e0 0d 0a 32 33 0d 0a 34 30 0d 0a 35 38 0d 0a 0d 0a  ..23..40..58....
349f0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
34a00 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
34a10 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
34a20 72 74 20 6c 61 62 65 6c 2d 31 31 39 37 0d 0a 53  rt label-1197..S
34a30 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
34a40 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f   + COUNT( * ) co
34a50 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
34a60 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  cor0..----..-3..
34a70 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
34a80 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
34a90 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
34aa0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
34ab0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
34ac0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
34ad0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
34ae0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
34af0 31 31 39 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  1197..SELECT DIS
34b00 54 49 4e 43 54 20 2d 20 2b 20 43 4f 55 4e 54 20  TINCT - + COUNT 
34b10 28 20 2a 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20  ( * ) col2 FROM 
34b20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
34b30 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20  --..-3....query 
34b40 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
34b50 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2d  T DISTINCT - ( -
34b60 20 63 6f 6c 31 20 29 20 2b 20 34 20 41 53 20 63   col1 ) + 4 AS c
34b70 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
34b80 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
34b90 2b 20 63 6f 6c 32 20 2b 20 35 30 20 49 53 20 4e  + col2 + 50 IS N
34ba0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d 0a 35  ULL..----..18..5
34bb0 31 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  1..9....onlyif m
34bc0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
34bd0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
34be0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
34bf0 72 74 20 6c 61 62 65 6c 2d 31 31 39 39 0d 0a 53  rt label-1199..S
34c00 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2a 20 63  ELECT - col2 * c
34c10 6f 6c 30 20 44 49 56 20 2b 20 63 6f 6c 32 20 2d  ol0 DIV + col2 -
34c20 20 2d 20 63 6f 6c 30 20 2a 20 34 38 20 41 53 20   - col0 * 48 AS 
34c30 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
34c40 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31  S cor0..----..21
34c50 36 32 0d 0a 33 30 30 38 0d 0a 33 35 32 35 0d 0a  62..3008..3525..
34c60 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
34c70 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
34c80 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
34c90 20 6c 61 62 65 6c 2d 31 31 39 39 0d 0a 53 45 4c   label-1199..SEL
34ca0 45 43 54 20 2d 20 63 6f 6c 32 20 2a 20 63 6f 6c  ECT - col2 * col
34cb0 30 20 2f 20 2b 20 63 6f 6c 32 20 2d 20 2d 20 63  0 / + col2 - - c
34cc0 6f 6c 30 20 2a 20 34 38 20 41 53 20 63 6f 6c 31  ol0 * 48 AS col1
34cd0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
34ce0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31 36 32 0d 0a  r0..----..2162..
34cf0 33 30 30 38 0d 0a 33 35 32 35 0d 0a 0d 0a 6f 6e  3008..3525....on
34d00 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
34d10 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
34d20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
34d30 20 6c 61 62 65 6c 2d 31 32 30 30 0d 0a 53 45 4c   label-1200..SEL
34d40 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d 49 4e  ECT DISTINCT MIN
34d50 28 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 29 20 2a  ( ALL + col1 ) *
34d60 20 28 20 2d 20 37 37 20 29 20 41 53 20 63 6f 6c   ( - 77 ) AS col
34d70 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
34d80 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38 35 0d  or0..----..-385.
34d90 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
34da0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
34db0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34dc0 74 20 6c 61 62 65 6c 2d 31 32 30 30 0d 0a 53 45  t label-1200..SE
34dd0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d 49  LECT DISTINCT MI
34de0 4e 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 29  N ( ALL + col1 )
34df0 20 2a 20 28 20 2d 20 37 37 20 29 20 41 53 20 63   * ( - 77 ) AS c
34e00 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
34e10 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38   cor0..----..-38
34e20 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
34e30 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
34e40 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 2a 20 2d  TINCT + col2 * -
34e50 20 2d 20 28 20 2d 20 28 20 63 6f 6c 30 20 29 20   - ( - ( col0 ) 
34e60 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  ) FROM tab0 cor0
34e70 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 30 35 0d 0a 2d 38  ..----..-705..-8
34e80 37 30 0d 0a 2d 39 36 30 33 0d 0a 0d 0a 6f 6e 6c  70..-9603....onl
34e90 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
34ea0 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
34eb0 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
34ec0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
34ed0 30 32 0d 0a 53 45 4c 45 43 54 20 2b 20 36 33 20  02..SELECT + 63 
34ee0 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
34ef0 53 49 47 4e 45 44 20 29 20 2a 20 34 36 20 46 52  SIGNED ) * 46 FR
34f00 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
34f10 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42  WHERE NOT NULL B
34f20 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
34f30 31 39 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  19..----....skip
34f40 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
34f50 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
34f60 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
34f70 2d 31 32 30 32 0d 0a 53 45 4c 45 43 54 20 2b 20  -1202..SELECT + 
34f80 36 33 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c  63 + CAST ( NULL
34f90 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20   AS INTEGER ) * 
34fa0 34 36 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  46 FROM tab0 AS 
34fb0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
34fc0 55 4c 4c 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c  ULL BETWEEN NULL
34fd0 20 41 4e 44 20 31 39 0d 0a 2d 2d 2d 2d 0d 0a 0d   AND 19..----...
34fe0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
34ff0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
35000 6f 6c 30 20 2a 20 2d 20 2d 20 31 31 20 46 52 4f  ol0 * - - 11 FRO
35010 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
35020 2d 0d 0a 2d 31 30 30 31 0d 0a 2d 35 36 31 0d 0a  -..-1001..-561..
35030 2d 39 33 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -935....onlyif m
35040 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
35050 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
35060 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
35070 2d 31 32 30 34 0d 0a 53 45 4c 45 43 54 20 2d 20  -1204..SELECT - 
35080 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 39  COUNT( * ) * + 9
35090 34 20 2b 20 2b 20 37 20 46 52 4f 4d 20 74 61 62  4 + + 7 FROM tab
350a0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
350b0 0a 2d 32 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-275....skipif 
350c0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
350d0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
350e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
350f0 30 34 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  04..SELECT - COU
35100 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 39 34 20  NT ( * ) * + 94 
35110 2b 20 2b 20 37 20 46 52 4f 4d 20 74 61 62 30 20  + + 7 FROM tab0 
35120 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
35130 32 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  275....onlyif my
35140 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
35150 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
35160 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
35170 74 20 6c 61 62 65 6c 2d 31 32 30 35 0d 0a 53 45  t label-1205..SE
35180 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 37 36 20  LECT ALL - + 76 
35190 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46  + col1 AS col1 F
351a0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
351b0 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 43 41 53   WHERE NOT - CAS
351c0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
351d0 44 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  D ) IS NOT NULL.
351e0 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d 0a 2d 37 35 0d  .----..-55..-75.
351f0 0a 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .5....skipif mys
35200 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
35210 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
35220 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 30 35 0d  sort label-1205.
35230 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20  .SELECT ALL - + 
35240 37 36 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c  76 + col1 AS col
35250 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
35260 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
35270 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
35280 4e 54 45 47 45 52 20 29 20 49 53 20 4e 4f 54 20  NTEGER ) IS NOT 
35290 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d  NULL..----..-55.
352a0 0a 2d 37 35 0d 0a 35 0d 0a 0d 0a 71 75 65 72 79  .-75..5....query
352b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
352c0 43 54 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 39 35  CT + col0 * + 95
352d0 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c   + - col1 AS col
352e0 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
352f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 33 31 39 0d  or0..----..4319.
35300 0a 36 30 30 33 0d 0a 37 30 35 38 0d 0a 0d 0a 71  .6003..7058....q
35310 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
35320 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
35330 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
35340 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
35350 28 20 2b 20 35 39 20 29 20 49 53 20 4e 55 4c 4c  ( + 59 ) IS NULL
35360 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
35370 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34   hashing to c4b4
35380 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30  2765dff94eaaa460
35390 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a  40e537fb43b7....
353a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
353b0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
353c0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
353d0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
353e0 2d 31 32 30 38 0d 0a 53 45 4c 45 43 54 20 36 37  -1208..SELECT 67
353f0 20 44 49 56 20 32 32 20 46 52 4f 4d 20 74 61 62   DIV 22 FROM tab
35400 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  2 cor0..----..3.
35410 0a 33 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  .3..3....skipif 
35420 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
35430 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
35440 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
35450 30 38 0d 0a 53 45 4c 45 43 54 20 36 37 20 2f 20  08..SELECT 67 / 
35460 32 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  22 FROM tab2 cor
35470 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 33 0d 0a 33  0..----..3..3..3
35480 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
35490 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
354a0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
354b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 30  owsort label-120
354c0 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  9..SELECT ALL - 
354d0 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20 2d 20  SUM( DISTINCT - 
354e0 31 35 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  15 ) AS col1 FRO
354f0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 35  M tab1..----..15
35500 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
35510 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
35520 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
35530 72 74 20 6c 61 62 65 6c 2d 31 32 30 39 0d 0a 53  rt label-1209..S
35540 45 4c 45 43 54 20 41 4c 4c 20 2d 20 53 55 4d 20  ELECT ALL - SUM 
35550 28 20 44 49 53 54 49 4e 43 54 20 2d 20 31 35 20  ( DISTINCT - 15 
35560 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
35570 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 0d  ab1..----..15...
35580 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
35590 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
355a0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
355b0 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 30 0d 0a  ort label-1210..
355c0 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
355d0 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 57 48  * ) FROM tab2 WH
355e0 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 2b  ERE NOT + col0 +
355f0 20 2d 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e   - col2 IS NOT N
35600 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
35610 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
35620 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
35630 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
35640 61 62 65 6c 2d 31 32 31 30 0d 0a 53 45 4c 45 43  abel-1210..SELEC
35650 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T - COUNT ( * ) 
35660 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
35670 4e 4f 54 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63  NOT + col0 + - c
35680 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol2 IS NOT NULL.
35690 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79  .----..0....only
356a0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
356b0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
356c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
356d0 61 62 65 6c 2d 31 32 31 31 0d 0a 53 45 4c 45 43  abel-1211..SELEC
356e0 54 20 2b 20 4d 49 4e 28 20 44 49 53 54 49 4e 43  T + MIN( DISTINC
356f0 54 20 2d 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20  T - col2 ) FROM 
35700 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 63  tab2 WHERE NOT c
35710 6f 6c 31 20 2b 20 63 6f 6c 31 20 42 45 54 57 45  ol1 + col1 BETWE
35720 45 4e 20 28 20 63 6f 6c 31 20 29 20 41 4e 44 20  EN ( col1 ) AND 
35730 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
35740 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
35750 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
35760 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
35770 72 74 20 6c 61 62 65 6c 2d 31 32 31 31 0d 0a 53  rt label-1211..S
35780 45 4c 45 43 54 20 2b 20 4d 49 4e 20 28 20 44 49  ELECT + MIN ( DI
35790 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20 29 20  STINCT - col2 ) 
357a0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
357b0 4e 4f 54 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20  NOT col1 + col1 
357c0 42 45 54 57 45 45 4e 20 28 20 63 6f 6c 31 20 29  BETWEEN ( col1 )
357d0 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   AND NULL..----.
357e0 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .NULL....onlyif 
357f0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
35800 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
35810 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
35820 6c 2d 31 32 31 32 0d 0a 53 45 4c 45 43 54 20 53  l-1212..SELECT S
35830 55 4d 28 20 44 49 53 54 49 4e 43 54 20 31 32 20  UM( DISTINCT 12 
35840 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
35850 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a 0d  ab0..----..12...
35860 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
35870 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
35880 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
35890 6c 61 62 65 6c 2d 31 32 31 32 0d 0a 53 45 4c 45  label-1212..SELE
358a0 43 54 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43  CT SUM ( DISTINC
358b0 54 20 31 32 20 29 20 41 53 20 63 6f 6c 30 20 46  T 12 ) AS col0 F
358c0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
358d0 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  12....query III 
358e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
358f0 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
35900 45 20 4e 4f 54 20 28 20 2b 20 2b 20 28 20 2d 20  E NOT ( + + ( - 
35910 63 6f 6c 32 20 29 20 29 20 49 53 20 4e 4f 54 20  col2 ) ) IS NOT 
35920 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
35930 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
35940 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
35950 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45   * FROM tab0 WHE
35960 52 45 20 28 20 2b 20 2d 20 63 6f 6c 32 20 2f 20  RE ( + - col2 / 
35970 2b 20 63 6f 6c 31 20 29 20 3c 3d 20 2d 20 63 6f  + col1 ) <= - co
35980 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 31 0d  l0..----..97..1.
35990 0a 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .99....query III
359a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
359b0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
359c0 20 74 61 62 32 20 57 48 45 52 45 20 63 6f 6c 31   tab2 WHERE col1
359d0 20 3c 20 2d 20 2d 20 28 20 2b 20 63 6f 6c 31 20   < - - ( + col1 
359e0 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
359f0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
35a00 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
35a10 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
35a20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
35a30 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
35a40 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  16..SELECT DISTI
35a50 4e 43 54 20 2b 20 4d 41 58 28 20 2b 20 2b 20 63  NCT + MAX( + + c
35a60 6f 6c 31 20 29 20 2a 20 2d 20 43 41 53 54 28 20  ol1 ) * - CAST( 
35a70 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
35a80 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
35a90 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
35aa0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
35ab0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
35ac0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
35ad0 32 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  216..SELECT DIST
35ae0 49 4e 43 54 20 2b 20 4d 41 58 20 28 20 2b 20 2b  INCT + MAX ( + +
35af0 20 63 6f 6c 31 20 29 20 2a 20 2d 20 43 41 53 54   col1 ) * - CAST
35b00 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
35b10 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a  ER ) FROM tab1..
35b20 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ----..NULL....qu
35b30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
35b40 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 63 6f  ELECT ALL + - co
35b50 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
35b60 63 6f 72 30 20 57 48 45 52 45 20 31 35 20 49 53  cor0 WHERE 15 IS
35b70 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
35b80 0a 2d 31 0d 0a 2d 32 31 0d 0a 2d 38 31 0d 0a 0d  .-1..-21..-81...
35b90 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35ba0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2b 20  ..SELECT col0 + 
35bb0 2d 20 2b 20 38 35 20 41 53 20 63 6f 6c 31 20 46  - + 85 AS col1 F
35bc0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
35bd0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d 32 31  ..----..-10..-21
35be0 0d 0a 2d 33 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-39....onlyif 
35bf0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
35c00 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
35c10 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
35c20 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 39 0d 0a  ort label-1219..
35c30 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f 6c 32 20  SELECT - - col2 
35c40 2b 20 63 6f 6c 30 20 44 49 56 20 63 6f 6c 30 20  + col0 DIV col0 
35c50 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
35c60 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S cor0..----..10
35c70 30 0d 0a 31 31 0d 0a 34 38 0d 0a 0d 0a 73 6b 69  0..11..48....ski
35c80 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
35c90 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
35ca0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
35cb0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
35cc0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
35cd0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
35ce0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
35cf0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 39 0d  sort label-1219.
35d00 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f 6c 32  .SELECT - - col2
35d10 20 2b 20 63 6f 6c 30 20 2f 20 63 6f 6c 30 20 63   + col0 / col0 c
35d20 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
35d30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30   cor0..----..100
35d40 0d 0a 31 31 0d 0a 34 38 0d 0a 0d 0a 73 6b 69 70  ..11..48....skip
35d50 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
35d60 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
35d70 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
35d80 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
35d90 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
35da0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 36  sort..SELECT + 6
35db0 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  1 col0 FROM tab2
35dc0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
35dd0 4f 54 20 63 6f 6c 31 20 4e 4f 54 20 42 45 54 57  OT col1 NOT BETW
35de0 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 28 20 4e  EEN NULL AND ( N
35df0 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ULL )..----....o
35e00 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
35e10 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
35e20 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
35e30 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
35e40 31 32 32 31 0d 0a 53 45 4c 45 43 54 20 44 49 53  1221..SELECT DIS
35e50 54 49 4e 43 54 20 43 41 53 54 28 20 2d 20 39 34  TINCT CAST( - 94
35e60 20 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f 6c   AS SIGNED ) col
35e70 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
35e80 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 34 0d 0a  or0..----..-94..
35e90 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
35ea0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
35eb0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
35ec0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
35ed0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
35ee0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
35ef0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
35f00 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
35f10 31 32 32 31 0d 0a 53 45 4c 45 43 54 20 44 49 53  1221..SELECT DIS
35f20 54 49 4e 43 54 20 43 41 53 54 20 28 20 2d 20 39  TINCT CAST ( - 9
35f30 34 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 63  4 AS INTEGER ) c
35f40 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
35f50 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 34   cor0..----..-94
35f60 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
35f70 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
35f80 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  col0 AS col2 FRO
35f90 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
35fa0 48 45 52 45 20 4e 4f 54 20 28 20 2b 20 63 6f 6c  HERE NOT ( + col
35fb0 30 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  0 ) IS NOT NULL.
35fc0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
35fd0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
35fe0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
35ff0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
36000 6c 2d 31 32 32 33 0d 0a 53 45 4c 45 43 54 20 44  l-1223..SELECT D
36010 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 28  ISTINCT - COUNT(
36020 20 2d 20 30 20 29 20 46 52 4f 4d 20 74 61 62 30   - 0 ) FROM tab0
36030 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b  ..----..-3....sk
36040 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
36050 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
36060 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
36070 65 6c 2d 31 32 32 33 0d 0a 53 45 4c 45 43 54 20  el-1223..SELECT 
36080 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
36090 20 28 20 2d 20 30 20 29 20 46 52 4f 4d 20 74 61   ( - 0 ) FROM ta
360a0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a  b0..----..-3....
360b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
360c0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
360d0 6c 31 20 2a 20 63 6f 6c 31 20 2d 20 63 6f 6c 30  l1 * col1 - col0
360e0 20 2b 20 2b 20 28 20 2d 20 36 36 20 29 20 46 52   + + ( - 66 ) FR
360f0 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d  OM tab1 cor0..--
36100 2d 2d 0d 0a 2d 31 37 36 0d 0a 2d 32 33 36 36 0d  --..-176..-2366.
36110 0a 2d 33 31 33 0d 0a 0d 0a 71 75 65 72 79 20 49  .-313....query I
36120 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
36130 20 2b 20 28 20 2d 20 38 30 20 29 20 46 52 4f 4d   + ( - 80 ) FROM
36140 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
36150 45 52 45 20 28 20 35 31 20 29 20 49 53 20 4e 55  ERE ( 51 ) IS NU
36160 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
36170 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
36180 45 43 54 20 41 4c 4c 20 2b 20 2b 20 35 33 20 2b  ECT ALL + + 53 +
36190 20 36 37 20 46 52 4f 4d 20 74 61 62 32 20 41 53   67 FROM tab2 AS
361a0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 30   cor0..----..120
361b0 0d 0a 31 32 30 0d 0a 31 32 30 0d 0a 0d 0a 71 75  ..120..120....qu
361c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
361d0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30  ELECT ALL + col0
361e0 20 2b 20 2b 20 63 6f 6c 31 20 2b 20 31 35 20 2a   + + col1 + 15 *
361f0 20 39 33 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20   93 * + col0 AS 
36200 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
36210 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32  S cor0..----..12
36220 31 34 37 33 0d 0a 31 33 35 34 31 33 0d 0a 32 31  1473..135413..21
36230 30 32 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  021....query I r
36240 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
36250 20 63 6f 6c 32 20 2b 20 2b 20 34 34 20 2b 20 2b   col2 + + 44 + +
36260 20 2d 20 31 33 20 2a 20 2d 20 2d 20 31 37 20 46   - 13 * - - 17 F
36270 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
36280 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 39 0d 0a 2d 31  ..----..-119..-1
36290 33 37 0d 0a 2d 31 35 34 0d 0a 0d 0a 71 75 65 72  37..-154....quer
362a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
362b0 45 43 54 20 44 49 53 54 49 4e 43 54 20 39 20 41  ECT DISTINCT 9 A
362c0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
362d0 2c 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  , tab2 AS cor0..
362e0 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79  ----..9....query
362f0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
36300 43 54 20 41 4c 4c 20 36 33 20 2b 20 2b 20 2d 20  CT ALL 63 + + - 
36310 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
36320 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab1..----..-3
36330 33 0d 0a 2d 35 0d 0a 34 0d 0a 0d 0a 6f 6e 6c 79  3..-5..4....only
36340 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
36350 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74  syntax: aggregat
36360 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  e syntax: SIGNED
36370 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
36380 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
36390 32 33 31 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49  231..SELECT + MI
363a0 4e 28 20 2d 20 38 32 20 29 20 41 53 20 63 6f 6c  N( - 82 ) AS col
363b0 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  0 FROM tab2 WHER
363c0 45 20 2d 20 2b 20 35 20 2a 20 2b 20 63 6f 6c 31  E - + 5 * + col1
363d0 20 2f 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   / - CAST( NULL 
363e0 41 53 20 53 49 47 4e 45 44 20 29 20 49 53 20 4e  AS SIGNED ) IS N
363f0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 32 0d 0a  ULL..----..-82..
36400 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
36410 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
36420 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36430 20 6c 61 62 65 6c 2d 31 32 33 31 0d 0a 53 45 4c   label-1231..SEL
36440 45 43 54 20 2b 20 4d 49 4e 20 28 20 2d 20 38 32  ECT + MIN ( - 82
36450 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
36460 74 61 62 32 20 57 48 45 52 45 20 2d 20 2b 20 35  tab2 WHERE - + 5
36470 20 2a 20 2b 20 63 6f 6c 31 20 2f 20 2d 20 43 41   * + col1 / - CA
36480 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
36490 45 47 45 52 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  EGER ) IS NULL..
364a0 2d 2d 2d 2d 0d 0a 2d 38 32 0d 0a 0d 0a 6f 6e 6c  ----..-82....onl
364b0 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
364c0 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c   syntax: DECIMAL
364d0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
364e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
364f0 32 33 32 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20  232..SELECT ( - 
36500 36 35 20 29 20 2f 20 43 41 53 54 28 20 4e 55 4c  65 ) / CAST( NUL
36510 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2b  L AS DECIMAL ) +
36520 20 34 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   42 col0 FROM ta
36530 62 31 20 57 48 45 52 45 20 28 20 4e 4f 54 20 63  b1 WHERE ( NOT c
36540 6f 6c 30 20 2b 20 2b 20 32 39 20 3e 3d 20 2d 20  ol0 + + 29 >= - 
36550 32 37 20 2a 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d  27 * col0 )..---
36560 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
36570 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
36580 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
36590 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
365a0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
365b0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
365c0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
365d0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
365e0 65 6c 2d 31 32 33 32 0d 0a 53 45 4c 45 43 54 20  el-1232..SELECT 
365f0 28 20 2d 20 36 35 20 29 20 2f 20 43 41 53 54 20  ( - 65 ) / CAST 
36600 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29  ( NULL AS REAL )
36610 20 2b 20 34 32 20 63 6f 6c 30 20 46 52 4f 4d 20   + 42 col0 FROM 
36620 74 61 62 31 20 57 48 45 52 45 20 28 20 4e 4f 54  tab1 WHERE ( NOT
36630 20 63 6f 6c 30 20 2b 20 2b 20 32 39 20 3e 3d 20   col0 + + 29 >= 
36640 2d 20 32 37 20 2a 20 63 6f 6c 30 20 29 0d 0a 2d  - 27 * col0 )..-
36650 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
36660 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
36670 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
36680 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
36690 31 32 33 33 0d 0a 53 45 4c 45 43 54 20 2d 20 31  1233..SELECT - 1
366a0 38 20 2a 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a  8 * + - COUNT( *
366b0 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
366c0 2d 2d 0d 0a 35 34 0d 0a 0d 0a 73 6b 69 70 69 66  --..54....skipif
366d0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
366e0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
366f0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
36700 32 33 33 0d 0a 53 45 4c 45 43 54 20 2d 20 31 38  233..SELECT - 18
36710 20 2a 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a   * + - COUNT ( *
36720 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
36730 2d 2d 0d 0a 35 34 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..54....onlyif
36740 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
36750 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
36760 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
36770 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 33 34 0d  sort label-1234.
36780 0a 53 45 4c 45 43 54 20 2d 20 33 36 20 44 49 56  .SELECT - 36 DIV
36790 20 2d 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74   - - col2 FROM t
367a0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30  ab2..----..-1..0
367b0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
367c0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
367d0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
367e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 33 34  wsort label-1234
367f0 0d 0a 53 45 4c 45 43 54 20 2d 20 33 36 20 2f 20  ..SELECT - 36 / 
36800 2d 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  - - col2 FROM ta
36810 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d  b2..----..-1..0.
36820 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  .0....query III 
36830 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
36840 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
36850 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f  AS cor0 WHERE co
36860 6c 32 20 2a 20 34 36 20 49 53 20 4e 4f 54 20 4e  l2 * 46 IS NOT N
36870 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
36880 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37  ues hashing to 7
36890 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38  5c998aa53ac83218
368a0 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d  cbf2feb962d0a49.
368b0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
368c0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 2b  rt..SELECT + ( +
368d0 20 2b 20 36 32 20 29 20 41 53 20 63 6f 6c 31 20   + 62 ) AS col1 
368e0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
368f0 30 0d 0a 2d 2d 2d 2d 0d 0a 36 32 0d 0a 36 32 0d  0..----..62..62.
36900 0a 36 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .62....onlyif my
36910 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
36920 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
36930 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
36940 31 32 33 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1237..SELECT ALL
36950 20 2b 20 2b 20 28 20 2d 20 43 4f 55 4e 54 28 20   + + ( - COUNT( 
36960 2a 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52  * ) ) AS col2 FR
36970 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
36980 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  .----..-3....ski
36990 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
369a0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
369b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
369c0 6c 2d 31 32 33 37 0d 0a 53 45 4c 45 43 54 20 41  l-1237..SELECT A
369d0 4c 4c 20 2b 20 2b 20 28 20 2d 20 43 4f 55 4e 54  LL + + ( - COUNT
369e0 20 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 32   ( * ) ) AS col2
369f0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
36a00 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a  r0..----..-3....
36a10 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
36a20 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
36a30 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
36a40 20 2d 20 63 6f 6c 31 20 4e 4f 54 20 42 45 54 57   - col1 NOT BETW
36a50 45 45 4e 20 2d 20 63 6f 6c 30 20 41 4e 44 20 2b  EEN - col0 AND +
36a60 20 2b 20 35 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b   + 5..----....sk
36a70 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
36a80 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
36a90 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
36aa0 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
36ab0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
36ac0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
36ad0 4c 4c 20 2b 20 34 34 20 63 6f 6c 32 20 46 52 4f  LL + 44 col2 FRO
36ae0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 34  M tab2..----..44
36af0 0d 0a 34 34 0d 0a 34 34 0d 0a 0d 0a 71 75 65 72  ..44..44....quer
36b00 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
36b10 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 2a  ECT ALL - col1 *
36b20 20 2b 20 28 20 63 6f 6c 32 20 29 20 46 52 4f 4d   + ( col2 ) FROM
36b30 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31   tab2..----..-11
36b40 37 33 0d 0a 2d 33 30 38 30 0d 0a 2d 33 38 38 36  73..-3080..-3886
36b50 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
36b60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
36b70 49 4e 43 54 20 2b 20 38 35 20 41 53 20 63 6f 6c  INCT + 85 AS col
36b80 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
36b90 2d 0d 0a 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49  -..85....query I
36ba0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
36bb0 20 2b 20 28 20 2d 20 63 6f 6c 32 20 29 20 2a 20   + ( - col2 ) * 
36bc0 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32  + + col2 AS col2
36bd0 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
36be0 0a 2d 2d 2d 2d 0d 0a 2d 31 30 30 0d 0a 2d 32 32  .----..-100..-22
36bf0 30 39 0d 0a 2d 39 38 30 31 0d 0a 0d 0a 71 75 65  09..-9801....que
36c00 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
36c10 4c 45 43 54 20 2d 20 2b 20 63 6f 6c 31 20 2a 20  LECT - + col1 * 
36c20 37 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  72 FROM tab2 cor
36c30 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 36 37 32 0d 0a  0..----..-3672..
36c40 2d 34 38 32 34 0d 0a 2d 35 35 34 34 0d 0a 0d 0a  -4824..-5544....
36c50 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
36c60 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
36c70 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
36c80 72 74 20 6c 61 62 65 6c 2d 31 32 34 34 0d 0a 53  rt label-1244..S
36c90 45 4c 45 43 54 20 2d 20 2d 20 53 55 4d 28 20 41  ELECT - - SUM( A
36ca0 4c 4c 20 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d  LL + col1 ) FROM
36cb0 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
36cc0 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 42 45 54 57   NOT - col2 BETW
36cd0 45 45 4e 20 2d 20 39 31 20 41 4e 44 20 4e 55 4c  EEN - 91 AND NUL
36ce0 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 0d 0a 73  L..----..14....s
36cf0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
36d00 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
36d10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
36d20 62 65 6c 2d 31 32 34 34 0d 0a 53 45 4c 45 43 54  bel-1244..SELECT
36d30 20 2d 20 2d 20 53 55 4d 20 28 20 41 4c 4c 20 2b   - - SUM ( ALL +
36d40 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62   col1 ) FROM tab
36d50 31 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  1 cor0 WHERE NOT
36d60 20 2d 20 63 6f 6c 32 20 42 45 54 57 45 45 4e 20   - col2 BETWEEN 
36d70 2d 20 39 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d  - 91 AND NULL..-
36d80 2d 2d 2d 0d 0a 31 34 0d 0a 0d 0a 71 75 65 72 79  ---..14....query
36d90 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
36da0 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
36db0 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45 20  tab0 cor0 WHERE 
36dc0 33 31 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 3c 3d  31 * - + col2 <=
36dd0 20 28 20 2b 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d   ( + + col0 )..-
36de0 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
36df0 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36  shing to c4b4276
36e00 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65  5dff94eaaa46040e
36e10 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65  537fb43b7....que
36e20 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
36e30 4c 45 43 54 20 2d 20 28 20 2b 20 2d 20 38 38 20  LECT - ( + - 88 
36e40 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
36e50 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  or0 WHERE NOT ( 
36e60 28 20 4e 55 4c 4c 20 3c 3d 20 2d 20 35 31 20 29  ( NULL <= - 51 )
36e70 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
36e80 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
36e90 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
36ea0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
36eb0 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 3e 20 2d  ERE NOT col1 > -
36ec0 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   col2..----....o
36ed0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
36ee0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
36ef0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36f00 74 20 6c 61 62 65 6c 2d 31 32 34 38 0d 0a 53 45  t label-1248..SE
36f10 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55  LECT DISTINCT SU
36f20 4d 28 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63  M( + col0 ) AS c
36f30 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
36f40 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
36f50 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col1 IS NULL..--
36f60 2d 2d 0d 0a 31 39 39 0d 0a 0d 0a 73 6b 69 70 69  --..199....skipi
36f70 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
36f80 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
36f90 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
36fa0 31 32 34 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  1248..SELECT DIS
36fb0 54 49 4e 43 54 20 53 55 4d 20 28 20 2b 20 63 6f  TINCT SUM ( + co
36fc0 6c 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l0 ) AS col1 FRO
36fd0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
36fe0 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 49 53  HERE NOT col1 IS
36ff0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 39 39   NULL..----..199
37000 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
37010 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
37020 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
37030 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 34  owsort label-124
37040 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33 36  9..SELECT ALL 36
37050 20 2a 20 2b 20 28 20 43 4f 55 4e 54 28 20 2a 20   * + ( COUNT( * 
37060 29 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ) ) col0 FROM ta
37070 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 38 0d 0a 0d  b0..----..108...
37080 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
37090 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
370a0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
370b0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
370c0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
370d0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
370e0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
370f0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
37100 32 34 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  249..SELECT ALL 
37110 33 36 20 2a 20 2b 20 28 20 43 4f 55 4e 54 20 28  36 * + ( COUNT (
37120 20 2a 20 29 20 29 20 63 6f 6c 30 20 46 52 4f 4d   * ) ) col0 FROM
37130 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 38   tab0..----..108
37140 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
37150 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37 35  ort..SELECT + 75
37160 20 2a 20 2d 20 2b 20 33 32 20 41 53 20 63 6f 6c   * - + 32 AS col
37170 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
37180 2d 0d 0a 2d 32 34 30 30 0d 0a 2d 32 34 30 30 0d  -..-2400..-2400.
37190 0a 2d 32 34 30 30 0d 0a 0d 0a 71 75 65 72 79 20  .-2400....query 
371a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
371b0 54 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 31 34 20  T + col1 * - 14 
371c0 2a 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  * - col0 FROM ta
371d0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 39 35 30 0d 0a  b1..----..5950..
371e0 35 39 38 37 38 0d 0a 39 39 39 36 0d 0a 0d 0a 71  59878..9996....q
371f0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
37200 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
37210 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  tab0 WHERE NOT +
37220 20 2d 20 28 20 32 34 20 29 20 49 53 20 4e 55 4c   - ( 24 ) IS NUL
37230 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
37240 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62  s hashing to c4b
37250 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36  42765dff94eaaa46
37260 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d  040e537fb43b7...
37270 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
37280 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31  t..SELECT - col1
37290 20 41 53 20 63 6f 6c 31 2c 20 38 31 20 41 53 20   AS col1, 81 AS 
372a0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
372b0 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 38 31 0d 0a 2d 32  ----..-1..81..-2
372c0 31 0d 0a 38 31 0d 0a 2d 38 31 0d 0a 38 31 0d 0a  1..81..-81..81..
372d0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
372e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
372f0 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
37300 54 20 4e 55 4c 4c 20 3c 20 2b 20 31 0d 0a 2d 2d  T NULL < + 1..--
37310 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  --....skipif pos
37320 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
37330 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
37340 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
37350 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
37360 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
37370 0a 53 45 4c 45 43 54 20 2b 20 38 35 20 63 6f 6c  .SELECT + 85 col
37380 31 2c 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1, - col1 FROM t
37390 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38 35 0d 0a 2d  ab2..----..85..-
373a0 35 31 0d 0a 38 35 0d 0a 2d 36 37 0d 0a 38 35 0d  51..85..-67..85.
373b0 0a 2d 37 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-77....onlyif m
373c0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
373d0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
373e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
373f0 2d 31 32 35 36 0d 0a 53 45 4c 45 43 54 20 41 4c  -1256..SELECT AL
37400 4c 20 2b 20 53 55 4d 28 20 2b 20 2b 20 63 6f 6c  L + SUM( + + col
37410 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
37420 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33   tab0..----..103
37430 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
37440 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
37450 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
37460 72 74 20 6c 61 62 65 6c 2d 31 32 35 36 0d 0a 53  rt label-1256..S
37470 45 4c 45 43 54 20 41 4c 4c 20 2b 20 53 55 4d 20  ELECT ALL + SUM 
37480 28 20 2b 20 2b 20 63 6f 6c 31 20 29 20 41 53 20  ( + + col1 ) AS 
37490 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
374a0 2d 2d 2d 2d 0d 0a 31 30 33 0d 0a 0d 0a 71 75 65  ----..103....que
374b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
374c0 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2a 20 33 33  LECT + col1 * 33
374d0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
374e0 0d 0a 32 36 37 33 0d 0a 33 33 0d 0a 36 39 33 0d  ..2673..33..693.
374f0 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
37500 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 20 41 53  ort..SELECT 5 AS
37510 20 63 6f 6c 31 2c 20 63 6f 6c 32 20 41 53 20 63   col1, col2 AS c
37520 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
37530 2d 2d 2d 0d 0a 35 0d 0a 31 30 0d 0a 35 0d 0a 34  ---..5..10..5..4
37540 37 0d 0a 35 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72  7..5..99....quer
37550 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
37560 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 36  ECT DISTINCT + 6
37570 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
37580 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
37590 2d 0d 0a 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49  -..60....query I
375a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
375b0 20 44 49 53 54 49 4e 43 54 20 39 39 20 2b 20 2d   DISTINCT 99 + -
375c0 20 63 6f 6c 30 20 2a 20 2d 20 32 31 20 41 53 20   col0 * - 21 AS 
375d0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
375e0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31  S cor0..----..11
375f0 37 30 0d 0a 31 38 38 34 0d 0a 32 30 31 30 0d 0a  70..1884..2010..
37600 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
37610 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
37620 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
37630 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36 31 0d  sort label-1261.
37640 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28  .SELECT + COUNT(
37650 20 2a 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74   * ) col1 FROM t
37660 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
37670 53 20 4a 4f 49 4e 20 74 61 62 32 20 63 6f 72 31  S JOIN tab2 cor1
37680 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69  ..----..9....ski
37690 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
376a0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
376b0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
376c0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
376d0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
376e0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
376f0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
37700 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36 31 0d  sort label-1261.
37710 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20  .SELECT + COUNT 
37720 28 20 2a 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20  ( * ) col1 FROM 
37730 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f  tab2 AS cor0 CRO
37740 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 63 6f 72  SS JOIN tab2 cor
37750 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75  1..----..9....qu
37760 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
37770 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2d  ELECT - col0 + -
37780 20 39 39 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d   99 FROM tab0..-
37790 2d 2d 2d 0d 0a 2d 31 31 34 0d 0a 2d 31 38 36 0d  ---..-114..-186.
377a0 0a 2d 31 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-196....skipif 
377b0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
377c0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
377d0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
377e0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
377f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
37800 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
37810 32 37 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  27 col1 FROM tab
37820 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
37830 0a 2d 32 37 0d 0a 2d 32 37 0d 0a 2d 32 37 0d 0a  .-27..-27..-27..
37840 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
37850 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
37860 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
37870 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
37880 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
37890 61 62 65 6c 2d 31 32 36 34 0d 0a 53 45 4c 45 43  abel-1264..SELEC
378a0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53  T DISTINCT - CAS
378b0 54 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20  T( - COUNT( * ) 
378c0 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d  AS SIGNED ) FROM
378d0 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
378e0 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..3....skipif my
378f0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
37900 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
37910 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36 34  wsort label-1264
37920 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
37930 54 20 2d 20 43 41 53 54 20 28 20 2d 20 43 4f 55  T - CAST ( - COU
37940 4e 54 20 28 20 2a 20 29 20 41 53 20 49 4e 54 45  NT ( * ) AS INTE
37950 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 32 20  GER ) FROM tab2 
37960 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  cor0..----..3...
37970 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
37980 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
37990 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
379a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
379b0 6c 2d 31 32 36 35 0d 0a 53 45 4c 45 43 54 20 41  l-1265..SELECT A
379c0 4c 4c 20 2b 20 43 41 53 54 28 20 2d 20 63 6f 6c  LL + CAST( - col
379d0 31 20 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f  1 AS SIGNED ) co
379e0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
379f0 63 6f 72 30 20 57 48 45 52 45 20 2d 20 33 38 20  cor0 WHERE - 38 
37a00 2a 20 33 39 20 3e 20 2d 20 2d 20 31 38 20 2d 20  * 39 > - - 18 - 
37a10 2d 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  - - col0..----..
37a20 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
37a30 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
37a40 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
37a50 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
37a60 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
37a70 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
37a80 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
37a90 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
37aa0 31 32 36 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1265..SELECT ALL
37ab0 20 2b 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 31   + CAST ( - col1
37ac0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f   AS INTEGER ) co
37ad0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
37ae0 63 6f 72 30 20 57 48 45 52 45 20 2d 20 33 38 20  cor0 WHERE - 38 
37af0 2a 20 33 39 20 3e 20 2d 20 2d 20 31 38 20 2d 20  * 39 > - - 18 - 
37b00 2d 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  - - col0..----..
37b10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
37b20 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
37b30 43 54 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 35 38  CT + + col2 + 58
37b40 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
37b50 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35 0d 0a 31  r0..----..105..1
37b60 35 37 0d 0a 36 38 0d 0a 0d 0a 71 75 65 72 79 20  57..68....query 
37b70 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
37b80 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20  T DISTINCT col1 
37b90 2d 20 2b 20 2d 20 36 33 20 46 52 4f 4d 20 74 61  - + - 63 FROM ta
37ba0 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 34 0d 0a 31  b2..----..114..1
37bb0 33 30 0d 0a 31 34 30 0d 0a 0d 0a 6f 6e 6c 79 69  30..140....onlyi
37bc0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
37bd0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
37be0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
37bf0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36 38  wsort label-1268
37c00 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20  ..SELECT - col0 
37c10 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
37c20 28 20 2b 20 2d 20 63 6f 6c 32 20 29 20 3c 3e 20  ( + - col2 ) <> 
37c30 43 41 53 54 28 20 2b 20 63 6f 6c 30 20 41 53 20  CAST( + col0 AS 
37c40 53 49 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a  SIGNED )..----..
37c50 2d 34 36 0d 0a 2d 36 34 0d 0a 2d 37 35 0d 0a 0d  -46..-64..-75...
37c60 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
37c70 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
37c80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
37c90 6c 61 62 65 6c 2d 31 32 36 38 0d 0a 53 45 4c 45  label-1268..SELE
37ca0 43 54 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74  CT - col0 FROM t
37cb0 61 62 32 20 57 48 45 52 45 20 28 20 2b 20 2d 20  ab2 WHERE ( + - 
37cc0 63 6f 6c 32 20 29 20 3c 3e 20 43 41 53 54 20 28  col2 ) <> CAST (
37cd0 20 2b 20 63 6f 6c 30 20 41 53 20 49 4e 54 45 47   + col0 AS INTEG
37ce0 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d  ER )..----..-46.
37cf0 0a 2d 36 34 0d 0a 2d 37 35 0d 0a 0d 0a 71 75 65  .-64..-75....que
37d00 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
37d10 4c 45 43 54 20 39 31 20 2a 20 2d 20 2d 20 63 6f  LECT 91 * - - co
37d20 6c 30 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63  l0 - + col1 AS c
37d30 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
37d40 2d 2d 2d 0d 0a 34 36 32 37 0d 0a 37 37 33 30 0d  ---..4627..7730.
37d50 0a 38 32 33 34 0d 0a 0d 0a 71 75 65 72 79 20 49  .8234....query I
37d60 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
37d70 20 2b 20 31 35 20 41 53 20 63 6f 6c 31 20 46 52   + 15 AS col1 FR
37d80 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
37d90 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49  WHERE NOT NULL I
37da0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
37db0 0d 0a 31 35 0d 0a 31 35 0d 0a 31 35 0d 0a 0d 0a  ..15..15..15....
37dc0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
37dd0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
37de0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
37df0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
37e00 2d 31 32 37 31 0d 0a 53 45 4c 45 43 54 20 2b 20  -1271..SELECT + 
37e10 43 41 53 54 28 20 63 6f 6c 31 20 41 53 20 53 49  CAST( col1 AS SI
37e20 47 4e 45 44 20 29 20 2a 20 63 6f 6c 31 20 46 52  GNED ) * col1 FR
37e30 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
37e40 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 34 34 31 0d 0a 36  .----..1..441..6
37e50 35 36 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  561....skipif my
37e60 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
37e70 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
37e80 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 37 31  wsort label-1271
37e90 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20  ..SELECT + CAST 
37ea0 28 20 63 6f 6c 31 20 41 53 20 49 4e 54 45 47 45  ( col1 AS INTEGE
37eb0 52 20 29 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20  R ) * col1 FROM 
37ec0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
37ed0 2d 2d 0d 0a 31 0d 0a 34 34 31 0d 0a 36 35 36 31  --..1..441..6561
37ee0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
37ef0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
37f00 54 49 4e 43 54 20 2b 20 28 20 37 35 20 29 20 2a  TINCT + ( 75 ) *
37f10 20 2d 20 2b 20 32 30 20 2a 20 2b 20 2b 20 63 6f   - + 20 * + + co
37f20 6c 31 20 41 53 20 63 6f 6c 31 2c 20 2b 20 63 6f  l1 AS col1, + co
37f30 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
37f40 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 30  tab1..----..-210
37f50 30 30 0d 0a 35 31 0d 0a 2d 37 30 35 30 30 0d 0a  00..51..-70500..
37f60 39 31 0d 0a 2d 37 35 30 30 0d 0a 38 35 0d 0a 0d  91..-7500..85...
37f70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
37f80 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
37f90 54 20 2d 20 2d 20 32 36 20 2a 20 63 6f 6c 32 20  T - - 26 * col2 
37fa0 2b 20 2b 20 32 35 20 41 53 20 63 6f 6c 32 20 46  + + 25 AS col2 F
37fb0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
37fc0 0d 0a 2d 2d 2d 2d 0d 0a 31 30 36 35 0d 0a 31 35  ..----..1065..15
37fd0 33 33 0d 0a 36 32 33 0d 0a 0d 0a 71 75 65 72 79  33..623....query
37fe0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
37ff0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
38000 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
38010 2d 20 36 36 20 2f 20 2b 20 32 35 20 49 53 20 4e  - 66 / + 25 IS N
38020 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
38030 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
38040 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61  4b42765dff94eaaa
38050 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d  46040e537fb43b7.
38060 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
38070 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
38080 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
38090 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
380a0 62 65 6c 2d 31 32 37 35 0d 0a 53 45 4c 45 43 54  bel-1275..SELECT
380b0 20 2b 20 43 41 53 54 28 20 2b 20 39 30 20 41 53   + CAST( + 90 AS
380c0 20 53 49 47 4e 45 44 20 29 20 2f 20 63 6f 6c 31   SIGNED ) / col1
380d0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
380e0 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2b  r0 WHERE NOT ( +
380f0 20 63 6f 6c 31 20 29 20 2b 20 2b 20 2d 20 36 20   col1 ) + + - 6 
38100 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
38110 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
38120 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
38130 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
38140 6f 72 74 20 6c 61 62 65 6c 2d 31 32 37 35 0d 0a  ort label-1275..
38150 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28 20  SELECT + CAST ( 
38160 2b 20 39 30 20 41 53 20 49 4e 54 45 47 45 52 20  + 90 AS INTEGER 
38170 29 20 2f 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ) / col1 FROM ta
38180 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
38190 20 4e 4f 54 20 28 20 2b 20 63 6f 6c 31 20 29 20   NOT ( + col1 ) 
381a0 2b 20 2b 20 2d 20 36 20 49 53 20 4e 4f 54 20 4e  + + - 6 IS NOT N
381b0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ULL..----....ski
381c0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
381d0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
381e0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
381f0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
38200 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
38210 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
38220 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20 63 6f  + col0 * col2 co
38230 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l0 FROM tab0 cor
38240 30 0d 0a 2d 2d 2d 2d 0d 0a 37 30 35 0d 0a 38 37  0..----..705..87
38250 30 0d 0a 39 36 30 33 0d 0a 0d 0a 6f 6e 6c 79 69  0..9603....onlyi
38260 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
38270 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
38280 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
38290 62 65 6c 2d 31 32 37 37 0d 0a 53 45 4c 45 43 54  bel-1277..SELECT
382a0 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20   ALL + COUNT( * 
382b0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
382c0 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
382d0 45 20 4e 4f 54 20 63 6f 6c 30 20 2b 20 2b 20 2b  E NOT col0 + + +
382e0 20 37 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   70 IS NOT NULL.
382f0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
38300 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
38310 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
38320 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
38330 2d 31 32 37 37 0d 0a 53 45 4c 45 43 54 20 41 4c  -1277..SELECT AL
38340 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  L + COUNT ( * ) 
38350 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
38360 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
38370 4e 4f 54 20 63 6f 6c 30 20 2b 20 2b 20 2b 20 37  NOT col0 + + + 7
38380 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  0 IS NOT NULL..-
38390 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
383a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
383b0 54 20 2d 20 2d 20 36 37 20 2a 20 39 39 20 2a 20  T - - 67 * 99 * 
383c0 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  - col1 FROM tab1
383d0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
383e0 2d 33 31 31 37 35 31 0d 0a 2d 33 33 31 36 35 0d  -311751..-33165.
383f0 0a 2d 39 32 38 36 32 0d 0a 0d 0a 6f 6e 6c 79 69  .-92862....onlyi
38400 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
38410 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
38420 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
38430 61 62 65 6c 2d 31 32 37 39 0d 0a 53 45 4c 45 43  abel-1279..SELEC
38440 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  T + COUNT( * ) A
38450 53 20 63 6f 6c 32 2c 20 2b 20 35 36 20 41 53 20  S col2, + 56 AS 
38460 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
38470 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
38480 0a 35 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .56....skipif my
38490 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
384a0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
384b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 37  owsort label-127
384c0 39 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  9..SELECT + COUN
384d0 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 2c  T ( * ) AS col2,
384e0 20 2b 20 35 36 20 41 53 20 63 6f 6c 31 20 46 52   + 56 AS col1 FR
384f0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
38500 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 35 36 0d 0a 0d 0a  .----..3..56....
38510 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
38520 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
38530 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
38540 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29  ERE NOT ( NULL )
38550 20 3e 20 63 6f 6c 32 20 2a 20 2b 20 28 20 2b 20   > col2 * + ( + 
38560 28 20 2b 20 2b 20 63 6f 6c 30 20 29 20 29 20 2a  ( + + col0 ) ) *
38570 20 2d 20 36 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   - 60..----....q
38580 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
38590 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2a 20  SELECT + col1 * 
385a0 35 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  57 AS col0 FROM 
385b0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
385c0 2d 2d 0d 0a 31 31 39 37 0d 0a 34 36 31 37 0d 0a  --..1197..4617..
385d0 35 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  57....onlyif mys
385e0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
385f0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
38600 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
38610 32 38 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  282..SELECT DIST
38620 49 4e 43 54 20 4d 49 4e 28 20 44 49 53 54 49 4e  INCT MIN( DISTIN
38630 43 54 20 2b 20 63 6f 6c 31 20 29 20 63 6f 6c 32  CT + col1 ) col2
38640 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
38650 0d 0a 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..5....skipif my
38660 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
38670 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
38680 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
38690 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
386a0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
386b0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
386c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
386d0 61 62 65 6c 2d 31 32 38 32 0d 0a 53 45 4c 45 43  abel-1282..SELEC
386e0 54 20 44 49 53 54 49 4e 43 54 20 4d 49 4e 20 28  T DISTINCT MIN (
386f0 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31   DISTINCT + col1
38700 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
38710 31 0d 0a 2d 2d 2d 2d 0d 0a 35 0d 0a 0d 0a 71 75  1..----..5....qu
38720 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
38730 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
38740 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
38750 54 20 28 20 2d 20 39 20 2a 20 2b 20 63 6f 6c 31  T ( - 9 * + col1
38760 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
38770 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
38780 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
38790 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 2a 20  DISTINCT col1 * 
387a0 2b 20 28 20 2d 20 2d 20 63 6f 6c 32 20 29 20 41  + ( - - col2 ) A
387b0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
387c0 0d 0a 2d 2d 2d 2d 0d 0a 31 31 37 33 0d 0a 33 30  ..----..1173..30
387d0 38 30 0d 0a 33 38 38 36 0d 0a 0d 0a 6f 6e 6c 79  80..3886....only
387e0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
387f0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
38800 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
38810 61 62 65 6c 2d 31 32 38 35 0d 0a 53 45 4c 45 43  abel-1285..SELEC
38820 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a  T ALL - COUNT( *
38830 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
38840 74 61 62 31 20 57 48 45 52 45 20 2d 20 2d 20 63  tab1 WHERE - - c
38850 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol2 IS NULL..---
38860 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
38870 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
38880 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
38890 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 38  owsort label-128
388a0 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  5..SELECT ALL - 
388b0 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
388c0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol2 FROM tab1 WH
388d0 45 52 45 20 2d 20 2d 20 63 6f 6c 32 20 49 53 20  ERE - - col2 IS 
388e0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  NULL..----..0...
388f0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
38900 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
38910 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
38920 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
38930 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
38940 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
38950 54 20 41 4c 4c 20 63 6f 6c 30 20 2a 20 2b 20 39  T ALL col0 * + 9
38960 35 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  5 col0 FROM tab1
38970 0d 0a 2d 2d 2d 2d 0d 0a 34 38 34 35 0d 0a 38 30  ..----..4845..80
38980 37 35 0d 0a 38 36 34 35 0d 0a 0d 0a 6f 6e 6c 79  75..8645....only
38990 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
389a0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
389b0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
389c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 38  owsort label-128
389d0 37 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 38 37  7..SELECT - + 87
389e0 20 2a 20 2d 20 31 34 20 2b 20 31 33 20 2b 20 2d   * - 14 + 13 + -
389f0 20 2d 20 43 41 53 54 28 20 34 32 20 41 53 20 53   - CAST( 42 AS S
38a00 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
38a10 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
38a20 0a 31 32 37 33 0d 0a 31 32 37 33 0d 0a 31 32 37  .1273..1273..127
38a30 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
38a40 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
38a50 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
38a60 6f 72 74 20 6c 61 62 65 6c 2d 31 32 38 37 0d 0a  ort label-1287..
38a70 53 45 4c 45 43 54 20 2d 20 2b 20 38 37 20 2a 20  SELECT - + 87 * 
38a80 2d 20 31 34 20 2b 20 31 33 20 2b 20 2d 20 2d 20  - 14 + 13 + - - 
38a90 43 41 53 54 20 28 20 34 32 20 41 53 20 49 4e 54  CAST ( 42 AS INT
38aa0 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31  EGER ) FROM tab1
38ab0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
38ac0 31 32 37 33 0d 0a 31 32 37 33 0d 0a 31 32 37 33  1273..1273..1273
38ad0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
38ae0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37 37 20 2b  ort..SELECT 77 +
38af0 20 2d 20 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c 30   - + col1 + col0
38b00 20 2a 20 2d 20 2d 20 39 34 20 46 52 4f 4d 20 74   * - - 94 FROM t
38b10 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
38b20 2d 0d 0a 34 33 35 30 0d 0a 36 30 31 36 0d 0a 37  -..4350..6016..7
38b30 30 36 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  060....skipif po
38b40 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
38b50 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
38b60 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
38b70 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
38b80 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
38b90 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
38ba0 54 20 63 6f 6c 32 20 2a 20 28 20 63 6f 6c 32 20  T col2 * ( col2 
38bb0 29 20 63 6f 6c 32 2c 20 2b 20 33 35 20 41 53 20  ) col2, + 35 AS 
38bc0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
38bd0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36  S cor0..----..16
38be0 30 30 0d 0a 33 35 0d 0a 33 33 36 34 0d 0a 33 35  00..35..3364..35
38bf0 0d 0a 35 32 39 0d 0a 33 35 0d 0a 0d 0a 6f 6e 6c  ..529..35....onl
38c00 79 69 66 20 6d 79 73 71 6c 20 23 20