sqllogictest
Hex Artifact Content
Not logged in

Artifact d9722709d683951938d2db06592ddda1abe29230:


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 49 49 20 72 6f  ....query III ro
02d0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
02e0: 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  L * FROM tab1 WH
02f0: 45 52 45 20 2d 20 2d 20 37 31 20 2b 20 2b 20 31  ERE - - 71 + + 1
0300: 39 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55  9 NOT BETWEEN NU
0310: 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d  LL AND NULL..---
0320: 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
0330: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
0340: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
0350: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 0d  rowsort label-1.
0360: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
0370: 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   + COUNT( * ) * 
0380: 2d 20 33 35 20 2b 20 2d 20 28 20 34 33 20 29 20  - 35 + - ( 43 ) 
0390: 2a 20 2d 20 2d 20 36 38 20 41 53 20 63 6f 6c 31  * - - 68 AS col1
03a0: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
03b0: 0d 0a 2d 33 30 32 39 0d 0a 0d 0a 73 6b 69 70 69  ..-3029....skipi
03c0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
03d0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
03e0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
03f0: 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  1..SELECT DISTIN
0400: 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  CT + COUNT ( * )
0410: 20 2a 20 2d 20 33 35 20 2b 20 2d 20 28 20 34 33   * - 35 + - ( 43
0420: 20 29 20 2a 20 2d 20 2d 20 36 38 20 41 53 20 63   ) * - - 68 AS c
0430: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
0440: 2d 2d 2d 0d 0a 2d 33 30 32 39 0d 0a 0d 0a 6f 6e  ---..-3029....on
0450: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
0460: 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41  T syntax: DECIMA
0470: 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  L type: ..query 
0480: 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
0490: 6c 2d 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  l-2..SELECT DIST
04a0: 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  INCT * FROM tab0
04b0: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
04c0: 4f 54 20 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c 31  OT + col0 * col1
04d0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44   IS NOT NULL AND
04e0: 20 28 20 4e 55 4c 4c 20 29 20 4e 4f 54 20 42 45   ( NULL ) NOT BE
04f0: 54 57 45 45 4e 20 2d 20 28 20 2d 20 2d 20 43 41  TWEEN - ( - - CA
0500: 53 54 28 20 2b 20 63 6f 6c 31 20 41 53 20 44 45  ST( + col1 AS DE
0510: 43 49 4d 41 4c 20 29 20 29 20 2a 20 35 33 20 2b  CIMAL ) ) * 53 +
0520: 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 32   - col2 + - col2
0530: 20 2f 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 2d 20   / + col1 * + - 
0540: 31 34 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d  14 AND NULL..---
0550: 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
0560: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
0570: 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  le..query III ro
0580: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 0d 0a 53  wsort label-2..S
0590: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
05a0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
05b0: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  r0 WHERE NOT + c
05c0: 6f 6c 30 20 2a 20 63 6f 6c 31 20 49 53 20 4e 4f  ol0 * col1 IS NO
05d0: 54 20 4e 55 4c 4c 20 41 4e 44 20 28 20 4e 55 4c  T NULL AND ( NUL
05e0: 4c 20 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  L ) NOT BETWEEN 
05f0: 2d 20 28 20 2d 20 2d 20 43 41 53 54 20 28 20 2b  - ( - - CAST ( +
0600: 20 63 6f 6c 31 20 41 53 20 52 45 41 4c 20 29 20   col1 AS REAL ) 
0610: 29 20 2a 20 35 33 20 2b 20 2d 20 63 6f 6c 32 20  ) * 53 + - col2 
0620: 2b 20 2d 20 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c  + - col2 / + col
0630: 31 20 2a 20 2b 20 2d 20 31 34 20 41 4e 44 20 4e  1 * + - 14 AND N
0640: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
0650: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
0660: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
0670: 2d 20 63 6f 6c 31 20 2a 20 63 6f 6c 31 20 2d 20  - col1 * col1 - 
0680: 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46  + col0 AS col2 F
0690: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
06a0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 34 37 0d 0a 2d  ..----..-2647..-
06b0: 34 35 36 34 0d 0a 2d 35 39 39 33 0d 0a 0d 0a 71  4564..-5993....q
06c0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
06d0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
06e0: 2d 20 31 35 20 2a 20 2b 20 2d 20 63 6f 6c 32 20  - 15 * + - col2 
06f0: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
0700: 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
0710: 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  NULL IS NOT NULL
0720: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
0730: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
0740: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 37 33 20  T DISTINCT + 73 
0750: 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46  + col1 AS col0 F
0760: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
0770: 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 0d 0a 31 34 30  ..----..124..140
0780: 0d 0a 31 35 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..150....onlyif 
0790: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
07a0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
07b0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
07c0: 6f 72 74 20 6c 61 62 65 6c 2d 36 0d 0a 53 45 4c  ort label-6..SEL
07d0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 31 33 20  ECT DISTINCT 13 
07e0: 2a 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  * + + CAST( NULL
07f0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d   AS SIGNED ) * -
0800: 20 31 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   10 AS col1 FROM
0810: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab2..----..NUL
0820: 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
0830: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
0840: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
0850: 6f 72 74 20 6c 61 62 65 6c 2d 36 0d 0a 53 45 4c  ort label-6..SEL
0860: 45 43 54 20 44 49 53 54 49 4e 43 54 20 31 33 20  ECT DISTINCT 13 
0870: 2a 20 2b 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  * + + CAST ( NUL
0880: 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  L AS INTEGER ) *
0890: 20 2d 20 31 30 20 41 53 20 63 6f 6c 31 20 46 52   - 10 AS col1 FR
08a0: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
08b0: 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
08c0: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
08d0: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
08e0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
08f0: 74 20 6c 61 62 65 6c 2d 37 0d 0a 53 45 4c 45 43  t label-7..SELEC
0900: 54 20 2b 20 39 32 20 2a 20 43 41 53 54 28 20 4e  T + 92 * CAST( N
0910: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
0920: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
0930: 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
0940: 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
0950: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
0960: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
0970: 6f 72 74 20 6c 61 62 65 6c 2d 37 0d 0a 53 45 4c  ort label-7..SEL
0980: 45 43 54 20 2b 20 39 32 20 2a 20 43 41 53 54 20  ECT + 92 * CAST 
0990: 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
09a0: 52 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  R ) FROM tab0..-
09b0: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
09c0: 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49  .NULL....query I
09d0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
09e0: 20 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   2 AS col1 FROM 
09f0: 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f  tab2 AS cor0 CRO
0a00: 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20  SS JOIN tab0 AS 
0a10: 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  cor1..----..9 va
0a20: 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
0a30: 38 34 64 62 66 61 66 39 62 63 31 37 64 64 30 39  84dbfaf9bc17dd09
0a40: 37 66 31 35 62 63 33 36 62 34 31 38 36 32 36 31  7f15bc36b4186261
0a50: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
0a60: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
0a70: 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  L * FROM tab1 AS
0a80: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
0a90: 63 6f 6c 30 20 2b 20 32 34 20 49 53 20 4e 55 4c  col0 + 24 IS NUL
0aa0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
0ab0: 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63  s hashing to c6c
0ac0: 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38  0a4111b36d04dbc8
0ad0: 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d  11a11e4d54cad...
0ae0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
0af0: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
0b00: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
0b10: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 0d 0a 53 45  ort label-10..SE
0b20: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
0b30: 2d 20 4d 41 58 28 20 2b 20 35 39 20 29 20 41 53  - MAX( + 59 ) AS
0b40: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
0b50: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35  AS cor0..----..5
0b60: 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
0b70: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
0b80: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
0b90: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 0d 0a 53 45  ort label-10..SE
0ba0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
0bb0: 2d 20 4d 41 58 20 28 20 2b 20 35 39 20 29 20 41  - MAX ( + 59 ) A
0bc0: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
0bd0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
0be0: 35 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  59....skipif pos
0bf0: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
0c00: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
0c10: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
0c20: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
0c30: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
0c40: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 39  SELECT ALL + - 9
0c50: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
0c60: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
0c70: 39 0d 0a 2d 39 0d 0a 2d 39 0d 0a 0d 0a 6f 6e 6c  9..-9..-9....onl
0c80: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
0c90: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
0ca0: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
0cb0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
0cc0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
0cd0: 20 43 41 53 54 28 20 2b 20 35 38 20 41 53 20 53   CAST( + 58 AS S
0ce0: 49 47 4e 45 44 20 29 20 2a 20 28 20 2d 20 2b 20  IGNED ) * ( - + 
0cf0: 43 41 53 54 28 20 2b 20 34 37 20 41 53 20 53 49  CAST( + 47 AS SI
0d00: 47 4e 45 44 20 29 20 29 20 2a 20 2b 20 28 20 2b  GNED ) ) * + ( +
0d10: 20 33 34 20 29 20 2a 20 2d 20 32 32 20 41 53 20   34 ) * - 22 AS 
0d20: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
0d30: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
0d40: 30 33 39 30 34 38 0d 0a 2d 32 30 33 39 30 34 38  039048..-2039048
0d50: 0d 0a 2d 32 30 33 39 30 34 38 0d 0a 0d 0a 73 6b  ..-2039048....sk
0d60: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
0d70: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
0d80: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
0d90: 65 6c 2d 31 32 0d 0a 53 45 4c 45 43 54 20 41 4c  el-12..SELECT AL
0da0: 4c 20 2b 20 2d 20 43 41 53 54 20 28 20 2b 20 35  L + - CAST ( + 5
0db0: 38 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  8 AS INTEGER ) *
0dc0: 20 28 20 2d 20 2b 20 43 41 53 54 20 28 20 2b 20   ( - + CAST ( + 
0dd0: 34 37 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  47 AS INTEGER ) 
0de0: 29 20 2a 20 2b 20 28 20 2b 20 33 34 20 29 20 2a  ) * + ( + 34 ) *
0df0: 20 2d 20 32 32 20 41 53 20 63 6f 6c 32 20 46 52   - 22 AS col2 FR
0e00: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
0e10: 0a 2d 2d 2d 2d 0d 0a 2d 32 30 33 39 30 34 38 0d  .----..-2039048.
0e20: 0a 2d 32 30 33 39 30 34 38 0d 0a 2d 32 30 33 39  .-2039048..-2039
0e30: 30 34 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  048....skipif po
0e40: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
0e50: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
0e60: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
0e70: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
0e80: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
0e90: 0a 53 45 4c 45 43 54 20 2b 20 33 37 20 63 6f 6c  .SELECT + 37 col
0ea0: 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  0 FROM tab2 cor0
0eb0: 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a 33 37 0d 0a  ..----..37..37..
0ec0: 33 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  37....onlyif mys
0ed0: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
0ee0: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
0ef0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
0f00: 20 6c 61 62 65 6c 2d 31 34 0d 0a 53 45 4c 45 43   label-14..SELEC
0f10: 54 20 2b 20 63 6f 6c 32 20 44 49 56 20 2b 20 2b  T + col2 DIV + +
0f20: 20 63 6f 6c 30 20 2b 20 2b 20 31 37 20 46 52 4f   col0 + + 17 FRO
0f30: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
0f40: 2d 2d 2d 2d 0d 0a 31 37 0d 0a 31 38 0d 0a 32 30  ----..17..18..20
0f50: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
0f60: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
0f70: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
0f80: 72 74 20 6c 61 62 65 6c 2d 31 34 0d 0a 53 45 4c  rt label-14..SEL
0f90: 45 43 54 20 2b 20 63 6f 6c 32 20 2f 20 2b 20 2b  ECT + col2 / + +
0fa0: 20 63 6f 6c 30 20 2b 20 2b 20 31 37 20 46 52 4f   col0 + + 17 FRO
0fb0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
0fc0: 2d 2d 2d 2d 0d 0a 31 37 0d 0a 31 38 0d 0a 32 30  ----..17..18..20
0fd0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
0fe0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
0ff0: 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  L * FROM tab2 co
1000: 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 31 20  r0 WHERE + col1 
1010: 2b 20 2d 20 35 36 20 49 53 20 4e 55 4c 4c 0d 0a  + - 56 IS NULL..
1020: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1030: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
1040: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
1050: 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77   ..query III row
1060: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 0d 0a 53  sort label-16..S
1070: 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
1080: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
1090: 45 52 45 20 43 41 53 54 28 20 2b 20 2b 20 63 6f  ERE CAST( + + co
10a0: 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 3e  l0 AS SIGNED ) >
10b0: 3d 20 28 20 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d  = ( - col2 )..--
10c0: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
10d0: 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31  hing to c6c0a411
10e0: 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31  1b36d04dbc811a11
10f0: 65 34 64 35 34 63 61 64 0d 0a 0d 0a 73 6b 69 70  e4d54cad....skip
1100: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1110: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1120: 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
1130: 65 6c 2d 31 36 0d 0a 53 45 4c 45 43 54 20 41 4c  el-16..SELECT AL
1140: 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  L * FROM tab1 AS
1150: 20 63 6f 72 30 20 57 48 45 52 45 20 43 41 53 54   cor0 WHERE CAST
1160: 20 28 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20 49   ( + + col0 AS I
1170: 4e 54 45 47 45 52 20 29 20 3e 3d 20 28 20 2d 20  NTEGER ) >= ( - 
1180: 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20  col2 )..----..9 
1190: 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
11a0: 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30  o c6c0a4111b36d0
11b0: 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63  4dbc811a11e4d54c
11c0: 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  ad....query I ro
11d0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
11e0: 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46  + col0 AS col0 F
11f0: 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
1200: 4f 54 20 4e 55 4c 4c 20 3d 20 2b 20 2d 20 63 6f  OT NULL = + - co
1210: 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  l0..----....only
1220: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
1230: 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20  syntax: DECIMAL 
1240: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1250: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38  rowsort label-18
1260: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1270: 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
1280: 44 45 43 49 4d 41 4c 20 29 20 2a 20 2d 20 2d 20  DECIMAL ) * - - 
1290: 63 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20  col1 * - - col1 
12a0: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
12b0: 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  1..----..NULL...
12c0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
12d0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
12e0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12f0: 6c 61 62 65 6c 2d 31 38 0d 0a 53 45 4c 45 43 54  label-18..SELECT
1300: 20 44 49 53 54 49 4e 43 54 20 43 41 53 54 20 28   DISTINCT CAST (
1310: 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29 20   NULL AS REAL ) 
1320: 2a 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 2d  * - - col1 * - -
1330: 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
1340: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab1..----..N
1350: 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
1360: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1370: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1380: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1390: 31 39 0d 0a 53 45 4c 45 43 54 20 4d 49 4e 28 20  19..SELECT MIN( 
13a0: 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 28 20 31  DISTINCT + - ( 1
13b0: 31 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  1 ) ) FROM tab2.
13c0: 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d 0a 0d 0a 73 6b  .----..-11....sk
13d0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
13e0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
13f0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1400: 65 6c 2d 31 39 0d 0a 53 45 4c 45 43 54 20 4d 49  el-19..SELECT MI
1410: 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2d  N ( DISTINCT + -
1420: 20 28 20 31 31 20 29 20 29 20 46 52 4f 4d 20 74   ( 11 ) ) FROM t
1430: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d 0a  ab2..----..-11..
1440: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1450: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
1460: 28 20 2b 20 2d 20 36 39 20 29 20 41 53 20 63 6f  ( + - 69 ) AS co
1470: 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
1480: 2d 2d 0d 0a 36 39 0d 0a 36 39 0d 0a 36 39 0d 0a  --..69..69..69..
1490: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
14a0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
14b0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  x: ..query II ro
14c0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31 0d 0a  wsort label-21..
14d0: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55  SELECT ALL + COU
14e0: 4e 54 28 20 41 4c 4c 20 28 20 2d 20 2b 20 63 6f  NT( ALL ( - + co
14f0: 6c 31 20 29 20 29 20 63 6f 6c 30 2c 20 2b 20 43  l1 ) ) col0, + C
1500: 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
1510: 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
1520: 2d 0d 0a 33 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  -..3..3....skipi
1530: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1540: 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
1550: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
1560: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
1570: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
1580: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
1590: 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
15a0: 6f 72 74 20 6c 61 62 65 6c 2d 32 31 0d 0a 53 45  ort label-21..SE
15b0: 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54  LECT ALL + COUNT
15c0: 20 28 20 41 4c 4c 20 28 20 2d 20 2b 20 63 6f 6c   ( ALL ( - + col
15d0: 31 20 29 20 29 20 63 6f 6c 30 2c 20 2b 20 43 4f  1 ) ) col0, + CO
15e0: 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
15f0: 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
1600: 2d 0d 0a 33 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79  -..3..3....query
1610: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1620: 43 54 20 2d 20 34 35 20 2a 20 28 20 2d 20 33 32  CT - 45 * ( - 32
1630: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
1640: 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 63  tab1 WHERE NOT c
1650: 6f 6c 32 20 2b 20 37 38 20 4e 4f 54 20 42 45 54  ol2 + 78 NOT BET
1660: 57 45 45 4e 20 2d 20 2b 20 63 6f 6c 32 20 2a 20  WEEN - + col2 * 
1670: 2d 20 2b 20 63 6f 6c 32 20 2d 20 2b 20 34 38 20  - + col2 - + 48 
1680: 41 4e 44 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  AND - col2..----
1690: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
16a0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
16b0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
16c0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 0d  owsort label-23.
16d0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 28  .SELECT ALL MIN(
16e0: 20 2b 20 31 36 20 29 20 46 52 4f 4d 20 74 61 62   + 16 ) FROM tab
16f0: 31 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a 0d 0a 73  1..----..16....s
1700: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1710: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1720: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1730: 62 65 6c 2d 32 33 0d 0a 53 45 4c 45 43 54 20 41  bel-23..SELECT A
1740: 4c 4c 20 4d 49 4e 20 28 20 2b 20 31 36 20 29 20  LL MIN ( + 16 ) 
1750: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
1760: 0a 31 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .16....onlyif my
1770: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1780: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1790: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
17a0: 32 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  24..SELECT DISTI
17b0: 4e 43 54 20 28 20 2d 20 2b 20 43 4f 55 4e 54 28  NCT ( - + COUNT(
17c0: 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46   * ) ) AS col1 F
17d0: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
17e0: 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
17f0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1800: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1810: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 0d 0a 53  sort label-24..S
1820: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28  ELECT DISTINCT (
1830: 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   - + COUNT ( * )
1840: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
1850: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  tab1..----..-3..
1860: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
1870: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1880: 4e 43 54 20 2b 20 2b 20 34 32 2c 20 31 32 20 41  NCT + + 42, 12 A
1890: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
18a0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
18b0: 34 32 0d 0a 31 32 0d 0a 0d 0a 71 75 65 72 79 20  42..12....query 
18c0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
18d0: 54 20 41 4c 4c 20 2d 20 2b 20 35 35 20 41 53 20  T ALL - + 55 AS 
18e0: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
18f0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  S cor0..----..-5
1900: 35 0d 0a 2d 35 35 0d 0a 2d 35 35 0d 0a 0d 0a 6f  5..-55..-55....o
1910: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1920: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1930: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1940: 74 20 6c 61 62 65 6c 2d 32 37 0d 0a 53 45 4c 45  t label-27..SELE
1950: 43 54 20 2b 20 4d 49 4e 28 20 2b 20 2b 20 63 6f  CT + MIN( + + co
1960: 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l2 ) AS col1 FRO
1970: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
1980: 2d 2d 2d 2d 0d 0a 32 33 0d 0a 0d 0a 73 6b 69 70  ----..23....skip
1990: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
19a0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
19b0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
19c0: 2d 32 37 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49  -27..SELECT + MI
19d0: 4e 20 28 20 2b 20 2b 20 63 6f 6c 32 20 29 20 41  N ( + + col2 ) A
19e0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
19f0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1a00: 32 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  23....query III 
1a10: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1a20: 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
1a30: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20  or0 WHERE NOT + 
1a40: 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 32 20 3c 3e  col2 * - col2 <>
1a50: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
1a60: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
1a70: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
1a80: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
1a90: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1aa0: 32 39 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63  29..SELECT + + c
1ab0: 6f 6c 31 20 44 49 56 20 2d 20 63 6f 6c 31 20 41  ol1 DIV - col1 A
1ac0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
1ad0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1ae0: 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b  -1..-1..-1....sk
1af0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1b00: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1b10: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1b20: 65 6c 2d 32 39 0d 0a 53 45 4c 45 43 54 20 2b 20  el-29..SELECT + 
1b30: 2b 20 63 6f 6c 31 20 2f 20 2d 20 63 6f 6c 31 20  + col1 / - col1 
1b40: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1b50: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
1b60: 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 71  .-1..-1..-1....q
1b70: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1b80: 53 45 4c 45 43 54 20 41 4c 4c 20 35 36 20 46 52  SELECT ALL 56 FR
1b90: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
1ba0: 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20  CROSS JOIN tab1 
1bb0: 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39  AS cor1..----..9
1bc0: 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
1bd0: 74 6f 20 39 63 34 35 32 33 33 31 32 31 37 34 37  to 9c45233121747
1be0: 33 30 62 62 63 35 32 35 62 39 39 37 37 61 61 39  30bbc525b9977aa9
1bf0: 39 66 61 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  9fa....skipif po
1c00: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
1c10: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
1c20: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
1c30: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
1c40: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
1c50: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
1c60: 6f 6c 32 20 63 6f 6c 30 2c 20 36 36 20 2a 20 2b  ol2 col0, 66 * +
1c70: 20 2d 20 33 34 20 46 52 4f 4d 20 74 61 62 31 0d   - 34 FROM tab1.
1c80: 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d 32 32 34  .----..-59..-224
1c90: 34 0d 0a 2d 36 38 0d 0a 2d 32 32 34 34 0d 0a 2d  4..-68..-2244..-
1ca0: 39 36 0d 0a 2d 32 32 34 34 0d 0a 0d 0a 73 6b 69  96..-2244....ski
1cb0: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
1cc0: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
1cd0: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
1ce0: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
1cf0: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
1d00: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1d10: 53 54 49 4e 43 54 20 63 6f 6c 31 20 2a 20 2b 20  STINCT col1 * + 
1d20: 2d 20 33 31 20 2b 20 63 6f 6c 32 20 63 6f 6c 30  - 31 + col2 col0
1d30: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1d40: 0d 0a 2d 31 35 35 38 0d 0a 2d 32 30 31 39 0d 0a  ..-1558..-2019..
1d50: 2d 32 33 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49  -2347....query I
1d60: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1d70: 20 41 4c 4c 20 2b 20 38 20 2b 20 2b 20 63 6f 6c   ALL + 8 + + col
1d80: 32 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 63  2 + - col0 + + c
1d90: 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
1da0: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1db0: 2d 2d 2d 0d 0a 2d 34 38 0d 0a 31 31 0d 0a 31 32  ---..-48..11..12
1dc0: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
1dd0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1de0: 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 2b 20 2d  TINCT + col1 + -
1df0: 20 33 39 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 41   39 + - - col1 A
1e00: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
1e10: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1e20: 2d 33 37 0d 0a 31 32 33 0d 0a 33 0d 0a 0d 0a 6f  -37..123..3....o
1e30: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1e40: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
1e50: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
1e60: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1e70: 33 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  35..SELECT ALL +
1e80: 20 63 6f 6c 31 20 2a 20 43 41 53 54 28 20 4e 55   col1 * CAST( NU
1e90: 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b  LL AS SIGNED ) +
1ea0: 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   - CAST( NULL AS
1eb0: 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74   SIGNED ) FROM t
1ec0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
1ed0: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
1ee0: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
1ef0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1f00: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1f10: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35 0d 0a  wsort label-35..
1f20: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
1f30: 31 20 2a 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  1 * CAST ( NULL 
1f40: 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d  AS INTEGER ) + -
1f50: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
1f60: 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74  INTEGER ) FROM t
1f70: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
1f80: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
1f90: 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
1fa0: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
1fb0: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1fc0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1fd0: 6f 72 74 20 6c 61 62 65 6c 2d 33 36 0d 0a 53 45  ort label-36..SE
1fe0: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  LECT * FROM tab2
1ff0: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d   AS cor0 WHERE -
2000: 20 28 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   ( - CAST( NULL 
2010: 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 3d 20  AS SIGNED ) ) = 
2020: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
2030: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2040: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2050: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
2060: 61 62 65 6c 2d 33 36 0d 0a 53 45 4c 45 43 54 20  abel-36..SELECT 
2070: 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
2080: 6f 72 30 20 57 48 45 52 45 20 2d 20 28 20 2d 20  or0 WHERE - ( - 
2090: 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
20a0: 4e 54 45 47 45 52 20 29 20 29 20 3d 20 4e 55 4c  NTEGER ) ) = NUL
20b0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
20c0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
20d0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
20e0: 70 65 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  pe: DIV for inte
20f0: 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2100: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2110: 6c 61 62 65 6c 2d 33 37 0d 0a 53 45 4c 45 43 54  label-37..SELECT
2120: 20 2b 20 2d 20 36 31 20 44 49 56 20 2d 20 2d 20   + - 61 DIV - - 
2130: 43 41 53 54 28 20 63 6f 6c 32 20 41 53 20 53 49  CAST( col2 AS SI
2140: 47 4e 45 44 20 29 20 2b 20 2b 20 2b 20 35 39 20  GNED ) + + + 59 
2150: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
2160: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
2170: 0a 35 38 0d 0a 35 39 0d 0a 35 39 0d 0a 0d 0a 73  .58..59..59....s
2180: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2190: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
21a0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
21b0: 62 65 6c 2d 33 37 0d 0a 53 45 4c 45 43 54 20 2b  bel-37..SELECT +
21c0: 20 2d 20 36 31 20 2f 20 2d 20 2d 20 43 41 53 54   - 61 / - - CAST
21d0: 20 28 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47   ( col2 AS INTEG
21e0: 45 52 20 29 20 2b 20 2b 20 2b 20 35 39 20 41 53  ER ) + + + 59 AS
21f0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
2200: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35  AS cor0..----..5
2210: 38 0d 0a 35 39 0d 0a 35 39 0d 0a 0d 0a 71 75 65  8..59..59....que
2220: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
2230: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2240: 20 35 38 20 41 53 20 63 6f 6c 31 2c 20 39 37 20   58 AS col1, 97 
2250: 2b 20 2b 20 38 32 20 2b 20 63 6f 6c 30 20 2a 20  + + 82 + col0 * 
2260: 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  - + col2 FROM ta
2270: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
2280: 0d 0a 35 38 0d 0a 2d 34 37 31 37 0d 0a 35 38 0d  ..58..-4717..58.
2290: 0a 2d 34 38 33 36 0d 0a 35 38 0d 0a 2d 36 30 30  .-4836..58..-600
22a0: 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
22b0: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
22c0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
22d0: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
22e0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22f0: 74 20 6c 61 62 65 6c 2d 33 39 0d 0a 53 45 4c 45  t label-39..SELE
2300: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20  CT DISTINCT - + 
2310: 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 43  COUNT( * ) * - C
2320: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
2330: 4e 45 44 20 29 20 41 53 20 63 6f 6c 32 20 46 52  NED ) AS col2 FR
2340: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
2350: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
2360: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2370: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2380: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2390: 62 65 6c 2d 33 39 0d 0a 53 45 4c 45 43 54 20 44  bel-39..SELECT D
23a0: 49 53 54 49 4e 43 54 20 2d 20 2b 20 43 4f 55 4e  ISTINCT - + COUN
23b0: 54 20 28 20 2a 20 29 20 2a 20 2d 20 43 41 53 54  T ( * ) * - CAST
23c0: 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
23d0: 45 52 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  ER ) AS col2 FRO
23e0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
23f0: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ----..NULL....qu
2400: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
2410: 0a 53 45 4c 45 43 54 20 2b 20 39 37 20 2b 20 2b  .SELECT + 97 + +
2420: 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 2c 20 63   col2 AS col0, c
2430: 6f 6c 30 2c 20 2b 20 2d 20 63 6f 6c 31 20 46 52  ol0, + - col1 FR
2440: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39  OM tab0..----..9
2450: 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
2460: 74 6f 20 61 64 64 63 38 36 36 38 61 34 63 66 64  to addc8668a4cfd
2470: 31 33 65 64 66 61 64 33 37 35 30 39 36 62 39 65  13edfad375096b9e
2480: 37 66 66 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  7ff....onlyif my
2490: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
24a0: 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
24b0: 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
24c0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
24d0: 6f 72 74 20 6c 61 62 65 6c 2d 34 31 0d 0a 53 45  ort label-41..SE
24e0: 4c 45 43 54 20 2d 20 53 55 4d 28 20 44 49 53 54  LECT - SUM( DIST
24f0: 49 4e 43 54 20 2b 20 2b 20 32 36 20 29 20 44 49  INCT + + 26 ) DI
2500: 56 20 2d 20 2d 20 28 20 2b 20 2d 20 43 4f 55 4e  V - - ( + - COUN
2510: 54 28 20 2a 20 29 20 29 20 46 52 4f 4d 20 74 61  T( * ) ) FROM ta
2520: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 38 0d 0a 0d 0a 73  b0..----..8....s
2530: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2540: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2550: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2560: 62 65 6c 2d 34 31 0d 0a 53 45 4c 45 43 54 20 2d  bel-41..SELECT -
2570: 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20   SUM ( DISTINCT 
2580: 2b 20 2b 20 32 36 20 29 20 2f 20 2d 20 2d 20 28  + + 26 ) / - - (
2590: 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   + - COUNT ( * )
25a0: 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
25b0: 2d 2d 0d 0a 38 0d 0a 0d 0a 71 75 65 72 79 20 49  --..8....query I
25c0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
25d0: 54 20 2d 20 33 36 20 2a 20 2b 20 63 6f 6c 32 2c  T - 36 * + col2,
25e0: 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
25f0: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 32 34 0d 0a  1..----..-2124..
2600: 38 35 0d 0a 2d 32 34 34 38 0d 0a 39 31 0d 0a 2d  85..-2448..91..-
2610: 33 34 35 36 0d 0a 35 31 0d 0a 0d 0a 71 75 65 72  3456..51....quer
2620: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
2630: 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
2640: 20 74 61 62 32 20 57 48 45 52 45 20 34 37 20 3c   tab2 WHERE 47 <
2650: 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  = NULL..----....
2660: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
2670: 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
2680: 20 74 61 62 32 20 57 48 45 52 45 20 28 20 4e 4f   tab2 WHERE ( NO
2690: 54 20 28 20 2d 20 33 20 2b 20 2b 20 63 6f 6c 30  T ( - 3 + + col0
26a0: 20 2b 20 2b 20 63 6f 6c 30 20 49 53 20 4e 55 4c   + + col0 IS NUL
26b0: 4c 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76  L ) )..----..9 v
26c0: 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
26d0: 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32   75c998aa53ac832
26e0: 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34  18cbf2feb962d0a4
26f0: 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
2700: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2710: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2720: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35  rowsort label-45
2730: 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 53 55 4d  ..SELECT + - SUM
2740: 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63  ( DISTINCT + + c
2750: 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ol0 ) FROM tab0 
2760: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
2770: 31 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  199....skipif my
2780: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2790: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
27a0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35 0d 0a  wsort label-45..
27b0: 53 45 4c 45 43 54 20 2b 20 2d 20 53 55 4d 20 28  SELECT + - SUM (
27c0: 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f   DISTINCT + + co
27d0: 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  l0 ) FROM tab0 A
27e0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
27f0: 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  99....query I ro
2800: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2810: 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20  STINCT + + col1 
2820: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2830: 30 20 57 48 45 52 45 20 4e 4f 54 20 33 32 20 3e  0 WHERE NOT 32 >
2840: 3d 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  = - col2..----..
2850: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2860: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2870: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2880: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 0d 0a 53  sort label-47..S
2890: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
28a0: 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20   - COUNT( * ) + 
28b0: 2d 20 2d 20 28 20 2b 20 2b 20 36 36 20 29 20 41  - - ( + + 66 ) A
28c0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
28d0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
28e0: 36 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  63....skipif mys
28f0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2900: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2910: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 0d 0a 53  sort label-47..S
2920: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2930: 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b   - COUNT ( * ) +
2940: 20 2d 20 2d 20 28 20 2b 20 2b 20 36 36 20 29 20   - - ( + + 66 ) 
2950: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
2960: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
2970: 0a 36 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .63....query I r
2980: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
2990: 20 39 33 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   93 AS col1 FROM
29a0: 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
29b0: 0d 0a 39 33 0d 0a 39 33 0d 0a 39 33 0d 0a 0d 0a  ..93..93..93....
29c0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
29d0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
29e0: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
29f0: 72 74 20 6c 61 62 65 6c 2d 34 39 0d 0a 53 45 4c  rt label-49..SEL
2a00: 45 43 54 20 2b 20 28 20 28 20 43 4f 55 4e 54 28  ECT + ( ( COUNT(
2a10: 20 2a 20 29 20 29 20 29 20 2a 20 43 4f 55 4e 54   * ) ) ) * COUNT
2a20: 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ( * ) AS col1 FR
2a30: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
2a40: 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69 70  .----..9....skip
2a50: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2a60: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2a70: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2a80: 2d 34 39 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20  -49..SELECT + ( 
2a90: 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20  ( COUNT ( * ) ) 
2aa0: 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ) * COUNT ( * ) 
2ab0: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
2ac0: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
2ad0: 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .9....onlyif mys
2ae0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
2af0: 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69  yntax: DIV for i
2b00: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
2b10: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2b20: 72 74 20 6c 61 62 65 6c 2d 35 30 0d 0a 53 45 4c  rt label-50..SEL
2b30: 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28  ECT ALL + COUNT(
2b40: 20 2a 20 29 20 44 49 56 20 2d 20 2b 20 43 4f 55   * ) DIV - + COU
2b50: 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
2b60: 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0 cor0..----..-1
2b70: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2b80: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2b90: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2ba0: 72 74 20 6c 61 62 65 6c 2d 35 30 0d 0a 53 45 4c  rt label-50..SEL
2bb0: 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20  ECT ALL + COUNT 
2bc0: 28 20 2a 20 29 20 2f 20 2d 20 2b 20 43 4f 55 4e  ( * ) / - + COUN
2bd0: 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  T ( * ) FROM tab
2be0: 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0 cor0..----..-1
2bf0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2c00: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2c10: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2c20: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
2c30: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c40: 20 6c 61 62 65 6c 2d 35 31 0d 0a 53 45 4c 45 43   label-51..SELEC
2c50: 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a 20 29  T ALL COUNT( * )
2c60: 20 2a 20 2d 20 28 20 2d 20 2d 20 43 41 53 54 28   * - ( - - CAST(
2c70: 20 2b 20 2b 20 4d 41 58 28 20 2b 20 63 6f 6c 30   + + MAX( + col0
2c80: 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 29   ) AS SIGNED ) )
2c90: 20 2b 20 2d 20 2b 20 43 4f 55 4e 54 28 20 44 49   + - + COUNT( DI
2ca0: 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 32 20  STINCT - + col2 
2cb0: 29 20 2b 20 2b 20 4d 49 4e 28 20 44 49 53 54 49  ) + + MIN( DISTI
2cc0: 4e 43 54 20 2d 20 63 6f 6c 32 20 29 20 2a 20 34  NCT - col2 ) * 4
2cd0: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
2ce0: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20  or0 WHERE NOT + 
2cf0: 32 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  20 IS NOT NULL..
2d00: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
2d10: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2d20: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2d30: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2d40: 65 6c 2d 35 31 0d 0a 53 45 4c 45 43 54 20 41 4c  el-51..SELECT AL
2d50: 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  L COUNT ( * ) * 
2d60: 2d 20 28 20 2d 20 2d 20 43 41 53 54 20 28 20 2b  - ( - - CAST ( +
2d70: 20 2b 20 4d 41 58 20 28 20 2b 20 63 6f 6c 30 20   + MAX ( + col0 
2d80: 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29  ) AS INTEGER ) )
2d90: 20 2b 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 44   + - + COUNT ( D
2da0: 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 32  ISTINCT - + col2
2db0: 20 29 20 2b 20 2b 20 4d 49 4e 20 28 20 44 49 53   ) + + MIN ( DIS
2dc0: 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20 29 20 2a  TINCT - col2 ) *
2dd0: 20 34 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53   41 FROM tab0 AS
2de0: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
2df0: 2b 20 32 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  + 20 IS NOT NULL
2e00: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
2e10: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
2e20: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
2e30: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
2e40: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2e50: 2d 35 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -52..SELECT DIST
2e60: 49 4e 43 54 20 2b 20 39 32 20 44 49 56 20 37 37  INCT + 92 DIV 77
2e70: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
2e80: 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..1....skipif my
2e90: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2ea0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2eb0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 0d 0a  wsort label-52..
2ec0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2ed0: 2b 20 39 32 20 2f 20 37 37 20 46 52 4f 4d 20 74  + 92 / 77 FROM t
2ee0: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a  ab2..----..1....
2ef0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2f00: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2f10: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2f20: 72 74 20 6c 61 62 65 6c 2d 35 33 0d 0a 53 45 4c  rt label-53..SEL
2f30: 45 43 54 20 2b 20 28 20 2d 20 28 20 43 4f 55 4e  ECT + ( - ( COUN
2f40: 54 28 20 2a 20 29 20 29 20 29 20 63 6f 6c 32 20  T( * ) ) ) col2 
2f50: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
2f60: 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-3....skipif my
2f70: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2f80: 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
2f90: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
2fa0: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
2fb0: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
2fc0: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
2fd0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2fe0: 61 62 65 6c 2d 35 33 0d 0a 53 45 4c 45 43 54 20  abel-53..SELECT 
2ff0: 2b 20 28 20 2d 20 28 20 43 4f 55 4e 54 20 28 20  + ( - ( COUNT ( 
3000: 2a 20 29 20 29 20 29 20 63 6f 6c 32 20 46 52 4f  * ) ) ) col2 FRO
3010: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab0..----..-3
3020: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
3030: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
3040: 6c 32 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 2a 20  l2 * - + col1 * 
3050: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
3060: 2d 2d 2d 2d 0d 0a 31 34 37 35 0d 0a 31 35 30 32  ----..1475..1502
3070: 31 32 0d 0a 31 38 38 31 36 0d 0a 0d 0a 71 75 65  12..18816....que
3080: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
3090: 4c 45 43 54 20 41 4c 4c 20 2d 20 28 20 2b 20 2d  LECT ALL - ( + -
30a0: 20 28 20 2b 20 63 6f 6c 31 20 29 20 29 20 2a 20   ( + col1 ) ) * 
30b0: 2d 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  - - col2 FROM ta
30c0: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 34 34 0d 0a  b1..----..1344..
30d0: 32 39 35 0d 0a 33 31 39 36 0d 0a 0d 0a 6f 6e 6c  295..3196....onl
30e0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
30f0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
3100: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
3110: 6c 61 62 65 6c 2d 35 36 0d 0a 53 45 4c 45 43 54  label-56..SELECT
3120: 20 41 4c 4c 20 2d 20 4d 41 58 28 20 41 4c 4c 20   ALL - MAX( ALL 
3130: 2b 20 38 32 20 29 20 41 53 20 63 6f 6c 31 20 46  + 82 ) AS col1 F
3140: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
3150: 2d 38 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -82....skipif my
3160: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
3170: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
3180: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 0d 0a  wsort label-56..
3190: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58  SELECT ALL - MAX
31a0: 20 28 20 41 4c 4c 20 2b 20 38 32 20 29 20 41 53   ( ALL + 82 ) AS
31b0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
31c0: 0a 2d 2d 2d 2d 0d 0a 2d 38 32 0d 0a 0d 0a 71 75  .----..-82....qu
31d0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
31e0: 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2b 20 28  ELECT + col1 + (
31f0: 20 2d 20 2d 20 39 30 20 29 20 41 53 20 63 6f 6c   - - 90 ) AS col
3200: 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
3210: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 31 0d 0a  or0..----..111..
3220: 31 37 31 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79 69  171..91....onlyi
3230: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
3240: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
3250: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
3260: 62 65 6c 2d 35 38 0d 0a 53 45 4c 45 43 54 20 44  bel-58..SELECT D
3270: 49 53 54 49 4e 43 54 20 53 55 4d 28 20 44 49 53  ISTINCT SUM( DIS
3280: 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 29 20 63  TINCT + col2 ) c
3290: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
32a0: 2d 2d 2d 0d 0a 31 35 36 0d 0a 0d 0a 73 6b 69 70  ---..156....skip
32b0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
32c0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
32d0: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
32e0: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
32f0: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
3300: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
3310: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
3320: 6f 72 74 20 6c 61 62 65 6c 2d 35 38 0d 0a 53 45  ort label-58..SE
3330: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55  LECT DISTINCT SU
3340: 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63  M ( DISTINCT + c
3350: 6f 6c 32 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20  ol2 ) col2 FROM 
3360: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 36 0d  tab0..----..156.
3370: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
3380: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
3390: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
33a0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39 0d 0a  wsort label-59..
33b0: 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
33c0: 2a 20 29 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a  * ) + + COUNT( *
33d0: 20 29 20 2d 20 2b 20 36 36 20 2a 20 43 4f 55 4e   ) - + 66 * COUN
33e0: 54 28 20 2a 20 29 20 63 6f 6c 32 20 46 52 4f 4d  T( * ) col2 FROM
33f0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39   tab1..----..-19
3400: 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
3410: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
3420: 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
3430: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
3440: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
3450: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
3460: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
3470: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
3480: 65 6c 2d 35 39 0d 0a 53 45 4c 45 43 54 20 2d 20  el-59..SELECT - 
3490: 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20  COUNT ( * ) + + 
34a0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20 2b 20  COUNT ( * ) - + 
34b0: 36 36 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29  66 * COUNT ( * )
34c0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
34d0: 0a 2d 2d 2d 2d 0d 0a 2d 31 39 38 0d 0a 0d 0a 71  .----..-198....q
34e0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
34f0: 53 45 4c 45 43 54 20 41 4c 4c 20 36 38 20 2a 20  SELECT ALL 68 * 
3500: 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 2d 20 28  - + col2 * + - (
3510: 20 2b 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63   + + col0 ) AS c
3520: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
3530: 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 32   cor0 WHERE col2
3540: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
3550: 2d 2d 0d 0a 34 37 39 34 30 0d 0a 35 39 31 36 30  --..47940..59160
3560: 0d 0a 36 35 33 30 30 34 0d 0a 0d 0a 6f 6e 6c 79  ..653004....only
3570: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
3580: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
3590: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
35a0: 61 62 65 6c 2d 36 31 0d 0a 53 45 4c 45 43 54 20  abel-61..SELECT 
35b0: 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 35 33 20  DISTINCT + + 53 
35c0: 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  + COUNT( * ) FRO
35d0: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
35e0: 2d 2d 2d 2d 0d 0a 35 36 0d 0a 0d 0a 73 6b 69 70  ----..56....skip
35f0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
3600: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
3610: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
3620: 2d 36 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -61..SELECT DIST
3630: 49 4e 43 54 20 2b 20 2b 20 35 33 20 2b 20 43 4f  INCT + + 53 + CO
3640: 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
3650: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
3660: 2d 0d 0a 35 36 0d 0a 0d 0a 71 75 65 72 79 20 49  -..56....query I
3670: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
3680: 20 41 4c 4c 20 2b 20 36 37 20 2a 20 37 31 20 2b   ALL + 67 * 71 +
3690: 20 28 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c   ( col2 ) AS col
36a0: 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
36b0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 37 36 37 0d  or0..----..4767.
36c0: 0a 34 38 30 34 0d 0a 34 38 35 36 0d 0a 0d 0a 71  .4804..4856....q
36d0: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
36e0: 0a 53 45 4c 45 43 54 20 2b 20 32 36 2c 20 2b 20  .SELECT + 26, + 
36f0: 38 39 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  89 AS col0 FROM 
3700: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
3710: 2d 2d 0d 0a 32 36 0d 0a 38 39 0d 0a 32 36 0d 0a  --..26..89..26..
3720: 38 39 0d 0a 32 36 0d 0a 38 39 0d 0a 0d 0a 71 75  89..26..89....qu
3730: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
3740: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
3750: 20 2d 20 38 32 20 2a 20 2d 20 28 20 2d 20 2b 20   - 82 * - ( - + 
3760: 63 6f 6c 31 20 29 20 2d 20 36 35 20 41 53 20 63  col1 ) - 65 AS c
3770: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
3780: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32   cor0..----..-42
3790: 34 37 0d 0a 2d 35 35 35 39 0d 0a 2d 36 33 37 39  47..-5559..-6379
37a0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
37b0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
37c0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
37d0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 0d  owsort label-65.
37e0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
37f0: 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 35   MAX( DISTINCT 5
3800: 37 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  7 ) FROM tab1 AS
3810: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d   cor0..----..57.
3820: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
3830: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
3840: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
3850: 74 20 6c 61 62 65 6c 2d 36 35 0d 0a 53 45 4c 45  t label-65..SELE
3860: 43 54 20 44 49 53 54 49 4e 43 54 20 4d 41 58 20  CT DISTINCT MAX 
3870: 28 20 44 49 53 54 49 4e 43 54 20 35 37 20 29 20  ( DISTINCT 57 ) 
3880: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
3890: 30 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 0d 0a 6f  0..----..57....o
38a0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
38b0: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
38c0: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
38d0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
38e0: 36 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  66..SELECT ALL -
38f0: 20 63 6f 6c 30 20 2d 20 2d 20 39 32 20 2b 20 2b   col0 - - 92 + +
3900: 20 38 37 20 2b 20 33 31 20 44 49 56 20 37 32 20   87 + 31 DIV 72 
3910: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
3920: 0a 31 32 38 0d 0a 38 38 0d 0a 39 34 0d 0a 0d 0a  .128..88..94....
3930: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
3940: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
3950: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
3960: 61 62 65 6c 2d 36 36 0d 0a 53 45 4c 45 43 54 20  abel-66..SELECT 
3970: 41 4c 4c 20 2d 20 63 6f 6c 30 20 2d 20 2d 20 39  ALL - col0 - - 9
3980: 32 20 2b 20 2b 20 38 37 20 2b 20 33 31 20 2f 20  2 + + 87 + 31 / 
3990: 37 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  72 FROM tab1..--
39a0: 2d 2d 0d 0a 31 32 38 0d 0a 38 38 0d 0a 39 34 0d  --..128..88..94.
39b0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
39c0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
39d0: 4e 43 54 20 2d 20 31 35 20 2d 20 2d 20 63 6f 6c  NCT - 15 - - col
39e0: 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
39f0: 2d 0d 0a 2d 31 0d 0a 2d 31 30 0d 0a 33 32 0d 0a  -..-1..-10..32..
3a00: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
3a10: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34 37 20 2d  t..SELECT + 47 -
3a20: 20 2d 20 36 20 46 52 4f 4d 20 74 61 62 30 0d 0a   - 6 FROM tab0..
3a30: 2d 2d 2d 2d 0d 0a 35 33 0d 0a 35 33 0d 0a 35 33  ----..53..53..53
3a40: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
3a50: 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
3a60: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
3a70: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
3a80: 6c 61 62 65 6c 2d 36 39 0d 0a 53 45 4c 45 43 54  label-69..SELECT
3a90: 20 2b 20 63 6f 6c 31 20 44 49 56 20 2b 20 63 6f   + col1 DIV + co
3aa0: 6c 30 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c  l0 - col2 AS col
3ab0: 32 2c 20 2b 20 37 33 20 46 52 4f 4d 20 74 61 62  2, + 73 FROM tab
3ac0: 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
3ad0: 28 20 2b 20 2b 20 63 6f 6c 30 20 49 53 20 4e 4f  ( + + col0 IS NO
3ae0: 54 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a  T NULL )..----..
3af0: 2d 35 39 0d 0a 37 33 0d 0a 2d 36 38 0d 0a 37 33  -59..73..-68..73
3b00: 0d 0a 2d 39 36 0d 0a 37 33 0d 0a 0d 0a 73 6b 69  ..-96..73....ski
3b10: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
3b20: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
3b30: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
3b40: 65 6c 2d 36 39 0d 0a 53 45 4c 45 43 54 20 2b 20  el-69..SELECT + 
3b50: 63 6f 6c 31 20 2f 20 2b 20 63 6f 6c 30 20 2d 20  col1 / + col0 - 
3b60: 63 6f 6c 32 20 41 53 20 63 6f 6c 32 2c 20 2b 20  col2 AS col2, + 
3b70: 37 33 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  73 FROM tab1 AS 
3b80: 63 6f 72 30 20 57 48 45 52 45 20 28 20 2b 20 2b  cor0 WHERE ( + +
3b90: 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c   col0 IS NOT NUL
3ba0: 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a  L )..----..-59..
3bb0: 37 33 0d 0a 2d 36 38 0d 0a 37 33 0d 0a 2d 39 36  73..-68..73..-96
3bc0: 0d 0a 37 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..73....query I 
3bd0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
3be0: 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2d 20 63  DISTINCT - ( - c
3bf0: 6f 6c 32 20 29 20 2a 20 2b 20 63 6f 6c 30 20 41  ol2 ) * + col0 A
3c00: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
3c10: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
3c20: 34 38 39 36 0d 0a 35 30 31 35 0d 0a 36 31 38 38  4896..5015..6188
3c30: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
3c40: 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
3c50: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
3c60: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
3c70: 6c 61 62 65 6c 2d 37 31 0d 0a 53 45 4c 45 43 54  label-71..SELECT
3c80: 20 2b 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29 2c   + ( - - col0 ),
3c90: 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20 44 49   ( - - col0 ) DI
3ca0: 56 20 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f 4d  V col0 col1 FROM
3cb0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
3cc0: 2d 2d 2d 0d 0a 34 36 0d 0a 31 0d 0a 36 34 0d 0a  ---..46..1..64..
3cd0: 31 0d 0a 37 35 0d 0a 31 0d 0a 0d 0a 73 6b 69 70  1..75..1....skip
3ce0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
3cf0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
3d00: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
3d10: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
3d20: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
3d30: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
3d40: 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ns..query II row
3d50: 73 6f 72 74 20 6c 61 62 65 6c 2d 37 31 0d 0a 53  sort label-71..S
3d60: 45 4c 45 43 54 20 2b 20 28 20 2d 20 2d 20 63 6f  ELECT + ( - - co
3d70: 6c 30 20 29 2c 20 28 20 2d 20 2d 20 63 6f 6c 30  l0 ), ( - - col0
3d80: 20 29 20 2f 20 63 6f 6c 30 20 63 6f 6c 31 20 46   ) / col0 col1 F
3d90: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
3da0: 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 31 0d 0a 36  ..----..46..1..6
3db0: 34 0d 0a 31 0d 0a 37 35 0d 0a 31 0d 0a 0d 0a 6f  4..1..75..1....o
3dc0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
3dd0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
3de0: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
3df0: 72 74 20 6c 61 62 65 6c 2d 37 32 0d 0a 53 45 4c  rt label-72..SEL
3e00: 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a  ECT ALL COUNT( *
3e10: 20 29 2c 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29   ), - COUNT( * )
3e20: 20 2a 20 2b 20 2b 20 35 35 20 41 53 20 63 6f 6c   * + + 55 AS col
3e30: 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  2 FROM tab1 cor0
3e40: 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 31 36 35 0d  ..----..3..-165.
3e50: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
3e60: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
3e70: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
3e80: 72 74 20 6c 61 62 65 6c 2d 37 32 0d 0a 53 45 4c  rt label-72..SEL
3e90: 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20  ECT ALL COUNT ( 
3ea0: 2a 20 29 2c 20 2d 20 43 4f 55 4e 54 20 28 20 2a  * ), - COUNT ( *
3eb0: 20 29 20 2a 20 2b 20 2b 20 35 35 20 41 53 20 63   ) * + + 55 AS c
3ec0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol2 FROM tab1 co
3ed0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 31 36  r0..----..3..-16
3ee0: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  5....query III r
3ef0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
3f00: 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
3f10: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
3f20: 45 20 2b 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54  E + col2 NOT BET
3f30: 57 45 45 4e 20 2d 20 63 6f 6c 31 20 41 4e 44 20  WEEN - col1 AND 
3f40: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
3f50: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
3f60: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
3f70: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
3f80: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
3f90: 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 32 38  4..SELECT + + 28
3fa0: 20 44 49 56 20 2b 20 2b 20 31 38 20 46 52 4f 4d   DIV + + 18 FROM
3fb0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
3fc0: 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a  ---..1..1..1....
3fd0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
3fe0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
3ff0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
4000: 61 62 65 6c 2d 37 34 0d 0a 53 45 4c 45 43 54 20  abel-74..SELECT 
4010: 2b 20 2b 20 32 38 20 2f 20 2b 20 2b 20 31 38 20  + + 28 / + + 18 
4020: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
4030: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31  0..----..1..1..1
4040: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
4050: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
4060: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
4070: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 0d  owsort label-75.
4080: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
4090: 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   - COUNT( * ) * 
40a0: 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20 2b 20  MIN( DISTINCT + 
40b0: 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30  col2 ) FROM tab0
40c0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
40d0: 2d 33 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -30....skipif my
40e0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
40f0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
4100: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 0d 0a  wsort label-75..
4110: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
4120: 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  - COUNT ( * ) * 
4130: 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2b  MIN ( DISTINCT +
4140: 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62   col2 ) FROM tab
4150: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
4160: 0a 2d 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-30....query II
4170: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4180: 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
4190: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
41a0: 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 2b 20  HERE NOT col2 + 
41b0: 2b 20 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c 30 20  + + col2 * col0 
41c0: 2b 20 2b 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 20  + + col2 + col2 
41d0: 2a 20 63 6f 6c 31 20 3d 20 4e 55 4c 4c 0d 0a 2d  * col1 = NULL..-
41e0: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
41f0: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
4200: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
4210: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
4220: 74 20 6c 61 62 65 6c 2d 37 37 0d 0a 53 45 4c 45  t label-77..SELE
4230: 43 54 20 63 6f 6c 31 20 44 49 56 20 2b 20 2d 20  CT col1 DIV + - 
4240: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
4250: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
4260: 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70  ..-1..-1....skip
4270: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
4280: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
4290: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
42a0: 2d 37 37 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  -77..SELECT col1
42b0: 20 2f 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d   / + - col1 FROM
42c0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
42d0: 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d  ---..-1..-1..-1.
42e0: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
42f0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
4300: 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
4310: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
4320: 20 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   0 IS NOT NULL..
4330: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
4340: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
4350: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
4360: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
4370: 2d 37 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  -79..SELECT ALL 
4380: 2b 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  + ( - COUNT( * )
4390: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
43a0: 74 61 62 32 2c 20 74 61 62 30 20 41 53 20 63 6f  tab2, tab0 AS co
43b0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a  r0..----..-9....
43c0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
43d0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
43e0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
43f0: 61 62 65 6c 2d 37 39 0d 0a 53 45 4c 45 43 54 20  abel-79..SELECT 
4400: 41 4c 4c 20 2b 20 28 20 2d 20 43 4f 55 4e 54 20  ALL + ( - COUNT 
4410: 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 31 20  ( * ) ) AS col1 
4420: 46 52 4f 4d 20 74 61 62 32 2c 20 74 61 62 30 20  FROM tab2, tab0 
4430: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
4440: 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
4450: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
4460: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
4470: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
4480: 20 6c 61 62 65 6c 2d 38 30 0d 0a 53 45 4c 45 43   label-80..SELEC
4490: 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 2c 20 2b 20  T ALL + col0, + 
44a0: 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
44b0: 47 4e 45 44 20 29 20 2a 20 2d 20 2b 20 33 37 20  GNED ) * - + 37 
44c0: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
44d0: 0a 35 31 0d 0a 4e 55 4c 4c 0d 0a 38 35 0d 0a 4e  .51..NULL..85..N
44e0: 55 4c 4c 0d 0a 39 31 0d 0a 4e 55 4c 4c 0d 0a 0d  ULL..91..NULL...
44f0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
4500: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
4510: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
4520: 20 6c 61 62 65 6c 2d 38 30 0d 0a 53 45 4c 45 43   label-80..SELEC
4530: 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 2c 20 2b 20  T ALL + col0, + 
4540: 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
4550: 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 2b 20 33  NTEGER ) * - + 3
4560: 37 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  7 FROM tab1..---
4570: 2d 0d 0a 35 31 0d 0a 4e 55 4c 4c 0d 0a 38 35 0d  -..51..NULL..85.
4580: 0a 4e 55 4c 4c 0d 0a 39 31 0d 0a 4e 55 4c 4c 0d  .NULL..91..NULL.
4590: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
45a0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
45b0: 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
45c0: 4f 54 20 4e 55 4c 4c 20 3d 20 2d 20 33 39 0d 0a  OT NULL = - 39..
45d0: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
45e0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
45f0: 44 49 53 54 49 4e 43 54 20 2d 20 38 37 20 2a 20  DISTINCT - 87 * 
4600: 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  - + col1 AS col2
4610: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
4620: 0d 0a 31 38 32 37 0d 0a 37 30 34 37 0d 0a 38 37  ..1827..7047..87
4630: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
4640: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
4650: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
4660: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 0d  owsort label-83.
4670: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
4680: 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   - COUNT( * ) * 
4690: 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
46a0: 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28  tab1 WHERE NOT (
46b0: 20 63 6f 6c 31 20 29 20 49 53 20 4e 4f 54 20 4e   col1 ) IS NOT N
46c0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
46d0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
46e0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
46f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
4700: 61 62 65 6c 2d 38 33 0d 0a 53 45 4c 45 43 54 20  abel-83..SELECT 
4710: 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
4720: 20 28 20 2a 20 29 20 2a 20 43 4f 55 4e 54 20 28   ( * ) * COUNT (
4730: 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 57   * ) FROM tab1 W
4740: 48 45 52 45 20 4e 4f 54 20 28 20 63 6f 6c 31 20  HERE NOT ( col1 
4750: 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  ) IS NOT NULL..-
4760: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
4770: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4780: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 63  T DISTINCT - ( c
4790: 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ol1 ) FROM tab0 
47a0: 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49  WHERE NOT NULL I
47b0: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
47c0: 0d 0a 2d 31 0d 0a 2d 32 31 0d 0a 2d 38 31 0d 0a  ..-1..-21..-81..
47d0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
47e0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
47f0: 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67  x: DIV for integ
4800: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
4810: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
4820: 61 62 65 6c 2d 38 35 0d 0a 53 45 4c 45 43 54 20  abel-85..SELECT 
4830: 4d 49 4e 28 20 41 4c 4c 20 63 6f 6c 30 20 29 20  MIN( ALL col0 ) 
4840: 44 49 56 20 34 31 20 46 52 4f 4d 20 74 61 62 30  DIV 41 FROM tab0
4850: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
4860: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
4870: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
4880: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
4890: 6c 2d 38 35 0d 0a 53 45 4c 45 43 54 20 4d 49 4e  l-85..SELECT MIN
48a0: 20 28 20 41 4c 4c 20 63 6f 6c 30 20 29 20 2f 20   ( ALL col0 ) / 
48b0: 34 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  41 FROM tab0..--
48c0: 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
48d0: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
48e0: 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f  e syntax: DIV fo
48f0: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
4900: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
4910: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 0d 0a  wsort label-86..
4920: 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20  SELECT COUNT( * 
4930: 29 20 44 49 56 20 2d 20 39 34 20 46 52 4f 4d 20  ) DIV - 94 FROM 
4940: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  tab1..----..0...
4950: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
4960: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
4970: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
4980: 6c 61 62 65 6c 2d 38 36 0d 0a 53 45 4c 45 43 54  label-86..SELECT
4990: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20 2d   COUNT ( * ) / -
49a0: 20 39 34 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d   94 FROM tab1..-
49b0: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
49c0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
49d0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 35 34 20  T DISTINCT - 54 
49e0: 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20 41 53  - col0 * col1 AS
49f0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
4a00: 0a 2d 2d 2d 2d 0d 0a 2d 32 34 30 30 0d 0a 2d 34  .----..-2400..-4
4a10: 39 38 32 0d 0a 2d 35 30 37 39 0d 0a 0d 0a 6f 6e  982..-5079....on
4a20: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
4a30: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44  regate syntax: D
4a40: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
4a50: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
4a60: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
4a70: 2d 38 38 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  -88..SELECT + CO
4a80: 55 4e 54 28 20 2a 20 29 20 44 49 56 20 2b 20 43  UNT( * ) DIV + C
4a90: 4f 55 4e 54 28 20 44 49 53 54 49 4e 43 54 20 2d  OUNT( DISTINCT -
4aa0: 20 28 20 32 34 20 29 20 2a 20 63 6f 6c 32 20 29   ( 24 ) * col2 )
4ab0: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
4ac0: 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..1....skipif my
4ad0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
4ae0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
4af0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 0d 0a  wsort label-88..
4b00: 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28  SELECT + COUNT (
4b10: 20 2a 20 29 20 2f 20 2b 20 43 4f 55 4e 54 20 28   * ) / + COUNT (
4b20: 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 32 34   DISTINCT - ( 24
4b30: 20 29 20 2a 20 63 6f 6c 32 20 29 20 46 52 4f 4d   ) * col2 ) FROM
4b40: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   tab1..----..1..
4b50: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
4b60: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
4b70: 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67  x: DIV for integ
4b80: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
4b90: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
4ba0: 61 62 65 6c 2d 38 39 0d 0a 53 45 4c 45 43 54 20  abel-89..SELECT 
4bb0: 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56  + COUNT( * ) DIV
4bc0: 20 35 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   52 FROM tab2..-
4bd0: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
4be0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
4bf0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
4c00: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
4c10: 39 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  9..SELECT + COUN
4c20: 54 20 28 20 2a 20 29 20 2f 20 35 32 20 46 52 4f  T ( * ) / 52 FRO
4c30: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab2..----..0.
4c40: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
4c50: 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20  rt..SELECT col1 
4c60: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
4c70: 63 6f 6c 30 20 2b 20 38 30 20 3d 20 28 20 2d 20  col0 + 80 = ( - 
4c80: 63 6f 6c 31 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d  col1 + col0 )..-
4c90: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
4ca0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
4cb0: 4c 4c 20 2d 20 39 35 20 2b 20 31 34 20 2a 20 2d  LL - 95 + 14 * -
4cc0: 20 33 35 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d   35 FROM tab1..-
4cd0: 2d 2d 2d 0d 0a 2d 35 38 35 0d 0a 2d 35 38 35 0d  ---..-585..-585.
4ce0: 0a 2d 35 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49  .-585....query I
4cf0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
4d00: 20 44 49 53 54 49 4e 43 54 20 2b 20 32 36 20 2a   DISTINCT + 26 *
4d10: 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20   + col2 AS col1 
4d20: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
4d30: 0a 31 32 32 32 0d 0a 32 35 37 34 0d 0a 32 36 30  .1222..2574..260
4d40: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
4d50: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
4d60: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
4d70: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33 0d  owsort label-93.
4d80: 0a 53 45 4c 45 43 54 20 2b 20 32 37 20 2a 20 2b  .SELECT + 27 * +
4d90: 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
4da0: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d   tab0..----..81.
4db0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
4dc0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
4dd0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
4de0: 74 20 6c 61 62 65 6c 2d 39 33 0d 0a 53 45 4c 45  t label-93..SELE
4df0: 43 54 20 2b 20 32 37 20 2a 20 2b 20 43 4f 55 4e  CT + 27 * + COUN
4e00: 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  T ( * ) FROM tab
4e10: 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 0d 0a 6f  0..----..81....o
4e20: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
4e30: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
4e40: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
4e50: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
4e60: 39 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  94..SELECT DISTI
4e70: 4e 43 54 20 35 20 44 49 56 20 2d 20 63 6f 6c 30  NCT 5 DIV - col0
4e80: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
4e90: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  b1..----..0....s
4ea0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
4eb0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
4ec0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
4ed0: 62 65 6c 2d 39 34 0d 0a 53 45 4c 45 43 54 20 44  bel-94..SELECT D
4ee0: 49 53 54 49 4e 43 54 20 35 20 2f 20 2d 20 63 6f  ISTINCT 5 / - co
4ef0: 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
4f00: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  tab1..----..0...
4f10: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
4f20: 0d 0a 53 45 4c 45 43 54 20 33 37 20 2a 20 63 6f  ..SELECT 37 * co
4f30: 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
4f40: 2d 2d 0d 0a 33 32 31 39 0d 0a 33 35 38 39 0d 0a  --..3219..3589..
4f50: 35 35 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  555....onlyif my
4f60: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
4f70: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
4f80: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
4f90: 74 20 6c 61 62 65 6c 2d 39 36 0d 0a 53 45 4c 45  t label-96..SELE
4fa0: 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  CT DISTINCT col1
4fb0: 20 44 49 56 20 34 33 20 46 52 4f 4d 20 74 61 62   DIV 43 FROM tab
4fc0: 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 0d  1..----..0..1...
4fd0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
4fe0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
4ff0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
5000: 6c 61 62 65 6c 2d 39 36 0d 0a 53 45 4c 45 43 54  label-96..SELECT
5010: 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 2f   DISTINCT col1 /
5020: 20 34 33 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d   43 FROM tab1..-
5030: 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 0d 0a 6f 6e 6c  ---..0..1....onl
5040: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
5050: 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
5060: 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
5070: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
5080: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
5090: 39 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53  97..SELECT - CAS
50a0: 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
50b0: 44 20 29 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a  D ) - - COUNT( *
50c0: 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
50d0: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab0..----..NULL
50e0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
50f0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
5100: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
5110: 72 74 20 6c 61 62 65 6c 2d 39 37 0d 0a 53 45 4c  rt label-97..SEL
5120: 45 43 54 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  ECT - CAST ( NUL
5130: 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2d  L AS INTEGER ) -
5140: 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
5150: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
5160: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
5170: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
5180: 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
5190: 20 74 61 62 32 20 57 48 45 52 45 20 28 20 4e 55   tab2 WHERE ( NU
51a0: 4c 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20 2d 20  LL ) NOT IN ( - 
51b0: 35 36 20 2b 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d  56 + + col1 )..-
51c0: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
51d0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
51e0: 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
51f0: 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
5200: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
5210: 6f 72 74 20 6c 61 62 65 6c 2d 39 39 0d 0a 53 45  ort label-99..SE
5220: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
5230: 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 2d 20  MAX( DISTINCT - 
5240: 34 39 20 29 20 44 49 56 20 4d 41 58 28 20 2d 20  49 ) DIV MAX( - 
5250: 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
5260: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 73 6b  ..----..-1....sk
5270: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
5280: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
5290: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
52a0: 65 6c 2d 39 39 0d 0a 53 45 4c 45 43 54 20 44 49  el-99..SELECT DI
52b0: 53 54 49 4e 43 54 20 2d 20 4d 41 58 20 28 20 44  STINCT - MAX ( D
52c0: 49 53 54 49 4e 43 54 20 2d 20 34 39 20 29 20 2f  ISTINCT - 49 ) /
52d0: 20 4d 41 58 20 28 20 2d 20 63 6f 6c 30 20 29 20   MAX ( - col0 ) 
52e0: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
52f0: 0a 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .-1....onlyif my
5300: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
5310: 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
5320: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
5330: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
5340: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 30 0d 0a 53  ort label-100..S
5350: 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a  ELECT - COUNT( *
5360: 20 29 20 2a 20 2d 20 32 32 20 2d 20 2b 20 43 4f   ) * - 22 - + CO
5370: 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
5380: 62 30 20 57 48 45 52 45 20 28 20 43 41 53 54 28  b0 WHERE ( CAST(
5390: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
53a0: 29 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ) ) IS NOT NULL.
53b0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
53c0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
53d0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
53e0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
53f0: 2d 31 30 30 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -100..SELECT - C
5400: 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 32  OUNT ( * ) * - 2
5410: 32 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  2 - + COUNT ( * 
5420: 29 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  ) FROM tab0 WHER
5430: 45 20 28 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  E ( CAST ( NULL 
5440: 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 49  AS INTEGER ) ) I
5450: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
5460: 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
5470: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
5480: 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol2 AS col0 FROM
5490: 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
54a0: 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20  ( NULL ) IS NOT 
54b0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a  NULL..----..10..
54c0: 34 37 0d 0a 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  47..99....onlyif
54d0: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
54e0: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
54f0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
5500: 65 6c 2d 31 30 32 0d 0a 53 45 4c 45 43 54 20 53  el-102..SELECT S
5510: 55 4d 28 20 63 6f 6c 31 20 29 20 2a 20 53 55 4d  UM( col1 ) * SUM
5520: 28 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 29 20 2b  ( ALL - col1 ) +
5530: 20 33 34 20 2a 20 2b 20 4d 49 4e 28 20 41 4c 4c   34 * + MIN( ALL
5540: 20 2d 20 28 20 2d 20 63 6f 6c 30 20 29 20 29 20   - ( - col0 ) ) 
5550: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
5560: 0a 2d 32 36 32 32 0d 0a 0d 0a 73 6b 69 70 69 66  .-2622....skipif
5570: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
5580: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
5590: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
55a0: 30 32 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20 28  02..SELECT SUM (
55b0: 20 63 6f 6c 31 20 29 20 2a 20 53 55 4d 20 28 20   col1 ) * SUM ( 
55c0: 41 4c 4c 20 2d 20 63 6f 6c 31 20 29 20 2b 20 33  ALL - col1 ) + 3
55d0: 34 20 2a 20 2b 20 4d 49 4e 20 28 20 41 4c 4c 20  4 * + MIN ( ALL 
55e0: 2d 20 28 20 2d 20 63 6f 6c 30 20 29 20 29 20 46  - ( - col0 ) ) F
55f0: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
5600: 2d 32 36 32 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -2622....onlyif 
5610: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
5620: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
5630: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
5640: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 0d 0a 53  ort label-103..S
5650: 45 4c 45 43 54 20 63 6f 6c 32 20 2a 20 2d 20 38  ELECT col2 * - 8
5660: 36 20 2b 20 43 41 53 54 28 20 28 20 2d 20 63 6f  6 + CAST( ( - co
5670: 6c 31 20 29 20 41 53 20 53 49 47 4e 45 44 20 29  l1 ) AS SIGNED )
5680: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
5690: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 32 39 0d  b2..----..-2029.
56a0: 0a 2d 33 35 31 37 0d 0a 2d 35 30 35 35 0d 0a 0d  .-3517..-5055...
56b0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
56c0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
56d0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
56e0: 6c 61 62 65 6c 2d 31 30 33 0d 0a 53 45 4c 45 43  label-103..SELEC
56f0: 54 20 63 6f 6c 32 20 2a 20 2d 20 38 36 20 2b 20  T col2 * - 86 + 
5700: 43 41 53 54 20 28 20 28 20 2d 20 63 6f 6c 31 20  CAST ( ( - col1 
5710: 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  ) AS INTEGER ) A
5720: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
5730: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 32 39 0d 0a 2d  ..----..-2029..-
5740: 33 35 31 37 0d 0a 2d 35 30 35 35 0d 0a 0d 0a 73  3517..-5055....s
5750: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
5760: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
5770: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
5780: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
5790: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
57a0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
57b0: 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 30 20 63 6f  col2 + + col0 co
57c0: 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
57d0: 2d 2d 0d 0a 31 39 36 0d 0a 36 32 0d 0a 39 37 0d  --..196..62..97.
57e0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
57f0: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
5800: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
5810: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 0d  wsort label-105.
5820: 0a 53 45 4c 45 43 54 20 2b 20 4d 41 58 28 20 44  .SELECT + MAX( D
5830: 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 29  ISTINCT + col0 )
5840: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
5850: 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 0d 0a 73 6b 69  .----..97....ski
5860: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
5870: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
5880: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
5890: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
58a0: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
58b0: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
58c0: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
58d0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 0d 0a  sort label-105..
58e0: 53 45 4c 45 43 54 20 2b 20 4d 41 58 20 28 20 44  SELECT + MAX ( D
58f0: 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 29  ISTINCT + col0 )
5900: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
5910: 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 0d 0a 71 75 65  .----..97....que
5920: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
5930: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
5940: 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
5950: 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 3e 20 28 20   NOT - col1 > ( 
5960: 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  NULL )..----....
5970: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
5980: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
5990: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41  CT * FROM tab0 A
59a0: 53 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e  S cor0 WHERE ( N
59b0: 55 4c 4c 20 29 20 42 45 54 57 45 45 4e 20 28 20  ULL ) BETWEEN ( 
59c0: 4e 55 4c 4c 20 29 20 41 4e 44 20 63 6f 6c 30 0d  NULL ) AND col0.
59d0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
59e0: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
59f0: 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
5a00: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
5a10: 57 48 45 52 45 20 36 39 20 4e 4f 54 20 42 45 54  WHERE 69 NOT BET
5a20: 57 45 45 4e 20 38 36 20 41 4e 44 20 63 6f 6c 31  WEEN 86 AND col1
5a30: 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
5a40: 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34   hashing to c4b4
5a50: 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30  2765dff94eaaa460
5a60: 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a  40e537fb43b7....
5a70: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
5a80: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
5a90: 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
5aa0: 2d 20 63 6f 6c 32 20 2a 20 2b 20 39 32 20 49 53  - col2 * + 92 IS
5ab0: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
5ac0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
5ad0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
5ae0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
5af0: 74 20 6c 61 62 65 6c 2d 31 31 30 0d 0a 53 45 4c  t label-110..SEL
5b00: 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 63  ECT COUNT( * ) c
5b10: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
5b20: 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
5b30: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a   tab1..----..9..
5b40: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
5b50: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
5b60: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
5b70: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
5b80: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
5b90: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
5ba0: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
5bb0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
5bc0: 31 31 30 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  110..SELECT COUN
5bd0: 54 20 28 20 2a 20 29 20 63 6f 6c 30 20 46 52 4f  T ( * ) col0 FRO
5be0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43  M tab2 AS cor0 C
5bf0: 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 0d 0a  ROSS JOIN tab1..
5c00: 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79  ----..9....query
5c10: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
5c20: 43 54 20 44 49 53 54 49 4e 43 54 20 28 20 63 6f  CT DISTINCT ( co
5c30: 6c 32 20 29 20 2a 20 32 30 20 41 53 20 63 6f 6c  l2 ) * 20 AS col
5c40: 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  1 FROM tab2 WHER
5c50: 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  E NULL IS NOT NU
5c60: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
5c70: 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
5c80: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
5c90: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
5ca0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32  owsort label-112
5cb0: 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 33 30 20  ..SELECT - - 30 
5cc0: 44 49 56 20 2d 20 28 20 2b 20 32 33 20 29 20 46  DIV - ( + 23 ) F
5cd0: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
5ce0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a  ..----..-1..-1..
5cf0: 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -1....skipif mys
5d00: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
5d10: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
5d20: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 0d 0a  sort label-112..
5d30: 53 45 4c 45 43 54 20 2d 20 2d 20 33 30 20 2f 20  SELECT - - 30 / 
5d40: 2d 20 28 20 2b 20 32 33 20 29 20 46 52 4f 4d 20  - ( + 23 ) FROM 
5d50: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
5d60: 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a  --..-1..-1..-1..
5d70: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
5d80: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
5d90: 63 6f 6c 31 20 2f 20 63 6f 6c 32 20 41 53 20 63  col1 / col2 AS c
5da0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
5db0: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
5dc0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
5dd0: 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
5de0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
5df0: 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
5e00: 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
5e10: 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57  RE NULL NOT BETW
5e20: 45 45 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e 44  EEN ( NULL ) AND
5e30: 20 28 20 2b 20 63 6f 6c 32 20 2d 20 2d 20 63 6f   ( + col2 - - co
5e40: 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  l1 )..----....qu
5e50: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
5e60: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
5e70: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
5e80: 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2d 20 63  E NOT - col0 - c
5e90: 6f 6c 30 20 2a 20 63 6f 6c 30 20 49 53 20 4e 55  ol0 * col0 IS NU
5ea0: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
5eb0: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36  es hashing to c6
5ec0: 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63  c0a4111b36d04dbc
5ed0: 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a  811a11e4d54cad..
5ee0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
5ef0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
5f00: 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  * FROM tab1 cor0
5f10: 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2b 20 35   WHERE NOT ( + 5
5f20: 37 20 29 20 49 4e 20 28 20 2b 20 63 6f 6c 30 20  7 ) IN ( + col0 
5f30: 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + col1 )..----..
5f40: 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
5f50: 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33 36   to c6c0a4111b36
5f60: 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64 35  d04dbc811a11e4d5
5f70: 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 49  4cad....query II
5f80: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
5f90: 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  T * FROM tab1 co
5fa0: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 36  r0 WHERE NOT - 6
5fb0: 36 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  6 IS NOT NULL..-
5fc0: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
5fd0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
5fe0: 4c 4c 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 63 6f  LL - col0 + + co
5ff0: 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
6000: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
6010: 20 39 30 20 4e 4f 54 20 42 45 54 57 45 45 4e 20   90 NOT BETWEEN 
6020: 2b 20 34 32 20 2a 20 2b 20 63 6f 6c 30 20 41 4e  + 42 * + col0 AN
6030: 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D NULL..----....
6040: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
6050: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
6060: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
6070: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
6080: 2d 31 31 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  -119..SELECT DIS
6090: 54 49 4e 43 54 20 63 6f 6c 32 20 2a 20 2d 20 33  TINCT col2 * - 3
60a0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
60b0: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2d  r0 WHERE NOT ( -
60c0: 20 38 34 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c   84 - CAST( NULL
60d0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2f 20 2d   AS SIGNED ) / -
60e0: 20 31 30 20 29 20 42 45 54 57 45 45 4e 20 28 20   10 ) BETWEEN ( 
60f0: 4e 55 4c 4c 20 29 20 41 4e 44 20 4e 55 4c 4c 0d  NULL ) AND NULL.
6100: 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
6110: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
6120: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
6130: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
6140: 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
6150: 43 54 20 63 6f 6c 32 20 2a 20 2d 20 33 20 46 52  CT col2 * - 3 FR
6160: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
6170: 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 38 34  WHERE NOT ( - 84
6180: 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
6190: 53 20 49 4e 54 45 47 45 52 20 29 20 2f 20 2d 20  S INTEGER ) / - 
61a0: 31 30 20 29 20 42 45 54 57 45 45 4e 20 28 20 4e  10 ) BETWEEN ( N
61b0: 55 4c 4c 20 29 20 41 4e 44 20 4e 55 4c 4c 0d 0a  ULL ) AND NULL..
61c0: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
61d0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
61e0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
61f0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
6200: 2d 31 32 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -120..SELECT ALL
6210: 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c 32   COUNT( * ) col2
6220: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
6230: 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  r0 WHERE NULL IS
6240: 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
6250: 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
6260: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
6270: 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
6280: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
6290: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
62a0: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
62b0: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
62c0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
62d0: 62 65 6c 2d 31 32 30 0d 0a 53 45 4c 45 43 54 20  bel-120..SELECT 
62e0: 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ALL COUNT ( * ) 
62f0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
6300: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c  S cor0 WHERE NUL
6310: 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  L IS NOT NULL..-
6320: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..0....onlyif
6330: 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
6340: 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
6350: 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
6360: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 0d 0a  sort label-121..
6370: 53 45 4c 45 43 54 20 2d 20 28 20 63 6f 6c 32 20  SELECT - ( col2 
6380: 29 20 44 49 56 20 63 6f 6c 32 20 41 53 20 63 6f  ) DIV col2 AS co
6390: 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
63a0: 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a  --..-1..-1..-1..
63b0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
63c0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
63d0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
63e0: 20 6c 61 62 65 6c 2d 31 32 31 0d 0a 53 45 4c 45   label-121..SELE
63f0: 43 54 20 2d 20 28 20 63 6f 6c 32 20 29 20 2f 20  CT - ( col2 ) / 
6400: 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
6410: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
6420: 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72  ..-1..-1....quer
6430: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
6440: 45 43 54 20 44 49 53 54 49 4e 43 54 20 33 35 20  ECT DISTINCT 35 
6450: 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46  + col1 AS col1 F
6460: 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 63  ROM tab0 WHERE c
6470: 6f 6c 31 20 2b 20 63 6f 6c 32 20 49 53 20 4e 55  ol1 + col2 IS NU
6480: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
6490: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
64a0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
64b0: 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55  2 WHERE NOT ( NU
64c0: 4c 4c 20 29 20 42 45 54 57 45 45 4e 20 28 20 63  LL ) BETWEEN ( c
64d0: 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 2b 20 63  ol0 * + col0 + c
64e0: 6f 6c 31 20 29 20 41 4e 44 20 2b 20 38 37 0d 0a  ol1 ) AND + 87..
64f0: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
6500: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
6510: 44 49 53 54 49 4e 43 54 20 2d 20 31 34 20 2b 20  DISTINCT - 14 + 
6520: 63 6f 6c 32 20 2b 20 2b 20 28 20 2d 20 63 6f 6c  col2 + + ( - col
6530: 31 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  1 ) FROM tab2..-
6540: 2d 2d 2d 0d 0a 2d 32 33 0d 0a 2d 34 32 0d 0a 2d  ---..-23..-42..-
6550: 35 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  51....query III 
6560: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
6570: 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
6580: 45 20 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c 32 20  E - col1 + col2 
6590: 42 45 54 57 45 45 4e 20 28 20 63 6f 6c 30 20 29  BETWEEN ( col0 )
65a0: 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   AND NULL..----.
65b0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
65c0: 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
65d0: 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
65e0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
65f0: 62 65 6c 2d 31 32 36 0d 0a 53 45 4c 45 43 54 20  bel-126..SELECT 
6600: 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 2a 20  DISTINCT col0 * 
6610: 2b 20 32 36 20 2b 20 2d 20 63 6f 6c 32 20 44 49  + 26 + - col2 DI
6620: 56 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46  V col1 AS col0 F
6630: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
6640: 31 33 32 30 0d 0a 32 31 39 39 0d 0a 32 33 36 35  1320..2199..2365
6650: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
6660: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
6670: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
6680: 72 74 20 6c 61 62 65 6c 2d 31 32 36 0d 0a 53 45  rt label-126..SE
6690: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
66a0: 6c 30 20 2a 20 2b 20 32 36 20 2b 20 2d 20 63 6f  l0 * + 26 + - co
66b0: 6c 32 20 2f 20 63 6f 6c 31 20 41 53 20 63 6f 6c  l2 / col1 AS col
66c0: 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
66d0: 2d 0d 0a 31 33 32 30 0d 0a 32 31 39 39 0d 0a 32  -..1320..2199..2
66e0: 33 36 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  365....query III
66f0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
6700: 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
6710: 52 45 20 63 6f 6c 30 20 3c 3d 20 28 20 2b 20 63  RE col0 <= ( + c
6720: 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76  ol0 )..----..9 v
6730: 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
6740: 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34   c6c0a4111b36d04
6750: 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61  dbc811a11e4d54ca
6760: 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  d....onlyif mysq
6770: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
6780: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
6790: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
67a0: 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
67b0: 43 54 20 2b 20 38 38 20 2b 20 2b 20 43 4f 55 4e  CT + 88 + + COUN
67c0: 54 28 20 2a 20 29 20 63 6f 6c 32 20 46 52 4f 4d  T( * ) col2 FROM
67d0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d   tab1..----..91.
67e0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
67f0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
6800: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
6810: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
6820: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
6830: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
6840: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
6850: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
6860: 2d 31 32 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  -128..SELECT DIS
6870: 54 49 4e 43 54 20 2b 20 38 38 20 2b 20 2b 20 43  TINCT + 88 + + C
6880: 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 32 20  OUNT ( * ) col2 
6890: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
68a0: 0a 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .91....query I r
68b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
68c0: 20 35 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48   52 FROM tab2 WH
68d0: 45 52 45 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c  ERE col0 IS NULL
68e0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
68f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
6900: 54 20 2d 20 39 20 41 53 20 63 6f 6c 32 20 46 52  T - 9 AS col2 FR
6910: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 28 20  OM tab0 WHERE ( 
6920: 63 6f 6c 30 20 29 20 49 53 20 4e 4f 54 20 4e 55  col0 ) IS NOT NU
6930: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 2d 39  LL..----..-9..-9
6940: 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ..-9....skipif p
6950: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
6960: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
6970: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
6980: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
6990: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
69a0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
69b0: 54 20 2b 20 2d 20 28 20 2b 20 37 37 20 29 20 2a  T + - ( + 77 ) *
69c0: 20 32 35 20 2b 20 2b 20 63 6f 6c 30 20 63 6f 6c   25 + + col0 col
69d0: 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  2 FROM tab2 cor0
69e0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 35 30 0d 0a 2d  ..----..-1850..-
69f0: 31 38 36 31 0d 0a 2d 31 38 37 39 0d 0a 0d 0a 71  1861..-1879....q
6a00: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
6a10: 53 45 4c 45 43 54 20 63 6f 6c 30 20 2b 20 34 39  SELECT col0 + 49
6a20: 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 33 32   + + col0 * + 32
6a30: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
6a40: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
6a50: 0d 0a 31 35 36 37 0d 0a 32 31 36 31 0d 0a 32 35  ..1567..2161..25
6a60: 32 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  24....skipif pos
6a70: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
6a80: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
6a90: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
6aa0: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
6ab0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
6ac0: 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2b 20  SELECT - col1 + 
6ad0: 2d 20 2d 20 37 37 20 63 6f 6c 31 20 46 52 4f 4d  - - 77 col1 FROM
6ae0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
6af0: 2d 2d 2d 0d 0a 33 30 0d 0a 36 33 0d 0a 37 32 0d  ---..30..63..72.
6b00: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
6b10: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
6b20: 20 63 6f 6c 32 20 2a 20 2d 20 28 20 2b 20 32 20   col2 * - ( + 2 
6b30: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
6b40: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 38 0d 0a  ab1..----..118..
6b50: 31 33 36 0d 0a 31 39 32 0d 0a 0d 0a 71 75 65 72  136..192....quer
6b60: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
6b70: 45 43 54 20 2b 20 2d 20 37 36 20 41 53 20 63 6f  ECT + - 76 AS co
6b80: 6c 32 20 46 52 4f 4d 20 28 20 74 61 62 31 20 41  l2 FROM ( tab1 A
6b90: 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
6ba0: 4e 20 74 61 62 32 20 41 53 20 63 6f 72 31 20 29  N tab2 AS cor1 )
6bb0: 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
6bc0: 20 68 61 73 68 69 6e 67 20 74 6f 20 66 38 62 36   hashing to f8b6
6bd0: 35 38 39 62 63 37 35 30 33 66 63 37 32 30 63 61  589bc7503fc720ca
6be0: 35 34 33 30 65 33 35 36 39 33 31 37 0d 0a 0d 0a  5430e3569317....
6bf0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
6c00: 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2a  .SELECT - col0 *
6c10: 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 2d 20   - + col2 * - - 
6c20: 37 37 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  77 AS col2 FROM 
6c30: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 39 37 31  tab2..----..1971
6c40: 32 30 0d 0a 33 33 34 39 35 30 0d 0a 38 31 34 36  20..334950..8146
6c50: 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  6....skipif post
6c60: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
6c70: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
6c80: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
6c90: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
6ca0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
6cb0: 45 4c 45 43 54 20 2b 20 28 20 2b 20 36 31 20 29  ELECT + ( + 61 )
6cc0: 20 2a 20 2b 20 63 6f 6c 32 20 63 6f 6c 31 20 46   * + col2 col1 F
6cd0: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 36  ROM tab1 WHERE 6
6ce0: 36 20 2b 20 28 20 2b 20 63 6f 6c 30 20 29 20 49  6 + ( + col0 ) I
6cf0: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
6d00: 0d 0a 33 35 39 39 0d 0a 34 31 34 38 0d 0a 35 38  ..3599..4148..58
6d10: 35 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  56....query I ro
6d20: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
6d30: 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
6d40: 74 61 62 30 20 57 48 45 52 45 20 28 20 63 6f 6c  tab0 WHERE ( col
6d50: 31 20 2a 20 2d 20 63 6f 6c 30 20 29 20 49 53 20  1 * - col0 ) IS 
6d60: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
6d70: 31 0d 0a 32 31 0d 0a 38 31 0d 0a 0d 0a 71 75 65  1..21..81....que
6d80: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
6d90: 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20  LECT ALL + col0 
6da0: 2b 20 2b 20 37 20 46 52 4f 4d 20 74 61 62 31 0d  + + 7 FROM tab1.
6db0: 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 39 32 0d 0a 39  .----..58..92..9
6dc0: 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  8....query III r
6dd0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
6de0: 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
6df0: 20 28 20 63 6f 6c 32 20 2a 20 2d 20 34 31 20 2b   ( col2 * - 41 +
6e00: 20 2d 20 34 20 2a 20 63 6f 6c 32 20 3d 20 2b 20   - 4 * col2 = + 
6e10: 39 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  92 )..----....qu
6e20: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
6e30: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
6e40: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
6e50: 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f   cor0 WHERE + co
6e60: 6c 31 20 49 53 20 4e 55 4c 4c 20 4f 52 20 2d 20  l1 IS NULL OR - 
6e70: 32 36 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  26 IS NOT NULL..
6e80: 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34 30 0d 0a 35 38  ----..23..40..58
6e90: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
6ea0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
6eb0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
6ec0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 32  owsort label-142
6ed0: 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
6ee0: 28 20 2a 20 29 20 2b 20 2b 20 41 56 47 20 28 20  ( * ) + + AVG ( 
6ef0: 36 36 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28 20  66 ) * + COUNT( 
6f00: 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  * ) FROM tab0 co
6f10: 72 30 20 57 48 45 52 45 20 34 31 20 49 53 20 4e  r0 WHERE 41 IS N
6f20: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ULL..----..NULL.
6f30: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
6f40: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
6f50: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6f60: 74 20 6c 61 62 65 6c 2d 31 34 32 0d 0a 53 45 4c  t label-142..SEL
6f70: 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ECT + COUNT ( * 
6f80: 29 20 2b 20 2b 20 41 56 47 20 28 20 36 36 20 29  ) + + AVG ( 66 )
6f90: 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   * + COUNT ( * )
6fa0: 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
6fb0: 57 48 45 52 45 20 34 31 20 49 53 20 4e 55 4c 4c  WHERE 41 IS NULL
6fc0: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
6fd0: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
6fe0: 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
6ff0: 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
7000: 20 33 35 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 49   35 + - - col1 I
7010: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
7020: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
7030: 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
7040: 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
7050: 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20  d54cad....query 
7060: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
7070: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
7080: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
7090: 20 57 48 45 52 45 20 4e 55 4c 4c 20 3d 20 28 20   WHERE NULL = ( 
70a0: 2d 20 63 6f 6c 30 20 2d 20 2d 20 34 20 29 0d 0a  - col0 - - 4 )..
70b0: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
70c0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
70d0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
70e0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
70f0: 2d 31 34 35 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  -145..SELECT - -
7100: 20 53 55 4d 28 20 2d 20 32 33 20 29 20 46 52 4f   SUM( - 23 ) FRO
7110: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
7120: 2d 2d 2d 2d 0d 0a 2d 36 39 0d 0a 0d 0a 73 6b 69  ----..-69....ski
7130: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
7140: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
7150: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
7160: 6c 2d 31 34 35 0d 0a 53 45 4c 45 43 54 20 2d 20  l-145..SELECT - 
7170: 2d 20 53 55 4d 20 28 20 2d 20 32 33 20 29 20 46  - SUM ( - 23 ) F
7180: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
7190: 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 39 0d 0a 0d 0a 6f  ..----..-69....o
71a0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
71b0: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
71c0: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
71d0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
71e0: 31 34 36 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32  146..SELECT col2
71f0: 20 2a 20 2d 20 63 6f 6c 30 20 44 49 56 20 2d 20   * - col0 DIV - 
7200: 63 6f 6c 30 20 2d 20 2d 20 35 39 20 2d 20 2d 20  col0 - - 59 - - 
7210: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
7220: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30  S cor0..----..20
7230: 33 0d 0a 32 30 36 0d 0a 32 31 38 0d 0a 0d 0a 73  3..206..218....s
7240: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
7250: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
7260: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
7270: 62 65 6c 2d 31 34 36 0d 0a 53 45 4c 45 43 54 20  bel-146..SELECT 
7280: 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 30 20 2f 20  col2 * - col0 / 
7290: 2d 20 63 6f 6c 30 20 2d 20 2d 20 35 39 20 2d 20  - col0 - - 59 - 
72a0: 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  - col0 FROM tab1
72b0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
72c0: 32 30 33 0d 0a 32 30 36 0d 0a 32 31 38 0d 0a 0d  203..206..218...
72d0: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
72e0: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
72f0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
7300: 48 45 52 45 20 63 6f 6c 30 20 2b 20 2d 20 63 6f  HERE col0 + - co
7310: 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l2 IS NULL..----
7320: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
7330: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
7340: 63 6f 6c 30 20 2d 20 2d 20 2b 20 28 20 63 6f 6c  col0 - - + ( col
7350: 31 20 29 20 2b 20 2d 20 37 20 46 52 4f 4d 20 74  1 ) + - 7 FROM t
7360: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
7370: 2d 0d 0a 31 30 31 0d 0a 38 39 0d 0a 39 31 0d 0a  -..101..89..91..
7380: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7390: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
73a0: 39 39 20 2b 20 2b 20 28 20 35 34 20 29 20 41 53  99 + + ( 54 ) AS
73b0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
73c0: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
73d0: 32 37 20 49 4e 20 28 20 2d 20 63 6f 6c 30 20 29  27 IN ( - col0 )
73e0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
73f0: 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
7400: 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
7410: 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
7420: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 30 0d 0a  sort label-150..
7430: 53 45 4c 45 43 54 20 28 20 2b 20 31 37 20 29 20  SELECT ( + 17 ) 
7440: 44 49 56 20 2b 20 2b 20 28 20 2b 20 2d 20 63 6f  DIV + + ( + - co
7450: 6c 31 20 29 20 2d 20 2d 20 63 6f 6c 30 20 41 53  l1 ) - - col0 AS
7460: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
7470: 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 36 34 0d 0a 37  .----..46..64..7
7480: 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
7490: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
74a0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
74b0: 6f 72 74 20 6c 61 62 65 6c 2d 31 35 30 0d 0a 53  ort label-150..S
74c0: 45 4c 45 43 54 20 28 20 2b 20 31 37 20 29 20 2f  ELECT ( + 17 ) /
74d0: 20 2b 20 2b 20 28 20 2b 20 2d 20 63 6f 6c 31 20   + + ( + - col1 
74e0: 29 20 2d 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f  ) - - col0 AS co
74f0: 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
7500: 2d 2d 0d 0a 34 36 0d 0a 36 34 0d 0a 37 35 0d 0a  --..46..64..75..
7510: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7520: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
7530: 32 30 20 2a 20 2b 20 36 30 20 46 52 4f 4d 20 74  20 * + 60 FROM t
7540: 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 30 30  ab0..----..-1200
7550: 0d 0a 2d 31 32 30 30 0d 0a 2d 31 32 30 30 0d 0a  ..-1200..-1200..
7560: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
7570: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
7580: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
7590: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 32 0d 0a  sort label-152..
75a0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
75b0: 39 30 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20  90 * COUNT( * ) 
75c0: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
75d0: 2d 20 28 20 2d 20 36 35 20 29 20 3e 3d 20 28 20  - ( - 65 ) >= ( 
75e0: 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  NULL )..----..0.
75f0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
7600: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
7610: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7620: 74 20 6c 61 62 65 6c 2d 31 35 32 0d 0a 53 45 4c  t label-152..SEL
7630: 45 43 54 20 44 49 53 54 49 4e 43 54 20 39 30 20  ECT DISTINCT 90 
7640: 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52  * COUNT ( * ) FR
7650: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2d 20  OM tab2 WHERE - 
7660: 28 20 2d 20 36 35 20 29 20 3e 3d 20 28 20 4e 55  ( - 65 ) >= ( NU
7670: 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  LL )..----..0...
7680: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
7690: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
76a0: 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
76b0: 20 37 33 20 2d 20 2b 20 63 6f 6c 30 20 3d 20 28   73 - + col0 = (
76c0: 20 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d   - col2 )..----.
76d0: 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
76e0: 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61  g to 75c998aa53a
76f0: 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32  c83218cbf2feb962
7700: 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49  d0a49....query I
7710: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
7720: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
7730: 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f  HERE NOT NULL NO
7740: 54 20 49 4e 20 28 20 2d 20 63 6f 6c 30 20 2b 20  T IN ( - col0 + 
7750: 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col1 )..----....
7760: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
7770: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
7780: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57  CT * FROM tab0 W
7790: 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45  HERE NOT NULL BE
77a0: 54 57 45 45 4e 20 63 6f 6c 31 20 2a 20 38 37 20  TWEEN col1 * 87 
77b0: 41 4e 44 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  AND - col1..----
77c0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
77d0: 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
77e0: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
77f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
7800: 61 62 65 6c 2d 31 35 36 0d 0a 53 45 4c 45 43 54  abel-156..SELECT
7810: 20 41 4c 4c 20 63 6f 6c 30 20 44 49 56 20 2d 20   ALL col0 DIV - 
7820: 31 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  18 AS col2 FROM 
7830: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a  tab0..----..-4..
7840: 2d 35 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  -5..0....skipif 
7850: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
7860: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
7870: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35  rowsort label-15
7880: 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  6..SELECT ALL co
7890: 6c 30 20 2f 20 2d 20 31 38 20 41 53 20 63 6f 6c  l0 / - 18 AS col
78a0: 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
78b0: 2d 0d 0a 2d 34 0d 0a 2d 35 0d 0a 30 0d 0a 0d 0a  -..-4..-5..0....
78c0: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
78d0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
78e0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
78f0: 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f  0 WHERE NOT - co
7900: 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 49 53  l1 * + - col0 IS
7910: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
7920: 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
7930: 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61   c4b42765dff94ea
7940: 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62  aa46040e537fb43b
7950: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
7960: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
7970: 54 49 4e 43 54 20 37 32 20 2b 20 28 20 2d 20 63  TINCT 72 + ( - c
7980: 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 31 20  ol0 ) FROM tab1 
7990: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
79a0: 54 20 2d 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54  T - col2 NOT BET
79b0: 57 45 45 4e 20 2b 20 63 6f 6c 32 20 41 4e 44 20  WEEN + col2 AND 
79c0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
79d0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
79e0: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 2d 20  ELECT ALL + ( - 
79f0: 2b 20 63 6f 6c 31 20 29 20 2a 20 2b 20 63 6f 6c  + col1 ) * + col
7a00: 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
7a10: 2d 0d 0a 2d 31 33 34 34 0d 0a 2d 32 39 35 0d 0a  -..-1344..-295..
7a20: 2d 33 31 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -3196....onlyif 
7a30: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
7a40: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
7a50: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
7a60: 6c 2d 31 36 30 0d 0a 53 45 4c 45 43 54 20 44 49  l-160..SELECT DI
7a70: 53 54 49 4e 43 54 20 4d 41 58 28 20 2b 20 39 30  STINCT MAX( + 90
7a80: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
7a90: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 30 0d 0a  tab2..----..90..
7aa0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
7ab0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
7ac0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
7ad0: 20 6c 61 62 65 6c 2d 31 36 30 0d 0a 53 45 4c 45   label-160..SELE
7ae0: 43 54 20 44 49 53 54 49 4e 43 54 20 4d 41 58 20  CT DISTINCT MAX 
7af0: 28 20 2b 20 39 30 20 29 20 41 53 20 63 6f 6c 31  ( + 90 ) AS col1
7b00: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
7b10: 0d 0a 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..90....query I 
7b20: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
7b30: 2d 20 32 34 20 2f 20 2b 20 31 30 20 41 53 20 63  - 24 / + 10 AS c
7b40: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol0 FROM tab2 WH
7b50: 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 2a 20 2b  ERE NOT col2 * +
7b60: 20 2d 20 63 6f 6c 32 20 2a 20 32 39 20 2a 20 2b   - col2 * 29 * +
7b70: 20 35 39 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f   59 - col0 IS NO
7b80: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
7b90: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
7ba0: 0a 53 45 4c 45 43 54 20 35 35 20 46 52 4f 4d 20  .SELECT 55 FROM 
7bb0: 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
7bc0: 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e  RE NOT NULL IS N
7bd0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
7be0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
7bf0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
7c00: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
7c10: 53 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e  S cor0 WHERE ( N
7c20: 55 4c 4c 20 29 20 3d 20 2d 20 38 30 0d 0a 2d 2d  ULL ) = - 80..--
7c30: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
7c40: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
7c50: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
7c60: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
7c70: 36 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 53  64..SELECT + + S
7c80: 55 4d 28 20 41 4c 4c 20 33 33 20 29 20 41 53 20  UM( ALL 33 ) AS 
7c90: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
7ca0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39  S cor0..----..99
7cb0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
7cc0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
7cd0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
7ce0: 72 74 20 6c 61 62 65 6c 2d 31 36 34 0d 0a 53 45  rt label-164..SE
7cf0: 4c 45 43 54 20 2b 20 2b 20 53 55 4d 20 28 20 41  LECT + + SUM ( A
7d00: 4c 4c 20 33 33 20 29 20 41 53 20 63 6f 6c 30 20  LL 33 ) AS col0 
7d10: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
7d20: 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 0d 0a 6f  0..----..99....o
7d30: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
7d40: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
7d50: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7d60: 74 20 6c 61 62 65 6c 2d 31 36 35 0d 0a 53 45 4c  t label-165..SEL
7d70: 45 43 54 20 2b 20 53 55 4d 28 20 44 49 53 54 49  ECT + SUM( DISTI
7d80: 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20 29 20 2a  NCT + + col1 ) *
7d90: 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   + - COUNT( * ) 
7da0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
7db0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 30 39 0d 0a 0d  0..----..-309...
7dc0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
7dd0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
7de0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
7df0: 6c 61 62 65 6c 2d 31 36 35 0d 0a 53 45 4c 45 43  label-165..SELEC
7e00: 54 20 2b 20 53 55 4d 20 28 20 44 49 53 54 49 4e  T + SUM ( DISTIN
7e10: 43 54 20 2b 20 2b 20 63 6f 6c 31 20 29 20 2a 20  CT + + col1 ) * 
7e20: 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  + - COUNT ( * ) 
7e30: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
7e40: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 30 39 0d 0a 0d  0..----..-309...
7e50: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
7e60: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
7e70: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
7e80: 48 45 52 45 20 4e 4f 54 20 2d 20 31 31 20 49 53  HERE NOT - 11 IS
7e90: 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
7ea0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
7eb0: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
7ec0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
7ed0: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
7ee0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
7ef0: 6c 61 62 65 6c 2d 31 36 37 0d 0a 53 45 4c 45 43  label-167..SELEC
7f00: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55  T DISTINCT - COU
7f10: 4e 54 28 20 2a 20 29 20 2b 20 2d 20 28 20 43 41  NT( * ) + - ( CA
7f20: 53 54 28 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  ST( COUNT( * ) A
7f30: 53 20 53 49 47 4e 45 44 20 29 20 29 20 46 52 4f  S SIGNED ) ) FRO
7f40: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
7f50: 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 2d 20 63  HERE NOT ( - - c
7f60: 6f 6c 30 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c  ol0 ) IS NOT NUL
7f70: 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b  L..----..0....sk
7f80: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
7f90: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
7fa0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
7fb0: 65 6c 2d 31 36 37 0d 0a 53 45 4c 45 43 54 20 44  el-167..SELECT D
7fc0: 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 20  ISTINCT - COUNT 
7fd0: 28 20 2a 20 29 20 2b 20 2d 20 28 20 43 41 53 54  ( * ) + - ( CAST
7fe0: 20 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   ( COUNT ( * ) A
7ff0: 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 46 52  S INTEGER ) ) FR
8000: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
8010: 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 2d 20  WHERE NOT ( - - 
8020: 63 6f 6c 30 20 29 20 49 53 20 4e 4f 54 20 4e 55  col0 ) IS NOT NU
8030: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  LL..----..0....s
8040: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
8050: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
8060: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
8070: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
8080: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
8090: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
80a0: 20 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20 2b   - col0 * col1 +
80b0: 20 63 6f 6c 31 20 63 6f 6c 31 2c 20 63 6f 6c 31   col1 col1, col1
80c0: 20 2a 20 2d 20 37 38 20 41 53 20 63 6f 6c 30 20   * - 78 AS col0 
80d0: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
80e0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32 30 0d 0a 2d  0..----..-420..-
80f0: 33 39 30 0d 0a 2d 34 32 33 30 0d 0a 2d 33 36 36  390..-4230..-366
8100: 36 0d 0a 2d 37 30 30 0d 0a 2d 31 30 39 32 0d 0a  6..-700..-1092..
8110: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
8120: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
8130: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
8140: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
8150: 65 6c 2d 31 36 39 0d 0a 53 45 4c 45 43 54 20 2d  el-169..SELECT -
8160: 20 63 6f 6c 32 20 2a 20 2b 20 31 37 20 2b 20 2b   col2 * + 17 + +
8170: 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 2b 20 43 41   - col2 * + + CA
8180: 53 54 28 20 2d 20 2d 20 28 20 63 6f 6c 30 20 29  ST( - - ( col0 )
8190: 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
81a0: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63  col1 FROM tab0 c
81b0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34 30  or0..----..-1040
81c0: 0d 0a 2d 31 31 32 38 36 0d 0a 2d 31 35 30 34 0d  ..-11286..-1504.
81d0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
81e0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
81f0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8200: 74 20 6c 61 62 65 6c 2d 31 36 39 0d 0a 53 45 4c  t label-169..SEL
8210: 45 43 54 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 31  ECT - col2 * + 1
8220: 37 20 2b 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2b  7 + + - col2 * +
8230: 20 2b 20 43 41 53 54 20 28 20 2d 20 2d 20 28 20   + CAST ( - - ( 
8240: 63 6f 6c 30 20 29 20 41 53 20 49 4e 54 45 47 45  col0 ) AS INTEGE
8250: 52 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  R ) AS col1 FROM
8260: 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
8270: 0d 0a 2d 31 30 34 30 0d 0a 2d 31 31 32 38 36 0d  ..-1040..-11286.
8280: 0a 2d 31 35 30 34 0d 0a 0d 0a 6f 6e 6c 79 69 66  .-1504....onlyif
8290: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
82a0: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
82b0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
82c0: 65 6c 2d 31 37 30 0d 0a 53 45 4c 45 43 54 20 44  el-170..SELECT D
82d0: 49 53 54 49 4e 43 54 20 2d 20 2d 20 53 55 4d 28  ISTINCT - - SUM(
82e0: 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   - col1 ) AS col
82f0: 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
8300: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 33 0d  or0..----..-103.
8310: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
8320: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
8330: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8340: 74 20 6c 61 62 65 6c 2d 31 37 30 0d 0a 53 45 4c  t label-170..SEL
8350: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d  ECT DISTINCT - -
8360: 20 53 55 4d 20 28 20 2d 20 63 6f 6c 31 20 29 20   SUM ( - col1 ) 
8370: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
8380: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
8390: 0a 2d 31 30 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .-103....onlyif 
83a0: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
83b0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
83c0: 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
83d0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37 31 0d  wsort label-171.
83e0: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
83f0: 61 62 30 20 57 48 45 52 45 20 2d 20 43 41 53 54  ab0 WHERE - CAST
8400: 28 20 2d 20 63 6f 6c 30 20 41 53 20 53 49 47 4e  ( - col0 AS SIGN
8410: 45 44 20 29 20 3c 3e 20 28 20 2b 20 63 6f 6c 31  ED ) <> ( + col1
8420: 20 2b 20 2d 20 39 39 20 29 0d 0a 2d 2d 2d 2d 0d   + - 99 )..----.
8430: 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
8440: 67 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66  g to c4b42765dff
8450: 39 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66  94eaaa46040e537f
8460: 62 34 33 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  b43b7....skipif 
8470: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
8480: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
8490: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
84a0: 31 37 31 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  171..SELECT * FR
84b0: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 2d 20  OM tab0 WHERE - 
84c0: 43 41 53 54 20 28 20 2d 20 63 6f 6c 30 20 41 53  CAST ( - col0 AS
84d0: 20 49 4e 54 45 47 45 52 20 29 20 3c 3e 20 28 20   INTEGER ) <> ( 
84e0: 2b 20 63 6f 6c 31 20 2b 20 2d 20 39 39 20 29 0d  + col1 + - 99 ).
84f0: 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
8500: 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32  hashing to c4b42
8510: 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34  765dff94eaaa4604
8520: 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 6f  0e537fb43b7....o
8530: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
8540: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
8550: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
8560: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
8570: 31 37 32 0d 0a 53 45 4c 45 43 54 20 31 20 2b 20  172..SELECT 1 + 
8580: 28 20 2b 20 63 6f 6c 32 20 29 20 44 49 56 20 2b  ( + col2 ) DIV +
8590: 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 2b 20 28   col1 + col1 + (
85a0: 20 32 20 29 20 2a 20 63 6f 6c 31 20 46 52 4f 4d   2 ) * col1 FROM
85b0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 33   tab1..----..143
85c0: 0d 0a 32 37 0d 0a 34 39 0d 0a 0d 0a 73 6b 69 70  ..27..49....skip
85d0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
85e0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
85f0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
8600: 2d 31 37 32 0d 0a 53 45 4c 45 43 54 20 31 20 2b  -172..SELECT 1 +
8610: 20 28 20 2b 20 63 6f 6c 32 20 29 20 2f 20 2b 20   ( + col2 ) / + 
8620: 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 2b 20 28 20  col1 + col1 + ( 
8630: 32 20 29 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20  2 ) * col1 FROM 
8640: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 33 0d  tab1..----..143.
8650: 0a 32 37 0d 0a 34 39 0d 0a 0d 0a 71 75 65 72 79  .27..49....query
8660: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
8670: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  LECT * FROM tab2
8680: 20 57 48 45 52 45 20 2b 20 63 6f 6c 31 20 4e 4f   WHERE + col1 NO
8690: 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  T BETWEEN NULL A
86a0: 4e 44 20 2d 20 36 0d 0a 2d 2d 2d 2d 0d 0a 39 20  ND - 6..----..9 
86b0: 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
86c0: 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33  o 75c998aa53ac83
86d0: 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61  218cbf2feb962d0a
86e0: 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  49....query III 
86f0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8700: 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
8710: 57 48 45 52 45 20 28 20 2b 20 63 6f 6c 32 20 2a  WHERE ( + col2 *
8720: 20 2d 20 34 32 20 2b 20 2d 20 63 6f 6c 30 20 29   - 42 + - col0 )
8730: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
8740: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
8750: 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
8760: 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
8770: 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72  962d0a49....quer
8780: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
8790: 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c  ECT + col2 * col
87a0: 30 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 41 53 20  0 + - + col0 AS 
87b0: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
87c0: 2d 2d 2d 2d 0d 0a 34 38 34 35 0d 0a 34 39 33 30  ----..4845..4930
87d0: 0d 0a 36 30 39 37 0d 0a 0d 0a 71 75 65 72 79 20  ..6097....query 
87e0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
87f0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2d  T DISTINCT - ( -
8800: 20 2d 20 63 6f 6c 32 20 29 20 2b 20 2b 20 63 6f   - col2 ) + + co
8810: 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
8820: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  tab1..----..0...
8830: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
8840: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
8850: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
8860: 20 28 20 4e 55 4c 4c 20 29 20 3c 20 63 6f 6c 31   ( NULL ) < col1
8870: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
8880: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
8890: 54 20 41 4c 4c 20 31 32 20 2b 20 2d 20 2d 20 63  T ALL 12 + - - c
88a0: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
88b0: 2d 2d 2d 0d 0a 35 38 0d 0a 37 36 0d 0a 38 37 0d  ---..58..76..87.
88c0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
88d0: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
88e0: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  ax: ..query II r
88f0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37 39  owsort label-179
8900: 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20  ..SELECT COUNT( 
8910: 2a 20 29 20 41 53 20 63 6f 6c 30 2c 20 2d 20 31  * ) AS col0, - 1
8920: 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  8 AS col2 FROM t
8930: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
8940: 2d 0d 0a 33 0d 0a 2d 31 38 0d 0a 0d 0a 73 6b 69  -..3..-18....ski
8950: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
8960: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
8970: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
8980: 65 6c 2d 31 37 39 0d 0a 53 45 4c 45 43 54 20 43  el-179..SELECT C
8990: 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
89a0: 6c 30 2c 20 2d 20 31 38 20 41 53 20 63 6f 6c 32  l0, - 18 AS col2
89b0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
89c0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 31 38  r0..----..3..-18
89d0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
89e0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
89f0: 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2b 20 2d 20  INCT + col0 + - 
8a00: 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  + col1 FROM tab1
8a10: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
8a20: 33 37 0d 0a 34 34 0d 0a 38 30 0d 0a 0d 0a 6f 6e  37..44..80....on
8a30: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
8a40: 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
8a50: 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
8a60: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
8a70: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
8a80: 2d 31 38 31 0d 0a 53 45 4c 45 43 54 20 44 49 53  -181..SELECT DIS
8a90: 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2d 20 28  TINCT COUNT( - (
8aa0: 20 2b 20 63 6f 6c 31 20 29 20 29 20 2d 20 43 41   + col1 ) ) - CA
8ab0: 53 54 28 20 2d 20 37 35 20 41 53 20 53 49 47 4e  ST( - 75 AS SIGN
8ac0: 45 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  ED ) FROM tab1 A
8ad0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 38  S cor0..----..78
8ae0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
8af0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
8b00: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
8b10: 72 74 20 6c 61 62 65 6c 2d 31 38 31 0d 0a 53 45  rt label-181..SE
8b20: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f  LECT DISTINCT CO
8b30: 55 4e 54 20 28 20 2d 20 28 20 2b 20 63 6f 6c 31  UNT ( - ( + col1
8b40: 20 29 20 29 20 2d 20 43 41 53 54 20 28 20 2d 20   ) ) - CAST ( - 
8b50: 37 35 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  75 AS INTEGER ) 
8b60: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
8b70: 30 0d 0a 2d 2d 2d 2d 0d 0a 37 38 0d 0a 0d 0a 71  0..----..78....q
8b80: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
8b90: 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 41 53 20  .SELECT col2 AS 
8ba0: 63 6f 6c 32 2c 20 38 37 20 2a 20 63 6f 6c 32 20  col2, 87 * col2 
8bb0: 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57  FROM tab2 cor0 W
8bc0: 48 45 52 45 20 4e 55 4c 4c 20 3c 20 4e 55 4c 4c  HERE NULL < NULL
8bd0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
8be0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
8bf0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c  T DISTINCT - col
8c00: 31 20 2b 20 2b 20 28 20 2d 20 63 6f 6c 31 20 29  1 + + ( - col1 )
8c10: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
8c20: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
8c30: 0d 0a 2d 31 30 32 0d 0a 2d 31 33 34 0d 0a 2d 31  ..-102..-134..-1
8c40: 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  54....query I ro
8c50: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
8c60: 2b 20 63 6f 6c 32 20 2b 20 2b 20 2b 20 28 20 2d  + col2 + + + ( -
8c70: 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20   col2 ) AS col1 
8c80: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
8c90: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 36 0d 0a 2d  0..----..-116..-
8ca0: 34 36 0d 0a 2d 38 30 0d 0a 0d 0a 6f 6e 6c 79 69  46..-80....onlyi
8cb0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
8cc0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
8cd0: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
8ce0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38 35 0d  wsort label-185.
8cf0: 0a 53 45 4c 45 43 54 20 2d 20 43 41 53 54 28 20  .SELECT - CAST( 
8d00: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
8d10: 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2b 20 35 31   + col1 + + + 51
8d20: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
8d30: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
8d40: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
8d50: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
8d60: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
8d70: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
8d80: 65 6c 2d 31 38 35 0d 0a 53 45 4c 45 43 54 20 2d  el-185..SELECT -
8d90: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
8da0: 49 4e 54 45 47 45 52 20 29 20 2b 20 63 6f 6c 31  INTEGER ) + col1
8db0: 20 2b 20 2b 20 2b 20 35 31 20 46 52 4f 4d 20 74   + + + 51 FROM t
8dc0: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
8dd0: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
8de0: 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
8df0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
8e00: 20 2d 20 28 20 2d 20 2d 20 63 6f 6c 31 20 29 20   - ( - - col1 ) 
8e10: 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  + col2 FROM tab2
8e20: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
8e30: 2d 32 38 0d 0a 2d 33 37 0d 0a 2d 39 0d 0a 0d 0a  -28..-37..-9....
8e40: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
8e50: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
8e60: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
8e70: 72 74 20 6c 61 62 65 6c 2d 31 38 37 0d 0a 53 45  rt label-187..SE
8e80: 4c 45 43 54 20 2b 20 37 33 20 2b 20 43 4f 55 4e  LECT + 73 + COUN
8e90: 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31  T( * ) FROM tab1
8ea0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
8eb0: 37 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  76....skipif mys
8ec0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
8ed0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
8ee0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38 37 0d 0a  sort label-187..
8ef0: 53 45 4c 45 43 54 20 2b 20 37 33 20 2b 20 43 4f  SELECT + 73 + CO
8f00: 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
8f10: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
8f20: 2d 0d 0a 37 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..76....onlyif 
8f30: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
8f40: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
8f50: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
8f60: 65 6c 2d 31 38 38 0d 0a 53 45 4c 45 43 54 20 2b  el-188..SELECT +
8f70: 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20   + COUNT( * ) + 
8f80: 2b 20 2b 20 39 35 20 41 53 20 63 6f 6c 30 2c 20  + + 95 AS col0, 
8f90: 2b 20 31 36 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 16 AS col2 FRO
8fa0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
8fb0: 2d 2d 2d 2d 0d 0a 39 38 0d 0a 31 36 0d 0a 0d 0a  ----..98..16....
8fc0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
8fd0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
8fe0: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
8ff0: 6c 61 62 65 6c 2d 31 38 38 0d 0a 53 45 4c 45 43  label-188..SELEC
9000: 54 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  T + + COUNT ( * 
9010: 29 20 2b 20 2b 20 2b 20 39 35 20 41 53 20 63 6f  ) + + + 95 AS co
9020: 6c 30 2c 20 2b 20 31 36 20 41 53 20 63 6f 6c 32  l0, + 16 AS col2
9030: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
9040: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 38 0d 0a 31 36  r0..----..98..16
9050: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
9060: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2d  sort..SELECT ( -
9070: 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c   - col0 ) AS col
9080: 32 2c 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32  2, col0 + + col2
9090: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
90a0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 31 34  r0..----..51..14
90b0: 37 0d 0a 38 35 0d 0a 31 34 34 0d 0a 39 31 0d 0a  7..85..144..91..
90c0: 31 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  159....query I r
90d0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
90e0: 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 32  ISTINCT + + col2
90f0: 20 2a 20 32 30 20 2b 20 63 6f 6c 30 20 2b 20 2d   * 20 + col0 + -
9100: 20 35 32 20 2a 20 2b 20 2d 20 31 20 46 52 4f 4d   52 * + - 1 FROM
9110: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
9120: 2d 2d 2d 0d 0a 31 30 30 37 0d 0a 32 31 32 39 0d  ---..1007..2129.
9130: 0a 33 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .339....query II
9140: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
9150: 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
9160: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
9170: 48 45 52 45 20 2b 20 63 6f 6c 32 20 2b 20 2d 20  HERE + col2 + - 
9180: 37 33 20 42 45 54 57 45 45 4e 20 2d 20 34 39 20  73 BETWEEN - 49 
9190: 2b 20 2d 20 2b 20 35 34 20 41 4e 44 20 4e 55 4c  + - + 54 AND NUL
91a0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
91b0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
91c0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
91d0: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
91e0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 32 0d  wsort label-192.
91f0: 0a 53 45 4c 45 43 54 20 43 41 53 54 28 20 39 34  .SELECT CAST( 94
9200: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 63   AS SIGNED ) + c
9210: 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol0 AS col1 FROM
9220: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
9230: 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 20 2b  ERE NOT NULL > +
9240: 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 30 0d 0a   col2 + + col0..
9250: 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ----....skipif m
9260: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
9270: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
9280: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 32  owsort label-192
9290: 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 20 28 20  ..SELECT CAST ( 
92a0: 39 34 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  94 AS INTEGER ) 
92b0: 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46  + col0 AS col1 F
92c0: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
92d0: 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
92e0: 3e 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c  > + col2 + + col
92f0: 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  0..----....query
9300: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
9310: 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 32 31  CT ALL col2 * 21
9320: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
9330: 72 30 20 57 48 45 52 45 20 28 20 4e 4f 54 20 28  r0 WHERE ( NOT (
9340: 20 2d 20 63 6f 6c 30 20 2b 20 28 20 2d 20 63 6f   - col0 + ( - co
9350: 6c 31 20 29 20 29 20 3d 20 63 6f 6c 32 20 29 0d  l1 ) ) = col2 ).
9360: 0a 2d 2d 2d 2d 0d 0a 31 32 31 38 0d 0a 34 38 33  .----..1218..483
9370: 0d 0a 38 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..840....query I
9380: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
9390: 20 44 49 53 54 49 4e 43 54 20 2b 20 38 30 20 2b   DISTINCT + 80 +
93a0: 20 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   2 FROM tab1 AS 
93b0: 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 4f 54  cor0 WHERE ( NOT
93c0: 20 28 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57   ( NULL NOT BETW
93d0: 45 45 4e 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 2b  EEN + col2 * - +
93e0: 20 38 36 20 41 4e 44 20 63 6f 6c 31 20 2a 20 2b   86 AND col1 * +
93f0: 20 63 6f 6c 30 20 29 20 29 0d 0a 2d 2d 2d 2d 0d   col0 ) )..----.
9400: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
9410: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
9420: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
9430: 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
9440: 4e 4f 54 20 42 45 54 57 45 45 4e 20 28 20 4e 55  NOT BETWEEN ( NU
9450: 4c 4c 20 29 20 41 4e 44 20 2b 20 2b 20 36 31 0d  LL ) AND + + 61.
9460: 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
9470: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
9480: 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f  e syntax: DIV fo
9490: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
94a0: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
94b0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 36 0d  wsort label-196.
94c0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
94d0: 54 28 20 2a 20 29 20 44 49 56 20 2b 20 28 20 2d  T( * ) DIV + ( -
94e0: 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 46 52   COUNT( * ) ) FR
94f0: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
9500: 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69  .----..-1....ski
9510: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
9520: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
9530: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
9540: 6c 2d 31 39 36 0d 0a 53 45 4c 45 43 54 20 41 4c  l-196..SELECT AL
9550: 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20  L COUNT ( * ) / 
9560: 2b 20 28 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  + ( - COUNT ( * 
9570: 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ) ) FROM tab1 AS
9580: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   cor0..----..-1.
9590: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
95a0: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
95b0: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
95c0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
95d0: 6c 61 62 65 6c 2d 31 39 37 0d 0a 53 45 4c 45 43  label-197..SELEC
95e0: 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
95f0: 45 52 45 20 4e 4f 54 20 28 20 2b 20 63 6f 6c 30  ERE NOT ( + col0
9600: 20 2a 20 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20   * ( + - col1 ) 
9610: 2a 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 63  * + - col1 + + c
9620: 6f 6c 30 20 2b 20 63 6f 6c 30 20 2b 20 32 33 20  ol0 + col0 + 23 
9630: 2a 20 2b 20 63 6f 6c 32 20 29 20 49 4e 20 28 20  * + col2 ) IN ( 
9640: 2d 20 43 41 53 54 28 20 31 35 20 41 53 20 53 49  - CAST( 15 AS SI
9650: 47 4e 45 44 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a  GNED ) )..----..
9660: 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
9670: 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
9680: 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
9690: 34 33 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  43b7....skipif m
96a0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
96b0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49  tible..query III
96c0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
96d0: 39 37 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  97..SELECT * FRO
96e0: 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
96f0: 20 28 20 2b 20 63 6f 6c 30 20 2a 20 28 20 2b 20   ( + col0 * ( + 
9700: 2d 20 63 6f 6c 31 20 29 20 2a 20 2b 20 2d 20 63  - col1 ) * + - c
9710: 6f 6c 31 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 63  ol1 + + col0 + c
9720: 6f 6c 30 20 2b 20 32 33 20 2a 20 2b 20 63 6f 6c  ol0 + 23 * + col
9730: 32 20 29 20 49 4e 20 28 20 2d 20 43 41 53 54 20  2 ) IN ( - CAST 
9740: 28 20 31 35 20 41 53 20 49 4e 54 45 47 45 52 20  ( 15 AS INTEGER 
9750: 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ) )..----..9 val
9760: 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
9770: 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61  4b42765dff94eaaa
9780: 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d  46040e537fb43b7.
9790: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
97a0: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
97b0: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
97c0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 38 0d  wsort label-198.
97d0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
97e0: 20 2d 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2b 20   - COUNT( ALL + 
97f0: 63 6f 6c 31 20 29 20 2a 20 43 4f 55 4e 54 28 20  col1 ) * COUNT( 
9800: 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  * ) AS col0 FROM
9810: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d   tab1..----..-9.
9820: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
9830: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
9840: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9850: 74 20 6c 61 62 65 6c 2d 31 39 38 0d 0a 53 45 4c  t label-198..SEL
9860: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
9870: 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20 63 6f 6c  OUNT ( ALL + col
9880: 31 20 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20  1 ) * COUNT ( * 
9890: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
98a0: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d  ab1..----..-9...
98b0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
98c0: 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
98d0: 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
98e0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
98f0: 6c 2d 31 39 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-199..SELECT AL
9900: 4c 20 2d 20 32 31 20 44 49 56 20 2b 20 63 6f 6c  L - 21 DIV + col
9910: 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
9920: 2d 0d 0a 2d 31 0d 0a 2d 34 0d 0a 30 0d 0a 0d 0a  -..-1..-4..0....
9930: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
9940: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
9950: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
9960: 61 62 65 6c 2d 31 39 39 0d 0a 53 45 4c 45 43 54  abel-199..SELECT
9970: 20 41 4c 4c 20 2d 20 32 31 20 2f 20 2b 20 63 6f   ALL - 21 / + co
9980: 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
9990: 2d 2d 0d 0a 2d 31 0d 0a 2d 34 0d 0a 30 0d 0a 0d  --..-1..-4..0...
99a0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
99b0: 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
99c0: 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
99d0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
99e0: 6c 2d 32 30 30 0d 0a 53 45 4c 45 43 54 20 44 49  l-200..SELECT DI
99f0: 53 54 49 4e 43 54 20 28 20 2b 20 33 31 20 29 20  STINCT ( + 31 ) 
9a00: 44 49 56 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f  DIV + - col1 FRO
9a10: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
9a20: 0d 0a 2d 33 31 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  ..-31..0....skip
9a30: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
9a40: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
9a50: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
9a60: 2d 32 30 30 0d 0a 53 45 4c 45 43 54 20 44 49 53  -200..SELECT DIS
9a70: 54 49 4e 43 54 20 28 20 2b 20 33 31 20 29 20 2f  TINCT ( + 31 ) /
9a80: 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   + - col1 FROM t
9a90: 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  ab0..----..-1..-
9aa0: 33 31 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  31..0....query I
9ab0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
9ac0: 54 20 35 32 2c 20 2b 20 63 6f 6c 30 20 46 52 4f  T 52, + col0 FRO
9ad0: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 32  M tab1..----..52
9ae0: 0d 0a 35 31 0d 0a 35 32 0d 0a 38 35 0d 0a 35 32  ..51..52..85..52
9af0: 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..91....onlyif m
9b00: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
9b10: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
9b20: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
9b30: 2d 32 30 32 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -202..SELECT COU
9b40: 4e 54 28 20 2b 20 63 6f 6c 30 20 29 20 41 53 20  NT( + col0 ) AS 
9b50: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
9b60: 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ----..3....skipi
9b70: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
9b80: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
9b90: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9ba0: 32 30 32 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  202..SELECT COUN
9bb0: 54 20 28 20 2b 20 63 6f 6c 30 20 29 20 41 53 20  T ( + col0 ) AS 
9bc0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
9bd0: 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79  ----..3....query
9be0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
9bf0: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20  CT DISTINCT - ( 
9c00: 2d 20 36 33 20 29 20 46 52 4f 4d 20 74 61 62 30  - 63 ) FROM tab0
9c10: 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a 73 6b  ..----..63....sk
9c20: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
9c30: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
9c40: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
9c50: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
9c60: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
9c70: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
9c80: 49 53 54 49 4e 43 54 20 32 20 63 6f 6c 31 20 46  ISTINCT 2 col1 F
9c90: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
9ca0: 4f 54 20 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c 32  OT - col1 + col2
9cb0: 20 4e 4f 54 20 49 4e 20 28 20 36 31 2c 20 63 6f   NOT IN ( 61, co
9cc0: 6c 31 20 2a 20 2d 20 35 39 20 2a 20 2d 20 63 6f  l1 * - 59 * - co
9cd0: 6c 32 20 2b 20 2b 20 32 30 20 2a 20 2b 20 63 6f  l2 + + 20 * + co
9ce0: 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  l0 )..----....qu
9cf0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
9d00: 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20 2b  ELECT + col2 * +
9d10: 20 2b 20 37 32 20 46 52 4f 4d 20 74 61 62 31 0d   + 72 FROM tab1.
9d20: 0a 2d 2d 2d 2d 0d 0a 34 32 34 38 0d 0a 34 38 39  .----..4248..489
9d30: 36 0d 0a 36 39 31 32 0d 0a 0d 0a 6f 6e 6c 79 69  6..6912....onlyi
9d40: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
9d50: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
9d60: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
9d70: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30 36 0d  wsort label-206.
9d80: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 35 39  .SELECT ALL - 59
9d90: 20 44 49 56 20 2b 20 63 6f 6c 30 20 46 52 4f 4d   DIV + col0 FROM
9da0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   tab1..----..-1.
9db0: 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .0..0....skipif 
9dc0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
9dd0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
9de0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30  rowsort label-20
9df0: 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  6..SELECT ALL - 
9e00: 35 39 20 2f 20 2b 20 63 6f 6c 30 20 46 52 4f 4d  59 / + col0 FROM
9e10: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   tab1..----..-1.
9e20: 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .0..0....query I
9e30: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
9e40: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
9e50: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
9e60: 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45   NULL NOT BETWEE
9e70: 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e 44 20 2d  N ( NULL ) AND -
9e80: 20 28 20 2d 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d   ( - + col1 )..-
9e90: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
9ea0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
9eb0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
9ec0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9ed0: 32 30 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  208..SELECT ALL 
9ee0: 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  + - COUNT( * ) A
9ef0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
9f00: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
9f10: 4f 54 20 2b 20 63 6f 6c 30 20 2b 20 34 20 49 53  OT + col0 + 4 IS
9f20: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   NULL..----..-3.
9f30: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
9f40: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
9f50: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9f60: 74 20 6c 61 62 65 6c 2d 32 30 38 0d 0a 53 45 4c  t label-208..SEL
9f70: 45 43 54 20 41 4c 4c 20 2b 20 2d 20 43 4f 55 4e  ECT ALL + - COUN
9f80: 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
9f90: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
9fa0: 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f  0 WHERE NOT + co
9fb0: 6c 30 20 2b 20 34 20 49 53 20 4e 55 4c 4c 0d 0a  l0 + 4 IS NULL..
9fc0: 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79  ----..-3....only
9fd0: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
9fe0: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
9ff0: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
a000: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
a010: 30 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  09..SELECT ALL *
a020: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
a030: 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 30 20  r0 WHERE + col0 
a040: 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 2b 20  NOT BETWEEN - + 
a050: 32 35 20 2a 20 2b 20 2b 20 43 41 53 54 28 20 4e  25 * + + CAST( N
a060: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
a070: 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  AND NULL..----..
a080: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
a090: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
a0a0: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
a0b0: 72 74 20 6c 61 62 65 6c 2d 32 30 39 0d 0a 53 45  rt label-209..SE
a0c0: 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
a0d0: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
a0e0: 52 45 20 2b 20 63 6f 6c 30 20 4e 4f 54 20 42 45  RE + col0 NOT BE
a0f0: 54 57 45 45 4e 20 2d 20 2b 20 32 35 20 2a 20 2b  TWEEN - + 25 * +
a100: 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   + CAST ( NULL A
a110: 53 20 49 4e 54 45 47 45 52 20 29 20 41 4e 44 20  S INTEGER ) AND 
a120: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
a130: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
a140: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
a150: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
a160: 20 6c 61 62 65 6c 2d 32 31 30 0d 0a 53 45 4c 45   label-210..SELE
a170: 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT + COUNT( * ) 
a180: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
a190: 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
a1a0: 4e 4f 54 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54  NOT col2 NOT BET
a1b0: 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2d 20  WEEN NULL AND - 
a1c0: 63 6f 6c 32 20 2f 20 31 36 20 2a 20 2d 20 2b 20  col2 / 16 * - + 
a1d0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  col2..----..0...
a1e0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
a1f0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
a200: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
a210: 6c 61 62 65 6c 2d 32 31 30 0d 0a 53 45 4c 45 43  label-210..SELEC
a220: 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T + COUNT ( * ) 
a230: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
a240: 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
a250: 4e 4f 54 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54  NOT col2 NOT BET
a260: 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2d 20  WEEN NULL AND - 
a270: 63 6f 6c 32 20 2f 20 31 36 20 2a 20 2d 20 2b 20  col2 / 16 * - + 
a280: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  col2..----..0...
a290: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
a2a0: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
a2b0: 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52  M tab2 cor0 WHER
a2c0: 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3e  E NOT ( NULL ) >
a2d0: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   col1..----....o
a2e0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
a2f0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
a300: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
a310: 74 20 6c 61 62 65 6c 2d 32 31 32 0d 0a 53 45 4c  t label-212..SEL
a320: 45 43 54 20 41 4c 4c 20 32 31 20 2a 20 2b 20 53  ECT ALL 21 * + S
a330: 55 4d 28 20 44 49 53 54 49 4e 43 54 20 2d 20 28  UM( DISTINCT - (
a340: 20 2b 20 34 37 20 29 20 29 20 41 53 20 63 6f 6c   + 47 ) ) AS col
a350: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
a360: 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
a370: 61 62 31 20 41 53 20 63 6f 72 31 20 57 48 45 52  ab1 AS cor1 WHER
a380: 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3e  E NOT ( NULL ) >
a390: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   NULL..----..NUL
a3a0: 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
a3b0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
a3c0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
a3d0: 6f 72 74 20 6c 61 62 65 6c 2d 32 31 32 0d 0a 53  ort label-212..S
a3e0: 45 4c 45 43 54 20 41 4c 4c 20 32 31 20 2a 20 2b  ELECT ALL 21 * +
a3f0: 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20   SUM ( DISTINCT 
a400: 2d 20 28 20 2b 20 34 37 20 29 20 29 20 41 53 20  - ( + 47 ) ) AS 
a410: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
a420: 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
a430: 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 20 57  N tab1 AS cor1 W
a440: 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20  HERE NOT ( NULL 
a450: 29 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  ) > NULL..----..
a460: 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
a470: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
a480: 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 33 36 20  DISTINCT + + 36 
a490: 2f 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  / col2 FROM tab1
a4a0: 20 57 48 45 52 45 20 2b 20 34 33 20 2a 20 2b 20   WHERE + 43 * + 
a4b0: 33 36 20 3e 20 2b 20 2b 20 63 6f 6c 32 20 2a 20  36 > + + col2 * 
a4c0: 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 2b 20 2d 20  col2 * col2 + - 
a4d0: 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col1..----....qu
a4e0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
a4f0: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
a500: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
a510: 45 20 39 38 20 2a 20 63 6f 6c 30 20 3c 20 4e 55  E 98 * col0 < NU
a520: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
a530: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
a540: 45 43 54 20 63 6f 6c 30 20 2a 20 2b 20 2b 20 35  ECT col0 * + + 5
a550: 33 20 2d 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  3 - + col2 AS co
a560: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
a570: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 30 37  cor0..----..2607
a580: 0d 0a 34 34 34 36 0d 0a 34 37 35 35 0d 0a 0d 0a  ..4446..4755....
a590: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
a5a0: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
a5b0: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
a5c0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
a5d0: 2d 32 31 36 0d 0a 53 45 4c 45 43 54 20 2d 20 31  -216..SELECT - 1
a5e0: 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  2 col1 FROM tab2
a5f0: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
a600: 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63 6f 6c 31   NOT IN ( - col1
a610: 20 2a 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   * - CAST( NULL 
a620: 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 63 6f  AS SIGNED ) + co
a630: 6c 32 2c 20 2d 20 63 6f 6c 32 2c 20 2d 20 2b 20  l2, - col2, - + 
a640: 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col2 )..----....
a650: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
a660: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
a670: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
a680: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
a690: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
a6a0: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
a6b0: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
a6c0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31  rowsort label-21
a6d0: 36 0d 0a 53 45 4c 45 43 54 20 2d 20 31 32 20 63  6..SELECT - 12 c
a6e0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol1 FROM tab2 co
a6f0: 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  r0 WHERE NULL NO
a700: 54 20 49 4e 20 28 20 2d 20 63 6f 6c 31 20 2a 20  T IN ( - col1 * 
a710: 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
a720: 20 49 4e 54 45 47 45 52 20 29 20 2b 20 63 6f 6c   INTEGER ) + col
a730: 32 2c 20 2d 20 63 6f 6c 32 2c 20 2d 20 2b 20 63  2, - col2, - + c
a740: 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ol2 )..----....q
a750: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
a760: 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20  SELECT col1 * + 
a770: 63 6f 6c 30 20 2b 20 2b 20 2d 20 39 20 46 52 4f  col0 + + - 9 FRO
a780: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
a790: 2d 2d 2d 2d 0d 0a 31 32 30 36 0d 0a 31 38 31 38  ----..1206..1818
a7a0: 0d 0a 38 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..88....onlyif m
a7b0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
a7c0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
a7d0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
a7e0: 2d 32 31 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -218..SELECT ALL
a7f0: 20 2d 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e   - COUNT( DISTIN
a800: 43 54 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63  CT - col0 ) AS c
a810: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
a820: 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69  ---..-3....skipi
a830: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
a840: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
a850: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
a860: 32 31 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  218..SELECT ALL 
a870: 2d 20 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e  - COUNT ( DISTIN
a880: 43 54 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63  CT - col0 ) AS c
a890: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
a8a0: 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79 69  ---..-3....onlyi
a8b0: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
a8c0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
a8d0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
a8e0: 62 65 6c 2d 32 31 39 0d 0a 53 45 4c 45 43 54 20  bel-219..SELECT 
a8f0: 44 49 53 54 49 4e 43 54 20 2b 20 53 55 4d 28 20  DISTINCT + SUM( 
a900: 41 4c 4c 20 28 20 2b 20 2b 20 63 6f 6c 31 20 29  ALL ( + + col1 )
a910: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
a920: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d  tab0..----..103.
a930: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
a940: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
a950: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
a960: 74 20 6c 61 62 65 6c 2d 32 31 39 0d 0a 53 45 4c  t label-219..SEL
a970: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 53  ECT DISTINCT + S
a980: 55 4d 20 28 20 41 4c 4c 20 28 20 2b 20 2b 20 63  UM ( ALL ( + + c
a990: 6f 6c 31 20 29 20 29 20 41 53 20 63 6f 6c 30 20  ol1 ) ) AS col0 
a9a0: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
a9b0: 0a 31 30 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .103....query I 
a9c0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
a9d0: 41 4c 4c 20 2d 20 33 38 20 2b 20 2d 20 2d 20 63  ALL - 38 + - - c
a9e0: 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
a9f0: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d   tab2..----..26.
aa00: 0a 33 37 0d 0a 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  .37..8....onlyif
aa10: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
aa20: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
aa30: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
aa40: 65 6c 2d 32 32 31 0d 0a 53 45 4c 45 43 54 20 2b  el-221..SELECT +
aa50: 20 53 55 4d 28 20 2d 20 2b 20 33 20 29 20 2d 20   SUM( - + 3 ) - 
aa60: 2d 20 34 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 42 AS col1 FRO
aa70: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 33  M tab1..----..33
aa80: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
aa90: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
aaa0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
aab0: 72 74 20 6c 61 62 65 6c 2d 32 32 31 0d 0a 53 45  rt label-221..SE
aac0: 4c 45 43 54 20 2b 20 53 55 4d 20 28 20 2d 20 2b  LECT + SUM ( - +
aad0: 20 33 20 29 20 2d 20 2d 20 34 32 20 41 53 20 63   3 ) - - 42 AS c
aae0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
aaf0: 2d 2d 2d 0d 0a 33 33 0d 0a 0d 0a 71 75 65 72 79  ---..33....query
ab00: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
ab10: 43 54 20 63 6f 6c 30 20 2a 20 2b 20 2b 20 34 31  CT col0 * + + 41
ab20: 20 2b 20 32 36 20 46 52 4f 4d 20 74 61 62 30 0d   + 26 FROM tab0.
ab30: 0a 2d 2d 2d 2d 0d 0a 33 35 39 33 0d 0a 34 30 30  .----..3593..400
ab40: 33 0d 0a 36 34 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  3..641....onlyif
ab50: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
ab60: 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
ab70: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
ab80: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
ab90: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 32 33  owsort label-223
aba0: 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49 4e 28 20  ..SELECT + MIN( 
abb0: 43 41 53 54 28 20 28 20 2b 20 28 20 2b 20 2d 20  CAST( ( + ( + - 
abc0: 63 6f 6c 31 20 29 20 29 20 41 53 20 53 49 47 4e  col1 ) ) AS SIGN
abd0: 45 44 20 29 20 29 20 2b 20 2d 20 33 36 20 46 52  ED ) ) + - 36 FR
abe0: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
abf0: 31 31 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  113....skipif my
ac00: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
ac10: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
ac20: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 32 33 0d  wsort label-223.
ac30: 0a 53 45 4c 45 43 54 20 2b 20 4d 49 4e 20 28 20  .SELECT + MIN ( 
ac40: 43 41 53 54 20 28 20 28 20 2b 20 28 20 2b 20 2d  CAST ( ( + ( + -
ac50: 20 63 6f 6c 31 20 29 20 29 20 41 53 20 49 4e 54   col1 ) ) AS INT
ac60: 45 47 45 52 20 29 20 29 20 2b 20 2d 20 33 36 20  EGER ) ) + - 36 
ac70: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
ac80: 0a 2d 31 31 33 0d 0a 0d 0a 71 75 65 72 79 20 49  .-113....query I
ac90: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
aca0: 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c 31 20 2a 20   ALL - + col1 * 
acb0: 63 6f 6c 31 20 2b 20 33 34 20 2b 20 2b 20 63 6f  col1 + 34 + + co
acc0: 6c 32 20 2b 20 2b 20 34 39 20 41 53 20 63 6f 6c  l2 + + 49 AS col
acd0: 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
ace0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 39 35  or0..----..-2495
acf0: 0d 0a 2d 34 33 34 38 0d 0a 2d 35 38 30 36 0d 0a  ..-4348..-5806..
ad00: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
ad10: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
ad20: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
ad30: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 32 35 0d 0a  sort label-225..
ad40: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 36 38 20  SELECT ALL - 68 
ad50: 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  * COUNT( * ) AS 
ad60: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63  col1 FROM tab0 c
ad70: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 34 0d  or0..----..-204.
ad80: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
ad90: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
ada0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
adb0: 74 20 6c 61 62 65 6c 2d 32 32 35 0d 0a 53 45 4c  t label-225..SEL
adc0: 45 43 54 20 41 4c 4c 20 2d 20 36 38 20 2a 20 43  ECT ALL - 68 * C
add0: 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
ade0: 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l1 FROM tab0 cor
adf0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 34 0d 0a 0d  0..----..-204...
ae00: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
ae10: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
ae20: 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  NCT * FROM tab1 
ae30: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
ae40: 35 33 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  53 IS NULL..----
ae50: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
ae60: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
ae70: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
ae80: 30 20 57 48 45 52 45 20 39 39 20 4e 4f 54 20 42  0 WHERE 99 NOT B
ae90: 45 54 57 45 45 4e 20 2b 20 2b 20 38 39 20 41 4e  ETWEEN + + 89 AN
aea0: 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D NULL..----....
aeb0: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
aec0: 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
aed0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
aee0: 45 52 45 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c  ERE col2 * + col
aef0: 30 20 3c 3d 20 2b 20 2d 20 63 6f 6c 32 0d 0a 2d  0 <= + - col2..-
af00: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
af10: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
af20: 4c 4c 20 2b 20 63 6f 6c 31 20 2d 20 38 35 20 46  LL + col1 - 85 F
af30: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
af40: 2d 31 38 0d 0a 2d 33 34 0d 0a 2d 38 0d 0a 0d 0a  -18..-34..-8....
af50: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
af60: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
af70: 20 2b 20 37 33 20 2a 20 2d 20 2d 20 63 6f 6c 30   + 73 * - - col0
af80: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
af90: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 33 35 38 0d 0a  r0..----..3358..
afa0: 34 36 37 32 0d 0a 35 34 37 35 0d 0a 0d 0a 6f 6e  4672..5475....on
afb0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
afc0: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
afd0: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
afe0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
aff0: 33 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43  31..SELECT ALL C
b000: 41 53 54 28 20 2d 20 63 6f 6c 30 20 41 53 20 53  AST( - col0 AS S
b010: 49 47 4e 45 44 20 29 20 2a 20 2b 20 32 34 20 41  IGNED ) * + 24 A
b020: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
b030: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
b040: 2d 31 32 32 34 0d 0a 2d 32 30 34 30 0d 0a 2d 32  -1224..-2040..-2
b050: 31 38 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  184....skipif my
b060: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
b070: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
b080: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 31 0d  wsort label-231.
b090: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54  .SELECT ALL CAST
b0a0: 20 28 20 2d 20 63 6f 6c 30 20 41 53 20 49 4e 54   ( - col0 AS INT
b0b0: 45 47 45 52 20 29 20 2a 20 2b 20 32 34 20 41 53  EGER ) * + 24 AS
b0c0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
b0d0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
b0e0: 31 32 32 34 0d 0a 2d 32 30 34 30 0d 0a 2d 32 31  1224..-2040..-21
b0f0: 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  84....onlyif mys
b100: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
b110: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
b120: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b130: 20 6c 61 62 65 6c 2d 32 33 32 0d 0a 53 45 4c 45   label-232..SELE
b140: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 36 35  CT DISTINCT - 65
b150: 20 2a 20 32 30 20 44 49 56 20 2b 20 63 6f 6c 32   * 20 DIV + col2
b160: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
b170: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
b180: 0d 0a 2d 31 33 0d 0a 2d 31 33 30 0d 0a 2d 32 37  ..-13..-130..-27
b190: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
b1a0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
b1b0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
b1c0: 72 74 20 6c 61 62 65 6c 2d 32 33 32 0d 0a 53 45  rt label-232..SE
b1d0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
b1e0: 36 35 20 2a 20 32 30 20 2f 20 2b 20 63 6f 6c 32  65 * 20 / + col2
b1f0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
b200: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
b210: 0d 0a 2d 31 33 0d 0a 2d 31 33 30 0d 0a 2d 32 37  ..-13..-130..-27
b220: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
b230: 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
b240: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
b250: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
b260: 61 62 65 6c 2d 32 33 33 0d 0a 53 45 4c 45 43 54  abel-233..SELECT
b270: 20 44 49 53 54 49 4e 43 54 20 28 20 63 6f 6c 31   DISTINCT ( col1
b280: 20 29 20 44 49 56 20 2b 20 63 6f 6c 30 20 2b 20   ) DIV + col0 + 
b290: 2d 20 37 32 20 2a 20 2b 20 28 20 2b 20 2b 20 63  - 72 * + ( + + c
b2a0: 6f 6c 32 20 29 20 2b 20 2b 20 2d 20 63 6f 6c 31  ol2 ) + + - col1
b2b0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
b2c0: 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0 cor0..----..-
b2d0: 33 34 36 30 0d 0a 2d 37 31 32 39 0d 0a 2d 37 34  3460..-7129..-74
b2e0: 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
b2f0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
b300: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
b310: 6f 72 74 20 6c 61 62 65 6c 2d 32 33 33 0d 0a 53  ort label-233..S
b320: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28  ELECT DISTINCT (
b330: 20 63 6f 6c 31 20 29 20 2f 20 2b 20 63 6f 6c 30   col1 ) / + col0
b340: 20 2b 20 2d 20 37 32 20 2a 20 2b 20 28 20 2b 20   + - 72 * + ( + 
b350: 2b 20 63 6f 6c 32 20 29 20 2b 20 2b 20 2d 20 63  + col2 ) + + - c
b360: 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
b370: 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
b380: 0d 0a 2d 33 34 36 30 0d 0a 2d 37 31 32 39 0d 0a  ..-3460..-7129..
b390: 2d 37 34 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49  -741....query II
b3a0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
b3b0: 20 44 49 53 54 49 4e 43 54 20 2d 20 39 35 20 2a   DISTINCT - 95 *
b3c0: 20 2d 20 63 6f 6c 30 2c 20 39 35 20 2a 20 63 6f   - col0, 95 * co
b3d0: 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
b3e0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
b3f0: 2d 2d 0d 0a 31 34 32 35 0d 0a 34 34 36 35 0d 0a  --..1425..4465..
b400: 38 32 36 35 0d 0a 39 35 30 0d 0a 39 32 31 35 0d  8265..950..9215.
b410: 0a 39 34 30 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .9405....onlyif 
b420: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
b430: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
b440: 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
b450: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 35 0d  wsort label-235.
b460: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
b470: 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
b480: 31 33 20 2d 20 63 6f 6c 30 20 49 4e 20 28 20 2b  13 - col0 IN ( +
b490: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
b4a0: 49 47 4e 45 44 20 29 20 29 0d 0a 2d 2d 2d 2d 0d  IGNED ) )..----.
b4b0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
b4c0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
b4d0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
b4e0: 6f 72 74 20 6c 61 62 65 6c 2d 32 33 35 0d 0a 53  ort label-235..S
b4f0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
b500: 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 31 33  2 WHERE NOT - 13
b510: 20 2d 20 63 6f 6c 30 20 49 4e 20 28 20 2b 20 43   - col0 IN ( + C
b520: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
b530: 54 45 47 45 52 20 29 20 29 0d 0a 2d 2d 2d 2d 0d  TEGER ) )..----.
b540: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
b550: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
b560: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
b570: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 36 0d  wsort label-236.
b580: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
b590: 20 2d 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e   - COUNT( DISTIN
b5a0: 43 54 20 2b 20 2d 20 35 35 20 29 20 46 52 4f 4d  CT + - 55 ) FROM
b5b0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   tab1..----..-1.
b5c0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
b5d0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
b5e0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
b5f0: 74 20 6c 61 62 65 6c 2d 32 33 36 0d 0a 53 45 4c  t label-236..SEL
b600: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
b610: 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20  OUNT ( DISTINCT 
b620: 2b 20 2d 20 35 35 20 29 20 46 52 4f 4d 20 74 61  + - 55 ) FROM ta
b630: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a  b1..----..-1....
b640: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
b650: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30  .SELECT ALL col0
b660: 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 2a 20 63 6f   * - - col2 * co
b670: 6c 31 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 41 53  l1 * - + col2 AS
b680: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
b690: 57 48 45 52 45 20 4e 55 4c 4c 20 3c 20 4e 55 4c  WHERE NULL < NUL
b6a0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
b6b0: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
b6c0: 45 43 54 20 2b 20 63 6f 6c 32 2c 20 63 6f 6c 31  ECT + col2, col1
b6d0: 20 2a 20 2b 20 28 20 2d 20 34 37 20 29 20 46 52   * + ( - 47 ) FR
b6e0: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab2..----..2
b6f0: 33 0d 0a 2d 32 33 39 37 0d 0a 34 30 0d 0a 2d 33  3..-2397..40..-3
b700: 36 31 39 0d 0a 35 38 0d 0a 2d 33 31 34 39 0d 0a  619..58..-3149..
b710: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
b720: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
b730: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
b740: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
b750: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
b760: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
b770: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 39 39  CT DISTINCT - 99
b780: 20 2b 20 2d 20 63 6f 6c 30 20 63 6f 6c 32 20 46   + - col0 col2 F
b790: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
b7a0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 35 0d 0a 2d 31  ..----..-145..-1
b7b0: 36 33 0d 0a 2d 31 37 34 0d 0a 0d 0a 73 6b 69 70  63..-174....skip
b7c0: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
b7d0: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
b7e0: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
b7f0: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
b800: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
b810: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
b820: 20 2b 20 2d 20 35 39 20 2b 20 2d 20 32 33 20 63   + - 59 + - 23 c
b830: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
b840: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 32   cor0..----..-82
b850: 0d 0a 2d 38 32 0d 0a 2d 38 32 0d 0a 0d 0a 6f 6e  ..-82..-82....on
b860: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
b870: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
b880: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b890: 20 6c 61 62 65 6c 2d 32 34 31 0d 0a 53 45 4c 45   label-241..SELE
b8a0: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 4d 41  CT DISTINCT + MA
b8b0: 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20  X( DISTINCT + - 
b8c0: 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46  col0 ) AS col0 F
b8d0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
b8e0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a 73  ..----..-51....s
b8f0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
b900: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
b910: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
b920: 62 65 6c 2d 32 34 31 0d 0a 53 45 4c 45 43 54 20  bel-241..SELECT 
b930: 44 49 53 54 49 4e 43 54 20 2b 20 4d 41 58 20 28  DISTINCT + MAX (
b940: 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 63 6f   DISTINCT + - co
b950: 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l0 ) AS col0 FRO
b960: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
b970: 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a 71 75 65  ----..-51....que
b980: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
b990: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
b9a0: 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
b9b0: 20 63 6f 6c 31 20 2f 20 2d 20 2b 20 32 39 20 2a   col1 / - + 29 *
b9c0: 20 2b 20 2b 20 28 20 2b 20 63 6f 6c 32 20 29 20   + + ( + col2 ) 
b9d0: 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
b9e0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b9f0: 0d 0a 53 45 4c 45 43 54 20 2d 20 32 37 20 2b 20  ..SELECT - 27 + 
ba00: 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46  - col1 AS col1 F
ba10: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
ba20: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34 0d 0a 2d 37  ..----..-104..-7
ba30: 38 0d 0a 2d 39 34 0d 0a 0d 0a 71 75 65 72 79 20  8..-94....query 
ba40: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
ba50: 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
ba60: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
ba70: 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32 20 4e 4f  col2 * + col2 NO
ba80: 54 20 49 4e 20 28 20 63 6f 6c 32 20 29 0d 0a 2d  T IN ( col2 )..-
ba90: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
baa0: 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61  shing to 75c998a
bab0: 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65  a53ac83218cbf2fe
bac0: 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c  b962d0a49....onl
bad0: 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
bae0: 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
baf0: 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
bb00: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34  rowsort label-24
bb10: 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  5..SELECT DISTIN
bb20: 43 54 20 2b 20 39 32 20 44 49 56 20 63 6f 6c 32  CT + 92 DIV col2
bb30: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
bb40: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 0d 0a  b2..----..1..2..
bb50: 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
bb60: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
bb70: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
bb80: 6f 72 74 20 6c 61 62 65 6c 2d 32 34 35 0d 0a 53  ort label-245..S
bb90: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
bba0: 20 39 32 20 2f 20 63 6f 6c 32 20 41 53 20 63 6f   92 / col2 AS co
bbb0: 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
bbc0: 2d 2d 0d 0a 31 0d 0a 32 0d 0a 34 0d 0a 0d 0a 6f  --..1..2..4....o
bbd0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
bbe0: 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
bbf0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
bc00: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
bc10: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
bc20: 6c 2d 32 34 36 0d 0a 53 45 4c 45 43 54 20 44 49  l-246..SELECT DI
bc30: 53 54 49 4e 43 54 20 28 20 2d 20 43 41 53 54 28  STINCT ( - CAST(
bc40: 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 53   COUNT( * ) AS S
bc50: 49 47 4e 45 44 20 29 20 29 20 41 53 20 63 6f 6c  IGNED ) ) AS col
bc60: 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
bc70: 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-3....skipif 
bc80: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
bc90: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
bca0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34  rowsort label-24
bcb0: 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  6..SELECT DISTIN
bcc0: 43 54 20 28 20 2d 20 43 41 53 54 20 28 20 43 4f  CT ( - CAST ( CO
bcd0: 55 4e 54 20 28 20 2a 20 29 20 41 53 20 49 4e 54  UNT ( * ) AS INT
bce0: 45 47 45 52 20 29 20 29 20 41 53 20 63 6f 6c 31  EGER ) ) AS col1
bcf0: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
bd00: 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-3....query I 
bd10: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
bd20: 63 6f 6c 30 20 2a 20 2b 20 39 34 20 2b 20 2b 20  col0 * + 94 + + 
bd30: 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 31 20 46 52  col0 + - col1 FR
bd40: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
bd50: 33 34 34 0d 0a 38 32 34 34 0d 0a 39 32 31 34 0d  344..8244..9214.
bd60: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
bd70: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
bd80: 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 63  ROM tab2 WHERE c
bd90: 6f 6c 30 20 3e 3d 20 2d 20 63 6f 6c 31 0d 0a 2d  ol0 >= - col1..-
bda0: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
bdb0: 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61  shing to 75c998a
bdc0: 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65  a53ac83218cbf2fe
bdd0: 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65  b962d0a49....que
bde0: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
bdf0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
be00: 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
be10: 45 20 2d 20 2b 20 33 37 20 3c 3e 20 4e 55 4c 4c  E - + 37 <> NULL
be20: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
be30: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
be40: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
be50: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
be60: 65 6c 2d 32 35 30 0d 0a 53 45 4c 45 43 54 20 41  el-250..SELECT A
be70: 4c 4c 20 2b 20 53 55 4d 28 20 44 49 53 54 49 4e  LL + SUM( DISTIN
be80: 43 54 20 2b 20 2b 20 63 6f 6c 31 20 29 20 2b 20  CT + + col1 ) + 
be90: 2b 20 36 36 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 66 AS col0 FRO
bea0: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36  M tab0..----..16
beb0: 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
bec0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
bed0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
bee0: 6f 72 74 20 6c 61 62 65 6c 2d 32 35 30 0d 0a 53  ort label-250..S
bef0: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 53 55 4d 20  ELECT ALL + SUM 
bf00: 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63  ( DISTINCT + + c
bf10: 6f 6c 31 20 29 20 2b 20 2b 20 36 36 20 41 53 20  ol1 ) + + 66 AS 
bf20: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
bf30: 2d 2d 2d 2d 0d 0a 31 36 39 0d 0a 0d 0a 71 75 65  ----..169....que
bf40: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
bf50: 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30 20  LECT ALL - col0 
bf60: 2d 20 2b 20 2d 20 28 20 2d 20 63 6f 6c 30 20 29  - + - ( - col0 )
bf70: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
bf80: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 32 0d 0a  r0..----..-102..
bf90: 2d 31 37 30 0d 0a 2d 31 38 32 0d 0a 0d 0a 71 75  -170..-182....qu
bfa0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
bfb0: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
bfc0: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
bfd0: 45 20 4e 4f 54 20 4e 55 4c 4c 20 3d 20 2b 20 34  E NOT NULL = + 4
bfe0: 30 20 41 4e 44 20 4e 55 4c 4c 20 4e 4f 54 20 42  0 AND NULL NOT B
bff0: 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
c000: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col0..----....qu
c010: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
c020: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
c030: 20 2d 20 33 30 20 2d 20 2d 20 63 6f 6c 32 20 46   - 30 - - col2 F
c040: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
c050: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 31 37 0d  ..----..-20..17.
c060: 0a 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .69....query I r
c070: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
c080: 49 53 54 49 4e 43 54 20 2b 20 37 35 20 46 52 4f  ISTINCT + 75 FRO
c090: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43  M tab0 AS cor0 C
c0a0: 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41  ROSS JOIN tab2 A
c0b0: 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 37 35  S cor1..----..75
c0c0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
c0d0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
c0e0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  tax: ..query II 
c0f0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35  rowsort label-25
c100: 35 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 28 20  5..SELECT - + ( 
c110: 4d 41 58 28 20 2b 20 2d 20 63 6f 6c 32 20 29 20  MAX( + - col2 ) 
c120: 29 20 41 53 20 63 6f 6c 31 2c 20 4d 49 4e 28 20  ) AS col1, MIN( 
c130: 2b 20 28 20 2d 20 63 6f 6c 32 20 29 20 29 20 63  + ( - col2 ) ) c
c140: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
c150: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d   cor0..----..10.
c160: 0a 2d 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-99....skipif m
c170: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
c180: 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
c190: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
c1a0: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
c1b0: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
c1c0: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
c1d0: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
c1e0: 20 6c 61 62 65 6c 2d 32 35 35 0d 0a 53 45 4c 45   label-255..SELE
c1f0: 43 54 20 2d 20 2b 20 28 20 4d 41 58 20 28 20 2b  CT - + ( MAX ( +
c200: 20 2d 20 63 6f 6c 32 20 29 20 29 20 41 53 20 63   - col2 ) ) AS c
c210: 6f 6c 31 2c 20 4d 49 4e 20 28 20 2b 20 28 20 2d  ol1, MIN ( + ( -
c220: 20 63 6f 6c 32 20 29 20 29 20 63 6f 6c 30 20 46   col2 ) ) col0 F
c230: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
c240: 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 2d 39 39 0d  ..----..10..-99.
c250: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
c260: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
c270: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
c280: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
c290: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
c2a0: 6c 61 62 65 6c 2d 32 35 36 0d 0a 53 45 4c 45 43  label-256..SELEC
c2b0: 54 20 43 41 53 54 28 20 2d 20 4d 49 4e 28 20 63  T CAST( - MIN( c
c2c0: 6f 6c 31 20 29 20 41 53 20 53 49 47 4e 45 44 20  ol1 ) AS SIGNED 
c2d0: 29 20 2a 20 38 38 20 41 53 20 63 6f 6c 31 20 46  ) * 88 AS col1 F
c2e0: 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d  ROM tab2 cor0..-
c2f0: 2d 2d 2d 0d 0a 2d 34 34 38 38 0d 0a 0d 0a 73 6b  ---..-4488....sk
c300: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
c310: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
c320: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
c330: 65 6c 2d 32 35 36 0d 0a 53 45 4c 45 43 54 20 43  el-256..SELECT C
c340: 41 53 54 20 28 20 2d 20 4d 49 4e 20 28 20 63 6f  AST ( - MIN ( co
c350: 6c 31 20 29 20 41 53 20 49 4e 54 45 47 45 52 20  l1 ) AS INTEGER 
c360: 29 20 2a 20 38 38 20 41 53 20 63 6f 6c 31 20 46  ) * 88 AS col1 F
c370: 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d  ROM tab2 cor0..-
c380: 2d 2d 2d 0d 0a 2d 34 34 38 38 0d 0a 0d 0a 6f 6e  ---..-4488....on
c390: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
c3a0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
c3b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
c3c0: 20 6c 61 62 65 6c 2d 32 35 37 0d 0a 53 45 4c 45   label-257..SELE
c3d0: 43 54 20 41 4c 4c 20 2b 20 2b 20 4d 49 4e 28 20  CT ALL + + MIN( 
c3e0: 41 4c 4c 20 2b 20 2b 20 63 6f 6c 32 20 29 20 46  ALL + + col2 ) F
c3f0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
c400: 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 0d 0a 73 6b  ..----..59....sk
c410: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
c420: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
c430: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
c440: 65 6c 2d 32 35 37 0d 0a 53 45 4c 45 43 54 20 41  el-257..SELECT A
c450: 4c 4c 20 2b 20 2b 20 4d 49 4e 20 28 20 41 4c 4c  LL + + MIN ( ALL
c460: 20 2b 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d   + + col2 ) FROM
c470: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
c480: 2d 2d 2d 0d 0a 35 39 0d 0a 0d 0a 6f 6e 6c 79 69  ---..59....onlyi
c490: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
c4a0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
c4b0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
c4c0: 62 65 6c 2d 32 35 38 0d 0a 53 45 4c 45 43 54 20  bel-258..SELECT 
c4d0: 44 49 53 54 49 4e 43 54 20 2b 20 4d 49 4e 28 20  DISTINCT + MIN( 
c4e0: 41 4c 4c 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f  ALL - col1 ) FRO
c4f0: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  M tab1..----..-4
c500: 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
c510: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
c520: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
c530: 6f 72 74 20 6c 61 62 65 6c 2d 32 35 38 0d 0a 53  ort label-258..S
c540: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
c550: 20 4d 49 4e 20 28 20 41 4c 4c 20 2d 20 63 6f 6c   MIN ( ALL - col
c560: 31 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  1 ) FROM tab1..-
c570: 2d 2d 2d 0d 0a 2d 34 37 0d 0a 0d 0a 6f 6e 6c 79  ---..-47....only
c580: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
c590: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
c5a0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
c5b0: 61 62 65 6c 2d 32 35 39 0d 0a 53 45 4c 45 43 54  abel-259..SELECT
c5c0: 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20   + + COUNT( * ) 
c5d0: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
c5e0: 4e 4f 54 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c  NOT col0 IS NULL
c5f0: 20 41 4e 44 20 4e 55 4c 4c 20 3c 20 2d 20 36 32   AND NULL < - 62
c600: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
c610: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
c620: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
c630: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
c640: 6c 2d 32 35 39 0d 0a 53 45 4c 45 43 54 20 2b 20  l-259..SELECT + 
c650: 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52  + COUNT ( * ) FR
c660: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
c670: 54 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 20 41  T col0 IS NULL A
c680: 4e 44 20 4e 55 4c 4c 20 3c 20 2d 20 36 32 0d 0a  ND NULL < - 62..
c690: 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  ----..0....onlyi
c6a0: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
c6b0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
c6c0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
c6d0: 62 65 6c 2d 32 36 30 0d 0a 53 45 4c 45 43 54 20  bel-260..SELECT 
c6e0: 2b 20 28 20 2d 20 53 55 4d 28 20 2b 20 63 6f 6c  + ( - SUM( + col
c6f0: 30 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  0 ) ) FROM tab2.
c700: 0a 2d 2d 2d 2d 0d 0a 2d 31 38 35 0d 0a 0d 0a 73  .----..-185....s
c710: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
c720: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
c730: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
c740: 62 65 6c 2d 32 36 30 0d 0a 53 45 4c 45 43 54 20  bel-260..SELECT 
c750: 2b 20 28 20 2d 20 53 55 4d 20 28 20 2b 20 63 6f  + ( - SUM ( + co
c760: 6c 30 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32  l0 ) ) FROM tab2
c770: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 35 0d 0a 0d 0a  ..----..-185....
c780: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
c790: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32 35 20 2a  .SELECT ALL 25 *
c7a0: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
c7b0: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab1..----..1
c7c0: 32 37 35 0d 0a 32 31 32 35 0d 0a 32 32 37 35 0d  275..2125..2275.
c7d0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
c7e0: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
c7f0: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
c800: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 32 0d  wsort label-262.
c810: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f  .SELECT ALL - CO
c820: 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
c830: 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b0 WHERE NOT NUL
c840: 4c 20 3c 3e 20 2b 20 2d 20 63 6f 6c 30 0d 0a 2d  L <> + - col0..-
c850: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
c860: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
c870: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
c880: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
c890: 36 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  62..SELECT ALL -
c8a0: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
c8b0: 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
c8c0: 20 4e 55 4c 4c 20 3c 3e 20 2b 20 2d 20 63 6f 6c   NULL <> + - col
c8d0: 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e  0..----..0....on
c8e0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
c8f0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
c900: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
c910: 74 20 6c 61 62 65 6c 2d 32 36 33 0d 0a 53 45 4c  t label-263..SEL
c920: 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55  ECT DISTINCT COU
c930: 4e 54 28 20 2a 20 29 20 2a 20 33 33 20 41 53 20  NT( * ) * 33 AS 
c940: 63 6f 6c 31 2c 20 2d 20 43 4f 55 4e 54 28 20 2a  col1, - COUNT( *
c950: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
c960: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a  tab0..----..99..
c970: 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
c980: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
c990: 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  ble..query II ro
c9a0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 33 0d  wsort label-263.
c9b0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
c9c0: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 33   COUNT ( * ) * 3
c9d0: 33 20 41 53 20 63 6f 6c 31 2c 20 2d 20 43 4f 55  3 AS col1, - COU
c9e0: 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  NT ( * ) AS col1
c9f0: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
ca00: 0d 0a 39 39 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79  ..99..-3....only
ca10: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
ca20: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56  gate syntax: DIV
ca30: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
ca40: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
ca50: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
ca60: 36 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  64..SELECT DISTI
ca70: 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 63 6f 6c  NCT + COUNT( col
ca80: 30 20 29 20 2a 20 2d 20 36 33 20 44 49 56 20 2d  0 ) * - 63 DIV -
ca90: 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
caa0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
cab0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d   cor0..----..63.
cac0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
cad0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
cae0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
caf0: 74 20 6c 61 62 65 6c 2d 32 36 34 0d 0a 53 45 4c  t label-264..SEL
cb00: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
cb10: 4f 55 4e 54 20 28 20 63 6f 6c 30 20 29 20 2a 20  OUNT ( col0 ) * 
cb20: 2d 20 36 33 20 2f 20 2d 20 43 4f 55 4e 54 20 28  - 63 / - COUNT (
cb30: 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
cb40: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
cb50: 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a 71 75 65 72  ----..63....quer
cb60: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
cb70: 45 43 54 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 63  ECT - col2 * - c
cb80: 6f 6c 30 20 2b 20 35 39 20 41 53 20 63 6f 6c 32  ol0 + 59 AS col2
cb90: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
cba0: 0d 0a 37 36 34 0d 0a 39 32 39 0d 0a 39 36 36 32  ..764..929..9662
cbb0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
cbc0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
cbd0: 63 6f 6c 31 20 2b 20 2d 20 2d 20 36 30 20 41 53  col1 + - - 60 AS
cbe0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
cbf0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
cc00: 30 37 0d 0a 36 35 0d 0a 37 34 0d 0a 0d 0a 71 75  07..65..74....qu
cc10: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
cc20: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
cc30: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
cc40: 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 49  WHERE ( NULL ) I
cc50: 4e 20 28 20 2b 20 38 35 20 29 0d 0a 2d 2d 2d 2d  N ( + 85 )..----
cc60: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
cc70: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
cc80: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
cc90: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
cca0: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
ccb0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
ccc0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
ccd0: 28 20 39 31 20 29 20 63 6f 6c 32 20 46 52 4f 4d  ( 91 ) col2 FROM
cce0: 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
ccf0: 0d 0a 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..91....query I 
cd00: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
cd10: 2b 20 63 6f 6c 31 20 2a 20 2b 20 34 36 20 46 52  + col1 * + 46 FR
cd20: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab0..----..3
cd30: 37 32 36 0d 0a 34 36 0d 0a 39 36 36 0d 0a 0d 0a  726..46..966....
cd40: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
cd50: 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
cd60: 20 74 61 62 32 20 57 48 45 52 45 20 28 20 63 6f   tab2 WHERE ( co
cd70: 6c 32 20 3c 20 2b 20 2b 20 63 6f 6c 30 20 29 0d  l2 < + + col0 ).
cd80: 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
cd90: 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39  hashing to 75c99
cda0: 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32  8aa53ac83218cbf2
cdb0: 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f  feb962d0a49....o
cdc0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
cdd0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
cde0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
cdf0: 74 20 6c 61 62 65 6c 2d 32 37 31 0d 0a 53 45 4c  t label-271..SEL
ce00: 45 43 54 20 2d 20 39 37 20 2d 20 2b 20 43 4f 55  ECT - 97 - + COU
ce10: 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  NT( * ) AS col0 
ce20: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
ce30: 0a 2d 31 30 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-100....skipif 
ce40: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
ce50: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
ce60: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37  rowsort label-27
ce70: 31 0d 0a 53 45 4c 45 43 54 20 2d 20 39 37 20 2d  1..SELECT - 97 -
ce80: 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
ce90: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
cea0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 30 0d 0a 0d 0a  ..----..-100....
ceb0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
cec0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
ced0: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
cee0: 72 74 20 6c 61 62 65 6c 2d 32 37 32 0d 0a 53 45  rt label-272..SE
cef0: 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20  LECT ALL COUNT( 
cf00: 2a 20 29 20 2d 20 2d 20 2b 20 43 4f 55 4e 54 28  * ) - - + COUNT(
cf10: 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
cf20: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d  M tab0..----..6.
cf30: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
cf40: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
cf50: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
cf60: 74 20 6c 61 62 65 6c 2d 32 37 32 0d 0a 53 45 4c  t label-272..SEL
cf70: 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20  ECT ALL COUNT ( 
cf80: 2a 20 29 20 2d 20 2d 20 2b 20 43 4f 55 4e 54 20  * ) - - + COUNT 
cf90: 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ( * ) AS col2 FR
cfa0: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 36  OM tab0..----..6
cfb0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
cfc0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
cfd0: 54 49 4e 43 54 20 2d 20 63 6f 6c 32 2c 20 63 6f  TINCT - col2, co
cfe0: 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
cff0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d  tab2..----..-23.
d000: 0a 34 36 0d 0a 2d 34 30 0d 0a 36 34 0d 0a 2d 35  .46..-40..64..-5
d010: 38 0d 0a 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49  8..75....query I
d020: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
d030: 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 2c  T DISTINCT col1,
d040: 20 63 6f 6c 32 20 2a 20 2d 20 28 20 2d 20 63 6f   col2 * - ( - co
d050: 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l0 ) AS col0 FRO
d060: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34  M tab1..----..14
d070: 0d 0a 34 38 39 36 0d 0a 34 37 0d 0a 36 31 38 38  ..4896..47..6188
d080: 0d 0a 35 0d 0a 35 30 31 35 0d 0a 0d 0a 6f 6e 6c  ..5..5015....onl
d090: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
d0a0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
d0b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
d0c0: 6c 61 62 65 6c 2d 32 37 35 0d 0a 53 45 4c 45 43  label-275..SELEC
d0d0: 54 20 2d 20 43 4f 55 4e 54 28 20 2d 20 28 20 2d  T - COUNT( - ( -
d0e0: 20 2b 20 32 34 20 29 20 29 20 63 6f 6c 32 20 46   + 24 ) ) col2 F
d0f0: 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48  ROM tab2 cor0 WH
d100: 45 52 45 20 63 6f 6c 31 20 4e 4f 54 20 49 4e 20  ERE col1 NOT IN 
d110: 28 20 2d 20 2b 20 63 6f 6c 32 2c 20 63 6f 6c 32  ( - + col2, col2
d120: 20 2a 20 2b 20 28 20 2d 20 32 34 20 29 20 29 0d   * + ( - 24 ) ).
d130: 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  .----..-3....ski
d140: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
d150: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
d160: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
d170: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
d180: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
d190: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
d1a0: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
d1b0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 35 0d 0a  sort label-275..
d1c0: 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28  SELECT - COUNT (
d1d0: 20 2d 20 28 20 2d 20 2b 20 32 34 20 29 20 29 20   - ( - + 24 ) ) 
d1e0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63  col2 FROM tab2 c
d1f0: 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20 4e  or0 WHERE col1 N
d200: 4f 54 20 49 4e 20 28 20 2d 20 2b 20 63 6f 6c 32  OT IN ( - + col2
d210: 2c 20 63 6f 6c 32 20 2a 20 2b 20 28 20 2d 20 32  , col2 * + ( - 2
d220: 34 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d  4 ) )..----..-3.
d230: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
d240: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
d250: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
d260: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
d270: 62 65 6c 2d 32 37 36 0d 0a 53 45 4c 45 43 54 20  bel-276..SELECT 
d280: 41 4c 4c 20 33 37 20 2a 20 63 6f 6c 31 20 2b 20  ALL 37 * col1 + 
d290: 43 41 53 54 28 20 2b 20 2d 20 36 36 20 41 53 20  CAST( + - 66 AS 
d2a0: 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
d2b0: 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b1 cor0..----..1
d2c0: 31 39 0d 0a 31 36 37 33 0d 0a 34 35 32 0d 0a 0d  19..1673..452...
d2d0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
d2e0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
d2f0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
d300: 6c 61 62 65 6c 2d 32 37 36 0d 0a 53 45 4c 45 43  label-276..SELEC
d310: 54 20 41 4c 4c 20 33 37 20 2a 20 63 6f 6c 31 20  T ALL 37 * col1 
d320: 2b 20 43 41 53 54 20 28 20 2b 20 2d 20 36 36 20  + CAST ( + - 66 
d330: 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
d340: 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
d350: 2d 0d 0a 31 31 39 0d 0a 31 36 37 33 0d 0a 34 35  -..119..1673..45
d360: 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  2....query III r
d370: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
d380: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
d390: 72 30 20 57 48 45 52 45 20 33 37 20 4e 4f 54 20  r0 WHERE 37 NOT 
d3a0: 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44  BETWEEN NULL AND
d3b0: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
d3c0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
d3d0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
d3e0: 2b 20 63 6f 6c 31 20 2a 20 2d 20 33 33 20 2b 20  + col1 * - 33 + 
d3f0: 35 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  5 FROM tab0 cor0
d400: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 36 38 0d 0a 2d  ..----..-2668..-
d410: 32 38 0d 0a 2d 36 38 38 0d 0a 0d 0a 6f 6e 6c 79  28..-688....only
d420: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
d430: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
d440: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
d450: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 39  owsort label-279
d460: 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 41 53  ..SELECT + + CAS
d470: 54 28 20 2b 20 2b 20 38 35 20 41 53 20 53 49 47  T( + + 85 AS SIG
d480: 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20  NED ) FROM tab1 
d490: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38  AS cor0..----..8
d4a0: 35 0d 0a 38 35 0d 0a 38 35 0d 0a 0d 0a 73 6b 69  5..85..85....ski
d4b0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
d4c0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
d4d0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
d4e0: 6c 2d 32 37 39 0d 0a 53 45 4c 45 43 54 20 2b 20  l-279..SELECT + 
d4f0: 2b 20 43 41 53 54 20 28 20 2b 20 2b 20 38 35 20  + CAST ( + + 85 
d500: 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
d510: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
d520: 2d 2d 2d 2d 0d 0a 38 35 0d 0a 38 35 0d 0a 38 35  ----..85..85..85
d530: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
d540: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
d550: 49 4e 43 54 20 63 6f 6c 30 20 2a 20 2d 20 38 31  INCT col0 * - 81
d560: 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20   * col2 AS col2 
d570: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
d580: 0a 2d 35 37 31 30 35 0d 0a 2d 37 30 34 37 30 0d  .-57105..-70470.
d590: 0a 2d 37 37 37 38 34 33 0d 0a 0d 0a 71 75 65 72  .-777843....quer
d5a0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
d5b0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
d5c0: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
d5d0: 20 38 37 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d   87 IS NULL..---
d5e0: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
d5f0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
d600: 54 49 4e 43 54 20 2b 20 28 20 2b 20 36 20 29 20  TINCT + ( + 6 ) 
d610: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
d620: 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 6f 6e  0..----..6....on
d630: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
d640: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
d650: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
d660: 20 6c 61 62 65 6c 2d 32 38 33 0d 0a 53 45 4c 45   label-283..SELE
d670: 43 54 20 43 4f 55 4e 54 28 20 2d 20 35 33 20 29  CT COUNT( - 53 )
d680: 20 2a 20 2d 20 53 55 4d 28 20 2d 20 63 6f 6c 32   * - SUM( - col2
d690: 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
d6a0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 36 33 0d  cor0..----..363.
d6b0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
d6c0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
d6d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d6e0: 74 20 6c 61 62 65 6c 2d 32 38 33 0d 0a 53 45 4c  t label-283..SEL
d6f0: 45 43 54 20 43 4f 55 4e 54 20 28 20 2d 20 35 33  ECT COUNT ( - 53
d700: 20 29 20 2a 20 2d 20 53 55 4d 20 28 20 2d 20 63   ) * - SUM ( - c
d710: 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ol2 ) FROM tab2 
d720: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
d730: 36 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  63....onlyif mys
d740: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
d750: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
d760: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
d770: 20 6c 61 62 65 6c 2d 32 38 34 0d 0a 53 45 4c 45   label-284..SELE
d780: 43 54 20 38 20 44 49 56 20 63 6f 6c 30 20 46 52  CT 8 DIV col0 FR
d790: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
d7a0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
d7b0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
d7c0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
d7d0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
d7e0: 20 6c 61 62 65 6c 2d 32 38 34 0d 0a 53 45 4c 45   label-284..SELE
d7f0: 43 54 20 38 20 2f 20 63 6f 6c 30 20 46 52 4f 4d  CT 8 / col0 FROM
d800: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
d810: 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
d820: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
d830: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
d840: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
d850: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
d860: 2d 32 38 35 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  -285..SELECT col
d870: 30 20 2a 20 2d 20 2b 20 43 41 53 54 28 20 63 6f  0 * - + CAST( co
d880: 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 41  l0 AS SIGNED ) A
d890: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
d8a0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32   cor0..----..-22
d8b0: 35 0d 0a 2d 37 35 36 39 0d 0a 2d 39 34 30 39 0d  5..-7569..-9409.
d8c0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
d8d0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
d8e0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d8f0: 74 20 6c 61 62 65 6c 2d 32 38 35 0d 0a 53 45 4c  t label-285..SEL
d900: 45 43 54 20 63 6f 6c 30 20 2a 20 2d 20 2b 20 43  ECT col0 * - + C
d910: 41 53 54 20 28 20 63 6f 6c 30 20 41 53 20 49 4e  AST ( col0 AS IN
d920: 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20  TEGER ) AS col2 
d930: 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
d940: 2d 2d 2d 2d 0d 0a 2d 32 32 35 0d 0a 2d 37 35 36  ----..-225..-756
d950: 39 0d 0a 2d 39 34 30 39 0d 0a 0d 0a 71 75 65 72  9..-9409....quer
d960: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
d970: 45 43 54 20 2d 20 39 31 20 2a 20 2b 20 28 20 2b  ECT - 91 * + ( +
d980: 20 2d 20 35 31 20 29 20 46 52 4f 4d 20 74 61 62   - 51 ) FROM tab
d990: 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36  0 cor0..----..46
d9a0: 34 31 0d 0a 34 36 34 31 0d 0a 34 36 34 31 0d 0a  41..4641..4641..
d9b0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d9c0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20  t..SELECT ALL ( 
d9d0: 36 37 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  67 ) AS col2 FRO
d9e0: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36 37  M tab1..----..67
d9f0: 0d 0a 36 37 0d 0a 36 37 0d 0a 0d 0a 71 75 65 72  ..67..67....quer
da00: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
da10: 45 43 54 20 44 49 53 54 49 4e 43 54 20 36 39 20  ECT DISTINCT 69 
da20: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
da30: 31 20 57 48 45 52 45 20 2b 20 33 36 20 49 53 20  1 WHERE + 36 IS 
da40: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
da50: 36 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  69....onlyif mys
da60: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
da70: 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69  yntax: DIV for i
da80: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
da90: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
daa0: 72 74 20 6c 61 62 65 6c 2d 32 38 39 0d 0a 53 45  rt label-289..SE
dab0: 4c 45 43 54 20 2b 20 4d 41 58 28 20 2b 20 63 6f  LECT + MAX( + co
dac0: 6c 32 20 29 20 44 49 56 20 39 34 20 46 52 4f 4d  l2 ) DIV 94 FROM
dad0: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   tab0..----..1..
dae0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
daf0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
db00: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
db10: 20 6c 61 62 65 6c 2d 32 38 39 0d 0a 53 45 4c 45   label-289..SELE
db20: 43 54 20 2b 20 4d 41 58 20 28 20 2b 20 63 6f 6c  CT + MAX ( + col
db30: 32 20 29 20 2f 20 39 34 20 46 52 4f 4d 20 74 61  2 ) / 94 FROM ta
db40: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 6f  b0..----..1....o
db50: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
db60: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
db70: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
db80: 74 20 6c 61 62 65 6c 2d 32 39 30 0d 0a 53 45 4c  t label-290..SEL
db90: 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28  ECT ALL - COUNT(
dba0: 20 2a 20 29 20 2a 20 2d 20 33 34 20 46 52 4f 4d   * ) * - 34 FROM
dbb0: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 32   tab2..----..102
dbc0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
dbd0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
dbe0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
dbf0: 72 74 20 6c 61 62 65 6c 2d 32 39 30 0d 0a 53 45  rt label-290..SE
dc00: 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54  LECT ALL - COUNT
dc10: 20 28 20 2a 20 29 20 2a 20 2d 20 33 34 20 46 52   ( * ) * - 34 FR
dc20: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
dc30: 30 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  02....query III 
dc40: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
dc50: 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
dc60: 45 20 4e 4f 54 20 2b 20 34 30 20 4e 4f 54 20 42  E NOT + 40 NOT B
dc70: 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
dc80: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
dc90: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
dca0: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
dcb0: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
dcc0: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
dcd0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
dce0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
dcf0: 4c 4c 20 32 32 20 2a 20 2b 20 63 6f 6c 31 20 63  LL 22 * + col1 c
dd00: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
dd10: 2d 2d 2d 0d 0a 31 31 32 32 0d 0a 31 34 37 34 0d  ---..1122..1474.
dd20: 0a 31 36 39 34 0d 0a 0d 0a 71 75 65 72 79 20 49  .1694....query I
dd30: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
dd40: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
dd50: 48 45 52 45 20 4e 4f 54 20 28 20 2b 20 31 39 20  HERE NOT ( + 19 
dd60: 29 20 2a 20 2d 20 35 38 20 2b 20 2b 20 2b 20 63  ) * - 58 + + + c
dd70: 6f 6c 32 20 4e 4f 54 20 49 4e 20 28 20 2b 20 63  ol2 NOT IN ( + c
dd80: 6f 6c 30 20 2b 20 2b 20 2b 20 33 35 20 29 0d 0a  ol0 + + + 35 )..
dd90: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
dda0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
ddb0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
ddc0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
ddd0: 2d 32 39 34 0d 0a 53 45 4c 45 43 54 20 2d 20 53  -294..SELECT - S
dde0: 55 4d 28 20 44 49 53 54 49 4e 43 54 20 36 20 29  UM( DISTINCT 6 )
ddf0: 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
de00: 20 4e 4f 54 20 2b 20 2b 20 63 6f 6c 30 20 2b 20   NOT + + col0 + 
de10: 2d 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 31 20  - col2 + + col1 
de20: 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d  IS NULL..----..-
de30: 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
de40: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
de50: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
de60: 6f 72 74 20 6c 61 62 65 6c 2d 32 39 34 0d 0a 53  ort label-294..S
de70: 45 4c 45 43 54 20 2d 20 53 55 4d 20 28 20 44 49  ELECT - SUM ( DI
de80: 53 54 49 4e 43 54 20 36 20 29 20 46 52 4f 4d 20  STINCT 6 ) FROM 
de90: 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2b  tab1 WHERE NOT +
dea0: 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 32   + col0 + - col2
deb0: 20 2b 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c   + + col1 IS NUL
dec0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 0d 0a 0d 0a 6f  L..----..-6....o
ded0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
dee0: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
def0: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
df00: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
df10: 32 39 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  295..SELECT DIST
df20: 49 4e 43 54 20 31 34 20 44 49 56 20 2b 20 2b 20  INCT 14 DIV + + 
df30: 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
df40: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
df50: 48 45 52 45 20 63 6f 6c 30 20 44 49 56 20 2b 20  HERE col0 DIV + 
df60: 63 6f 6c 32 20 2a 20 2b 20 28 20 63 6f 6c 30 20  col2 * + ( col0 
df70: 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  ) IS NOT NULL..-
df80: 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 0d 0a 73 6b 69  ---..0..1....ski
df90: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
dfa0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
dfb0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
dfc0: 6c 2d 32 39 35 0d 0a 53 45 4c 45 43 54 20 44 49  l-295..SELECT DI
dfd0: 53 54 49 4e 43 54 20 31 34 20 2f 20 2b 20 2b 20  STINCT 14 / + + 
dfe0: 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
dff0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
e000: 48 45 52 45 20 63 6f 6c 30 20 2f 20 2b 20 63 6f  HERE col0 / + co
e010: 6c 32 20 2a 20 2b 20 28 20 63 6f 6c 30 20 29 20  l2 * + ( col0 ) 
e020: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
e030: 2d 0d 0a 30 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79  -..0..1....query
e040: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
e050: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 34  ECT DISTINCT + 4
e060: 34 20 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 31 20  4 AS col0, col1 
e070: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
e080: 30 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 31 34 0d  0..----..44..14.
e090: 0a 34 34 0d 0a 34 37 0d 0a 34 34 0d 0a 35 0d 0a  .44..47..44..5..
e0a0: 0d 0a 71 75 65 72 79 20 49 49 49 49 49 49 20 72  ..query IIIIII r
e0b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
e0c0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
e0d0: 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
e0e0: 62 30 20 63 6f 72 31 20 57 48 45 52 45 20 4e 4f  b0 cor1 WHERE NO
e0f0: 54 20 2b 20 39 34 20 49 53 20 4e 55 4c 4c 0d 0a  T + 94 IS NULL..
e100: 2d 2d 2d 2d 0d 0a 35 34 20 76 61 6c 75 65 73 20  ----..54 values 
e110: 68 61 73 68 69 6e 67 20 74 6f 20 34 32 64 61 61  hashing to 42daa
e120: 30 33 65 34 38 61 61 36 37 35 35 64 65 66 64 30  03e48aa6755defd0
e130: 61 33 32 30 36 65 35 31 64 38 65 0d 0a 0d 0a 71  a3206e51d8e....q
e140: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
e150: 53 45 4c 45 43 54 20 2b 20 2b 20 36 31 20 46 52  SELECT + + 61 FR
e160: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
e170: 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20  CROSS JOIN tab0 
e180: 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  cor1..----..9 va
e190: 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
e1a0: 30 37 31 34 39 39 30 35 61 37 32 62 64 38 37 35  07149905a72bd875
e1b0: 35 33 33 38 31 66 33 34 64 31 39 65 64 32 39 30  53381f34d19ed290
e1c0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
e1d0: 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
e1e0: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
e1f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
e200: 61 62 65 6c 2d 32 39 39 0d 0a 53 45 4c 45 43 54  abel-299..SELECT
e210: 20 38 36 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 44   86 + - + col0 D
e220: 49 56 20 34 31 20 2a 20 2b 20 31 30 20 41 53 20  IV 41 * + 10 AS 
e230: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
e240: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 36  S cor0..----..76
e250: 0d 0a 37 36 0d 0a 37 36 0d 0a 0d 0a 73 6b 69 70  ..76..76....skip
e260: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
e270: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
e280: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
e290: 2d 32 39 39 0d 0a 53 45 4c 45 43 54 20 38 36 20  -299..SELECT 86 
e2a0: 2b 20 2d 20 2b 20 63 6f 6c 30 20 2f 20 34 31 20  + - + col0 / 41 
e2b0: 2a 20 2b 20 31 30 20 41 53 20 63 6f 6c 30 20 46  * + 10 AS col0 F
e2c0: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
e2d0: 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 37 36 0d 0a  ..----..76..76..
e2e0: 37 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  76....onlyif mys
e2f0: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
e300: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
e310: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
e320: 20 6c 61 62 65 6c 2d 33 30 30 0d 0a 53 45 4c 45   label-300..SELE
e330: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
e340: 6c 30 20 2a 20 2b 20 43 41 53 54 28 20 4e 55 4c  l0 * + CAST( NUL
e350: 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  L AS SIGNED ) * 
e360: 2d 20 37 36 20 2b 20 2b 20 2d 20 39 33 20 2b 20  - 76 + + - 93 + 
e370: 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  col1 AS col1 FRO
e380: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
e390: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
e3a0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
e3b0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
e3c0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
e3d0: 65 6c 2d 33 30 30 0d 0a 53 45 4c 45 43 54 20 44  el-300..SELECT D
e3e0: 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a  ISTINCT + col0 *
e3f0: 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   + CAST ( NULL A
e400: 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20  S INTEGER ) * - 
e410: 37 36 20 2b 20 2b 20 2d 20 39 33 20 2b 20 63 6f  76 + + - 93 + co
e420: 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
e430: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
e440: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
e450: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
e460: 45 43 54 20 41 4c 4c 20 2b 20 36 20 2a 20 2b 20  ECT ALL + 6 * + 
e470: 63 6f 6c 32 20 2b 20 2d 20 35 32 20 2b 20 2d 20  col2 + - 52 + - 
e480: 2b 20 36 35 20 2b 20 2d 20 63 6f 6c 32 20 2a 20  + 65 + - col2 * 
e490: 2b 20 37 20 2a 20 2b 20 35 38 20 41 53 20 63 6f  + 7 * + 58 AS co
e4a0: 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
e4b0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 39  cor0..----..-189
e4c0: 31 37 0d 0a 2d 33 39 37 31 37 0d 0a 2d 34 31 31  17..-39717..-411
e4d0: 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
e4e0: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
e4f0: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
e500: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30  rowsort label-30
e510: 32 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 39 31  2..SELECT - + 91
e520: 20 2b 20 2d 20 36 35 20 2d 20 2b 20 43 4f 55 4e   + - 65 - + COUN
e530: 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46  T( * ) AS col0 F
e540: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
e550: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 39 0d 0a 0d 0a  ..----..-159....
e560: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
e570: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
e580: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
e590: 61 62 65 6c 2d 33 30 32 0d 0a 53 45 4c 45 43 54  abel-302..SELECT
e5a0: 20 2d 20 2b 20 39 31 20 2b 20 2d 20 36 35 20 2d   - + 91 + - 65 -
e5b0: 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
e5c0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
e5d0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
e5e0: 2d 31 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49  -159....query II
e5f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
e600: 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
e610: 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52  M tab2 cor0 WHER
e620: 45 20 2d 20 31 31 20 3c 20 2d 20 2b 20 63 6f 6c  E - 11 < - + col
e630: 30 20 2b 20 31 38 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  0 + 18..----....
e640: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
e650: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32  .SELECT ALL col2
e660: 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d   * + + col2 FROM
e670: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
e680: 2d 2d 2d 0d 0a 33 34 38 31 0d 0a 34 36 32 34 0d  ---..3481..4624.
e690: 0a 39 32 31 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .9216....onlyif 
e6a0: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
e6b0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
e6c0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
e6d0: 6f 72 74 20 6c 61 62 65 6c 2d 33 30 35 0d 0a 53  ort label-305..S
e6e0: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34 35 20 2a  ELECT ALL - 45 *
e6f0: 20 43 41 53 54 28 20 39 31 20 41 53 20 53 49 47   CAST( 91 AS SIG
e700: 4e 45 44 20 29 20 2a 20 2d 20 63 6f 6c 30 20 41  NED ) * - col0 A
e710: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
e720: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b   AS cor0 WHERE +
e730: 20 31 20 2a 20 2b 20 63 6f 6c 30 20 2f 20 2b 20   1 * + col0 / + 
e740: 2d 20 63 6f 6c 32 20 3c 20 4e 55 4c 4c 0d 0a 2d  - col2 < NULL..-
e750: 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ---....skipif my
e760: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
e770: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
e780: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 35 0d  wsort label-305.
e790: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34 35  .SELECT ALL - 45
e7a0: 20 2a 20 43 41 53 54 20 28 20 39 31 20 41 53 20   * CAST ( 91 AS 
e7b0: 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 63 6f  INTEGER ) * - co
e7c0: 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
e7d0: 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
e7e0: 52 45 20 2b 20 31 20 2a 20 2b 20 63 6f 6c 30 20  RE + 1 * + col0 
e7f0: 2f 20 2b 20 2d 20 63 6f 6c 32 20 3c 20 4e 55 4c  / + - col2 < NUL
e800: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  L..----....skipi
e810: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
e820: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
e830: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
e840: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
e850: 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ns..query II row
e860: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
e870: 20 63 6f 6c 31 20 63 6f 6c 31 2c 20 2b 20 63 6f   col1 col1, + co
e880: 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
e890: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
e8a0: 52 45 20 4e 4f 54 20 2b 20 35 31 20 3c 3d 20 2b  RE NOT + 51 <= +
e8b0: 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d   col0..----..81.
e8c0: 0a 31 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .15....onlyif my
e8d0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
e8e0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
e8f0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
e900: 33 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  307..SELECT DIST
e910: 49 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20  INCT - COUNT( * 
e920: 29 20 2a 20 2d 20 35 20 2a 20 2d 20 43 4f 55 4e  ) * - 5 * - COUN
e930: 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30  T( * ) FROM tab0
e940: 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a 0d 0a 73  ..----..-45....s
e950: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
e960: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
e970: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
e980: 62 65 6c 2d 33 30 37 0d 0a 53 45 4c 45 43 54 20  bel-307..SELECT 
e990: 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
e9a0: 20 28 20 2a 20 29 20 2a 20 2d 20 35 20 2a 20 2d   ( * ) * - 5 * -
e9b0: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
e9c0: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  M tab0..----..-4
e9d0: 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
e9e0: 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
e9f0: 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
ea00: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
ea10: 20 6c 61 62 65 6c 2d 33 30 38 0d 0a 53 45 4c 45   label-308..SELE
ea20: 43 54 20 41 4c 4c 20 63 6f 6c 30 20 44 49 56 20  CT ALL col0 DIV 
ea30: 2b 20 33 39 2c 20 63 6f 6c 30 20 41 53 20 63 6f  + 39, col0 AS co
ea40: 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
ea50: 2d 2d 0d 0a 31 0d 0a 34 36 0d 0a 31 0d 0a 36 34  --..1..46..1..64
ea60: 0d 0a 31 0d 0a 37 35 0d 0a 0d 0a 73 6b 69 70 69  ..1..75....skipi
ea70: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
ea80: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
ea90: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
eaa0: 2d 33 30 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -308..SELECT ALL
eab0: 20 63 6f 6c 30 20 2f 20 2b 20 33 39 2c 20 63 6f   col0 / + 39, co
eac0: 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
ead0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 34  tab2..----..1..4
eae0: 36 0d 0a 31 0d 0a 36 34 0d 0a 31 0d 0a 37 35 0d  6..1..64..1..75.
eaf0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
eb00: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
eb10: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
eb20: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 39 0d  wsort label-309.
eb30: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
eb40: 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   - COUNT( * ) * 
eb50: 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2b  - COUNT( * ) + +
eb60: 20 39 33 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29   93 + COUNT( * )
eb70: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
eb80: 0d 0a 31 30 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..105....skipif 
eb90: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
eba0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
ebb0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30  rowsort label-30
ebc0: 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
ebd0: 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29  CT - COUNT ( * )
ebe0: 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   * - COUNT ( * )
ebf0: 20 2b 20 2b 20 39 33 20 2b 20 43 4f 55 4e 54 20   + + 93 + COUNT 
ec00: 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 0d  ( * ) FROM tab1.
ec10: 0a 2d 2d 2d 2d 0d 0a 31 30 35 0d 0a 0d 0a 6f 6e  .----..105....on
ec20: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
ec30: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
ec40: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
ec50: 20 6c 61 62 65 6c 2d 33 31 30 0d 0a 53 45 4c 45   label-310..SELE
ec60: 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT + COUNT( * ) 
ec70: 2a 20 2d 20 43 4f 55 4e 54 28 20 2b 20 63 6f 6c  * - COUNT( + col
ec80: 30 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  0 ) FROM tab0..-
ec90: 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69  ---..-9....skipi
eca0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
ecb0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
ecc0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
ecd0: 33 31 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  310..SELECT + CO
ece0: 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 43 4f  UNT ( * ) * - CO
ecf0: 55 4e 54 20 28 20 2b 20 63 6f 6c 30 20 29 20 46  UNT ( + col0 ) F
ed00: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
ed10: 2d 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -9....query I ro
ed20: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
ed30: 53 54 49 4e 43 54 20 2b 20 28 20 31 34 20 29 20  STINCT + ( 14 ) 
ed40: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
ed50: 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  1 WHERE NULL IS 
ed60: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
ed70: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
ed80: 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
ed90: 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
eda0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
edb0: 65 6c 2d 33 31 32 0d 0a 53 45 4c 45 43 54 20 44  el-312..SELECT D
edc0: 49 53 54 49 4e 43 54 20 32 37 20 2a 20 2d 20 37  ISTINCT 27 * - 7
edd0: 32 20 44 49 56 20 33 36 20 46 52 4f 4d 20 74 61  2 DIV 36 FROM ta
ede0: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 34 0d 0a 0d  b1..----..-54...
edf0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
ee00: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
ee10: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
ee20: 6c 61 62 65 6c 2d 33 31 32 0d 0a 53 45 4c 45 43  label-312..SELEC
ee30: 54 20 44 49 53 54 49 4e 43 54 20 32 37 20 2a 20  T DISTINCT 27 * 
ee40: 2d 20 37 32 20 2f 20 33 36 20 46 52 4f 4d 20 74  - 72 / 36 FROM t
ee50: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 34 0d 0a  ab1..----..-54..
ee60: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
ee70: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
ee80: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
ee90: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 33 0d 0a  sort label-313..
eea0: 53 45 4c 45 43 54 20 2d 20 4d 49 4e 28 20 41 4c  SELECT - MIN( AL
eeb0: 4c 20 2b 20 63 6f 6c 31 20 29 20 2a 20 2d 20 2d  L + col1 ) * - -
eec0: 20 4d 41 58 28 20 41 4c 4c 20 2b 20 2d 20 38 20   MAX( ALL + - 8 
eed0: 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  ) FROM tab0..---
eee0: 2d 0d 0a 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..8....skipif m
eef0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
ef00: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
ef10: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 33  owsort label-313
ef20: 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20 28  ..SELECT - MIN (
ef30: 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 29 20 2a 20   ALL + col1 ) * 
ef40: 2d 20 2d 20 4d 41 58 20 28 20 41 4c 4c 20 2b 20  - - MAX ( ALL + 
ef50: 2d 20 38 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  - 8 ) FROM tab0.
ef60: 0a 2d 2d 2d 2d 0d 0a 38 0d 0a 0d 0a 6f 6e 6c 79  .----..8....only
ef70: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
ef80: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
ef90: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
efa0: 61 62 65 6c 2d 33 31 34 0d 0a 53 45 4c 45 43 54  abel-314..SELECT
efb0: 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a 20   ALL - COUNT( * 
efc0: 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2d 20 37  ) + - COUNT( - 7
efd0: 34 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  4 ) FROM tab0..-
efe0: 2d 2d 2d 0d 0a 2d 36 0d 0a 0d 0a 73 6b 69 70 69  ---..-6....skipi
eff0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
f000: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
f010: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
f020: 33 31 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  314..SELECT ALL 
f030: 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20  - COUNT ( * ) + 
f040: 2d 20 43 4f 55 4e 54 20 28 20 2d 20 37 34 20 29  - COUNT ( - 74 )
f050: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
f060: 0d 0a 2d 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..-6....onlyif m
f070: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
f080: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
f090: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
f0a0: 72 74 20 6c 61 62 65 6c 2d 33 31 35 0d 0a 53 45  rt label-315..SE
f0b0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
f0c0: 38 37 20 44 49 56 20 28 20 2b 20 63 6f 6c 31 20  87 DIV ( + col1 
f0d0: 29 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ) + col1 FROM ta
f0e0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
f0f0: 0d 0a 35 30 0d 0a 36 36 0d 0a 37 36 0d 0a 0d 0a  ..50..66..76....
f100: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
f110: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
f120: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
f130: 61 62 65 6c 2d 33 31 35 0d 0a 53 45 4c 45 43 54  abel-315..SELECT
f140: 20 44 49 53 54 49 4e 43 54 20 2d 20 38 37 20 2f   DISTINCT - 87 /
f150: 20 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20 63 6f   ( + col1 ) + co
f160: 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
f170: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 30 0d 0a  cor0..----..50..
f180: 36 36 0d 0a 37 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  66..76....onlyif
f190: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
f1a0: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
f1b0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
f1c0: 65 6c 2d 33 31 36 0d 0a 53 45 4c 45 43 54 20 2b  el-316..SELECT +
f1d0: 20 2b 20 43 4f 55 4e 54 28 20 2d 20 2d 20 34 31   + COUNT( - - 41
f1e0: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
f1f0: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
f200: 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..3....skipif 
f210: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
f220: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
f230: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31  rowsort label-31
f240: 36 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f  6..SELECT + + CO
f250: 55 4e 54 20 28 20 2d 20 2d 20 34 31 20 29 20 41  UNT ( - - 41 ) A
f260: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
f270: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
f280: 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  3....onlyif mysq
f290: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
f2a0: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49  ntax: ..query II
f2b0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
f2c0: 31 37 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  17..SELECT COUNT
f2d0: 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 2c 20 38  ( * ) AS col0, 8
f2e0: 31 20 2b 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a  1 + + - COUNT( *
f2f0: 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
f300: 2d 2d 0d 0a 33 0d 0a 37 38 0d 0a 0d 0a 73 6b 69  --..3..78....ski
f310: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
f320: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
f330: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
f340: 65 6c 2d 33 31 37 0d 0a 53 45 4c 45 43 54 20 43  el-317..SELECT C
f350: 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
f360: 6c 30 2c 20 38 31 20 2b 20 2b 20 2d 20 43 4f 55  l0, 81 + + - COU
f370: 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
f380: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 37 38 0d  b0..----..3..78.
f390: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
f3a0: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 34  rt..SELECT + + 4
f3b0: 33 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  3 FROM tab1 AS c
f3c0: 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
f3d0: 61 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab1 AS cor1..---
f3e0: 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
f3f0: 69 6e 67 20 74 6f 20 31 39 39 31 30 35 36 31 39  ing to 199105619
f400: 30 34 39 32 37 31 31 34 37 39 35 36 64 65 35 32  049271147956de52
f410: 65 37 66 35 65 64 34 0d 0a 0d 0a 71 75 65 72 79  e7f5ed4....query
f420: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
f430: 43 54 20 2d 20 34 36 20 2a 20 63 6f 6c 31 20 41  CT - 46 * col1 A
f440: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
f450: 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 37 32 36 0d 0a 2d  ..----..-3726..-
f460: 34 36 0d 0a 2d 39 36 36 0d 0a 0d 0a 73 6b 69 70  46..-966....skip
f470: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
f480: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
f490: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
f4a0: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
f4b0: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
f4c0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 31  sort..SELECT - 1
f4d0: 32 20 2a 20 2b 20 63 6f 6c 32 20 63 6f 6c 30 20  2 * + col2 col0 
f4e0: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
f4f0: 0a 2d 31 31 35 32 0d 0a 2d 37 30 38 0d 0a 2d 38  .-1152..-708..-8
f500: 31 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  16....onlyif mys
f510: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
f520: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
f530: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
f540: 32 31 0d 0a 53 45 4c 45 43 54 20 2d 20 53 55 4d  21..SELECT - SUM
f550: 28 20 41 4c 4c 20 2d 20 2d 20 31 35 20 29 20 46  ( ALL - - 15 ) F
f560: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
f570: 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 35 0d 0a 0d 0a 73  ..----..-45....s
f580: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
f590: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
f5a0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
f5b0: 62 65 6c 2d 33 32 31 0d 0a 53 45 4c 45 43 54 20  bel-321..SELECT 
f5c0: 2d 20 53 55 4d 20 28 20 41 4c 4c 20 2d 20 2d 20  - SUM ( ALL - - 
f5d0: 31 35 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  15 ) FROM tab2 A
f5e0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  S cor0..----..-4
f5f0: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
f600: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28  sort..SELECT + (
f610: 20 2d 20 38 39 20 29 20 41 53 20 63 6f 6c 30 20   - 89 ) AS col0 
f620: 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
f630: 2d 2d 2d 2d 0d 0a 2d 38 39 0d 0a 2d 38 39 0d 0a  ----..-89..-89..
f640: 2d 38 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -89....onlyif my
f650: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
f660: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
f670: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
f680: 74 20 6c 61 62 65 6c 2d 33 32 33 0d 0a 53 45 4c  t label-323..SEL
f690: 45 43 54 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  ECT - CAST( NULL
f6a0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d   AS SIGNED ) * -
f6b0: 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20   - col1 AS col1 
f6c0: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
f6d0: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
f6e0: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
f6f0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
f700: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
f710: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
f720: 6c 2d 33 32 33 0d 0a 53 45 4c 45 43 54 20 2d 20  l-323..SELECT - 
f730: 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
f740: 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 2d 20 63  NTEGER ) * - - c
f750: 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol1 AS col1 FROM
f760: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
f770: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
f780: 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .NULL....onlyif 
f790: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
f7a0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
f7b0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
f7c0: 6f 72 74 20 6c 61 62 65 6c 2d 33 32 34 0d 0a 53  ort label-324..S
f7d0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 41  ELECT DISTINCT A
f7e0: 56 47 20 28 20 41 4c 4c 20 2b 20 43 41 53 54 28  VG ( ALL + CAST(
f7f0: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
f800: 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ) ) FROM tab2 co
f810: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
f820: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
f830: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
f840: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
f850: 20 6c 61 62 65 6c 2d 33 32 34 0d 0a 53 45 4c 45   label-324..SELE
f860: 43 54 20 44 49 53 54 49 4e 43 54 20 41 56 47 20  CT DISTINCT AVG 
f870: 28 20 41 4c 4c 20 2b 20 43 41 53 54 20 28 20 4e  ( ALL + CAST ( N
f880: 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
f890: 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72   ) FROM tab2 cor
f8a0: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
f8b0: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
f8c0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
f8d0: 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  NCT * FROM tab1 
f8e0: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
f8f0: 54 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 28  T NULL BETWEEN (
f900: 20 2b 20 32 30 20 29 20 41 4e 44 20 2d 20 36 38   + 20 ) AND - 68
f910: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
f920: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
f930: 54 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31  T + col2 AS col1
f940: 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
f950: 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 2a 20 2d 20   NOT - col1 * - 
f960: 2b 20 63 6f 6c 32 20 2b 20 2b 20 35 32 20 2b 20  + col2 + + 52 + 
f970: 63 6f 6c 30 20 42 45 54 57 45 45 4e 20 4e 55 4c  col0 BETWEEN NUL
f980: 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  L AND NULL..----
f990: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
f9a0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2b 20  ort..SELECT ( + 
f9b0: 2d 20 31 30 20 29 20 46 52 4f 4d 20 74 61 62 30  - 10 ) FROM tab0
f9c0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d 31 30  ..----..-10..-10
f9d0: 0d 0a 2d 31 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-10....onlyif 
f9e0: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
f9f0: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
fa00: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
fa10: 6c 2d 33 32 38 0d 0a 53 45 4c 45 43 54 20 44 49  l-328..SELECT DI
fa20: 53 54 49 4e 43 54 20 2b 20 53 55 4d 28 20 44 49  STINCT + SUM( DI
fa30: 53 54 49 4e 43 54 20 63 6f 6c 32 20 29 20 41 53  STINCT col2 ) AS
fa40: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
fa50: 0a 2d 2d 2d 2d 0d 0a 31 32 31 0d 0a 0d 0a 73 6b  .----..121....sk
fa60: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
fa70: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
fa80: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
fa90: 65 6c 2d 33 32 38 0d 0a 53 45 4c 45 43 54 20 44  el-328..SELECT D
faa0: 49 53 54 49 4e 43 54 20 2b 20 53 55 4d 20 28 20  ISTINCT + SUM ( 
fab0: 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 29 20  DISTINCT col2 ) 
fac0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
fad0: 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32 31 0d 0a 0d 0a  2..----..121....
fae0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
faf0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
fb00: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
fb10: 72 74 20 6c 61 62 65 6c 2d 33 32 39 0d 0a 53 45  rt label-329..SE
fb20: 4c 45 43 54 20 4d 49 4e 28 20 44 49 53 54 49 4e  LECT MIN( DISTIN
fb30: 43 54 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63  CT - col2 ) AS c
fb40: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
fb50: 2d 2d 2d 0d 0a 2d 39 39 0d 0a 0d 0a 73 6b 69 70  ---..-99....skip
fb60: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
fb70: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
fb80: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
fb90: 2d 33 32 39 0d 0a 53 45 4c 45 43 54 20 4d 49 4e  -329..SELECT MIN
fba0: 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f   ( DISTINCT - co
fbb0: 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l2 ) AS col0 FRO
fbc0: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  M tab0..----..-9
fbd0: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
fbe0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37  sort..SELECT - 7
fbf0: 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  8 AS col2 FROM t
fc00: 61 62 30 20 57 48 45 52 45 20 63 6f 6c 31 20 2a  ab0 WHERE col1 *
fc10: 20 2d 20 36 38 20 49 53 20 4e 4f 54 20 4e 55 4c   - 68 IS NOT NUL
fc20: 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d 0a 2d 37  L..----..-78..-7
fc30: 38 0d 0a 2d 37 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  8..-78....onlyif
fc40: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
fc50: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
fc60: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
fc70: 65 6c 2d 33 33 31 0d 0a 53 45 4c 45 43 54 20 44  el-331..SELECT D
fc80: 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a  ISTINCT COUNT( *
fc90: 20 29 20 2b 20 37 39 20 41 53 20 63 6f 6c 30 20   ) + 79 AS col0 
fca0: 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
fcb0: 2d 2d 2d 2d 0d 0a 38 32 0d 0a 0d 0a 73 6b 69 70  ----..82....skip
fcc0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
fcd0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
fce0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
fcf0: 2d 33 33 31 0d 0a 53 45 4c 45 43 54 20 44 49 53  -331..SELECT DIS
fd00: 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  TINCT COUNT ( * 
fd10: 29 20 2b 20 37 39 20 41 53 20 63 6f 6c 30 20 46  ) + 79 AS col0 F
fd20: 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
fd30: 2d 2d 2d 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79  ---..82....query
fd40: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
fd50: 43 54 20 44 49 53 54 49 4e 43 54 20 32 39 20 2a  CT DISTINCT 29 *
fd60: 20 34 38 20 2b 20 2b 20 38 36 20 2a 20 2b 20 63   48 + + 86 * + c
fd70: 6f 6c 31 20 2b 20 33 33 20 41 53 20 63 6f 6c 30  ol1 + 33 AS col0
fd80: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
fd90: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 35 35 0d 0a  r0..----..1855..
fda0: 32 36 32 39 0d 0a 35 34 36 37 0d 0a 0d 0a 71 75  2629..5467....qu
fdb0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
fdc0: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
fdd0: 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
fde0: 45 20 28 20 2d 20 31 31 20 2a 20 2b 20 38 36 20  E ( - 11 * + 86 
fdf0: 29 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  ) <> NULL..----.
fe00: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
fe10: 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
fe20: 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
fe30: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
fe40: 62 65 6c 2d 33 33 34 0d 0a 53 45 4c 45 43 54 20  bel-334..SELECT 
fe50: 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 2d 20  + col1 + col1 - 
fe60: 2b 20 2d 20 63 6f 6c 31 20 44 49 56 20 2b 20 63  + - col1 DIV + c
fe70: 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol2 AS col0 FROM
fe80: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 33   tab0..----..163
fe90: 0d 0a 32 0d 0a 34 34 0d 0a 0d 0a 73 6b 69 70 69  ..2..44....skipi
fea0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
feb0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
fec0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
fed0: 33 33 34 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  334..SELECT + co
fee0: 6c 31 20 2b 20 63 6f 6c 31 20 2d 20 2b 20 2d 20  l1 + col1 - + - 
fef0: 63 6f 6c 31 20 2f 20 2b 20 63 6f 6c 32 20 41 53  col1 / + col2 AS
ff00: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
ff10: 0a 2d 2d 2d 2d 0d 0a 31 36 33 0d 0a 32 0d 0a 34  .----..163..2..4
ff20: 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  4....query III r
ff30: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
ff40: 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
ff50: 20 2d 20 34 30 20 4e 4f 54 20 42 45 54 57 45 45   - 40 NOT BETWEE
ff60: 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d  N NULL AND NULL.
ff70: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
ff80: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
ff90: 20 44 49 53 54 49 4e 43 54 20 2d 20 32 35 20 46   DISTINCT - 25 F
ffa0: 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 43 52  ROM tab1 cor0 CR
ffb0: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53  OSS JOIN tab2 AS
ffc0: 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35   cor1..----..-25
ffd0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
ffe0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
fff0: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
10000 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
10010 20 28 20 4e 55 4c 4c 20 29 20 3e 3d 20 2d 20 63   ( NULL ) >= - c
10020 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol0..----....que
10030 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
10040 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
10050 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
10060 6f 72 30 20 57 48 45 52 45 20 2d 20 33 34 20 2d  or0 WHERE - 34 -
10070 20 2d 20 2b 20 63 6f 6c 30 20 49 53 20 4e 55 4c   - + col0 IS NUL
10080 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
10090 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
100a0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
100b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
100c0 62 65 6c 2d 33 33 39 0d 0a 53 45 4c 45 43 54 20  bel-339..SELECT 
100d0 44 49 53 54 49 4e 43 54 20 36 32 20 2a 20 2d 20  DISTINCT 62 * - 
100e0 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 2d 20  MAX( DISTINCT - 
100f0 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46  col2 ) AS col1 F
10100 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
10110 0d 0a 2d 2d 2d 2d 0d 0a 31 34 32 36 0d 0a 0d 0a  ..----..1426....
10120 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
10130 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
10140 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
10150 61 62 65 6c 2d 33 33 39 0d 0a 53 45 4c 45 43 54  abel-339..SELECT
10160 20 44 49 53 54 49 4e 43 54 20 36 32 20 2a 20 2d   DISTINCT 62 * -
10170 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20   MAX ( DISTINCT 
10180 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31  - col2 ) AS col1
10190 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
101a0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 32 36 0d 0a  r0..----..1426..
101b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
101c0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
101d0 43 54 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 2b 20  CT - col2 + - + 
101e0 34 35 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  45 FROM tab2 WHE
101f0 52 45 20 2b 20 63 6f 6c 31 20 49 53 20 4e 4f 54  RE + col1 IS NOT
10200 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30   NULL..----..-10
10210 33 0d 0a 2d 36 38 0d 0a 2d 38 35 0d 0a 0d 0a 71  3..-68..-85....q
10220 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
10230 53 45 4c 45 43 54 20 2d 20 38 39 20 2b 20 2b 20  SELECT - 89 + + 
10240 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
10250 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab0..----..-2
10260 0d 0a 2d 37 34 0d 0a 38 0d 0a 0d 0a 71 75 65 72  ..-74..8....quer
10270 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
10280 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
10290 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54  0 WHERE NULL BET
102a0 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 33 34  WEEN NULL AND 34
102b0 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2b 20 2b 20   + - col0 * + + 
102c0 63 6f 6c 30 20 2b 20 2b 20 38 30 0d 0a 2d 2d 2d  col0 + + 80..---
102d0 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
102e0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
102f0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
10300 78 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a  x: DECIMAL type:
10310 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
10320 72 74 20 6c 61 62 65 6c 2d 33 34 33 0d 0a 53 45  rt label-343..SE
10330 4c 45 43 54 20 34 31 20 2a 20 4d 41 58 28 20 41  LECT 41 * MAX( A
10340 4c 4c 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53  LL CAST( NULL AS
10350 20 44 45 43 49 4d 41 4c 20 29 20 29 20 41 53 20   DECIMAL ) ) AS 
10360 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col1 FROM tab0..
10370 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
10380 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
10390 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
103a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
103b0 65 6c 2d 33 34 33 0d 0a 53 45 4c 45 43 54 20 34  el-343..SELECT 4
103c0 31 20 2a 20 4d 41 58 20 28 20 41 4c 4c 20 43 41  1 * MAX ( ALL CA
103d0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41  ST ( NULL AS REA
103e0 4c 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52  L ) ) AS col1 FR
103f0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab0..----..N
10400 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ULL....query III
10410 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
10420 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
10430 52 45 20 4e 4f 54 20 28 20 2b 20 63 6f 6c 31 20  RE NOT ( + col1 
10440 29 20 2b 20 2b 20 34 35 20 49 53 20 4e 4f 54 20  ) + + 45 IS NOT 
10450 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
10460 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
10470 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
10480 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
10490 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
104a0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
104b0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
104c0 49 53 54 49 4e 43 54 20 36 33 20 63 6f 6c 32 20  ISTINCT 63 col2 
104d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
104e0 30 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a 6f  0..----..63....o
104f0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
10500 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
10510 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
10520 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
10530 33 34 36 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  346..SELECT - co
10540 6c 31 20 44 49 56 20 2b 20 2d 20 37 30 20 46 52  l1 DIV + - 70 FR
10550 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
10560 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
10570 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
10580 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
10590 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
105a0 20 6c 61 62 65 6c 2d 33 34 36 0d 0a 53 45 4c 45   label-346..SELE
105b0 43 54 20 2d 20 63 6f 6c 31 20 2f 20 2b 20 2d 20  CT - col1 / + - 
105c0 37 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  70 FROM tab1 AS 
105d0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  cor0..----..0..0
105e0 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
105f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
10600 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20 2a  ISTINCT - col2 *
10610 20 2d 20 2d 20 28 20 2b 20 2d 20 63 6f 6c 31 20   - - ( + - col1 
10620 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
10630 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
10640 31 31 37 33 0d 0a 33 30 38 30 0d 0a 33 38 38 36  1173..3080..3886
10650 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
10660 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
10670 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57  FROM tab1 cor0 W
10680 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20  HERE NOT - col0 
10690 3e 20 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c 30 0d  > - col1 + col0.
106a0 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
106b0 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61  hashing to c6c0a
106c0 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31  4111b36d04dbc811
106d0 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 6f  a11e4d54cad....o
106e0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
106f0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
10700 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
10710 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
10720 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
10730 6c 2d 33 34 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-349..SELECT AL
10740 4c 20 2b 20 31 20 44 49 56 20 2d 20 4d 41 58 28  L + 1 DIV - MAX(
10750 20 2d 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d   - - col1 ) FROM
10760 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
10770 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
10780 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
10790 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
107a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
107b0 34 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  49..SELECT ALL +
107c0 20 31 20 2f 20 2d 20 4d 41 58 20 28 20 2d 20 2d   1 / - MAX ( - -
107d0 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62   col1 ) FROM tab
107e0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
107f0 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  .0....query III 
10800 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
10810 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
10820 45 20 4e 4f 54 20 2d 20 2b 20 36 30 20 2b 20 2d  E NOT - + 60 + -
10830 20 35 37 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d   57 IS NULL..---
10840 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
10850 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31  ing to c6c0a4111
10860 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65  b36d04dbc811a11e
10870 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79  4d54cad....query
10880 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
10890 43 54 20 2b 20 33 31 20 2a 20 2b 20 2b 20 63 6f  CT + 31 * + + co
108a0 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
108b0 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 38  tab2 WHERE NOT 8
108c0 33 20 2a 20 63 6f 6c 32 20 2a 20 2d 20 38 35 20  3 * col2 * - 85 
108d0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31  IS NULL..----..1
108e0 32 34 30 0d 0a 31 37 39 38 0d 0a 37 31 33 0d 0a  240..1798..713..
108f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10900 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30  t..SELECT - col0
10910 20 2a 20 2b 20 31 32 20 2a 20 32 37 20 41 53 20   * + 12 * 27 AS 
10920 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
10930 2d 2d 2d 2d 0d 0a 2d 31 36 35 32 34 0d 0a 2d 32  ----..-16524..-2
10940 37 35 34 30 0d 0a 2d 32 39 34 38 34 0d 0a 0d 0a  7540..-29484....
10950 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
10960 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
10970 54 20 36 33 20 2a 20 2b 20 63 6f 6c 32 20 41 53  T 63 * + col2 AS
10980 20 63 6f 6c 30 2c 20 36 38 20 46 52 4f 4d 20 74   col0, 68 FROM t
10990 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
109a0 2d 0d 0a 33 37 31 37 0d 0a 36 38 0d 0a 34 32 38  -..3717..68..428
109b0 34 0d 0a 36 38 0d 0a 36 30 34 38 0d 0a 36 38 0d  4..68..6048..68.
109c0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
109d0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
109e0 4e 43 54 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20  NCT col0 * col1 
109f0 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  - - col1 FROM ta
10a00 62 30 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  b0 cor0 WHERE NO
10a10 54 20 2d 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c  T - col0 IS NULL
10a20 0d 0a 2d 2d 2d 2d 0d 0a 31 32 39 36 0d 0a 31 38  ..----..1296..18
10a30 34 38 0d 0a 39 38 0d 0a 0d 0a 71 75 65 72 79 20  48..98....query 
10a40 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
10a50 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 2a 20  CT ALL - col2 * 
10a60 2d 20 32 35 20 41 53 20 63 6f 6c 31 2c 20 63 6f  - 25 AS col1, co
10a70 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
10a80 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 37 35  cor0..----..1475
10a90 0d 0a 35 0d 0a 31 37 30 30 0d 0a 34 37 0d 0a 32  ..5..1700..47..2
10aa0 34 30 30 0d 0a 31 34 0d 0a 0d 0a 6f 6e 6c 79 69  400..14....onlyi
10ab0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
10ac0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
10ad0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
10ae0 62 65 6c 2d 33 35 36 0d 0a 53 45 4c 45 43 54 20  bel-356..SELECT 
10af0 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  + - COUNT( * ) A
10b00 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
10b10 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
10b20 4f 54 20 2d 20 63 6f 6c 30 20 4e 4f 54 20 42 45  OT - col0 NOT BE
10b30 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2d  TWEEN NULL AND -
10b40 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   col1..----..0..
10b50 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
10b60 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
10b70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10b80 20 6c 61 62 65 6c 2d 33 35 36 0d 0a 53 45 4c 45   label-356..SELE
10b90 43 54 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a  CT + - COUNT ( *
10ba0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
10bb0 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
10bc0 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 4e 4f  RE NOT - col0 NO
10bd0 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  T BETWEEN NULL A
10be0 4e 44 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  ND - col1..----.
10bf0 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
10c00 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
10c10 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69  yntax: DIV for i
10c20 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
10c30 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
10c40 72 74 20 6c 61 62 65 6c 2d 33 35 37 0d 0a 53 45  rt label-357..SE
10c50 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20  LECT + COUNT( * 
10c60 29 20 44 49 56 20 2d 20 35 30 20 41 53 20 63 6f  ) DIV - 50 AS co
10c70 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
10c80 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  cor0..----..0...
10c90 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
10ca0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
10cb0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
10cc0 6c 61 62 65 6c 2d 33 35 37 0d 0a 53 45 4c 45 43  label-357..SELEC
10cd0 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T + COUNT ( * ) 
10ce0 2f 20 2d 20 35 30 20 41 53 20 63 6f 6c 32 20 46  / - 50 AS col2 F
10cf0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
10d00 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c  ..----..0....onl
10d10 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
10d20 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
10d30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
10d40 6c 61 62 65 6c 2d 33 35 38 0d 0a 53 45 4c 45 43  label-358..SELEC
10d50 54 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43  T COUNT( DISTINC
10d60 54 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30  T col1 ) AS col0
10d70 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
10d80 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  r0..----..3....s
10d90 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
10da0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
10db0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
10dc0 62 65 6c 2d 33 35 38 0d 0a 53 45 4c 45 43 54 20  bel-358..SELECT 
10dd0 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54  COUNT ( DISTINCT
10de0 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 20   col1 ) AS col0 
10df0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
10e00 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e  0..----..3....on
10e10 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
10e20 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
10e30 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
10e40 74 20 6c 61 62 65 6c 2d 33 35 39 0d 0a 53 45 4c  t label-359..SEL
10e50 45 43 54 20 2d 20 2b 20 35 36 20 2a 20 2b 20 43  ECT - + 56 * + C
10e60 4f 55 4e 54 28 20 2a 20 29 2c 20 2d 20 32 36 20  OUNT( * ), - 26 
10e70 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  + + COUNT( * ) A
10e80 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
10e90 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
10ea0 2d 31 36 38 0d 0a 2d 32 33 0d 0a 0d 0a 73 6b 69  -168..-23....ski
10eb0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
10ec0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
10ed0 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
10ee0 65 6c 2d 33 35 39 0d 0a 53 45 4c 45 43 54 20 2d  el-359..SELECT -
10ef0 20 2b 20 35 36 20 2a 20 2b 20 43 4f 55 4e 54 20   + 56 * + COUNT 
10f00 28 20 2a 20 29 2c 20 2d 20 32 36 20 2b 20 2b 20  ( * ), - 26 + + 
10f10 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
10f20 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
10f30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36   cor0..----..-16
10f40 38 0d 0a 2d 32 33 0d 0a 0d 0a 71 75 65 72 79 20  8..-23....query 
10f50 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
10f60 43 54 20 41 4c 4c 20 63 6f 6c 31 20 41 53 20 63  CT ALL col1 AS c
10f70 6f 6c 30 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c  ol0, col0 AS col
10f80 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
10f90 2d 0d 0a 31 0d 0a 39 37 0d 0a 32 31 0d 0a 38 37  -..1..97..21..87
10fa0 0d 0a 38 31 0d 0a 31 35 0d 0a 0d 0a 6f 6e 6c 79  ..81..15....only
10fb0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
10fc0 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74  syntax: aggregat
10fd0 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  e syntax: SIGNED
10fe0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
10ff0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
11000 36 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  61..SELECT DISTI
11010 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2f  NCT COUNT( * ) /
11020 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
11030 20 53 49 47 4e 45 44 20 29 20 63 6f 6c 31 20 46   SIGNED ) col1 F
11040 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
11050 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
11060 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
11070 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
11080 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
11090 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
110a0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
110b0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
110c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
110d0 6c 61 62 65 6c 2d 33 36 31 0d 0a 53 45 4c 45 43  label-361..SELEC
110e0 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54  T DISTINCT COUNT
110f0 20 28 20 2a 20 29 20 2f 20 2b 20 43 41 53 54 20   ( * ) / + CAST 
11100 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
11110 52 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  R ) col1 FROM ta
11120 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b0..----..NULL..
11130 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
11140 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
11150 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  x: ..query II ro
11160 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 36 32 0d  wsort label-362.
11170 0a 53 45 4c 45 43 54 20 53 55 4d 28 20 2b 20 31  .SELECT SUM( + 1
11180 35 20 29 20 2b 20 2d 20 39 34 20 41 53 20 63 6f  5 ) + - 94 AS co
11190 6c 32 2c 20 4d 41 58 28 20 2d 20 2b 20 63 6f 6c  l2, MAX( - + col
111a0 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  0 ) AS col1 FROM
111b0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 39   tab2..----..-49
111c0 0d 0a 2d 34 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-46....skipif 
111d0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
111e0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
111f0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
11200 36 32 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20 28  62..SELECT SUM (
11210 20 2b 20 31 35 20 29 20 2b 20 2d 20 39 34 20 41   + 15 ) + - 94 A
11220 53 20 63 6f 6c 32 2c 20 4d 41 58 20 28 20 2d 20  S col2, MAX ( - 
11230 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31  + col0 ) AS col1
11240 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
11250 0d 0a 2d 34 39 0d 0a 2d 34 36 0d 0a 0d 0a 6f 6e  ..-49..-46....on
11260 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
11270 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
11280 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11290 20 6c 61 62 65 6c 2d 33 36 33 0d 0a 53 45 4c 45   label-363..SELE
112a0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f  CT DISTINCT - CO
112b0 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20 37 32 20  UNT( * ) + - 72 
112c0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
112d0 2d 2d 2d 2d 0d 0a 2d 37 35 0d 0a 0d 0a 73 6b 69  ----..-75....ski
112e0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
112f0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
11300 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
11310 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
11320 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
11330 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
11340 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
11350 73 6f 72 74 20 6c 61 62 65 6c 2d 33 36 33 0d 0a  sort label-363..
11360 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
11370 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20  - COUNT ( * ) + 
11380 2d 20 37 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74  - 72 col2 FROM t
11390 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 35 0d 0a  ab2..----..-75..
113a0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
113b0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
113c0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
113d0 73 6f 72 74 20 6c 61 62 65 6c 2d 33 36 34 0d 0a  sort label-364..
113e0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55  SELECT ALL + COU
113f0 4e 54 28 20 2a 20 29 20 2b 20 39 37 20 46 52 4f  NT( * ) + 97 FRO
11400 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab0..----..10
11410 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
11420 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
11430 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
11440 6f 72 74 20 6c 61 62 65 6c 2d 33 36 34 0d 0a 53  ort label-364..S
11450 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e  ELECT ALL + COUN
11460 54 20 28 20 2a 20 29 20 2b 20 39 37 20 46 52 4f  T ( * ) + 97 FRO
11470 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab0..----..10
11480 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  0....query II ro
11490 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
114a0 31 37 20 2a 20 2b 20 28 20 2d 20 32 32 20 29 20  17 * + ( - 22 ) 
114b0 41 53 20 63 6f 6c 30 2c 20 2d 20 39 34 20 41 53  AS col0, - 94 AS
114c0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
114d0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
114e0 37 34 0d 0a 2d 39 34 0d 0a 33 37 34 0d 0a 2d 39  74..-94..374..-9
114f0 34 0d 0a 33 37 34 0d 0a 2d 39 34 0d 0a 0d 0a 73  4..374..-94....s
11500 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
11510 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
11520 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
11530 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
11540 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
11550 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
11560 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c   - col0 AS col1,
11570 20 63 6f 6c 30 20 2a 20 2d 20 2b 20 36 37 20 2b   col0 * - + 67 +
11580 20 35 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   50 col1 FROM ta
11590 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0 cor0..----..-
115a0 31 35 0d 0a 2d 39 35 35 0d 0a 2d 38 37 0d 0a 2d  15..-955..-87..-
115b0 35 37 37 39 0d 0a 2d 39 37 0d 0a 2d 36 34 34 39  5779..-97..-6449
115c0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
115d0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
115e0 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74  tax: DIV for int
115f0 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
11600 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11610 20 6c 61 62 65 6c 2d 33 36 37 0d 0a 53 45 4c 45   label-367..SELE
11620 43 54 20 41 4c 4c 20 2b 20 2b 20 37 20 44 49 56  CT ALL + + 7 DIV
11630 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
11640 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
11650 2d 2d 2d 0d 0a 32 0d 0a 0d 0a 73 6b 69 70 69 66  ---..2....skipif
11660 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
11670 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
11680 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
11690 36 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  67..SELECT ALL +
116a0 20 2b 20 37 20 2f 20 43 4f 55 4e 54 20 28 20 2a   + 7 / COUNT ( *
116b0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
116c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 0d 0a 0d  cor0..----..2...
116d0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
116e0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
116f0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
11700 6f 72 74 20 6c 61 62 65 6c 2d 33 36 38 0d 0a 53  ort label-368..S
11710 45 4c 45 43 54 20 2b 20 4d 49 4e 28 20 41 4c 4c  ELECT + MIN( ALL
11720 20 2b 20 28 20 2d 20 38 20 29 20 29 20 41 53 20   + ( - 8 ) ) AS 
11730 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
11740 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38  S cor0..----..-8
11750 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
11760 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
11770 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
11780 72 74 20 6c 61 62 65 6c 2d 33 36 38 0d 0a 53 45  rt label-368..SE
11790 4c 45 43 54 20 2b 20 4d 49 4e 20 28 20 41 4c 4c  LECT + MIN ( ALL
117a0 20 2b 20 28 20 2d 20 38 20 29 20 29 20 41 53 20   + ( - 8 ) ) AS 
117b0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
117c0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38  S cor0..----..-8
117d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
117e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
117f0 39 32 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 41 53  92 * + + col2 AS
11800 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
11810 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34  AS cor0..----..4
11820 33 32 34 0d 0a 39 31 30 38 0d 0a 39 32 30 0d 0a  324..9108..920..
11830 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
11840 74 0d 0a 53 45 4c 45 43 54 20 2d 20 32 38 20 2b  t..SELECT - 28 +
11850 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   + col1 FROM tab
11860 32 20 57 48 45 52 45 20 2b 20 2d 20 63 6f 6c 30  2 WHERE + - col0
11870 20 2a 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 2d 20   * - col1 * - - 
11880 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col0 IS NULL..--
11890 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
118a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37 37  wsort..SELECT 77
118b0 20 2a 20 2b 20 2d 20 33 32 20 2d 20 2d 20 63 6f   * + - 32 - - co
118c0 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
118d0 2d 2d 0d 0a 2d 32 33 37 33 0d 0a 2d 32 33 37 39  --..-2373..-2379
118e0 0d 0a 2d 32 34 31 33 0d 0a 0d 0a 71 75 65 72 79  ..-2413....query
118f0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
11900 43 54 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 31 37  CT col1 + + - 17
11910 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
11920 0d 0a 2d 31 36 0d 0a 34 0d 0a 36 34 0d 0a 0d 0a  ..-16..4..64....
11930 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
11940 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
11950 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
11960 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 2a 20  HERE NOT col1 * 
11970 31 30 20 49 53 20 4e 55 4c 4c 20 4f 52 20 4e 4f  10 IS NULL OR NO
11980 54 20 32 32 20 2a 20 2d 20 2b 20 63 6f 6c 31 20  T 22 * - + col1 
11990 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
119a0 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
119b0 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35  ing to 75c998aa5
119c0 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39  3ac83218cbf2feb9
119d0 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69  62d0a49....onlyi
119e0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
119f0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
11a00 70 65 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  pe: DIV for inte
11a10 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
11a20 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
11a30 20 6c 61 62 65 6c 2d 33 37 34 0d 0a 53 45 4c 45   label-374..SELE
11a40 43 54 20 2d 20 35 31 20 2a 20 63 6f 6c 30 20 2b  CT - 51 * col0 +
11a50 20 28 20 38 35 20 29 20 2d 20 2b 20 63 6f 6c 32   ( 85 ) - + col2
11a60 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 2b 20 2d 20   * - - col0 + - 
11a70 63 6f 6c 30 20 44 49 56 20 2b 20 43 41 53 54 28  col0 DIV + CAST(
11a80 20 2b 20 63 6f 6c 30 20 41 53 20 53 49 47 4e 45   + col0 AS SIGNE
11a90 44 20 29 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 2b  D ) + + col0 * +
11aa0 20 2d 20 38 32 20 2b 20 2b 20 63 6f 6c 30 20 2d   - 82 + + col0 -
11ab0 20 2d 20 38 30 20 44 49 56 20 2d 20 2b 20 63 6f   - 80 DIV - + co
11ac0 6c 32 20 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 30  l2 AS col0, col0
11ad0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
11ae0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
11af0 0d 0a 2d 31 31 35 34 34 0d 0a 35 31 0d 0a 2d 31  ..-11544..51..-1
11b00 36 31 35 32 0d 0a 38 35 0d 0a 2d 31 38 31 31 37  6152..85..-18117
11b10 0d 0a 39 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..91....skipif m
11b20 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
11b30 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
11b40 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37  rowsort label-37
11b50 34 0d 0a 53 45 4c 45 43 54 20 2d 20 35 31 20 2a  4..SELECT - 51 *
11b60 20 63 6f 6c 30 20 2b 20 28 20 38 35 20 29 20 2d   col0 + ( 85 ) -
11b70 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 2d 20 63 6f   + col2 * - - co
11b80 6c 30 20 2b 20 2d 20 63 6f 6c 30 20 2f 20 2b 20  l0 + - col0 / + 
11b90 43 41 53 54 20 28 20 2b 20 63 6f 6c 30 20 41 53  CAST ( + col0 AS
11ba0 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 63   INTEGER ) + + c
11bb0 6f 6c 30 20 2a 20 2b 20 2d 20 38 32 20 2b 20 2b  ol0 * + - 82 + +
11bc0 20 63 6f 6c 30 20 2d 20 2d 20 38 30 20 2f 20 2d   col0 - - 80 / -
11bd0 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 2c   + col2 AS col0,
11be0 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
11bf0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
11c00 0a 2d 2d 2d 2d 0d 0a 2d 31 31 35 34 34 0d 0a 35  .----..-11544..5
11c10 31 0d 0a 2d 31 36 31 35 32 0d 0a 38 35 0d 0a 2d  1..-16152..85..-
11c20 31 38 31 31 37 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c  18117..91....onl
11c30 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
11c40 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
11c50 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
11c60 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37  rowsort label-37
11c70 35 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 41  5..SELECT + + CA
11c80 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
11c90 45 44 20 29 20 2b 20 2d 20 63 6f 6c 32 20 46 52  ED ) + - col2 FR
11ca0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
11cb0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
11cc0 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  L..NULL....skipi
11cd0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
11ce0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
11cf0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
11d00 33 37 35 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  375..SELECT + + 
11d10 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
11d20 4e 54 45 47 45 52 20 29 20 2b 20 2d 20 63 6f 6c  NTEGER ) + - col
11d30 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
11d40 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
11d50 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .NULL..NULL....q
11d60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
11d70 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 63  SELECT ALL + - c
11d80 6f 6c 30 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 2b  ol0 * + + col1 +
11d90 20 34 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   4 AS col2 FROM 
11da0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
11db0 2d 2d 0d 0a 2d 31 32 31 31 0d 0a 2d 31 38 32 33  --..-1211..-1823
11dc0 0d 0a 2d 39 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-93....onlyif 
11dd0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
11de0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
11df0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
11e00 6f 72 74 20 6c 61 62 65 6c 2d 33 37 37 0d 0a 53  ort label-377..S
11e10 45 4c 45 43 54 20 2d 20 37 20 44 49 56 20 2d 20  ELECT - 7 DIV - 
11e20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 2b 20  col0 * + col0 + 
11e30 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 31 20  + col2 * - col1 
11e40 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
11e50 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
11e60 0a 2d 31 31 37 33 0d 0a 2d 33 30 38 30 0d 0a 2d  .-1173..-3080..-
11e70 33 38 38 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  3886....skipif m
11e80 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
11e90 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
11ea0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 37  owsort label-377
11eb0 0d 0a 53 45 4c 45 43 54 20 2d 20 37 20 2f 20 2d  ..SELECT - 7 / -
11ec0 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 2b   col0 * + col0 +
11ed0 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 31   + col2 * - col1
11ee0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
11ef0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
11f00 0d 0a 2d 31 31 37 33 0d 0a 2d 33 30 38 30 0d 0a  ..-1173..-3080..
11f10 2d 33 38 38 36 0d 0a 0d 0a 71 75 65 72 79 20 49  -3886....query I
11f20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
11f30 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
11f40 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
11f50 57 48 45 52 45 20 39 38 20 2a 20 2b 20 63 6f 6c  WHERE 98 * + col
11f60 30 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  0 BETWEEN NULL A
11f70 4e 44 20 37 39 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ND 79..----....q
11f80 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
11f90 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
11fa0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
11fb0 20 57 48 45 52 45 20 35 37 20 49 53 20 4e 4f 54   WHERE 57 IS NOT
11fc0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
11fd0 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
11fe0 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61   c4b42765dff94ea
11ff0 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62  aa46040e537fb43b
12000 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
12010 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
12020 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
12030 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38  rowsort label-38
12040 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
12050 43 54 20 2d 20 4d 41 58 28 20 41 4c 4c 20 2b 20  CT - MAX( ALL + 
12060 39 39 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  99 ) FROM tab0 A
12070 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  S cor0..----..-9
12080 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
12090 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
120a0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
120b0 6f 72 74 20 6c 61 62 65 6c 2d 33 38 30 0d 0a 53  ort label-380..S
120c0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
120d0 20 4d 41 58 20 28 20 41 4c 4c 20 2b 20 39 39 20   MAX ( ALL + 99 
120e0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
120f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a  or0..----..-99..
12100 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12110 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 28 20  t..SELECT + + ( 
12120 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46  col2 ) AS col0 F
12130 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
12140 4f 54 20 28 20 63 6f 6c 32 20 49 53 20 4e 55 4c  OT ( col2 IS NUL
12150 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34  L )..----..23..4
12160 30 0d 0a 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49  0..58....query I
12170 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
12180 20 28 20 2d 20 63 6f 6c 31 20 29 20 2a 20 35 37   ( - col1 ) * 57
12190 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
121a0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 39 37 0d  b0..----..-1197.
121b0 0a 2d 34 36 31 37 0d 0a 2d 35 37 0d 0a 0d 0a 6f  .-4617..-57....o
121c0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
121d0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
121e0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
121f0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
12200 2d 33 38 33 0d 0a 53 45 4c 45 43 54 20 44 49 53  -383..SELECT DIS
12210 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 41 53 20  TINCT + col2 AS 
12220 63 6f 6c 30 2c 20 34 35 20 44 49 56 20 2b 20 2d  col0, 45 DIV + -
12230 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
12240 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
12250 30 0d 0a 30 0d 0a 34 37 0d 0a 2d 33 0d 0a 39 39  0..0..47..-3..99
12260 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
12270 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
12280 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
12290 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 33  owsort label-383
122a0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
122b0 54 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  T + col2 AS col0
122c0 2c 20 34 35 20 2f 20 2b 20 2d 20 63 6f 6c 30 20  , 45 / + - col0 
122d0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
122e0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 30 0d 0a  0..----..10..0..
122f0 34 37 0d 0a 2d 33 0d 0a 39 39 0d 0a 30 0d 0a 0d  47..-3..99..0...
12300 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12310 0d 0a 53 45 4c 45 43 54 20 33 31 20 2a 20 2d 20  ..SELECT 31 * - 
12320 63 6f 6c 30 20 2a 20 2b 20 2d 20 63 6f 6c 31 20  col0 * + - col1 
12330 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
12340 0a 33 30 30 37 0d 0a 33 37 36 36 35 0d 0a 35 36  .3007..37665..56
12350 36 33 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  637....query II 
12360 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
12370 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 2c 20  - col2 AS col0, 
12380 2d 20 34 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 2b  - 4 + col0 + - +
12390 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
123a0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
123b0 32 33 0d 0a 2d 34 0d 0a 2d 34 30 0d 0a 2d 34 0d  23..-4..-40..-4.
123c0 0a 2d 35 38 0d 0a 2d 34 0d 0a 0d 0a 6f 6e 6c 79  .-58..-4....only
123d0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
123e0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
123f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
12400 61 62 65 6c 2d 33 38 36 0d 0a 53 45 4c 45 43 54  abel-386..SELECT
12410 20 4d 41 58 28 20 2d 20 2b 20 33 31 20 29 20 46   MAX( - + 31 ) F
12420 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
12430 2d 33 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -31....skipif my
12440 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
12450 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
12460 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 36 0d  wsort label-386.
12470 0a 53 45 4c 45 43 54 20 4d 41 58 20 28 20 2d 20  .SELECT MAX ( - 
12480 2b 20 33 31 20 29 20 46 52 4f 4d 20 74 61 62 31  + 31 ) FROM tab1
12490 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31 0d 0a 0d 0a 71  ..----..-31....q
124a0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
124b0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
124c0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
124d0 20 57 48 45 52 45 20 28 20 2d 20 63 6f 6c 31 20   WHERE ( - col1 
124e0 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55  ) NOT BETWEEN NU
124f0 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d  LL AND NULL..---
12500 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
12510 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
12520 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
12530 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38  rowsort label-38
12540 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
12550 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20  CT COUNT( * ) * 
12560 37 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  70 FROM tab2 cor
12570 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31 30 0d 0a 0d 0a  0..----..210....
12580 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
12590 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
125a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
125b0 61 62 65 6c 2d 33 38 38 0d 0a 53 45 4c 45 43 54  abel-388..SELECT
125c0 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20   DISTINCT COUNT 
125d0 28 20 2a 20 29 20 2a 20 37 30 20 46 52 4f 4d 20  ( * ) * 70 FROM 
125e0 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
125f0 0a 32 31 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .210....query I 
12600 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
12610 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 33 37 20  DISTINCT + - 37 
12620 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
12630 32 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  2 cor0 CROSS JOI
12640 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a  N tab0 AS cor1..
12650 2d 2d 2d 2d 0d 0a 2d 33 37 0d 0a 0d 0a 6f 6e 6c  ----..-37....onl
12660 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
12670 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
12680 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12690 6c 61 62 65 6c 2d 33 39 30 0d 0a 53 45 4c 45 43  label-390..SELEC
126a0 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c  T COUNT( * ) col
126b0 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  1 FROM tab1 cor0
126c0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30   CROSS JOIN tab0
126d0 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
126e0 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
126f0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
12700 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
12710 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
12720 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
12730 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
12740 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
12750 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
12760 65 6c 2d 33 39 30 0d 0a 53 45 4c 45 43 54 20 43  el-390..SELECT C
12770 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 31 20  OUNT ( * ) col1 
12780 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 43  FROM tab1 cor0 C
12790 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41  ROSS JOIN tab0 A
127a0 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d  S cor1..----..9.
127b0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
127c0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
127d0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
127e0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
127f0 61 62 65 6c 2d 33 39 31 0d 0a 53 45 4c 45 43 54  abel-391..SELECT
12800 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 41   DISTINCT col1 A
12810 53 20 63 6f 6c 31 2c 20 43 41 53 54 28 20 4e 55  S col1, CAST( NU
12820 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41  LL AS SIGNED ) A
12830 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
12840 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 4e 55 4c 4c  ..----..14..NULL
12850 0d 0a 34 37 0d 0a 4e 55 4c 4c 0d 0a 35 0d 0a 4e  ..47..NULL..5..N
12860 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
12870 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
12880 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
12890 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39 31  owsort label-391
128a0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
128b0 54 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 2c 20  T col1 AS col1, 
128c0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
128d0 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31  NTEGER ) AS col1
128e0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
128f0 0d 0a 31 34 0d 0a 4e 55 4c 4c 0d 0a 34 37 0d 0a  ..14..NULL..47..
12900 4e 55 4c 4c 0d 0a 35 0d 0a 4e 55 4c 4c 0d 0a 0d  NULL..5..NULL...
12910 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
12920 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
12930 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
12940 20 4e 55 4c 4c 20 3c 3d 20 2b 20 2b 20 35 30 0d   NULL <= + + 50.
12950 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
12960 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
12970 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2b 20 63 6f   ALL + col1 + co
12980 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
12990 63 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c  cor0 WHERE + col
129a0 30 20 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 <= NULL..----.
129b0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
129c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
129d0 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72   * FROM tab2 cor
129e0 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 4f  0 WHERE NOT ( NO
129f0 54 20 2b 20 33 34 20 49 53 20 4e 55 4c 4c 20 29  T + 34 IS NULL )
12a00 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
12a10 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
12a20 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
12a30 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
12a40 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2b 20 63   WHERE NOT ( + c
12a50 6f 6c 32 20 2f 20 33 35 20 3c 3e 20 4e 55 4c 4c  ol2 / 35 <> NULL
12a60 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79   )..----....only
12a70 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
12a80 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
12a90 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
12aa0 61 62 65 6c 2d 33 39 36 0d 0a 53 45 4c 45 43 54  abel-396..SELECT
12ab0 20 44 49 53 54 49 4e 43 54 20 33 31 20 2d 20 2d   DISTINCT 31 - -
12ac0 20 2d 20 43 4f 55 4e 54 28 20 39 20 29 20 41 53   - COUNT( 9 ) AS
12ad0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
12ae0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
12af0 54 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55  T col2 IS NOT NU
12b00 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 31 0d 0a 0d 0a  LL..----..31....
12b10 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
12b20 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
12b30 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
12b40 61 62 65 6c 2d 33 39 36 0d 0a 53 45 4c 45 43 54  abel-396..SELECT
12b50 20 44 49 53 54 49 4e 43 54 20 33 31 20 2d 20 2d   DISTINCT 31 - -
12b60 20 2d 20 43 4f 55 4e 54 20 28 20 39 20 29 20 41   - COUNT ( 9 ) A
12b70 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
12b80 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
12b90 4f 54 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e  OT col2 IS NOT N
12ba0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 31 0d 0a 0d  ULL..----..31...
12bb0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
12bc0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
12bd0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
12be0 6f 72 74 20 6c 61 62 65 6c 2d 33 39 37 0d 0a 53  ort label-397..S
12bf0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
12c00 20 2d 20 33 36 20 2a 20 2d 20 28 20 2d 20 33 38   - 36 * - ( - 38
12c10 20 29 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20   ) * COUNT( * ) 
12c20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
12c30 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 31 30 34 0d 0a  0..----..-4104..
12c40 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
12c50 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
12c60 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12c70 20 6c 61 62 65 6c 2d 33 39 37 0d 0a 53 45 4c 45   label-397..SELE
12c80 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20  CT DISTINCT + - 
12c90 33 36 20 2a 20 2d 20 28 20 2d 20 33 38 20 29 20  36 * - ( - 38 ) 
12ca0 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52  * COUNT ( * ) FR
12cb0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
12cc0 0a 2d 2d 2d 2d 0d 0a 2d 34 31 30 34 0d 0a 0d 0a  .----..-4104....
12cd0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
12ce0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
12cf0 45 44 20 74 79 70 65 3a 20 44 49 56 20 66 6f 72  ED type: DIV for
12d00 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
12d10 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
12d20 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39 38 0d 0a  sort label-398..
12d30 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 44 49  SELECT + col2 DI
12d40 56 20 2b 20 43 41 53 54 28 20 2d 20 63 6f 6c 32  V + CAST( - col2
12d50 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
12d60 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
12d70 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31  ----..-1..-1..-1
12d80 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
12d90 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
12da0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
12db0 72 74 20 6c 61 62 65 6c 2d 33 39 38 0d 0a 53 45  rt label-398..SE
12dc0 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2f 20 2b 20  LECT + col2 / + 
12dd0 43 41 53 54 20 28 20 2d 20 63 6f 6c 32 20 41 53  CAST ( - col2 AS
12de0 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
12df0 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
12e00 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a  --..-1..-1..-1..
12e10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12e20 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
12e30 43 54 20 33 39 20 2b 20 2b 20 2b 20 63 6f 6c 32  CT 39 + + + col2
12e40 20 2b 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63   + + - col1 AS c
12e50 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
12e60 2d 2d 2d 0d 0a 31 31 0d 0a 32 0d 0a 33 30 0d 0a  ---..11..2..30..
12e70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12e80 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 37  t..SELECT ALL 87
12e90 20 2b 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d   + + - col2 FROM
12ea0 20 74 61 62 32 20 57 48 45 52 45 20 2d 20 2d 20   tab2 WHERE - - 
12eb0 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col1 IS NULL..--
12ec0 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  --....skipif pos
12ed0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
12ee0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
12ef0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
12f00 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
12f10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
12f20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
12f30 2b 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 33 38 20  + - col2 + - 38 
12f40 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
12f50 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
12f60 30 36 0d 0a 2d 31 33 34 0d 0a 2d 39 37 0d 0a 0d  06..-134..-97...
12f70 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
12f80 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
12f90 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
12fa0 48 45 52 45 20 28 20 2b 20 63 6f 6c 32 20 29 20  HERE ( + col2 ) 
12fb0 2b 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c  + + col1 IS NULL
12fc0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
12fd0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
12fe0 54 20 41 4c 4c 20 63 6f 6c 31 20 2a 20 2b 20 38  T ALL col1 * + 8
12ff0 36 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  6 + col1 FROM ta
13000 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34  b2 cor0..----..4
13010 34 33 37 0d 0a 35 38 32 39 0d 0a 36 36 39 39 0d  437..5829..6699.
13020 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
13030 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
13040 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
13050 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 34 0d  wsort label-404.
13060 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28  .SELECT + COUNT(
13070 20 2a 20 29 20 2b 20 2d 20 2d 20 4d 41 58 28 20   * ) + - - MAX( 
13080 28 20 38 34 20 29 20 29 20 46 52 4f 4d 20 74 61  ( 84 ) ) FROM ta
13090 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
130a0 0d 0a 38 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..87....skipif m
130b0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
130c0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
130d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 34  owsort label-404
130e0 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
130f0 20 28 20 2a 20 29 20 2b 20 2d 20 2d 20 4d 41 58   ( * ) + - - MAX
13100 20 28 20 28 20 38 34 20 29 20 29 20 46 52 4f 4d   ( ( 84 ) ) FROM
13110 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
13120 2d 2d 2d 0d 0a 38 37 0d 0a 0d 0a 6f 6e 6c 79 69  ---..87....onlyi
13130 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
13140 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
13150 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
13160 62 65 6c 2d 34 30 35 0d 0a 53 45 4c 45 43 54 20  bel-405..SELECT 
13170 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 43 4f 55  DISTINCT - - COU
13180 4e 54 28 20 2a 20 29 20 2a 20 2d 20 36 38 20 63  NT( * ) * - 68 c
13190 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
131a0 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
131b0 20 74 61 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d   tab2 AS cor1..-
131c0 2d 2d 2d 0d 0a 2d 36 31 32 0d 0a 0d 0a 73 6b 69  ---..-612....ski
131d0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
131e0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
131f0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
13200 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
13210 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
13220 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
13230 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
13240 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 35 0d 0a  sort label-405..
13250 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
13260 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  - - COUNT ( * ) 
13270 2a 20 2d 20 36 38 20 63 6f 6c 30 20 46 52 4f 4d  * - 68 col0 FROM
13280 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52   tab1 AS cor0 CR
13290 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53  OSS JOIN tab2 AS
132a0 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 31   cor1..----..-61
132b0 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  2....onlyif mysq
132c0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
132d0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
132e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
132f0 6c 61 62 65 6c 2d 34 30 36 0d 0a 53 45 4c 45 43  label-406..SELEC
13300 54 20 35 38 20 44 49 56 20 2b 20 63 6f 6c 32 20  T 58 DIV + col2 
13310 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
13320 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  1..----..0..0..0
13330 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
13340 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
13350 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
13360 72 74 20 6c 61 62 65 6c 2d 34 30 36 0d 0a 53 45  rt label-406..SE
13370 4c 45 43 54 20 35 38 20 2f 20 2b 20 63 6f 6c 32  LECT 58 / + col2
13380 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
13390 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  b1..----..0..0..
133a0 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
133b0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
133c0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49  ntax: ..query II
133d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
133e0 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  07..SELECT DISTI
133f0 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  NCT COUNT( * ) A
13400 53 20 63 6f 6c 32 2c 20 32 38 20 41 53 20 63 6f  S col2, 28 AS co
13410 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
13420 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
13430 74 61 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab2 AS cor1..--
13440 2d 2d 0d 0a 39 0d 0a 32 38 0d 0a 0d 0a 73 6b 69  --..9..28....ski
13450 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
13460 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
13470 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
13480 65 6c 2d 34 30 37 0d 0a 53 45 4c 45 43 54 20 44  el-407..SELECT D
13490 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20  ISTINCT COUNT ( 
134a0 2a 20 29 20 41 53 20 63 6f 6c 32 2c 20 32 38 20  * ) AS col2, 28 
134b0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
134c0 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
134d0 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72  JOIN tab2 AS cor
134e0 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 32 38 0d 0a  1..----..9..28..
134f0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
13500 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
13510 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  x: ..query II ro
13520 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 38 0d  wsort label-408.
13530 0a 53 45 4c 45 43 54 20 36 31 20 41 53 20 63 6f  .SELECT 61 AS co
13540 6c 32 2c 20 43 4f 55 4e 54 28 20 2a 20 29 20 63  l2, COUNT( * ) c
13550 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
13560 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
13570 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d   tab0 AS cor1..-
13580 2d 2d 2d 0d 0a 36 31 0d 0a 39 0d 0a 0d 0a 73 6b  ---..61..9....sk
13590 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
135a0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
135b0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
135c0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
135d0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
135e0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
135f0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
13600 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 38  owsort label-408
13610 0d 0a 53 45 4c 45 43 54 20 36 31 20 41 53 20 63  ..SELECT 61 AS c
13620 6f 6c 32 2c 20 43 4f 55 4e 54 20 28 20 2a 20 29  ol2, COUNT ( * )
13630 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
13640 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
13650 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d  IN tab0 AS cor1.
13660 0a 2d 2d 2d 2d 0d 0a 36 31 0d 0a 39 0d 0a 0d 0a  .----..61..9....
13670 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
13680 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 35 38  .SELECT ALL - 58
13690 20 2b 20 2b 20 35 35 20 46 52 4f 4d 20 74 61 62   + + 55 FROM tab
136a0 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
136b0 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72  JOIN tab2 AS cor
136c0 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
136d0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 39 35 62  s hashing to 95b
136e0 36 62 39 62 34 61 61 65 35 63 63 32 64 39 35 34  6b9b4aae5cc2d954
136f0 35 64 62 39 66 38 39 34 30 62 32 64 63 0d 0a 0d  5db9f8940b2dc...
13700 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
13710 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 39  ..SELECT ALL + 9
13720 39 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20  9 + - col0 FROM 
13730 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
13740 0a 32 34 0d 0a 33 35 0d 0a 35 33 0d 0a 0d 0a 6f  .24..35..53....o
13750 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
13760 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
13770 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
13780 74 20 6c 61 62 65 6c 2d 34 31 31 0d 0a 53 45 4c  t label-411..SEL
13790 45 43 54 20 41 4c 4c 20 2d 20 30 20 2a 20 4d 41  ECT ALL - 0 * MA
137a0 58 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  X( DISTINCT - co
137b0 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l1 ) AS col2 FRO
137c0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
137d0 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  ----..0....skipi
137e0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
137f0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
13800 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
13810 34 31 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  411..SELECT ALL 
13820 2d 20 30 20 2a 20 4d 41 58 20 28 20 44 49 53 54  - 0 * MAX ( DIST
13830 49 4e 43 54 20 2d 20 63 6f 6c 31 20 29 20 41 53  INCT - col1 ) AS
13840 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
13850 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor0..----..0
13860 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
13870 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
13880 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
13890 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 32 32  0 WHERE NOT - 22
138a0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
138b0 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
138c0 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
138d0 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
138e0 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49  43b7....query II
138f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
13900 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31   DISTINCT + col1
13910 20 41 53 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c 30   AS col1, + col0
13920 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
13930 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 34 36  r0..----..51..46
13940 0d 0a 36 37 0d 0a 37 35 0d 0a 37 37 0d 0a 36 34  ..67..75..77..64
13950 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
13960 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
13970 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
13980 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
13990 6c 61 62 65 6c 2d 34 31 34 0d 0a 53 45 4c 45 43  label-414..SELEC
139a0 54 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  T - col1 AS col2
139b0 2c 20 2d 20 28 20 2d 20 43 41 53 54 28 20 2b 20  , - ( - CAST( + 
139c0 63 6f 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29  col0 AS SIGNED )
139d0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
139e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d  cor0..----..-14.
139f0 0a 35 31 0d 0a 2d 34 37 0d 0a 39 31 0d 0a 2d 35  .51..-47..91..-5
13a00 0d 0a 38 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..85....skipif m
13a10 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
13a20 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
13a30 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31  rowsort label-41
13a40 34 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31  4..SELECT - col1
13a50 20 41 53 20 63 6f 6c 32 2c 20 2d 20 28 20 2d 20   AS col2, - ( - 
13a60 43 41 53 54 20 28 20 2b 20 63 6f 6c 30 20 41 53  CAST ( + col0 AS
13a70 20 49 4e 54 45 47 45 52 20 29 20 29 20 46 52 4f   INTEGER ) ) FRO
13a80 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
13a90 2d 2d 2d 2d 0d 0a 2d 31 34 0d 0a 35 31 0d 0a 2d  ----..-14..51..-
13aa0 34 37 0d 0a 39 31 0d 0a 2d 35 0d 0a 38 35 0d 0a  47..91..-5..85..
13ab0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
13ac0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
13ad0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
13ae0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31 35 0d 0a  sort label-415..
13af0 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20 4d  SELECT ALL ( + M
13b00 49 4e 28 20 2d 20 38 36 20 29 20 29 20 41 53 20  IN( - 86 ) ) AS 
13b10 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
13b20 2d 2d 2d 2d 0d 0a 2d 38 36 0d 0a 0d 0a 73 6b 69  ----..-86....ski
13b30 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
13b40 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
13b50 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
13b60 6c 2d 34 31 35 0d 0a 53 45 4c 45 43 54 20 41 4c  l-415..SELECT AL
13b70 4c 20 28 20 2b 20 4d 49 4e 20 28 20 2d 20 38 36  L ( + MIN ( - 86
13b80 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   ) ) AS col2 FRO
13b90 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38  M tab1..----..-8
13ba0 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
13bb0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
13bc0 54 49 4e 43 54 20 28 20 2b 20 2b 20 32 34 20 29  TINCT ( + + 24 )
13bd0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
13be0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 0d 0a  b0..----..24....
13bf0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
13c00 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
13c10 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
13c20 72 74 20 6c 61 62 65 6c 2d 34 31 37 0d 0a 53 45  rt label-417..SE
13c30 4c 45 43 54 20 41 4c 4c 20 53 55 4d 28 20 44 49  LECT ALL SUM( DI
13c40 53 54 49 4e 43 54 20 35 35 20 29 20 41 53 20 63  STINCT 55 ) AS c
13c50 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
13c60 2d 2d 2d 0d 0a 35 35 0d 0a 0d 0a 73 6b 69 70 69  ---..55....skipi
13c70 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
13c80 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
13c90 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
13ca0 34 31 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  417..SELECT ALL 
13cb0 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 35  SUM ( DISTINCT 5
13cc0 35 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  5 ) AS col2 FROM
13cd0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 35 35 0d   tab2..----..55.
13ce0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
13cf0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
13d00 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
13d10 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2a 20  RE NOT - col0 * 
13d20 2b 20 63 6f 6c 31 20 2b 20 36 38 20 2b 20 2d 20  + col1 + 68 + - 
13d30 2d 20 63 6f 6c 31 20 2a 20 2d 20 33 37 20 49 53  - col1 * - 37 IS
13d40 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
13d50 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
13d60 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32   75c998aa53ac832
13d70 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34  18cbf2feb962d0a4
13d80 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  9....query III r
13d90 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
13da0 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
13db0 20 4e 4f 54 20 2d 20 2d 20 63 6f 6c 30 20 42 45   NOT - - col0 BE
13dc0 54 57 45 45 4e 20 2d 20 39 20 2b 20 2d 20 63 6f  TWEEN - 9 + - co
13dd0 6c 30 20 41 4e 44 20 2d 20 2d 20 35 37 0d 0a 2d  l0 AND - - 57..-
13de0 2d 2d 2d 0d 0a 38 37 0d 0a 32 31 0d 0a 31 30 0d  ---..87..21..10.
13df0 0a 39 37 0d 0a 31 0d 0a 39 39 0d 0a 0d 0a 71 75  .97..1..99....qu
13e00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
13e10 45 4c 45 43 54 20 41 4c 4c 20 2d 20 32 32 20 46  ELECT ALL - 22 F
13e20 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
13e30 4f 54 20 2d 20 2d 20 63 6f 6c 32 20 49 53 20 4e  OT - - col2 IS N
13e40 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a  ULL..----..-22..
13e50 2d 32 32 0d 0a 2d 32 32 0d 0a 0d 0a 73 6b 69 70  -22..-22....skip
13e60 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
13e70 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
13e80 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
13e90 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
13ea0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
13eb0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
13ec0 63 6f 6c 32 20 63 6f 6c 30 2c 20 63 6f 6c 32 20  col2 col0, col2 
13ed0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
13ee0 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 4f  0 WHERE NOT ( NO
13ef0 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  T NULL IS NOT NU
13f00 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  LL )..----....on
13f10 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
13f20 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
13f30 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
13f40 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
13f50 32 32 0d 0a 53 45 4c 45 43 54 20 38 32 20 44 49  22..SELECT 82 DI
13f60 56 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  V col2 FROM tab2
13f70 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 0d 0a 33 0d  ..----..1..2..3.
13f80 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
13f90 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
13fa0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
13fb0 74 20 6c 61 62 65 6c 2d 34 32 32 0d 0a 53 45 4c  t label-422..SEL
13fc0 45 43 54 20 38 32 20 2f 20 63 6f 6c 32 20 46 52  ECT 82 / col2 FR
13fd0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
13fe0 0d 0a 32 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..2..3....onlyif
13ff0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
14000 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
14010 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
14020 65 6c 2d 34 32 33 0d 0a 53 45 4c 45 43 54 20 2b  el-423..SELECT +
14030 20 2d 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54   - MAX( DISTINCT
14040 20 2b 20 31 38 20 29 20 41 53 20 63 6f 6c 32 20   + 18 ) AS col2 
14050 46 52 4f 4d 20 28 20 74 61 62 30 20 41 53 20 63  FROM ( tab0 AS c
14060 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
14070 61 62 30 20 41 53 20 63 6f 72 31 20 29 0d 0a 2d  ab0 AS cor1 )..-
14080 2d 2d 2d 0d 0a 2d 31 38 0d 0a 0d 0a 73 6b 69 70  ---..-18....skip
14090 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
140a0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
140b0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
140c0 2d 34 32 33 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  -423..SELECT + -
140d0 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20   MAX ( DISTINCT 
140e0 2b 20 31 38 20 29 20 41 53 20 63 6f 6c 32 20 46  + 18 ) AS col2 F
140f0 52 4f 4d 20 28 20 74 61 62 30 20 41 53 20 63 6f  ROM ( tab0 AS co
14100 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
14110 62 30 20 41 53 20 63 6f 72 31 20 29 0d 0a 2d 2d  b0 AS cor1 )..--
14120 2d 2d 0d 0a 2d 31 38 0d 0a 0d 0a 6f 6e 6c 79 69  --..-18....onlyi
14130 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
14140 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20  ate syntax: DIV 
14150 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
14160 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
14170 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 32  rowsort label-42
14180 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
14190 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT - COUNT( * ) 
141a0 2b 20 31 33 20 2b 20 43 4f 55 4e 54 28 20 2a 20  + 13 + COUNT( * 
141b0 29 20 44 49 56 20 43 4f 55 4e 54 28 20 2a 20 29  ) DIV COUNT( * )
141c0 20 2b 20 33 35 20 63 6f 6c 31 20 46 52 4f 4d 20   + 35 col1 FROM 
141d0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a  tab2..----..46..
141e0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
141f0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
14200 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
14210 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
14220 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
14230 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
14240 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
14250 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
14260 34 32 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  424..SELECT DIST
14270 49 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a  INCT - COUNT ( *
14280 20 29 20 2b 20 31 33 20 2b 20 43 4f 55 4e 54 20   ) + 13 + COUNT 
14290 28 20 2a 20 29 20 2f 20 43 4f 55 4e 54 20 28 20  ( * ) / COUNT ( 
142a0 2a 20 29 20 2b 20 33 35 20 63 6f 6c 31 20 46 52  * ) + 35 col1 FR
142b0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab2..----..4
142c0 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
142d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32  sort..SELECT + 2
142e0 33 20 2a 20 2b 20 35 33 20 46 52 4f 4d 20 74 61  3 * + 53 FROM ta
142f0 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b1 cor0..----..1
14300 32 31 39 0d 0a 31 32 31 39 0d 0a 31 32 31 39 0d  219..1219..1219.
14310 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
14320 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
14330 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
14340 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
14350 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3d 20 2b  ERE NOT NULL = +
14360 20 31 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65   12..----....que
14370 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
14380 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
14390 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
143a0 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 32 20  HERE NOT + col2 
143b0 3d 20 33 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  = 32..----..9 va
143c0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
143d0 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
143e0 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
143f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
14400 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  ort..SELECT col0
14410 20 2a 20 2d 20 38 30 20 2b 20 2b 20 63 6f 6c 31   * - 80 + + col1
14420 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
14430 0d 0a 2d 34 30 36 36 0d 0a 2d 36 37 39 35 0d 0a  ..-4066..-6795..
14440 2d 37 32 33 33 0d 0a 0d 0a 71 75 65 72 79 20 49  -7233....query I
14450 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
14460 20 41 4c 4c 20 2b 20 41 56 47 20 28 20 2b 20 39   ALL + AVG ( + 9
14470 39 20 29 20 46 52 4f 4d 20 74 61 62 31 20 57 48  9 ) FROM tab1 WH
14480 45 52 45 20 4e 4f 54 20 28 20 2b 20 63 6f 6c 30  ERE NOT ( + col0
14490 20 2b 20 2b 20 63 6f 6c 31 20 49 53 20 4e 4f 54   + + col1 IS NOT
144a0 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e   NULL )..----..N
144b0 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
144c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
144d0 20 63 6f 6c 32 20 2a 20 2d 20 35 20 41 53 20 63   col2 * - 5 AS c
144e0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol0 FROM tab2 WH
144f0 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20  ERE NULL IS NOT 
14500 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
14510 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
14520 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
14530 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14540 20 6c 61 62 65 6c 2d 34 33 31 0d 0a 53 45 4c 45   label-431..SELE
14550 43 54 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54  CT MIN( DISTINCT
14560 20 2b 20 31 37 20 29 20 2a 20 43 4f 55 4e 54 28   + 17 ) * COUNT(
14570 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63   * ) FROM tab2 c
14580 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d  or0..----..51...
14590 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
145a0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
145b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
145c0 6c 61 62 65 6c 2d 34 33 31 0d 0a 53 45 4c 45 43  label-431..SELEC
145d0 54 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54  T MIN ( DISTINCT
145e0 20 2b 20 31 37 20 29 20 2a 20 43 4f 55 4e 54 20   + 17 ) * COUNT 
145f0 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ( * ) FROM tab2 
14600 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a  cor0..----..51..
14610 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
14620 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
14630 43 54 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32  CT col1 * + col2
14640 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 2b 20   + + col0 + - + 
14650 63 6f 6c 32 20 2b 20 2b 20 2d 20 37 38 20 41 53  col2 + + - 78 AS
14660 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
14670 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
14680 39 0d 0a 32 30 39 0d 0a 33 36 39 37 0d 0a 0d 0a  9..209..3697....
14690 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
146a0 0a 53 45 4c 45 43 54 20 37 37 20 46 52 4f 4d 20  .SELECT 77 FROM 
146b0 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
146c0 52 45 20 28 20 2d 20 63 6f 6c 30 20 29 20 49 53  RE ( - col0 ) IS
146d0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
146e0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
146f0 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
14700 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
14710 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
14720 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
14730 6c 2d 34 33 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-434..SELECT DI
14740 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28 20 4e  STINCT + CAST( N
14750 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
14760 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  - + COUNT( * ) F
14770 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d  ROM tab2 cor0..-
14780 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
14790 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
147a0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
147b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
147c0 6c 2d 34 33 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-434..SELECT DI
147d0 53 54 49 4e 43 54 20 2b 20 43 41 53 54 20 28 20  STINCT + CAST ( 
147e0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
147f0 29 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ) - + COUNT ( * 
14800 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  ) FROM tab2 cor0
14810 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
14820 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
14830 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
14840 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
14850 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
14860 2d 34 33 35 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  -435..SELECT + -
14870 20 63 6f 6c 30 20 44 49 56 20 35 35 20 2a 20 2d   col0 DIV 55 * -
14880 20 63 6f 6c 30 20 2d 20 2b 20 2d 20 63 6f 6c 32   col0 - + - col2
14890 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
148a0 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b0 cor0..----..1
148b0 39 36 0d 0a 34 37 0d 0a 39 37 0d 0a 0d 0a 73 6b  96..47..97....sk
148c0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
148d0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
148e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
148f0 65 6c 2d 34 33 35 0d 0a 53 45 4c 45 43 54 20 2b  el-435..SELECT +
14900 20 2d 20 63 6f 6c 30 20 2f 20 35 35 20 2a 20 2d   - col0 / 55 * -
14910 20 63 6f 6c 30 20 2d 20 2b 20 2d 20 63 6f 6c 32   col0 - + - col2
14920 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
14930 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b0 cor0..----..1
14940 39 36 0d 0a 34 37 0d 0a 39 37 0d 0a 0d 0a 71 75  96..47..97....qu
14950 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
14960 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20 2d 20 2d  ELECT col0 * - -
14970 20 28 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c   ( col0 ) AS col
14980 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
14990 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
149a0 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
149b0 2d 2d 2d 2d 0d 0a 32 36 30 31 0d 0a 37 32 32 35  ----..2601..7225
149c0 0d 0a 38 32 38 31 0d 0a 0d 0a 73 6b 69 70 69 66  ..8281....skipif
149d0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
149e0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
149f0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
14a00 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
14a10 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
14a20 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 39  rt..SELECT + + 9
14a30 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  0 col1 FROM tab1
14a40 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 30 0d   cor0..----..90.
14a50 0a 39 30 0d 0a 39 30 0d 0a 0d 0a 73 6b 69 70 69  .90..90....skipi
14a60 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
14a70 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
14a80 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
14a90 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
14aa0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
14ab0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 36 30  ort..SELECT + 60
14ac0 20 2a 20 39 30 20 63 6f 6c 31 20 46 52 4f 4d 20   * 90 col1 FROM 
14ad0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 35 34 30 30  tab2..----..5400
14ae0 0d 0a 35 34 30 30 0d 0a 35 34 30 30 0d 0a 0d 0a  ..5400..5400....
14af0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
14b00 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
14b10 20 74 61 62 31 20 57 48 45 52 45 20 2b 20 63 6f   tab1 WHERE + co
14b20 6c 30 20 3d 20 2d 20 63 6f 6c 32 20 4f 52 20 4e  l0 = - col2 OR N
14b30 4f 54 20 4e 55 4c 4c 20 49 4e 20 28 20 2b 20 63  OT NULL IN ( + c
14b40 6f 6c 32 20 2d 20 63 6f 6c 32 2c 20 33 37 2c 20  ol2 - col2, 37, 
14b50 2d 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c 32 20 2a  - col1, + col2 *
14b60 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col0 )..----...
14b70 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
14b80 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
14b90 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
14ba0 20 2b 20 63 6f 6c 32 20 2d 20 2d 20 35 33 20 49   + col2 - - 53 I
14bb0 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
14bc0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
14bd0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
14be0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
14bf0 72 74 20 6c 61 62 65 6c 2d 34 34 31 0d 0a 53 45  rt label-441..SE
14c00 4c 45 43 54 20 28 20 2d 20 4d 49 4e 28 20 34 39  LECT ( - MIN( 49
14c10 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   ) ) AS col1 FRO
14c20 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  M tab2..----..-4
14c30 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
14c40 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
14c50 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
14c60 6f 72 74 20 6c 61 62 65 6c 2d 34 34 31 0d 0a 53  ort label-441..S
14c70 45 4c 45 43 54 20 28 20 2d 20 4d 49 4e 20 28 20  ELECT ( - MIN ( 
14c80 34 39 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46  49 ) ) AS col1 F
14c90 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
14ca0 2d 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  -49....query III
14cb0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
14cc0 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
14cd0 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 2b 20  RE NOT + col1 + 
14ce0 2b 20 2b 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c  + + col2 IS NULL
14cf0 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
14d00 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30   hashing to c6c0
14d10 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31  a4111b36d04dbc81
14d20 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a  1a11e4d54cad....
14d30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
14d40 0a 53 45 4c 45 43 54 20 2d 20 39 34 20 2a 20 2b  .SELECT - 94 * +
14d50 20 2b 20 63 6f 6c 30 20 2a 20 31 35 20 46 52 4f   + col0 * 15 FRO
14d60 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab2..----..-1
14d70 30 35 37 35 30 0d 0a 2d 36 34 38 36 30 0d 0a 2d  05750..-64860..-
14d80 39 30 32 34 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  90240....onlyif 
14d90 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
14da0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
14db0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
14dc0 6c 2d 34 34 34 0d 0a 53 45 4c 45 43 54 20 2d 20  l-444..SELECT - 
14dd0 28 20 2d 20 53 55 4d 28 20 41 4c 4c 20 2d 20 63  ( - SUM( ALL - c
14de0 6f 6c 31 20 29 20 29 20 2a 20 43 4f 55 4e 54 28  ol1 ) ) * COUNT(
14df0 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   * ) AS col0 FRO
14e00 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab0..----..-3
14e10 30 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  09....skipif mys
14e20 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
14e30 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
14e40 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34 34 0d 0a  sort label-444..
14e50 53 45 4c 45 43 54 20 2d 20 28 20 2d 20 53 55 4d  SELECT - ( - SUM
14e60 20 28 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 29 20   ( ALL - col1 ) 
14e70 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ) * COUNT ( * ) 
14e80 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
14e90 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 30 39 0d 0a 0d  0..----..-309...
14ea0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14eb0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
14ec0 20 37 38 20 46 52 4f 4d 20 74 61 62 32 20 41 53   78 FROM tab2 AS
14ed0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
14ee0 36 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  62 IS NULL..----
14ef0 0d 0a 2d 37 38 0d 0a 2d 37 38 0d 0a 2d 37 38 0d  ..-78..-78..-78.
14f00 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
14f10 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
14f20 4e 43 54 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2b  NCT + col1 + + +
14f30 20 28 20 2b 20 2b 20 37 35 20 29 20 2d 20 2d 20   ( + + 75 ) - - 
14f40 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
14f50 2d 2d 2d 2d 0d 0a 31 33 39 0d 0a 31 38 35 0d 0a  ----..139..185..
14f60 31 39 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  190....onlyif my
14f70 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
14f80 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
14f90 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
14fa0 34 34 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  447..SELECT DIST
14fb0 49 4e 43 54 20 33 30 20 2f 20 2b 20 2b 20 4d 41  INCT 30 / + + MA
14fc0 58 28 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20  X( DISTINCT - ( 
14fd0 63 6f 6c 31 20 29 20 29 20 41 53 20 63 6f 6c 32  col1 ) ) AS col2
14fe0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
14ff0 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  r0 WHERE NULL IS
15000 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
15010 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
15020 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
15030 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
15040 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34  rowsort label-44
15050 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  7..SELECT DISTIN
15060 43 54 20 33 30 20 2f 20 2b 20 2b 20 4d 41 58 20  CT 30 / + + MAX 
15070 28 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 63  ( DISTINCT - ( c
15080 6f 6c 31 20 29 20 29 20 41 53 20 63 6f 6c 32 20  ol1 ) ) AS col2 
15090 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
150a0 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  0 WHERE NULL IS 
150b0 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
150c0 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
150d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
150e0 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
150f0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
15100 48 45 52 45 20 63 6f 6c 32 20 49 53 20 4e 55 4c  HERE col2 IS NUL
15110 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
15120 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
15130 43 54 20 33 39 20 41 53 20 63 6f 6c 30 20 46 52  CT 39 AS col0 FR
15140 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
15150 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55  WHERE NULL IS NU
15160 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 39 0d 0a 33 39  LL..----..39..39
15170 0d 0a 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..39....query I 
15180 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
15190 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
151a0 2a 20 2d 20 2d 20 37 33 20 2b 20 2b 20 2b 20 63  * - - 73 + + + c
151b0 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
151c0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
151d0 2d 2d 2d 0d 0a 2d 34 33 30 32 0d 0a 2d 34 39 31  ---..-4302..-491
151e0 37 0d 0a 2d 36 39 39 34 0d 0a 0d 0a 6f 6e 6c 79  7..-6994....only
151f0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
15200 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
15210 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
15220 61 62 65 6c 2d 34 35 31 0d 0a 53 45 4c 45 43 54  abel-451..SELECT
15230 20 44 49 53 54 49 4e 43 54 20 4d 49 4e 28 20 41   DISTINCT MIN( A
15240 4c 4c 20 2d 20 33 35 20 29 20 41 53 20 63 6f 6c  LL - 35 ) AS col
15250 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  1 FROM tab2 cor0
15260 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 0d 0a 0d 0a 73  ..----..-35....s
15270 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
15280 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
15290 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
152a0 62 65 6c 2d 34 35 31 0d 0a 53 45 4c 45 43 54 20  bel-451..SELECT 
152b0 44 49 53 54 49 4e 43 54 20 4d 49 4e 20 28 20 41  DISTINCT MIN ( A
152c0 4c 4c 20 2d 20 33 35 20 29 20 41 53 20 63 6f 6c  LL - 35 ) AS col
152d0 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  1 FROM tab2 cor0
152e0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 0d 0a 0d 0a 71  ..----..-35....q
152f0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
15300 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
15310 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
15320 52 45 20 63 6f 6c 32 20 2d 20 35 35 20 3d 20 2d  RE col2 - 55 = -
15330 20 28 20 2b 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d   ( + + col1 )..-
15340 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ---....skipif po
15350 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
15360 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
15370 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
15380 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
15390 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
153a0 0a 53 45 4c 45 43 54 20 2b 20 2d 20 31 38 20 63  .SELECT + - 18 c
153b0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
153c0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   cor0..----..-18
153d0 0d 0a 2d 31 38 0d 0a 2d 31 38 0d 0a 0d 0a 73 6b  ..-18..-18....sk
153e0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
153f0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
15400 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
15410 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
15420 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
15430 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
15440 4c 4c 20 2b 20 32 35 20 2a 20 2d 20 2b 20 30 20  LL + 25 * - + 0 
15450 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
15460 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S cor0..----..0.
15470 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .0..0....query I
15480 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
15490 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
154a0 48 45 52 45 20 63 6f 6c 30 20 2b 20 2d 20 63 6f  HERE col0 + - co
154b0 6c 30 20 3c 20 2b 20 2d 20 63 6f 6c 30 0d 0a 2d  l0 < + - col0..-
154c0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
154d0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
154e0 4c 4c 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f  LL + col0 * - co
154f0 6c 30 20 2a 20 2d 20 36 33 20 46 52 4f 4d 20 74  l0 * - 63 FROM t
15500 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 36 33 38 36  ab1..----..16386
15510 33 0d 0a 34 35 35 31 37 35 0d 0a 35 32 31 37 30  3..455175..52170
15520 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
15530 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32 37 20  sort..SELECT 27 
15540 2d 20 2b 20 2d 20 38 30 20 41 53 20 63 6f 6c 31  - + - 80 AS col1
15550 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
15560 0d 0a 31 30 37 0d 0a 31 30 37 0d 0a 31 30 37 0d  ..107..107..107.
15570 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
15580 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 33 31 20  rt..SELECT - 31 
15590 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  - + col2 FROM ta
155a0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 30 0d 0a  b0..----..-130..
155b0 2d 34 31 0d 0a 2d 37 38 0d 0a 0d 0a 73 6b 69 70  -41..-78....skip
155c0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
155d0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
155e0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
155f0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
15600 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
15610 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
15620 20 63 6f 6c 30 20 2a 20 2d 20 35 35 20 63 6f 6c   col0 * - 55 col
15630 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
15640 2d 0d 0a 2d 34 37 38 35 0d 0a 2d 35 33 33 35 0d  -..-4785..-5335.
15650 0a 2d 38 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49  .-825....query I
15660 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
15670 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2a   DISTINCT col2 *
15680 20 63 6f 6c 31 20 2a 20 31 30 20 2b 20 2d 20 2b   col1 * 10 + - +
15690 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52   col1 AS col0 FR
156a0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
156b0 31 36 37 39 0d 0a 33 30 37 32 33 0d 0a 33 38 37  1679..30723..387
156c0 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  93....query I ro
156d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
156e0 63 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20  col1 * - - col1 
156f0 2b 20 2b 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29  + + ( - - col0 )
15700 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
15710 0d 0a 2d 32 35 35 35 0d 0a 2d 34 34 31 34 0d 0a  ..-2555..-4414..
15720 2d 35 38 36 35 0d 0a 0d 0a 71 75 65 72 79 20 49  -5865....query I
15730 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
15740 20 37 36 20 2b 20 2d 20 2d 20 63 6f 6c 30 20 46   76 + - - col0 F
15750 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
15760 31 32 32 0d 0a 31 34 30 0d 0a 31 35 31 0d 0a 0d  122..140..151...
15770 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
15780 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
15790 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  : DIV for intege
157a0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
157b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
157c0 62 65 6c 2d 34 36 33 0d 0a 53 45 4c 45 43 54 20  bel-463..SELECT 
157d0 41 4c 4c 20 2b 20 34 34 20 44 49 56 20 2b 20 43  ALL + 44 DIV + C
157e0 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74  OUNT( * ) FROM t
157f0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 0d  ab1..----..14...
15800 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
15810 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
15820 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
15830 6c 61 62 65 6c 2d 34 36 33 0d 0a 53 45 4c 45 43  label-463..SELEC
15840 54 20 41 4c 4c 20 2b 20 34 34 20 2f 20 2b 20 43  T ALL + 44 / + C
15850 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
15860 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a  tab1..----..14..
15870 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
15880 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 32 39  t..SELECT - - 29
15890 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
158a0 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b2 WHERE NOT NUL
158b0 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  L IS NOT NULL..-
158c0 2d 2d 2d 0d 0a 32 39 0d 0a 32 39 0d 0a 32 39 0d  ---..29..29..29.
158d0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
158e0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63  rt..SELECT + + c
158f0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
15900 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
15910 2b 20 28 20 63 6f 6c 30 20 29 20 49 53 20 4e 55  + ( col0 ) IS NU
15920 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 38 35  LL..----..51..85
15930 0d 0a 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..91....query I 
15940 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
15950 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2d 20 2d  DISTINCT - ( - -
15960 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62   col1 ) FROM tab
15970 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
15980 4e 4f 54 20 2b 20 33 31 20 2b 20 2d 20 28 20 2d  NOT + 31 + - ( -
15990 20 2d 20 36 20 29 20 2b 20 2b 20 2b 20 31 36 20   - 6 ) + + + 16 
159a0 2b 20 2d 20 2b 20 39 31 20 49 53 20 4e 55 4c 4c  + - + 91 IS NULL
159b0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d 0a 2d 34 37  ..----..-14..-47
159c0 0d 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..-5....onlyif m
159d0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
159e0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
159f0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
15a00 72 74 20 6c 61 62 65 6c 2d 34 36 37 0d 0a 53 45  rt label-467..SE
15a10 4c 45 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c  LECT + CAST( NUL
15a20 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2f 20  L AS SIGNED ) / 
15a30 2b 20 41 56 47 20 28 20 63 6f 6c 31 20 29 20 46  + AVG ( col1 ) F
15a40 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
15a50 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
15a60 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
15a70 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
15a80 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
15a90 61 62 65 6c 2d 34 36 37 0d 0a 53 45 4c 45 43 54  abel-467..SELECT
15aa0 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   + CAST ( NULL A
15ab0 53 20 49 4e 54 45 47 45 52 20 29 20 2f 20 2b 20  S INTEGER ) / + 
15ac0 41 56 47 20 28 20 63 6f 6c 31 20 29 20 46 52 4f  AVG ( col1 ) FRO
15ad0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
15ae0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
15af0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
15b00 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
15b10 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
15b20 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
15b30 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20  lumns..query II 
15b40 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
15b50 41 4c 4c 20 38 35 2c 20 63 6f 6c 32 20 2b 20 36  ALL 85, col2 + 6
15b60 34 20 2b 20 2d 20 38 37 20 63 6f 6c 30 20 46 52  4 + - 87 col0 FR
15b70 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
15b80 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49  WHERE NOT NULL I
15b90 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
15ba0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
15bb0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
15bc0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
15bd0 30 20 57 48 45 52 45 20 63 6f 6c 31 20 2a 20 2d  0 WHERE col1 * -
15be0 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 37 38 20 49   - col2 * - 78 I
15bf0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
15c00 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
15c10 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33  ng to 75c998aa53
15c20 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36  ac83218cbf2feb96
15c30 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20  2d0a49....query 
15c40 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
15c50 43 54 20 41 4c 4c 20 2d 20 2d 20 37 32 20 41 53  CT ALL - - 72 AS
15c60 20 63 6f 6c 32 2c 20 31 39 20 46 52 4f 4d 20 74   col2, 19 FROM t
15c70 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
15c80 2d 0d 0a 37 32 0d 0a 31 39 0d 0a 37 32 0d 0a 31  -..72..19..72..1
15c90 39 0d 0a 37 32 0d 0a 31 39 0d 0a 0d 0a 71 75 65  9..72..19....que
15ca0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
15cb0 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
15cc0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
15cd0 20 4e 4f 54 20 31 35 20 2a 20 2b 20 2d 20 39 38   NOT 15 * + - 98
15ce0 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   < NULL..----...
15cf0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
15d00 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
15d10 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
15d20 6f 72 74 20 6c 61 62 65 6c 2d 34 37 32 0d 0a 53  ort label-472..S
15d30 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
15d40 20 2d 20 34 30 20 2a 20 2b 20 43 4f 55 4e 54 28   - 40 * + COUNT(
15d50 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41   * ) FROM tab2 A
15d60 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32  S cor0..----..12
15d70 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
15d80 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
15d90 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
15da0 6f 72 74 20 6c 61 62 65 6c 2d 34 37 32 0d 0a 53  ort label-472..S
15db0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
15dc0 20 2d 20 34 30 20 2a 20 2b 20 43 4f 55 4e 54 20   - 40 * + COUNT 
15dd0 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ( * ) FROM tab2 
15de0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
15df0 32 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  20....query I ro
15e00 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
15e10 35 33 20 2a 20 63 6f 6c 31 20 41 53 20 63 6f 6c  53 * col1 AS col
15e20 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
15e30 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 30 33  or0..----..-2703
15e40 0d 0a 2d 33 35 35 31 0d 0a 2d 34 30 38 31 0d 0a  ..-3551..-4081..
15e50 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
15e60 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
15e70 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
15e80 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
15e90 62 65 6c 2d 34 37 34 0d 0a 53 45 4c 45 43 54 20  bel-474..SELECT 
15ea0 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
15eb0 41 53 20 63 6f 6c 30 2c 20 43 41 53 54 28 20 4e  AS col0, CAST( N
15ec0 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
15ed0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
15ee0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
15ef0 0a 2d 31 30 0d 0a 4e 55 4c 4c 0d 0a 2d 34 37 0d  .-10..NULL..-47.
15f00 0a 4e 55 4c 4c 0d 0a 2d 39 39 0d 0a 4e 55 4c 4c  .NULL..-99..NULL
15f10 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
15f20 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
15f30 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  e..query II rows
15f40 6f 72 74 20 6c 61 62 65 6c 2d 34 37 34 0d 0a 53  ort label-474..S
15f50 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
15f60 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 2c 20 43   col2 AS col0, C
15f70 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
15f80 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20  TEGER ) AS col1 
15f90 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
15fa0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 4e 55  0..----..-10..NU
15fb0 4c 4c 0d 0a 2d 34 37 0d 0a 4e 55 4c 4c 0d 0a 2d  LL..-47..NULL..-
15fc0 39 39 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  99..NULL....quer
15fd0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
15fe0 45 43 54 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20  ECT + col2 FROM 
15ff0 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
16000 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 3d 20 4e  RE NOT NULL >= N
16010 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
16020 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
16030 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
16040 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
16050 6c 61 62 65 6c 2d 34 37 36 0d 0a 53 45 4c 45 43  label-476..SELEC
16060 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2d 20 2b  T COUNT( * ) - +
16070 20 28 20 2b 20 53 55 4d 28 20 2d 20 28 20 2d 20   ( + SUM( - ( - 
16080 2b 20 30 20 29 20 29 20 29 20 41 53 20 63 6f 6c  + 0 ) ) ) AS col
16090 32 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61 62  2 FROM tab0, tab
160a0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
160b0 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .9....skipif mys
160c0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
160d0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
160e0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 36 0d 0a  sort label-476..
160f0 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a  SELECT COUNT ( *
16100 20 29 20 2d 20 2b 20 28 20 2b 20 53 55 4d 20 28   ) - + ( + SUM (
16110 20 2d 20 28 20 2d 20 2b 20 30 20 29 20 29 20 29   - ( - + 0 ) ) )
16120 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
16130 62 30 2c 20 74 61 62 30 20 41 53 20 63 6f 72 30  b0, tab0 AS cor0
16140 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 6f 6e 6c  ..----..9....onl
16150 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
16160 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
16170 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
16180 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
16190 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
161a0 34 37 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  477..SELECT DIST
161b0 49 4e 43 54 20 43 41 53 54 28 20 4e 55 4c 4c 20  INCT CAST( NULL 
161c0 41 53 20 53 49 47 4e 45 44 20 29 20 2f 20 2d 20  AS SIGNED ) / - 
161d0 4d 49 4e 28 20 2d 20 63 6f 6c 31 20 29 20 41 53  MIN( - col1 ) AS
161e0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
161f0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
16200 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
16210 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
16220 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16230 62 65 6c 2d 34 37 37 0d 0a 53 45 4c 45 43 54 20  bel-477..SELECT 
16240 44 49 53 54 49 4e 43 54 20 43 41 53 54 20 28 20  DISTINCT CAST ( 
16250 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
16260 29 20 2f 20 2d 20 4d 49 4e 20 28 20 2d 20 63 6f  ) / - MIN ( - co
16270 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l1 ) AS col1 FRO
16280 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab1..----..NU
16290 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
162a0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
162b0 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69  yntax: DIV for i
162c0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
162d0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
162e0 72 74 20 6c 61 62 65 6c 2d 34 37 38 0d 0a 53 45  rt label-478..SE
162f0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
16300 4d 41 58 28 20 2d 20 63 6f 6c 31 20 29 20 44 49  MAX( - col1 ) DI
16310 56 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  V COUNT( * ) AS 
16320 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
16330 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69  ----..1....skipi
16340 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
16350 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
16360 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
16370 34 37 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  478..SELECT DIST
16380 49 4e 43 54 20 2d 20 4d 41 58 20 28 20 2d 20 63  INCT - MAX ( - c
16390 6f 6c 31 20 29 20 2f 20 43 4f 55 4e 54 20 28 20  ol1 ) / COUNT ( 
163a0 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
163b0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   tab1..----..1..
163c0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
163d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
163e0 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
163f0 54 20 2d 20 39 35 20 2a 20 2d 20 2b 20 63 6f 6c  T - 95 * - + col
16400 32 20 2f 20 38 37 20 49 53 20 4e 55 4c 4c 0d 0a  2 / 87 IS NULL..
16410 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
16420 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37  ashing to c4b427
16430 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30  65dff94eaaa46040
16440 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 73 6b  e537fb43b7....sk
16450 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
16460 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
16470 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
16480 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
16490 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
164a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
164b0 4c 4c 20 2b 20 36 37 20 63 6f 6c 32 20 46 52 4f  LL + 67 col2 FRO
164c0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
164d0 2d 2d 2d 2d 0d 0a 36 37 0d 0a 36 37 0d 0a 36 37  ----..67..67..67
164e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
164f0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
16500 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
16510 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
16520 61 62 65 6c 2d 34 38 31 0d 0a 53 45 4c 45 43 54  abel-481..SELECT
16530 20 41 4c 4c 20 43 41 53 54 28 20 2b 20 32 34 20   ALL CAST( + 24 
16540 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
16550 6f 6c 31 20 46 52 4f 4d 20 28 20 74 61 62 30 20  ol1 FROM ( tab0 
16560 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
16570 49 4e 20 74 61 62 31 20 63 6f 72 31 20 29 0d 0a  IN tab1 cor1 )..
16580 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
16590 61 73 68 69 6e 67 20 74 6f 20 62 30 64 38 33 34  ashing to b0d834
165a0 65 66 39 65 34 33 34 36 38 30 31 62 36 61 61 61  ef9e4346801b6aaa
165b0 30 65 37 34 62 32 63 38 65 66 0d 0a 0d 0a 73 6b  0e74b2c8ef....sk
165c0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
165d0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
165e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
165f0 65 6c 2d 34 38 31 0d 0a 53 45 4c 45 43 54 20 41  el-481..SELECT A
16600 4c 4c 20 43 41 53 54 20 28 20 2b 20 32 34 20 41  LL CAST ( + 24 A
16610 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63  S INTEGER ) AS c
16620 6f 6c 31 20 46 52 4f 4d 20 28 20 74 61 62 30 20  ol1 FROM ( tab0 
16630 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
16640 49 4e 20 74 61 62 31 20 63 6f 72 31 20 29 0d 0a  IN tab1 cor1 )..
16650 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
16660 61 73 68 69 6e 67 20 74 6f 20 62 30 64 38 33 34  ashing to b0d834
16670 65 66 39 65 34 33 34 36 38 30 31 62 36 61 61 61  ef9e4346801b6aaa
16680 30 65 37 34 62 32 63 38 65 66 0d 0a 0d 0a 6f 6e  0e74b2c8ef....on
16690 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
166a0 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
166b0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
166c0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
166d0 38 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  82..SELECT DISTI
166e0 4e 43 54 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d  NCT + + col2 + -
166f0 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   - CAST( NULL AS
16700 20 53 49 47 4e 45 44 20 29 20 2a 20 39 33 20 46   SIGNED ) * 93 F
16710 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
16720 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
16730 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
16740 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
16750 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
16760 61 62 65 6c 2d 34 38 32 0d 0a 53 45 4c 45 43 54  abel-482..SELECT
16770 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f   DISTINCT + + co
16780 6c 32 20 2b 20 2d 20 2d 20 43 41 53 54 20 28 20  l2 + - - CAST ( 
16790 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
167a0 29 20 2a 20 39 33 20 46 52 4f 4d 20 74 61 62 31  ) * 93 FROM tab1
167b0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
167c0 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
167d0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
167e0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
167f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
16800 2d 34 38 33 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  -483..SELECT - +
16810 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20   COUNT( * ) + - 
16820 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
16830 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
16840 0a 2d 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-6....skipif my
16850 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
16860 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
16870 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38 33 0d  wsort label-483.
16880 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55 4e  .SELECT - + COUN
16890 54 20 28 20 2a 20 29 20 2b 20 2d 20 43 4f 55 4e  T ( * ) + - COUN
168a0 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  T ( * ) FROM tab
168b0 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  0 cor0..----..-6
168c0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
168d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  ort..SELECT + + 
168e0 63 6f 6c 32 20 2b 20 2b 20 36 36 20 46 52 4f 4d  col2 + + 66 FROM
168f0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
16900 2d 2d 2d 0d 0a 31 32 35 0d 0a 31 33 34 0d 0a 31  ---..125..134..1
16910 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  62....query I ro
16920 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
16930 6c 31 20 2b 20 2d 20 33 34 20 2b 20 2d 20 2d 20  l1 + - 34 + - - 
16940 28 20 32 38 20 29 20 2a 20 63 6f 6c 31 20 46 52  ( 28 ) * col1 FR
16950 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
16960 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 32 33 31 35 0d  .----..-5..2315.
16970 0a 35 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .575....query I 
16980 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
16990 44 49 53 54 49 4e 43 54 20 2d 20 32 31 20 2a 20  DISTINCT - 21 * 
169a0 2d 20 63 6f 6c 30 20 2d 20 2d 20 31 33 20 2b 20  - col0 - - 13 + 
169b0 31 35 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  15 FROM tab2 AS 
169c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 37 32  cor0..----..1372
169d0 0d 0a 31 36 30 33 0d 0a 39 39 34 0d 0a 0d 0a 71  ..1603..994....q
169e0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
169f0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
16a00 20 63 6f 6c 32 2c 20 2d 20 31 35 20 46 52 4f 4d   col2, - 15 FROM
16a10 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
16a20 2d 2d 2d 0d 0a 35 39 0d 0a 2d 31 35 0d 0a 36 38  ---..59..-15..68
16a30 0d 0a 2d 31 35 0d 0a 39 36 0d 0a 2d 31 35 0d 0a  ..-15..96..-15..
16a40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16a50 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 46  t..SELECT col0 F
16a60 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
16a70 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3d 20 2d   WHERE NULL <= -
16a80 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   col1..----....q
16a90 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
16aa0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
16ab0 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  T * FROM tab2 co
16ac0 72 30 20 57 48 45 52 45 20 28 20 2b 20 63 6f 6c  r0 WHERE ( + col
16ad0 30 20 29 20 2b 20 32 37 20 2f 20 36 38 20 2b 20  0 ) + 27 / 68 + 
16ae0 2d 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 33 34 20  - - col0 + + 34 
16af0 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20  + col1 + + col2 
16b00 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
16b10 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
16b20 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35  ing to 75c998aa5
16b30 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39  3ac83218cbf2feb9
16b40 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69  62d0a49....onlyi
16b50 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
16b60 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
16b70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16b80 62 65 6c 2d 34 39 30 0d 0a 53 45 4c 45 43 54 20  bel-490..SELECT 
16b90 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2d  + COUNT( * ) + -
16ba0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20   - COUNT( * ) + 
16bb0 2d 20 2d 20 28 20 2d 20 37 38 20 29 20 2a 20 33  - - ( - 78 ) * 3
16bc0 36 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  6 AS col1 FROM t
16bd0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
16be0 2d 0d 0a 2d 32 38 30 32 0d 0a 0d 0a 73 6b 69 70  -..-2802....skip
16bf0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
16c00 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
16c10 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
16c20 2d 34 39 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -490..SELECT + C
16c30 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20 2d  OUNT ( * ) + - -
16c40 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d   COUNT ( * ) + -
16c50 20 2d 20 28 20 2d 20 37 38 20 29 20 2a 20 33 36   - ( - 78 ) * 36
16c60 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
16c70 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
16c80 0d 0a 2d 32 38 30 32 0d 0a 0d 0a 6f 6e 6c 79 69  ..-2802....onlyi
16c90 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
16ca0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
16cb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16cc0 62 65 6c 2d 34 39 31 0d 0a 53 45 4c 45 43 54 20  bel-491..SELECT 
16cd0 2b 20 35 37 20 2b 20 2d 20 43 4f 55 4e 54 28 20  + 57 + - COUNT( 
16ce0 2b 20 2b 20 63 6f 6c 30 20 29 20 2d 20 2d 20 43  + + col0 ) - - C
16cf0 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74  OUNT( * ) FROM t
16d00 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1 cor0..----..
16d10 35 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  57....skipif mys
16d20 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
16d30 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
16d40 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39 31 0d 0a  sort label-491..
16d50 53 45 4c 45 43 54 20 2b 20 35 37 20 2b 20 2d 20  SELECT + 57 + - 
16d60 43 4f 55 4e 54 20 28 20 2b 20 2b 20 63 6f 6c 30  COUNT ( + + col0
16d70 20 29 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a   ) - - COUNT ( *
16d80 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72   ) FROM tab1 cor
16d90 30 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 0d 0a 71  0..----..57....q
16da0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
16db0 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
16dc0 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
16dd0 52 45 20 63 6f 6c 32 20 2d 20 37 37 20 3c 3e 20  RE col2 - 77 <> 
16de0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  col2..----..9 va
16df0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
16e00 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31  75c998aa53ac8321
16e10 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39  8cbf2feb962d0a49
16e20 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
16e30 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
16e40 35 36 20 2a 20 2d 20 38 38 20 41 53 20 63 6f 6c  56 * - 88 AS col
16e50 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
16e60 2d 0d 0a 2d 34 39 32 38 0d 0a 2d 34 39 32 38 0d  -..-4928..-4928.
16e70 0a 2d 34 39 32 38 0d 0a 0d 0a 71 75 65 72 79 20  .-4928....query 
16e80 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
16e90 54 20 41 4c 4c 20 39 35 20 2d 20 2d 20 63 6f 6c  T ALL 95 - - col
16ea0 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
16eb0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35 0d 0a  ab0..----..105..
16ec0 31 34 32 0d 0a 31 39 34 0d 0a 0d 0a 6f 6e 6c 79  142..194....only
16ed0 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
16ee0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
16ef0 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
16f00 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39 35  owsort label-495
16f10 0d 0a 53 45 4c 45 43 54 20 39 36 20 44 49 56 20  ..SELECT 96 DIV 
16f20 2d 20 33 33 20 46 52 4f 4d 20 74 61 62 31 0d 0a  - 33 FROM tab1..
16f30 2d 2d 2d 2d 0d 0a 2d 32 0d 0a 2d 32 0d 0a 2d 32  ----..-2..-2..-2
16f40 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
16f50 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
16f60 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
16f70 72 74 20 6c 61 62 65 6c 2d 34 39 35 0d 0a 53 45  rt label-495..SE
16f80 4c 45 43 54 20 39 36 20 2f 20 2d 20 33 33 20 46  LECT 96 / - 33 F
16f90 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
16fa0 2d 32 0d 0a 2d 32 0d 0a 2d 32 0d 0a 0d 0a 71 75  -2..-2..-2....qu
16fb0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
16fc0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
16fd0 2d 20 28 20 31 30 20 29 2c 20 63 6f 6c 32 20 41  - ( 10 ), col2 A
16fe0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
16ff0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 31 30 0d  ..----..-10..10.
17000 0a 2d 31 30 0d 0a 34 37 0d 0a 2d 31 30 0d 0a 39  .-10..47..-10..9
17010 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  9....query III r
17020 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
17030 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
17040 20 2d 20 2b 20 39 36 20 49 53 20 4e 4f 54 20 4e   - + 96 IS NOT N
17050 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
17060 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
17070 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61  4b42765dff94eaaa
17080 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d  46040e537fb43b7.
17090 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
170a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
170b0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 63  ROM tab1 WHERE c
170c0 6f 6c 32 20 2b 20 2b 20 63 6f 6c 32 20 49 53 20  ol2 + + col2 IS 
170d0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
170e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
170f0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 28 20 35 35  ELECT ALL - ( 55
17100 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
17110 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d  tab2..----..-55.
17120 0a 2d 35 35 0d 0a 2d 35 35 0d 0a 0d 0a 71 75 65  .-55..-55....que
17130 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
17140 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
17150 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 2b 20  l0 + + + col2 + 
17160 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  col0 AS col2 FRO
17170 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 39  M tab1..----..19
17180 38 0d 0a 32 32 39 0d 0a 32 35 30 0d 0a 0d 0a 6f  8..229..250....o
17190 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
171a0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
171b0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
171c0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
171d0 35 30 31 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  501..SELECT - co
171e0 6c 31 20 44 49 56 20 2d 20 2b 20 63 6f 6c 32 20  l1 DIV - + col2 
171f0 2d 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20  - + - col0 FROM 
17200 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
17210 2d 2d 0d 0a 35 31 0d 0a 38 35 0d 0a 39 31 0d 0a  --..51..85..91..
17220 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
17230 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
17240 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17250 20 6c 61 62 65 6c 2d 35 30 31 0d 0a 53 45 4c 45   label-501..SELE
17260 43 54 20 2d 20 63 6f 6c 31 20 2f 20 2d 20 2b 20  CT - col1 / - + 
17270 63 6f 6c 32 20 2d 20 2b 20 2d 20 63 6f 6c 30 20  col2 - + - col0 
17280 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
17290 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 38 35 0d  0..----..51..85.
172a0 0a 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .91....query III
172b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
172c0 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
172d0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
172e0 20 4e 55 4c 4c 20 29 20 4e 4f 54 20 42 45 54 57   NULL ) NOT BETW
172f0 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 63  EEN NULL AND + c
17300 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol2..----....que
17310 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
17320 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 32 37  LECT DISTINCT 27
17330 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
17340 62 31 2c 20 74 61 62 30 20 41 53 20 63 6f 72 30  b1, tab0 AS cor0
17350 0d 0a 2d 2d 2d 2d 0d 0a 32 37 0d 0a 0d 0a 6f 6e  ..----..27....on
17360 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
17370 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
17380 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
17390 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
173a0 30 34 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 28  04..SELECT CAST(
173b0 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
173c0 29 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  ) * col0 AS col0
173d0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
173e0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
173f0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
17400 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
17410 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
17420 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
17430 65 6c 2d 35 30 34 0d 0a 53 45 4c 45 43 54 20 43  el-504..SELECT C
17440 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
17450 54 45 47 45 52 20 29 20 2a 20 63 6f 6c 30 20 41  TEGER ) * col0 A
17460 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
17470 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
17480 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
17490 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
174a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
174b0 49 4e 43 54 20 28 20 2d 20 31 38 20 29 20 2a 20  INCT ( - 18 ) * 
174c0 2b 20 38 34 20 46 52 4f 4d 20 74 61 62 31 20 41  + 84 FROM tab1 A
174d0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
174e0 35 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  512....query III
174f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
17500 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
17510 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
17520 20 63 6f 6c 31 20 3c 3d 20 28 20 2b 20 32 39 20   col1 <= ( + 29 
17530 2a 20 2d 20 2b 20 35 39 20 29 0d 0a 2d 2d 2d 2d  * - + 59 )..----
17540 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
17550 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
17560 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
17570 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20  d54cad....query 
17580 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
17590 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63  T DISTINCT - - c
175a0 6f 6c 31 20 2a 20 2b 20 37 32 20 2a 20 2d 20 63  ol1 * + 72 * - c
175b0 6f 6c 32 20 2a 20 2d 20 2b 20 37 36 20 2b 20 2d  ol2 * - + 76 + -
175c0 20 2d 20 33 32 20 2d 20 2d 20 2b 20 63 6f 6c 32   - 32 - - + col2
175d0 20 2a 20 31 38 20 41 53 20 63 6f 6c 30 20 46 52   * 18 AS col0 FR
175e0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
175f0 0a 2d 2d 2d 2d 0d 0a 31 36 31 35 33 33 34 0d 0a  .----..1615334..
17600 31 37 34 38 39 37 36 38 0d 0a 37 33 35 36 31 32  17489768..735612
17610 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  8....skipif post
17620 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
17630 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
17640 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
17650 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
17660 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
17670 45 4c 45 43 54 20 41 4c 4c 20 2d 20 39 37 20 63  ELECT ALL - 97 c
17680 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
17690 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 37   cor0..----..-97
176a0 0d 0a 2d 39 37 0d 0a 2d 39 37 0d 0a 0d 0a 71 75  ..-97..-97....qu
176b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
176c0 45 4c 45 43 54 20 41 4c 4c 20 30 20 2a 20 2d 20  ELECT ALL 0 * - 
176d0 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  col0 AS col2 FRO
176e0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab1..----..0.
176f0 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .0..0....onlyif 
17700 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
17710 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
17720 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
17730 6c 2d 35 31 30 0d 0a 53 45 4c 45 43 54 20 43 4f  l-510..SELECT CO
17740 55 4e 54 28 20 63 6f 6c 32 20 29 20 2a 20 2d 20  UNT( col2 ) * - 
17750 4d 49 4e 28 20 41 4c 4c 20 2d 20 2b 20 28 20 32  MIN( ALL - + ( 2
17760 39 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  9 ) ) FROM tab2.
17770 0a 2d 2d 2d 2d 0d 0a 38 37 0d 0a 0d 0a 73 6b 69  .----..87....ski
17780 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
17790 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
177a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
177b0 6c 2d 35 31 30 0d 0a 53 45 4c 45 43 54 20 43 4f  l-510..SELECT CO
177c0 55 4e 54 20 28 20 63 6f 6c 32 20 29 20 2a 20 2d  UNT ( col2 ) * -
177d0 20 4d 49 4e 20 28 20 41 4c 4c 20 2d 20 2b 20 28   MIN ( ALL - + (
177e0 20 32 39 20 29 20 29 20 46 52 4f 4d 20 74 61 62   29 ) ) FROM tab
177f0 32 0d 0a 2d 2d 2d 2d 0d 0a 38 37 0d 0a 0d 0a 6f  2..----..87....o
17800 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
17810 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
17820 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
17830 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
17840 35 31 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  511..SELECT DIST
17850 49 4e 43 54 20 63 6f 6c 30 20 44 49 56 20 2d 20  INCT col0 DIV - 
17860 32 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  28 AS col2 FROM 
17870 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  tab0..----..-3..
17880 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
17890 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
178a0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
178b0 6f 72 74 20 6c 61 62 65 6c 2d 35 31 31 0d 0a 53  ort label-511..S
178c0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
178d0 6f 6c 30 20 2f 20 2d 20 32 38 20 41 53 20 63 6f  ol0 / - 28 AS co
178e0 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
178f0 2d 2d 0d 0a 2d 33 0d 0a 30 0d 0a 0d 0a 71 75 65  --..-3..0....que
17900 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
17910 45 4c 45 43 54 20 2d 20 34 2c 20 63 6f 6c 32 20  ELECT - 4, col2 
17920 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
17930 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 32 33 0d  2..----..-4..23.
17940 0a 2d 34 0d 0a 34 30 0d 0a 2d 34 0d 0a 35 38 0d  .-4..40..-4..58.
17950 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
17960 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
17970 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
17980 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 33 0d  wsort label-513.
17990 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28  .SELECT - COUNT(
179a0 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30   DISTINCT - col0
179b0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
179c0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  tab1..----..-3..
179d0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
179e0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
179f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17a00 20 6c 61 62 65 6c 2d 35 31 33 0d 0a 53 45 4c 45   label-513..SELE
17a10 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 44 49 53  CT - COUNT ( DIS
17a20 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 29 20 41  TINCT - col0 ) A
17a30 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
17a40 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75  ..----..-3....qu
17a50 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
17a60 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 41 53  SELECT + col2 AS
17a70 20 63 6f 6c 30 2c 20 39 31 20 2a 20 33 34 20 2b   col0, 91 * 34 +
17a80 20 35 39 20 2a 20 63 6f 6c 31 20 2b 20 2b 20 35   59 * col1 + + 5
17a90 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  8 AS col1 FROM t
17aa0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 36  ab2..----..23..6
17ab0 31 36 31 0d 0a 34 30 0d 0a 37 36 39 35 0d 0a 35  161..40..7695..5
17ac0 38 0d 0a 37 31 30 35 0d 0a 0d 0a 71 75 65 72 79  8..7105....query
17ad0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
17ae0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
17af0 6c 30 20 2a 20 2d 20 39 39 20 2b 20 2d 20 63 6f  l0 * - 99 + - co
17b00 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
17b10 2d 2d 0d 0a 35 30 33 35 0d 0a 38 34 31 30 0d 0a  --..5035..8410..
17b20 38 39 36 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  8962....onlyif m
17b30 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
17b40 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
17b50 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
17b60 2d 35 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -516..SELECT DIS
17b70 54 49 4e 43 54 20 2d 20 53 55 4d 28 20 44 49 53  TINCT - SUM( DIS
17b80 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 29 20 63  TINCT - col1 ) c
17b90 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
17ba0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33   cor0..----..103
17bb0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
17bc0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
17bd0 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
17be0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
17bf0 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
17c00 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
17c10 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
17c20 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
17c30 6c 2d 35 31 36 0d 0a 53 45 4c 45 43 54 20 44 49  l-516..SELECT DI
17c40 53 54 49 4e 43 54 20 2d 20 53 55 4d 20 28 20 44  STINCT - SUM ( D
17c50 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 29  ISTINCT - col1 )
17c60 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
17c70 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
17c80 30 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  03....query III 
17c90 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
17ca0 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
17cb0 57 48 45 52 45 20 4e 4f 54 20 2b 20 2d 20 63 6f  WHERE NOT + - co
17cc0 6c 30 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 2d 20  l0 + + col0 + - 
17cd0 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a  - col2 IS NULL..
17ce0 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
17cf0 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38  ashing to 75c998
17d00 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66  aa53ac83218cbf2f
17d10 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e  eb962d0a49....on
17d20 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
17d30 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
17d40 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
17d50 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
17d60 31 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  18..SELECT DISTI
17d70 4e 43 54 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  NCT - CAST( NULL
17d80 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 28   AS SIGNED ) * (
17d90 20 2d 20 63 6f 6c 30 20 29 20 2a 20 2b 20 63 6f   - col0 ) * + co
17da0 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
17db0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
17dc0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
17dd0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
17de0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
17df0 2d 35 31 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  -518..SELECT DIS
17e00 54 49 4e 43 54 20 2d 20 43 41 53 54 20 28 20 4e  TINCT - CAST ( N
17e10 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
17e20 20 2a 20 28 20 2d 20 63 6f 6c 30 20 29 20 2a 20   * ( - col0 ) * 
17e30 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  + col0 FROM tab1
17e40 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
17e50 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
17e60 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31  .SELECT ALL col1
17e70 20 2d 20 2d 20 34 34 20 2d 20 2d 20 2b 20 63 6f   - - 44 - - + co
17e80 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
17e90 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
17ea0 2d 2d 0d 0a 31 34 30 0d 0a 31 34 32 0d 0a 31 35  --..140..142..15
17eb0 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  2....onlyif mysq
17ec0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
17ed0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
17ee0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32  rowsort label-52
17ef0 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
17f00 43 54 20 2d 20 37 39 20 2b 20 2b 20 43 4f 55 4e  CT - 79 + + COUN
17f10 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31  T( * ) FROM tab1
17f20 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 36   cor0..----..-76
17f30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
17f40 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
17f50 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
17f60 72 74 20 6c 61 62 65 6c 2d 35 32 30 0d 0a 53 45  rt label-520..SE
17f70 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
17f80 37 39 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a  79 + + COUNT ( *
17f90 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72   ) FROM tab1 cor
17fa0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 36 0d 0a 0d 0a  0..----..-76....
17fb0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
17fc0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
17fd0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
17fe0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
17ff0 2d 35 32 31 0d 0a 53 45 4c 45 43 54 20 2b 20 63  -521..SELECT + c
18000 6f 6c 32 20 2d 20 31 31 20 2b 20 38 32 20 2a 20  ol2 - 11 + 82 * 
18010 2d 20 33 38 20 2b 20 63 6f 6c 31 20 44 49 56 20  - 38 + col1 DIV 
18020 2d 20 2d 20 37 32 20 41 53 20 63 6f 6c 30 20 46  - - 72 AS col0 F
18030 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
18040 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 30 33 31 0d 0a 2d  ..----..-3031..-
18050 33 30 35 39 0d 0a 2d 33 30 36 38 0d 0a 0d 0a 73  3059..-3068....s
18060 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
18070 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
18080 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
18090 62 65 6c 2d 35 32 31 0d 0a 53 45 4c 45 43 54 20  bel-521..SELECT 
180a0 2b 20 63 6f 6c 32 20 2d 20 31 31 20 2b 20 38 32  + col2 - 11 + 82
180b0 20 2a 20 2d 20 33 38 20 2b 20 63 6f 6c 31 20 2f   * - 38 + col1 /
180c0 20 2d 20 2d 20 37 32 20 41 53 20 63 6f 6c 30 20   - - 72 AS col0 
180d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
180e0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 30 33 31 0d 0a  0..----..-3031..
180f0 2d 33 30 35 39 0d 0a 2d 33 30 36 38 0d 0a 0d 0a  -3059..-3068....
18100 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
18110 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
18120 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
18130 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  0 WHERE NULL IS 
18140 4e 55 4c 4c 20 41 4e 44 20 63 6f 6c 31 20 49 53  NULL AND col1 IS
18150 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
18160 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
18170 53 45 4c 45 43 54 20 2b 20 2d 20 36 20 2d 20 2b  SELECT + - 6 - +
18180 20 63 6f 6c 31 20 2a 20 31 39 20 46 52 4f 4d 20   col1 * 19 FROM 
18190 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
181a0 2d 2d 0d 0a 2d 31 35 34 35 0d 0a 2d 32 35 0d 0a  --..-1545..-25..
181b0 2d 34 30 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -405....onlyif m
181c0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
181d0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
181e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
181f0 2d 35 32 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -524..SELECT ALL
18200 20 2d 20 2d 20 38 35 20 2d 20 2b 20 2d 20 43 4f   - - 85 - + - CO
18210 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
18220 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
18230 0d 0a 38 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..88....skipif m
18240 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
18250 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
18260 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 34  owsort label-524
18270 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d  ..SELECT ALL - -
18280 20 38 35 20 2d 20 2b 20 2d 20 43 4f 55 4e 54 20   85 - + - COUNT 
18290 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20  ( * ) FROM tab1 
182a0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38  AS cor0..----..8
182b0 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  8....onlyif mysq
182c0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
182d0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
182e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32  rowsort label-52
182f0 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  5..SELECT DISTIN
18300 43 54 20 4d 41 58 28 20 2b 20 2b 20 63 6f 6c 32  CT MAX( + + col2
18310 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
18320 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 0d 0a 73  0..----..99....s
18330 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
18340 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
18350 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
18360 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
18370 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
18380 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
18390 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
183a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 35  owsort label-525
183b0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
183c0 54 20 4d 41 58 20 28 20 2b 20 2b 20 63 6f 6c 32  T MAX ( + + col2
183d0 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
183e0 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 0d 0a 6f  0..----..99....o
183f0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
18400 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
18410 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18420 74 20 6c 61 62 65 6c 2d 35 32 36 0d 0a 53 45 4c  t label-526..SEL
18430 45 43 54 20 2b 20 2d 20 38 35 20 2b 20 2b 20 43  ECT + - 85 + + C
18440 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 31 35  OUNT( * ) * - 15
18450 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
18460 62 31 20 57 48 45 52 45 20 2d 20 63 6f 6c 30 20  b1 WHERE - col0 
18470 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
18480 2d 0d 0a 2d 31 33 30 0d 0a 0d 0a 73 6b 69 70 69  -..-130....skipi
18490 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
184a0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
184b0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
184c0 35 32 36 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  526..SELECT + - 
184d0 38 35 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a  85 + + COUNT ( *
184e0 20 29 20 2a 20 2d 20 31 35 20 41 53 20 63 6f 6c   ) * - 15 AS col
184f0 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  0 FROM tab1 WHER
18500 45 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20  E - col0 IS NOT 
18510 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 30  NULL..----..-130
18520 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
18530 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
18540 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
18550 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
18560 61 62 65 6c 2d 35 32 37 0d 0a 53 45 4c 45 43 54  abel-527..SELECT
18570 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 2d 20 43 41   - col0 + + - CA
18580 53 54 28 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20  ST( - + col1 AS 
18590 53 49 47 4e 45 44 20 29 20 2b 20 2d 20 31 36 20  SIGNED ) + - 16 
185a0 2a 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  * - col2 AS col0
185b0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
185c0 0d 0a 31 30 34 34 0d 0a 31 34 39 39 0d 0a 38 36  ..1044..1499..86
185d0 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
185e0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
185f0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
18600 6f 72 74 20 6c 61 62 65 6c 2d 35 32 37 0d 0a 53  ort label-527..S
18610 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2b  ELECT - col0 + +
18620 20 2d 20 43 41 53 54 20 28 20 2d 20 2b 20 63 6f   - CAST ( - + co
18630 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  l1 AS INTEGER ) 
18640 2b 20 2d 20 31 36 20 2a 20 2d 20 63 6f 6c 32 20  + - 16 * - col2 
18650 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
18660 31 0d 0a 2d 2d 2d 2d 0d 0a 31 30 34 34 0d 0a 31  1..----..1044..1
18670 34 39 39 0d 0a 38 36 34 0d 0a 0d 0a 71 75 65 72  499..864....quer
18680 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
18690 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
186a0 32 20 57 48 45 52 45 20 2b 20 63 6f 6c 30 20 3c  2 WHERE + col0 <
186b0 3e 20 2d 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  > - - col1..----
186c0 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
186d0 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33  ng to 75c998aa53
186e0 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36  ac83218cbf2feb96
186f0 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  2d0a49....onlyif
18700 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
18710 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
18720 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
18730 65 6c 2d 35 32 39 0d 0a 53 45 4c 45 43 54 20 44  el-529..SELECT D
18740 49 53 54 49 4e 43 54 20 2d 20 2d 20 53 55 4d 28  ISTINCT - - SUM(
18750 20 2d 20 63 6f 6c 32 20 29 20 63 6f 6c 31 20 46   - col2 ) col1 F
18760 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
18770 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 0d 0a 0d 0a  ..----..-121....
18780 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
18790 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
187a0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
187b0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
187c0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
187d0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
187e0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
187f0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32  rowsort label-52
18800 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
18810 43 54 20 2d 20 2d 20 53 55 4d 20 28 20 2d 20 63  CT - - SUM ( - c
18820 6f 6c 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20  ol2 ) col1 FROM 
18830 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
18840 2d 2d 0d 0a 2d 31 32 31 0d 0a 0d 0a 6f 6e 6c 79  --..-121....only
18850 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
18860 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
18870 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
18880 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 30  owsort label-530
18890 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b  ..SELECT ALL + +
188a0 20 43 41 53 54 28 20 2d 20 31 20 41 53 20 53 49   CAST( - 1 AS SI
188b0 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 32 20 46  GNED ) AS col2 F
188c0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
188d0 20 57 48 45 52 45 20 38 39 20 49 53 20 4e 4f 54   WHERE 89 IS NOT
188e0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   NULL..----..-1.
188f0 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69  .-1..-1....skipi
18900 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
18910 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
18920 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
18930 35 33 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  530..SELECT ALL 
18940 2b 20 2b 20 43 41 53 54 20 28 20 2d 20 31 20 41  + + CAST ( - 1 A
18950 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63  S INTEGER ) AS c
18960 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
18970 20 63 6f 72 30 20 57 48 45 52 45 20 38 39 20 49   cor0 WHERE 89 I
18980 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
18990 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a  ..-1..-1..-1....
189a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
189b0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
189c0 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 2b 20   - + col2 * - + 
189d0 37 34 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  74 FROM tab2 AS 
189e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 30 32  cor0..----..1702
189f0 0d 0a 32 39 36 30 0d 0a 34 32 39 32 0d 0a 0d 0a  ..2960..4292....
18a00 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
18a10 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
18a20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
18a30 30 20 57 48 45 52 45 20 63 6f 6c 31 20 42 45 54  0 WHERE col1 BET
18a40 57 45 45 4e 20 2d 20 63 6f 6c 32 20 41 4e 44 20  WEEN - col2 AND 
18a50 2b 20 63 6f 6c 32 20 2a 20 2b 20 2d 20 63 6f 6c  + col2 * + - col
18a60 32 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c  2 + col2 * - col
18a70 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  1..----....onlyi
18a80 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
18a90 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
18aa0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20  pe: ..query III 
18ab0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33  rowsort label-53
18ac0 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  3..SELECT DISTIN
18ad0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
18ae0 48 45 52 45 20 2b 20 35 33 20 2a 20 43 41 53 54  HERE + 53 * CAST
18af0 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
18b00 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
18b10 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ----....skipif m
18b20 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
18b30 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49  tible..query III
18b40 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
18b50 33 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  33..SELECT DISTI
18b60 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  NCT * FROM tab1 
18b70 57 48 45 52 45 20 2b 20 35 33 20 2a 20 43 41 53  WHERE + 53 * CAS
18b80 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
18b90 47 45 52 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c  GER ) IS NOT NUL
18ba0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
18bb0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
18bc0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  LECT * FROM tab2
18bd0 20 57 48 45 52 45 20 35 31 20 2a 20 63 6f 6c 32   WHERE 51 * col2
18be0 20 49 4e 20 28 20 63 6f 6c 30 20 2a 20 2b 20 63   IN ( col0 * + c
18bf0 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ol0 )..----....q
18c00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
18c10 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2b 20  SELECT - col2 + 
18c20 63 6f 6c 31 20 2a 20 2d 20 39 20 41 53 20 63 6f  col1 * - 9 AS co
18c30 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l0 FROM tab0 WHE
18c40 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 49 53  RE NOT + col1 IS
18c50 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
18c60 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
18c70 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
18c80 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 28  ROM tab0 WHERE (
18c90 20 4e 55 4c 4c 20 29 20 42 45 54 57 45 45 4e 20   NULL ) BETWEEN 
18ca0 28 20 31 32 20 29 20 41 4e 44 20 28 20 63 6f 6c  ( 12 ) AND ( col
18cb0 31 20 2a 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d  1 * + col0 )..--
18cc0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
18cd0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
18ce0 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
18cf0 45 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 2a 20 2d  E NOT + col2 * -
18d00 20 63 6f 6c 31 20 4e 4f 54 20 42 45 54 57 45 45   col1 NOT BETWEE
18d10 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e 44 20 2d  N ( NULL ) AND -
18d20 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   col0..----....q
18d30 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
18d40 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
18d50 2d 20 28 20 63 6f 6c 31 20 29 20 2a 20 2b 20 63  - ( col1 ) * + c
18d60 6f 6c 31 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20  ol1 + col2 FROM 
18d70 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33 31  tab0..----..-431
18d80 0d 0a 2d 36 35 31 34 0d 0a 39 38 0d 0a 0d 0a 6f  ..-6514..98....o
18d90 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
18da0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
18db0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
18dc0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
18dd0 35 33 39 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41  539..SELECT + CA
18de0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
18df0 45 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20 57  ED ) FROM tab1 W
18e00 48 45 52 45 20 33 31 20 49 53 20 4e 4f 54 20 4e  HERE 31 IS NOT N
18e10 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ULL..----..NULL.
18e20 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
18e30 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
18e40 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
18e50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
18e60 62 65 6c 2d 35 33 39 0d 0a 53 45 4c 45 43 54 20  bel-539..SELECT 
18e70 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
18e80 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
18e90 74 61 62 31 20 57 48 45 52 45 20 33 31 20 49 53  tab1 WHERE 31 IS
18ea0 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
18eb0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
18ec0 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
18ed0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
18ee0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
18ef0 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 63 6f  WHERE NOT ( - co
18f00 6c 30 20 29 20 42 45 54 57 45 45 4e 20 4e 55 4c  l0 ) BETWEEN NUL
18f10 4c 20 41 4e 44 20 2b 20 63 6f 6c 30 20 2a 20 28  L AND + col0 * (
18f20 20 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e   2 )..----....on
18f30 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
18f40 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
18f50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
18f60 20 6c 61 62 65 6c 2d 35 34 31 0d 0a 53 45 4c 45   label-541..SELE
18f70 43 54 20 44 49 53 54 49 4e 43 54 20 37 34 20 2b  CT DISTINCT 74 +
18f80 20 2d 20 53 55 4d 28 20 33 34 20 29 20 41 53 20   - SUM( 34 ) AS 
18f90 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57  col1 FROM tab1 W
18fa0 48 45 52 45 20 4e 4f 54 20 28 20 63 6f 6c 32 20  HERE NOT ( col2 
18fb0 2b 20 2d 20 28 20 2d 20 28 20 2d 20 63 6f 6c 31  + - ( - ( - col1
18fc0 20 29 20 29 20 29 20 4e 4f 54 20 49 4e 20 28 20   ) ) ) NOT IN ( 
18fd0 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  col0 )..----..NU
18fe0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
18ff0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
19000 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
19010 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34 31 0d 0a  sort label-541..
19020 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
19030 37 34 20 2b 20 2d 20 53 55 4d 20 28 20 33 34 20  74 + - SUM ( 34 
19040 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
19050 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab1 WHERE NOT ( 
19060 63 6f 6c 32 20 2b 20 2d 20 28 20 2d 20 28 20 2d  col2 + - ( - ( -
19070 20 63 6f 6c 31 20 29 20 29 20 29 20 4e 4f 54 20   col1 ) ) ) NOT 
19080 49 4e 20 28 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d  IN ( col0 )..---
19090 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  -..NULL....query
190a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
190b0 43 54 20 39 32 20 2d 20 2b 20 35 32 20 46 52 4f  CT 92 - + 52 FRO
190c0 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
190d0 20 28 20 4e 55 4c 4c 20 29 20 3c 20 28 20 4e 55   ( NULL ) < ( NU
190e0 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  LL )..----....on
190f0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
19100 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
19110 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
19120 20 6c 61 62 65 6c 2d 35 34 33 0d 0a 53 45 4c 45   label-543..SELE
19130 43 54 20 2d 20 53 55 4d 28 20 44 49 53 54 49 4e  CT - SUM( DISTIN
19140 43 54 20 2b 20 33 32 20 29 20 2f 20 43 4f 55 4e  CT + 32 ) / COUN
19150 54 28 20 2a 20 29 20 2d 20 2b 20 43 4f 55 4e 54  T( * ) - + COUNT
19160 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ( * ) AS col2 FR
19170 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
19180 54 20 28 20 4e 55 4c 4c 20 29 20 3c 3d 20 4e 55  T ( NULL ) <= NU
19190 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  LL..----..NULL..
191a0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
191b0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
191c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
191d0 20 6c 61 62 65 6c 2d 35 34 33 0d 0a 53 45 4c 45   label-543..SELE
191e0 43 54 20 2d 20 53 55 4d 20 28 20 44 49 53 54 49  CT - SUM ( DISTI
191f0 4e 43 54 20 2b 20 33 32 20 29 20 2f 20 43 4f 55  NCT + 32 ) / COU
19200 4e 54 20 28 20 2a 20 29 20 2d 20 2b 20 43 4f 55  NT ( * ) - + COU
19210 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32  NT ( * ) AS col2
19220 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
19230 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3c 3d   NOT ( NULL ) <=
19240 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   NULL..----..NUL
19250 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  L....query III r
19260 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
19270 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
19280 20 4e 4f 54 20 28 20 2b 20 63 6f 6c 31 20 29 20   NOT ( + col1 ) 
19290 3c 20 37 37 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d  < 77 - col1..---
192a0 2d 0d 0a 31 35 0d 0a 38 31 0d 0a 34 37 0d 0a 0d  -..15..81..47...
192b0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
192c0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
192d0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
192e0 6f 72 74 20 6c 61 62 65 6c 2d 35 34 35 0d 0a 53  ort label-545..S
192f0 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28  ELECT ALL COUNT(
19300 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   * ) AS col0 FRO
19310 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
19320 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55 4c   ( NULL ) IS NUL
19330 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b  L..----..0....sk
19340 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
19350 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
19360 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
19370 65 6c 2d 35 34 35 0d 0a 53 45 4c 45 43 54 20 41  el-545..SELECT A
19380 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41  LL COUNT ( * ) A
19390 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
193a0 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c   WHERE NOT ( NUL
193b0 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  L ) IS NULL..---
193c0 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..0....onlyif m
193d0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
193e0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
193f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
19400 2d 35 34 36 0d 0a 53 45 4c 45 43 54 20 2b 20 53  -546..SELECT + S
19410 55 4d 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  UM( DISTINCT col
19420 31 20 29 20 2b 20 2d 20 36 34 20 63 6f 6c 30 20  1 ) + - 64 col0 
19430 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
19440 0a 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .2....skipif mys
19450 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
19460 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
19470 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
19480 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
19490 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
194a0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
194b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
194c0 62 65 6c 2d 35 34 36 0d 0a 53 45 4c 45 43 54 20  bel-546..SELECT 
194d0 2b 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54  + SUM ( DISTINCT
194e0 20 63 6f 6c 31 20 29 20 2b 20 2d 20 36 34 20 63   col1 ) + - 64 c
194f0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
19500 2d 2d 2d 0d 0a 32 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..2....onlyif
19510 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
19520 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
19530 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
19540 65 6c 2d 35 34 37 0d 0a 53 45 4c 45 43 54 20 41  el-547..SELECT A
19550 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20  LL - COUNT( * ) 
19560 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
19570 2d 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20  - col0 * - col1 
19580 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  > NULL..----..0.
19590 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
195a0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
195b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
195c0 74 20 6c 61 62 65 6c 2d 35 34 37 0d 0a 53 45 4c  t label-547..SEL
195d0 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 20  ECT ALL - COUNT 
195e0 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ( * ) FROM tab0 
195f0 57 48 45 52 45 20 2d 20 63 6f 6c 30 20 2a 20 2d  WHERE - col0 * -
19600 20 63 6f 6c 31 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d   col1 > NULL..--
19610 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
19620 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
19630 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
19640 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
19650 6c 2d 35 34 38 0d 0a 53 45 4c 45 43 54 20 2b 20  l-548..SELECT + 
19660 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20 2b 20  MIN( DISTINCT + 
19670 35 30 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20  50 ) * - COUNT( 
19680 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
19690 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   tab1..----..-15
196a0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
196b0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
196c0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
196d0 6f 72 74 20 6c 61 62 65 6c 2d 35 34 38 0d 0a 53  ort label-548..S
196e0 45 4c 45 43 54 20 2b 20 4d 49 4e 20 28 20 44 49  ELECT + MIN ( DI
196f0 53 54 49 4e 43 54 20 2b 20 35 30 20 29 20 2a 20  STINCT + 50 ) * 
19700 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  - COUNT ( * ) AS
19710 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
19720 0a 2d 2d 2d 2d 0d 0a 2d 31 35 30 0d 0a 0d 0a 6f  .----..-150....o
19730 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
19740 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
19750 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19760 74 20 6c 61 62 65 6c 2d 35 34 39 0d 0a 53 45 4c  t label-549..SEL
19770 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 41 4c 4c  ECT - COUNT( ALL
19780 20 2b 20 63 6f 6c 32 20 29 20 2a 20 33 34 20 46   + col2 ) * 34 F
19790 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
197a0 2d 31 30 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -102....skipif m
197b0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
197c0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
197d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34 39  owsort label-549
197e0 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
197f0 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 29 20   ( ALL + col2 ) 
19800 2a 20 33 34 20 46 52 4f 4d 20 74 61 62 30 0d 0a  * 34 FROM tab0..
19810 2d 2d 2d 2d 0d 0a 2d 31 30 32 0d 0a 0d 0a 71 75  ----..-102....qu
19820 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
19830 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
19840 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52   col1 AS col1 FR
19850 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 63 6f  OM tab1 WHERE co
19860 6c 32 20 49 4e 20 28 20 2d 20 63 6f 6c 31 20 2b  l2 IN ( - col1 +
19870 20 31 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   10 )..----....o
19880 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
19890 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
198a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
198b0 74 20 6c 61 62 65 6c 2d 35 35 31 0d 0a 53 45 4c  t label-551..SEL
198c0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
198d0 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 39 30  OUNT( * ) * + 90
198e0 20 2b 20 2d 20 4d 49 4e 28 20 41 4c 4c 20 28 20   + - MIN( ALL ( 
198f0 2b 20 36 31 20 29 20 29 20 46 52 4f 4d 20 74 61  + 61 ) ) FROM ta
19900 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 39 0d 0a 0d  b2..----..209...
19910 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
19920 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
19930 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
19940 6c 61 62 65 6c 2d 35 35 31 0d 0a 53 45 4c 45 43  label-551..SELEC
19950 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55  T DISTINCT + COU
19960 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 39 30 20  NT ( * ) * + 90 
19970 2b 20 2d 20 4d 49 4e 20 28 20 41 4c 4c 20 28 20  + - MIN ( ALL ( 
19980 2b 20 36 31 20 29 20 29 20 46 52 4f 4d 20 74 61  + 61 ) ) FROM ta
19990 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 39 0d 0a 0d  b2..----..209...
199a0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
199b0 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
199c0 4d 20 74 61 62 30 20 57 48 45 52 45 20 28 20 2d  M tab0 WHERE ( -
199d0 20 63 6f 6c 32 20 29 20 3c 3e 20 4e 55 4c 4c 0d   col2 ) <> NULL.
199e0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
199f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
19a00 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 30 20 2a   col2 + - col0 *
19a10 20 2d 20 36 35 20 46 52 4f 4d 20 74 61 62 32 0d   - 65 FROM tab2.
19a20 0a 2d 2d 2d 2d 0d 0a 33 30 31 33 0d 0a 34 32 30  .----..3013..420
19a30 30 0d 0a 34 39 33 33 0d 0a 0d 0a 6f 6e 6c 79 69  0..4933....onlyi
19a40 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
19a50 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
19a60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19a70 62 65 6c 2d 35 35 34 0d 0a 53 45 4c 45 43 54 20  bel-554..SELECT 
19a80 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ALL - COUNT( * )
19a90 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
19aa0 72 30 20 57 48 45 52 45 20 28 20 63 6f 6c 30 20  r0 WHERE ( col0 
19ab0 29 20 3c 20 28 20 31 30 20 2b 20 2b 20 63 6f 6c  ) < ( 10 + + col
19ac0 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d  0 )..----..-3...
19ad0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
19ae0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
19af0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
19b00 6c 61 62 65 6c 2d 35 35 34 0d 0a 53 45 4c 45 43  label-554..SELEC
19b10 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 20 28 20  T ALL - COUNT ( 
19b20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  * ) FROM tab1 AS
19b30 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 63 6f   cor0 WHERE ( co
19b40 6c 30 20 29 20 3c 20 28 20 31 30 20 2b 20 2b 20  l0 ) < ( 10 + + 
19b50 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  col0 )..----..-3
19b60 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
19b70 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
19b80 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
19b90 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
19ba0 20 2b 20 63 6f 6c 30 20 3c 20 28 20 63 6f 6c 32   + col0 < ( col2
19bb0 20 2d 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d   - + col2 )..---
19bc0 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
19bd0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
19be0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
19bf0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
19c00 6c 61 62 65 6c 2d 35 35 36 0d 0a 53 45 4c 45 43  label-556..SELEC
19c10 54 20 2b 20 63 6f 6c 32 20 44 49 56 20 35 39 20  T + col2 DIV 59 
19c20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
19c30 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31  0..----..1..1..1
19c40 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
19c50 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
19c60 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
19c70 72 74 20 6c 61 62 65 6c 2d 35 35 36 0d 0a 53 45  rt label-556..SE
19c80 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2f 20 35 39  LECT + col2 / 59
19c90 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
19ca0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a  r0..----..1..1..
19cb0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
19cc0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  sort..SELECT - -
19cd0 20 36 37 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f   67 + col1 AS co
19ce0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
19cf0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 38 0d  cor0..----..118.
19d00 0a 31 33 34 0d 0a 31 34 34 0d 0a 0d 0a 71 75 65  .134..144....que
19d10 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
19d20 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2b 20 31 31  LECT - col1 + 11
19d30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
19d40 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
19d50 0d 0a 2d 31 30 0d 0a 2d 37 30 0d 0a 31 30 0d 0a  ..-10..-70..10..
19d60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19d70 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33 38  t..SELECT ALL 38
19d80 20 2a 20 63 6f 6c 30 20 2b 20 31 35 20 41 53 20   * col0 + 15 AS 
19d90 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
19da0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37  S cor0..----..17
19db0 36 33 0d 0a 32 34 34 37 0d 0a 32 38 36 35 0d 0a  63..2447..2865..
19dc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19dd0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
19de0 43 54 20 2b 20 2d 20 33 39 20 2b 20 2b 20 63 6f  CT + - 39 + + co
19df0 6c 32 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  l2 * + col2 FROM
19e00 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
19e10 2d 2d 2d 0d 0a 32 31 37 30 0d 0a 36 31 0d 0a 39  ---..2170..61..9
19e20 37 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  762....query I r
19e30 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
19e40 4c 4c 20 2b 20 63 6f 6c 30 20 2b 20 34 33 20 41  LL + col0 + 43 A
19e50 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
19e60 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
19e70 31 30 37 0d 0a 31 31 38 0d 0a 38 39 0d 0a 0d 0a  107..118..89....
19e80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
19e90 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
19ea0 20 2d 20 2b 20 34 34 20 2d 20 2b 20 63 6f 6c 31   - + 44 - + col1
19eb0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
19ec0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 39 0d 0a 2d  r0..----..-49..-
19ed0 35 38 0d 0a 2d 39 31 0d 0a 0d 0a 71 75 65 72 79  58..-91....query
19ee0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
19ef0 43 54 20 38 31 20 2b 20 2d 20 63 6f 6c 32 20 41  CT 81 + - col2 A
19f00 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
19f10 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   cor0..----..-15
19f20 0d 0a 31 33 0d 0a 32 32 0d 0a 0d 0a 73 6b 69 70  ..13..22....skip
19f30 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
19f40 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
19f50 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
19f60 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
19f70 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
19f80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32  sort..SELECT + 2
19f90 35 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  5 col0 FROM tab2
19fa0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
19fb0 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL IS NULL..---
19fc0 2d 0d 0a 32 35 0d 0a 32 35 0d 0a 32 35 0d 0a 0d  -..25..25..25...
19fd0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
19fe0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
19ff0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1a000 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1a010 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1a020 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1a030 54 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 35  T - - col1 + + 5
1a040 36 20 2a 20 63 6f 6c 31 20 63 6f 6c 31 20 46 52  6 * col1 col1 FR
1a050 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
1a060 2d 2d 0d 0a 31 31 39 37 0d 0a 34 36 31 37 0d 0a  --..1197..4617..
1a070 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  57....query I ro
1a080 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1a090 4c 20 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20 2d  L + ( - col0 ) -
1a0a0 20 2b 20 30 20 41 53 20 63 6f 6c 30 20 46 52 4f   + 0 AS col0 FRO
1a0b0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
1a0c0 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 38 37 0d 0a  ----..-15..-87..
1a0d0 2d 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -97....query I r
1a0e0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
1a0f0 20 28 20 2d 20 63 6f 6c 30 20 29 20 2b 20 2b 20   ( - col0 ) + + 
1a100 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
1a110 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S cor0..----..0.
1a120 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .0..0....query I
1a130 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1a140 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30   DISTINCT - col0
1a150 20 2b 20 31 36 20 41 53 20 63 6f 6c 30 20 46 52   + 16 AS col0 FR
1a160 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1a170 0a 2d 2d 2d 2d 0d 0a 2d 33 35 0d 0a 2d 36 39 0d  .----..-35..-69.
1a180 0a 2d 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-75....onlyif m
1a190 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1a1a0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1a1b0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1a1c0 2d 35 36 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -569..SELECT ALL
1a1d0 20 31 35 20 2d 20 4d 41 58 28 20 44 49 53 54 49   15 - MAX( DISTI
1a1e0 4e 43 54 20 2d 20 31 35 20 29 20 46 52 4f 4d 20  NCT - 15 ) FROM 
1a1f0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 30 0d 0a  tab1..----..30..
1a200 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1a210 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1a220 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a230 20 6c 61 62 65 6c 2d 35 36 39 0d 0a 53 45 4c 45   label-569..SELE
1a240 43 54 20 41 4c 4c 20 31 35 20 2d 20 4d 41 58 20  CT ALL 15 - MAX 
1a250 28 20 44 49 53 54 49 4e 43 54 20 2d 20 31 35 20  ( DISTINCT - 15 
1a260 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
1a270 2d 0d 0a 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49  -..30....query I
1a280 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1a290 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
1a2a0 62 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 32 20  b0 WHERE + col2 
1a2b0 4e 4f 54 20 42 45 54 57 45 45 4e 20 28 20 2b 20  NOT BETWEEN ( + 
1a2c0 63 6f 6c 32 20 2a 20 63 6f 6c 30 20 2b 20 39 31  col2 * col0 + 91
1a2d0 20 29 20 41 4e 44 20 4e 55 4c 4c 20 4f 52 20 4e   ) AND NULL OR N
1a2e0 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
1a2f0 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
1a300 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32  hashing to c4b42
1a310 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34  765dff94eaaa4604
1a320 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71  0e537fb43b7....q
1a330 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1a340 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
1a350 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
1a360 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab0 WHERE NOT ( 
1a370 2b 20 63 6f 6c 30 20 29 20 49 53 20 4e 55 4c 4c  + col0 ) IS NULL
1a380 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 31 0d 0a 38  ..----..1..21..8
1a390 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
1a3a0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
1a3b0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
1a3c0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 37  rowsort label-57
1a3d0 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 53 55  2..SELECT ALL SU
1a3e0 4d 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20 46 52  M( ALL col1 ) FR
1a3f0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
1a400 54 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55  T ( NULL ) IS NU
1a410 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  LL..----..NULL..
1a420 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1a430 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1a440 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a450 20 6c 61 62 65 6c 2d 35 37 32 0d 0a 53 45 4c 45   label-572..SELE
1a460 43 54 20 41 4c 4c 20 53 55 4d 20 28 20 41 4c 4c  CT ALL SUM ( ALL
1a470 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62   col1 ) FROM tab
1a480 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55  2 WHERE NOT ( NU
1a490 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  LL ) IS NULL..--
1a4a0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
1a4b0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
1a4c0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
1a4d0 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  1 WHERE NOT NULL
1a4e0 20 3c 3e 20 2b 20 28 20 63 6f 6c 32 20 29 0d 0a   <> + ( col2 )..
1a4f0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1a500 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
1a510 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
1a520 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1a530 72 74 20 6c 61 62 65 6c 2d 35 37 34 0d 0a 53 45  rt label-574..SE
1a540 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41  LECT DISTINCT CA
1a550 53 54 28 20 63 6f 6c 30 20 41 53 20 53 49 47 4e  ST( col0 AS SIGN
1a560 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32 20 57  ED ) FROM tab2 W
1a570 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53  HERE NOT NULL IS
1a580 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
1a590 0a 34 36 0d 0a 36 34 0d 0a 37 35 0d 0a 0d 0a 73  .46..64..75....s
1a5a0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1a5b0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1a5c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1a5d0 62 65 6c 2d 35 37 34 0d 0a 53 45 4c 45 43 54 20  bel-574..SELECT 
1a5e0 44 49 53 54 49 4e 43 54 20 43 41 53 54 20 28 20  DISTINCT CAST ( 
1a5f0 63 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52 20  col0 AS INTEGER 
1a600 29 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  ) FROM tab2 WHER
1a610 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f  E NOT NULL IS NO
1a620 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 34 36  T NULL..----..46
1a630 0d 0a 36 34 0d 0a 37 35 0d 0a 0d 0a 71 75 65 72  ..64..75....quer
1a640 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
1a650 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
1a660 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
1a670 57 48 45 52 45 20 4e 4f 54 20 39 35 20 3e 20 4e  WHERE NOT 95 > N
1a680 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
1a690 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1a6a0 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
1a6b0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
1a6c0 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3e 20 28 20 2b   NOT NULL <> ( +
1a6d0 20 36 31 20 2a 20 2d 20 63 6f 6c 31 20 29 0d 0a   61 * - col1 )..
1a6e0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1a6f0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
1a700 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
1a710 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1a720 72 74 20 6c 61 62 65 6c 2d 35 37 37 0d 0a 53 45  rt label-577..SE
1a730 4c 45 43 54 20 41 4c 4c 20 2d 20 34 39 20 2a 20  LECT ALL - 49 * 
1a740 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
1a750 47 4e 45 44 20 29 20 2d 20 2b 20 63 6f 6c 32 20  GNED ) - + col2 
1a760 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
1a770 53 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c  S cor0 WHERE col
1a780 32 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 43 41 53  2 + col0 * + CAS
1a790 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
1a7a0 44 20 29 20 3c 3e 20 28 20 2b 20 35 33 20 2a 20  D ) <> ( + 53 * 
1a7b0 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + col1 )..----..
1a7c0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1a7d0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1a7e0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
1a7f0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
1a800 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1a810 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1a820 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1a830 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1a840 35 37 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  577..SELECT ALL 
1a850 2d 20 34 39 20 2a 20 43 41 53 54 20 28 20 4e 55  - 49 * CAST ( NU
1a860 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
1a870 2d 20 2b 20 63 6f 6c 32 20 63 6f 6c 32 20 46 52  - + col2 col2 FR
1a880 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
1a890 57 48 45 52 45 20 63 6f 6c 32 20 2b 20 63 6f 6c  WHERE col2 + col
1a8a0 30 20 2a 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  0 * + CAST ( NUL
1a8b0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 3c  L AS INTEGER ) <
1a8c0 3e 20 28 20 2b 20 35 33 20 2a 20 2b 20 63 6f 6c  > ( + 53 * + col
1a8d0 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  1 )..----....onl
1a8e0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1a8f0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1a900 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1a910 6c 61 62 65 6c 2d 35 37 38 0d 0a 53 45 4c 45 43  label-578..SELEC
1a920 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55  T DISTINCT + COU
1a930 4e 54 28 20 2d 20 2b 20 63 6f 6c 30 20 29 20 46  NT( - + col0 ) F
1a940 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1a950 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..----..3....ski
1a960 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1a970 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1a980 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1a990 6c 2d 35 37 38 0d 0a 53 45 4c 45 43 54 20 44 49  l-578..SELECT DI
1a9a0 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28  STINCT + COUNT (
1a9b0 20 2d 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d   - + col0 ) FROM
1a9c0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
1a9d0 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20  ---..3....query 
1a9e0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1a9f0 54 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 2d 20 39  T ALL col2 * - 9
1aa00 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  2 FROM tab0 cor0
1aa10 20 57 48 45 52 45 20 28 20 63 6f 6c 31 20 2b 20   WHERE ( col1 + 
1aa20 63 6f 6c 32 20 29 20 49 53 20 4e 4f 54 20 4e 55  col2 ) IS NOT NU
1aa30 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33 32 34 0d  LL..----..-4324.
1aa40 0a 2d 39 31 30 38 0d 0a 2d 39 32 30 0d 0a 0d 0a  .-9108..-920....
1aa50 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1aa60 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1aa70 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
1aa80 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f  AS cor0 WHERE co
1aa90 6c 30 20 3c 3e 20 28 20 2d 20 63 6f 6c 31 20 29  l0 <> ( - col1 )
1aaa0 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a  ..----..10..47..
1aab0 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  99....query I ro
1aac0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
1aad0 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
1aae0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
1aaf0 20 63 6f 6c 30 20 2f 20 63 6f 6c 30 20 2d 20 2d   col0 / col0 - -
1ab00 20 31 36 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d   16 IS NULL..---
1ab10 2d 0d 0a 31 34 0d 0a 34 37 0d 0a 35 0d 0a 0d 0a  -..14..47..5....
1ab20 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1ab30 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
1ab40 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
1ab50 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
1ab60 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1ab70 65 6c 2d 35 38 32 0d 0a 53 45 4c 45 43 54 20 41  el-582..SELECT A
1ab80 4c 4c 20 43 41 53 54 28 20 2d 20 2d 20 43 4f 55  LL CAST( - - COU
1ab90 4e 54 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63  NT( DISTINCT + c
1aba0 6f 6c 31 20 29 20 41 53 20 53 49 47 4e 45 44 20  ol1 ) AS SIGNED 
1abb0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
1abc0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
1abd0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1abe0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1abf0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1ac00 61 62 65 6c 2d 35 38 32 0d 0a 53 45 4c 45 43 54  abel-582..SELECT
1ac10 20 41 4c 4c 20 43 41 53 54 20 28 20 2d 20 2d 20   ALL CAST ( - - 
1ac20 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54  COUNT ( DISTINCT
1ac30 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 49 4e 54   + col1 ) AS INT
1ac40 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30  EGER ) FROM tab0
1ac50 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1ac60 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  3....query III r
1ac70 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1ac80 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
1ac90 61 62 32 20 57 48 45 52 45 20 28 20 37 35 20 29  ab2 WHERE ( 75 )
1aca0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
1acb0 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
1acc0 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
1acd0 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
1ace0 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72  962d0a49....quer
1acf0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1ad00 45 43 54 20 41 4c 4c 20 2b 20 37 32 20 2b 20 2d  ECT ALL + 72 + -
1ad10 20 39 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53   90 FROM tab1 AS
1ad20 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
1ad30 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d   tab0 AS cor1..-
1ad40 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
1ad50 73 68 69 6e 67 20 74 6f 20 30 39 61 66 61 66 65  shing to 09afafe
1ad60 63 36 35 37 61 35 65 39 66 30 38 32 62 65 62 36  c657a5e9f082beb6
1ad70 61 31 36 65 63 38 35 64 65 0d 0a 0d 0a 6f 6e 6c  a16ec85de....onl
1ad80 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1ad90 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1ada0 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1adb0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38  rowsort label-58
1adc0 35 0d 0a 53 45 4c 45 43 54 20 41 56 47 20 28 20  5..SELECT AVG ( 
1add0 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28  DISTINCT + CAST(
1ade0 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
1adf0 29 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ) ) col1 FROM ta
1ae00 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b2..----..NULL..
1ae10 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1ae20 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1ae30 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
1ae40 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
1ae50 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1ae60 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1ae70 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1ae80 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1ae90 35 38 35 0d 0a 53 45 4c 45 43 54 20 41 56 47 20  585..SELECT AVG 
1aea0 28 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53  ( DISTINCT + CAS
1aeb0 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
1aec0 47 45 52 20 29 20 29 20 63 6f 6c 31 20 46 52 4f  GER ) ) col1 FRO
1aed0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab2..----..NU
1aee0 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
1aef0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
1af00 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
1af10 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
1af20 38 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  86..SELECT ALL +
1af30 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
1af40 20 74 61 62 31 20 57 48 45 52 45 20 28 20 2d 20   tab1 WHERE ( - 
1af50 39 31 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  91 ) IS NULL..--
1af60 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
1af70 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1af80 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1af90 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38  rowsort label-58
1afa0 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  6..SELECT ALL + 
1afb0 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
1afc0 20 74 61 62 31 20 57 48 45 52 45 20 28 20 2d 20   tab1 WHERE ( - 
1afd0 39 31 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  91 ) IS NULL..--
1afe0 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
1aff0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
1b000 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
1b010 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1b020 6f 72 74 20 6c 61 62 65 6c 2d 35 38 37 0d 0a 53  ort label-587..S
1b030 45 4c 45 43 54 20 28 20 43 41 53 54 28 20 4e 55  ELECT ( CAST( NU
1b040 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 29  LL AS SIGNED ) )
1b050 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1b060 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63  b0 WHERE NOT - c
1b070 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ol2 NOT BETWEEN 
1b080 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  1 AND NULL..----
1b090 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1b0a0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1b0b0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1b0c0 72 74 20 6c 61 62 65 6c 2d 35 38 37 0d 0a 53 45  rt label-587..SE
1b0d0 4c 45 43 54 20 28 20 43 41 53 54 20 28 20 4e 55  LECT ( CAST ( NU
1b0e0 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
1b0f0 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
1b100 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab0 WHERE NOT - 
1b110 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45 4e  col2 NOT BETWEEN
1b120 20 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d   1 AND NULL..---
1b130 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 49 49  -....query IIIII
1b140 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1b150 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
1b160 4d 20 28 20 74 61 62 31 20 41 53 20 63 6f 72 30  M ( tab1 AS cor0
1b170 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
1b180 20 41 53 20 63 6f 72 31 20 29 20 57 48 45 52 45   AS cor1 ) WHERE
1b190 20 4e 4f 54 20 28 20 32 31 20 29 20 49 53 20 4e   NOT ( 21 ) IS N
1b1a0 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
1b1b0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1b1c0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1b1d0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1b1e0 6f 72 74 20 6c 61 62 65 6c 2d 35 38 39 0d 0a 53  ort label-589..S
1b1f0 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 44  ELECT + COUNT( D
1b200 49 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 32  ISTINCT - - col2
1b210 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
1b220 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
1b230 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..3....skipif 
1b240 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1b250 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1b260 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38  rowsort label-58
1b270 39 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  9..SELECT + COUN
1b280 54 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 2d  T ( DISTINCT - -
1b290 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20   col2 ) AS col1 
1b2a0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1b2b0 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e  0..----..3....on
1b2c0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1b2d0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1b2e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1b2f0 20 6c 61 62 65 6c 2d 35 39 30 0d 0a 53 45 4c 45   label-590..SELE
1b300 43 54 20 41 4c 4c 20 2d 20 38 38 20 2a 20 43 4f  CT ALL - 88 * CO
1b310 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  UNT( * ) AS col1
1b320 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1b330 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 34 0d 0a  r0..----..-264..
1b340 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1b350 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1b360 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1b370 20 6c 61 62 65 6c 2d 35 39 30 0d 0a 53 45 4c 45   label-590..SELE
1b380 43 54 20 41 4c 4c 20 2d 20 38 38 20 2a 20 43 4f  CT ALL - 88 * CO
1b390 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
1b3a0 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
1b3b0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 34 0d  or0..----..-264.
1b3c0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
1b3d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1b3e0 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
1b3f0 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
1b400 4e 4f 54 20 4e 55 4c 4c 20 49 4e 20 28 20 2b 20  NOT NULL IN ( + 
1b410 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 2d 20 63 6f  col2 * col2 - co
1b420 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  l2 )..----....on
1b430 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
1b440 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
1b450 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
1b460 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
1b470 39 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  92..SELECT DISTI
1b480 4e 43 54 20 63 6f 6c 32 20 2d 20 2d 20 35 38 20  NCT col2 - - 58 
1b490 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1b4a0 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
1b4b0 4e 4f 54 20 2b 20 63 6f 6c 30 20 44 49 56 20 28  NOT + col0 DIV (
1b4c0 20 2d 20 63 6f 6c 31 20 29 20 2d 20 63 6f 6c 30   - col1 ) - col0
1b4d0 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63 6f 6c 30   NOT IN ( - col0
1b4e0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35 0d 0a 0d   )..----..105...
1b4f0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1b500 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1b510 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1b520 6c 61 62 65 6c 2d 35 39 32 0d 0a 53 45 4c 45 43  label-592..SELEC
1b530 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20  T DISTINCT col2 
1b540 2d 20 2d 20 35 38 20 41 53 20 63 6f 6c 32 20 46  - - 58 AS col2 F
1b550 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1b560 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c   WHERE NOT + col
1b570 30 20 2f 20 28 20 2d 20 63 6f 6c 31 20 29 20 2d  0 / ( - col1 ) -
1b580 20 63 6f 6c 30 20 4e 4f 54 20 49 4e 20 28 20 2d   col0 NOT IN ( -
1b590 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31   col0 )..----..1
1b5a0 30 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  05....query I ro
1b5b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1b5c0 4c 20 37 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20  L 7 - col0 FROM 
1b5d0 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
1b5e0 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20  RE NOT ( NULL ) 
1b5f0 49 4e 20 28 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d  IN ( col1 )..---
1b600 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
1b610 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1b620 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
1b630 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
1b640 45 20 4e 4f 54 20 2b 20 28 20 2b 20 2d 20 39 35  E NOT + ( + - 95
1b650 20 29 20 2a 20 2b 20 28 20 36 36 20 2a 20 31 32   ) * + ( 66 * 12
1b660 20 29 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   ) = NULL..----.
1b670 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
1b680 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1b690 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
1b6a0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
1b6b0 20 4e 55 4c 4c 20 29 20 3e 3d 20 2b 20 63 6f 6c   NULL ) >= + col
1b6c0 30 20 2f 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  0 / - col0..----
1b6d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1b6e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
1b6f0 6c 30 20 2a 20 38 33 20 46 52 4f 4d 20 74 61 62  l0 * 83 FROM tab
1b700 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
1b710 0a 31 32 34 35 0d 0a 37 32 32 31 0d 0a 38 30 35  .1245..7221..805
1b720 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
1b730 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1b740 20 2d 20 28 20 28 20 2b 20 34 30 20 29 20 29 20   - ( ( + 40 ) ) 
1b750 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1b760 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
1b770 0a 2d 34 30 0d 0a 2d 34 30 0d 0a 2d 34 30 0d 0a  .-40..-40..-40..
1b780 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1b790 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1b7a0 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
1b7b0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  or0 WHERE NOT ( 
1b7c0 4e 55 4c 4c 20 29 20 3c 3e 20 2d 20 38 31 0d 0a  NULL ) <> - 81..
1b7d0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
1b7e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1b7f0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57  col2 FROM tab0 W
1b800 48 45 52 45 20 4e 4f 54 20 32 35 20 3e 20 2d 20  HERE NOT 25 > - 
1b810 2d 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 0d 0a 2d  - col2 + col2..-
1b820 2d 2d 2d 0d 0a 34 37 0d 0a 39 39 0d 0a 0d 0a 6f  ---..47..99....o
1b830 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1b840 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d  ST syntax: DECIM
1b850 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  AL type: ..query
1b860 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
1b870 6c 2d 36 30 30 0d 0a 53 45 4c 45 43 54 20 28 20  l-600..SELECT ( 
1b880 2b 20 35 36 20 29 20 41 53 20 63 6f 6c 31 2c 20  + 56 ) AS col1, 
1b890 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
1b8a0 44 45 43 49 4d 41 4c 20 29 20 2b 20 63 6f 6c 30  DECIMAL ) + col0
1b8b0 20 2a 20 2b 20 28 20 2d 20 63 6f 6c 32 20 29 20   * + ( - col2 ) 
1b8c0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1b8d0 31 0d 0a 2d 2d 2d 2d 0d 0a 35 36 0d 0a 4e 55 4c  1..----..56..NUL
1b8e0 4c 0d 0a 35 36 0d 0a 4e 55 4c 4c 0d 0a 35 36 0d  L..56..NULL..56.
1b8f0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
1b900 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1b910 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
1b920 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1b930 30 30 0d 0a 53 45 4c 45 43 54 20 28 20 2b 20 35  00..SELECT ( + 5
1b940 36 20 29 20 41 53 20 63 6f 6c 31 2c 20 2b 20 43  6 ) AS col1, + C
1b950 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45  AST ( NULL AS RE
1b960 41 4c 20 29 20 2b 20 63 6f 6c 30 20 2a 20 2b 20  AL ) + col0 * + 
1b970 28 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  ( - col2 ) AS co
1b980 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
1b990 2d 2d 0d 0a 35 36 0d 0a 4e 55 4c 4c 0d 0a 35 36  --..56..NULL..56
1b9a0 0d 0a 4e 55 4c 4c 0d 0a 35 36 0d 0a 4e 55 4c 4c  ..NULL..56..NULL
1b9b0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1b9c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1b9d0 49 4e 43 54 20 41 56 47 20 28 20 2b 20 63 6f 6c  INCT AVG ( + col
1b9e0 30 20 29 20 2a 20 2b 20 28 20 2d 20 41 56 47 20  0 ) * + ( - AVG 
1b9f0 28 20 2d 20 63 6f 6c 30 20 29 20 29 20 46 52 4f  ( - col0 ) ) FRO
1ba00 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
1ba10 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 2d   NULL NOT IN ( -
1ba20 20 36 39 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   69 )..----..NUL
1ba30 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  L....query III r
1ba40 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1ba50 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57  LL * FROM tab0 W
1ba60 48 45 52 45 20 2b 20 2b 20 63 6f 6c 32 20 2d 20  HERE + + col2 - 
1ba70 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col0 IS NULL..--
1ba80 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
1ba90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1baa0 4c 20 2d 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29  L - ( - - col0 )
1bab0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1bac0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d  b1..----..-51..-
1bad0 38 35 0d 0a 2d 39 31 0d 0a 0d 0a 6f 6e 6c 79 69  85..-91....onlyi
1bae0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
1baf0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
1bb00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1bb10 62 65 6c 2d 36 30 34 0d 0a 53 45 4c 45 43 54 20  bel-604..SELECT 
1bb20 4d 49 4e 28 20 2d 20 2b 20 63 6f 6c 31 20 29 20  MIN( - + col1 ) 
1bb30 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1bb40 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37 0d 0a 0d 0a  1..----..-47....
1bb50 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1bb60 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1bb70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1bb80 61 62 65 6c 2d 36 30 34 0d 0a 53 45 4c 45 43 54  abel-604..SELECT
1bb90 20 4d 49 4e 20 28 20 2d 20 2b 20 63 6f 6c 31 20   MIN ( - + col1 
1bba0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
1bbb0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37 0d 0a  ab1..----..-47..
1bbc0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1bbd0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1bbe0 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
1bbf0 45 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 36 32 20  E - col0 + - 62 
1bc00 2a 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a  * col0 IS NULL..
1bc10 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
1bc20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1bc30 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48  T * FROM tab2 WH
1bc40 45 52 45 20 2b 20 33 33 20 4e 4f 54 20 42 45 54  ERE + 33 NOT BET
1bc50 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 28 20  WEEN NULL AND ( 
1bc60 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col1 )..----....
1bc70 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1bc80 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1bc90 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1bca0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1bcb0 2d 36 30 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -607..SELECT ALL
1bcc0 20 2b 20 34 36 20 2b 20 2b 20 63 6f 6c 31 20 2b   + 46 + + col1 +
1bcd0 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
1bce0 20 53 49 47 4e 45 44 20 29 20 2f 20 2d 20 63 6f   SIGNED ) / - co
1bcf0 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
1bd00 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab1..----..NULL
1bd10 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
1bd20 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1bd30 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1bd40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1bd50 61 62 65 6c 2d 36 30 37 0d 0a 53 45 4c 45 43 54  abel-607..SELECT
1bd60 20 41 4c 4c 20 2b 20 34 36 20 2b 20 2b 20 63 6f   ALL + 46 + + co
1bd70 6c 31 20 2b 20 2b 20 43 41 53 54 20 28 20 4e 55  l1 + + CAST ( NU
1bd80 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
1bd90 2f 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  / - col1 AS col0
1bda0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1bdb0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
1bdc0 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
1bdd0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
1bde0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
1bdf0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1be00 30 38 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 41 58  08..SELECT + MAX
1be10 28 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61  ( col2 ) FROM ta
1be20 62 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 3e 3d  b2 WHERE NULL >=
1be30 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32   + col0 * - col2
1be40 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
1be50 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1be60 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1be70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1be80 61 62 65 6c 2d 36 30 38 0d 0a 53 45 4c 45 43 54  abel-608..SELECT
1be90 20 2b 20 4d 41 58 20 28 20 63 6f 6c 32 20 29 20   + MAX ( col2 ) 
1bea0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
1beb0 4e 55 4c 4c 20 3e 3d 20 2b 20 63 6f 6c 30 20 2a  NULL >= + col0 *
1bec0 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e   - col2..----..N
1bed0 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
1bee0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1bef0 4c 4c 20 2b 20 28 20 2d 20 2b 20 33 36 20 29 20  LL + ( - + 36 ) 
1bf00 2a 20 2b 20 35 30 20 2b 20 2b 20 36 39 20 2b 20  * + 50 + + 69 + 
1bf10 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  - col1 FROM tab1
1bf20 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 33 36 0d 0a 2d  ..----..-1736..-
1bf30 31 37 34 35 0d 0a 2d 31 37 37 38 0d 0a 0d 0a 6f  1745..-1778....o
1bf40 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1bf50 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1bf60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1bf70 74 20 6c 61 62 65 6c 2d 36 31 30 0d 0a 53 45 4c  t label-610..SEL
1bf80 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ECT - COUNT( * )
1bf90 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1bfa0 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  b0 WHERE NULL NO
1bfb0 54 20 42 45 54 57 45 45 4e 20 2d 20 35 35 20 2a  T BETWEEN - 55 *
1bfc0 20 2d 20 2d 20 38 31 20 2a 20 2d 20 63 6f 6c 30   - - 81 * - col0
1bfd0 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   AND NULL..----.
1bfe0 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
1bff0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1c000 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1c010 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 30 0d 0a  sort label-610..
1c020 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28  SELECT - COUNT (
1c030 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   * ) AS col0 FRO
1c040 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 55 4c  M tab0 WHERE NUL
1c050 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20  L NOT BETWEEN - 
1c060 35 35 20 2a 20 2d 20 2d 20 38 31 20 2a 20 2d 20  55 * - - 81 * - 
1c070 63 6f 6c 30 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d  col0 AND NULL..-
1c080 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
1c090 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1c0a0 54 20 41 4c 4c 20 63 6f 6c 30 20 2b 20 2b 20 28  T ALL col0 + + (
1c0b0 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20   col2 ) AS col2 
1c0c0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
1c0d0 0a 31 30 34 0d 0a 31 33 33 0d 0a 36 39 0d 0a 0d  .104..133..69...
1c0e0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
1c0f0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1c100 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
1c110 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
1c120 32 30 20 2b 20 31 34 20 2a 20 2d 20 63 6f 6c 31  20 + 14 * - col1
1c130 20 2a 20 2b 20 63 6f 6c 32 20 49 53 20 4e 4f 54   * + col2 IS NOT
1c140 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
1c150 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
1c160 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61   c4b42765dff94ea
1c170 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62  aa46040e537fb43b
1c180 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
1c190 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35  sort..SELECT - 5
1c1a0 36 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  6 + col1 FROM ta
1c1b0 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
1c1c0 20 2d 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e   - col2 IS NOT N
1c1d0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 0d 0a  ULL..----..-35..
1c1e0 2d 35 35 0d 0a 32 35 0d 0a 0d 0a 71 75 65 72 79  -55..25....query
1c1f0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1c200 43 54 20 41 4c 4c 20 2d 20 31 37 20 41 53 20 63  CT ALL - 17 AS c
1c210 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
1c220 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 4f   cor0 WHERE ( NO
1c230 54 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45  T NULL NOT BETWE
1c240 45 4e 20 28 20 2d 20 35 20 29 20 41 4e 44 20 34  EN ( - 5 ) AND 4
1c250 31 20 2a 20 2d 20 63 6f 6c 30 20 29 0d 0a 2d 2d  1 * - col0 )..--
1c260 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
1c270 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1c280 53 54 49 4e 43 54 20 2b 20 28 20 28 20 2b 20 63  STINCT + ( ( + c
1c290 6f 6c 32 20 29 20 29 20 2d 20 2b 20 2d 20 63 6f  ol2 ) ) - + - co
1c2a0 6c 32 20 2d 20 36 32 20 46 52 4f 4d 20 74 61 62  l2 - 62 FROM tab
1c2b0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a 31 38  2..----..-16..18
1c2c0 0d 0a 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..54....query I 
1c2d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1c2e0 38 32 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 2a 20  82 * + - col1 * 
1c2f0 2d 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  - + col1 FROM ta
1c300 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 36 30 37 32 0d  b1..----..16072.
1c310 0a 31 38 31 31 33 38 0d 0a 32 30 35 30 0d 0a 0d  .181138..2050...
1c320 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1c330 0d 0a 53 45 4c 45 43 54 20 2d 20 32 34 20 41 53  ..SELECT - 24 AS
1c340 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
1c350 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
1c360 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
1c370 0d 0a 2d 32 34 0d 0a 2d 32 34 0d 0a 2d 32 34 0d  ..-24..-24..-24.
1c380 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1c390 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
1c3a0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
1c3b0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 38 0d  wsort label-618.
1c3c0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20  .SELECT ALL + - 
1c3d0 31 37 20 2b 20 2b 20 2b 20 43 4f 55 4e 54 28 20  17 + + + COUNT( 
1c3e0 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  * ) FROM tab0 AS
1c3f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34   cor0..----..-14
1c400 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1c410 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1c420 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1c430 72 74 20 6c 61 62 65 6c 2d 36 31 38 0d 0a 53 45  rt label-618..SE
1c440 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 31 37 20  LECT ALL + - 17 
1c450 2b 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  + + + COUNT ( * 
1c460 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
1c470 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d 0a  or0..----..-14..
1c480 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1c490 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
1c4a0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
1c4b0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1c4c0 65 6c 2d 36 31 39 0d 0a 53 45 4c 45 43 54 20 2b  el-619..SELECT +
1c4d0 20 2d 20 63 6f 6c 31 20 2d 20 2d 20 63 6f 6c 31   - col1 - - col1
1c4e0 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 43 41   + + col2 + - CA
1c4f0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
1c500 45 44 20 29 20 2b 20 2d 20 2d 20 37 35 20 2a 20  ED ) + - - 75 * 
1c510 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
1c520 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
1c530 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
1c540 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1c550 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1c560 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1c570 20 6c 61 62 65 6c 2d 36 31 39 0d 0a 53 45 4c 45   label-619..SELE
1c580 43 54 20 2b 20 2d 20 63 6f 6c 31 20 2d 20 2d 20  CT + - col1 - - 
1c590 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20 2b 20  col1 + + col2 + 
1c5a0 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
1c5b0 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d 20 2d   INTEGER ) + - -
1c5c0 20 37 35 20 2a 20 63 6f 6c 30 20 46 52 4f 4d 20   75 * col0 FROM 
1c5d0 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
1c5e0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
1c5f0 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
1c600 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1c610 31 35 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  15 AS col1 FROM 
1c620 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
1c630 52 45 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d  RE col0 IS NULL.
1c640 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
1c650 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1c660 20 41 4c 4c 20 2b 20 35 32 20 2b 20 2d 20 63 6f   ALL + 52 + - co
1c670 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l2 AS col1 FROM 
1c680 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
1c690 2d 2d 0d 0a 2d 31 36 0d 0a 2d 34 34 0d 0a 2d 37  --..-16..-44..-7
1c6a0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
1c6b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
1c6c0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
1c6d0 4e 4f 54 20 2d 20 39 36 20 3c 20 2d 20 31 30 0d  NOT - 96 < - 10.
1c6e0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
1c6f0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
1c700 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
1c710 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1c720 6f 72 74 20 6c 61 62 65 6c 2d 36 32 33 0d 0a 53  ort label-623..S
1c730 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
1c740 20 37 31 20 44 49 56 20 36 33 20 41 53 20 63 6f   71 DIV 63 AS co
1c750 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
1c760 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66  --..-1....skipif
1c770 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1c780 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1c790 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1c7a0 32 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  23..SELECT DISTI
1c7b0 4e 43 54 20 2d 20 37 31 20 2f 20 36 33 20 41 53  NCT - 71 / 63 AS
1c7c0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
1c7d0 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 71 75 65  .----..-1....que
1c7e0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1c7f0 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
1c800 62 31 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  b1 WHERE NOT col
1c810 32 20 2a 20 2b 20 2d 20 33 35 20 49 53 20 4e 4f  2 * + - 35 IS NO
1c820 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
1c830 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1c840 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
1c850 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
1c860 28 20 4e 55 4c 4c 20 29 20 4e 4f 54 20 42 45 54  ( NULL ) NOT BET
1c870 57 45 45 4e 20 2d 20 28 20 2d 20 37 30 20 29 20  WEEN - ( - 70 ) 
1c880 41 4e 44 20 28 20 2b 20 36 38 20 29 0d 0a 2d 2d  AND ( + 68 )..--
1c890 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
1c8a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
1c8b0 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32 20 46 52  col0 * + col2 FR
1c8c0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
1c8d0 54 20 28 20 63 6f 6c 31 20 29 20 4e 4f 54 20 42  T ( col1 ) NOT B
1c8e0 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
1c8f0 2b 20 63 6f 6c 30 20 2b 20 2d 20 31 38 0d 0a 2d  + col0 + - 18..-
1c900 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
1c910 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1c920 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1c930 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1c940 36 32 37 0d 0a 53 45 4c 45 43 54 20 2d 20 38 34  627..SELECT - 84
1c950 20 2a 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20   * + - COUNT( * 
1c960 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
1c970 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 35 32 0d 0a  ab0..----..252..
1c980 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1c990 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1c9a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1c9b0 20 6c 61 62 65 6c 2d 36 32 37 0d 0a 53 45 4c 45   label-627..SELE
1c9c0 43 54 20 2d 20 38 34 20 2a 20 2b 20 2d 20 43 4f  CT - 84 * + - CO
1c9d0 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
1c9e0 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
1c9f0 2d 0d 0a 32 35 32 0d 0a 0d 0a 71 75 65 72 79 20  -..252....query 
1ca00 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
1ca10 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
1ca20 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
1ca30 45 20 4e 4f 54 20 2d 20 32 38 20 49 53 20 4e 55  E NOT - 28 IS NU
1ca40 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
1ca50 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36  es hashing to c6
1ca60 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63  c0a4111b36d04dbc
1ca70 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a  811a11e4d54cad..
1ca80 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1ca90 74 0d 0a 53 45 4c 45 43 54 20 2b 20 30 20 46 52  t..SELECT + 0 FR
1caa0 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45  OM tab2 cor0 WHE
1cab0 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e  RE NOT NULL IS N
1cac0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
1cad0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1cae0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1caf0 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
1cb00 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  or0 WHERE NOT ( 
1cb10 4e 55 4c 4c 20 29 20 3c 20 63 6f 6c 30 0d 0a 2d  NULL ) < col0..-
1cb20 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
1cb30 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1cb40 4c 4c 20 2b 20 37 32 20 41 53 20 63 6f 6c 32 20  LL + 72 AS col2 
1cb50 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57  FROM tab2 cor0 W
1cb60 48 45 52 45 20 4e 4f 54 20 2d 20 31 31 20 2b 20  HERE NOT - 11 + 
1cb70 2d 20 2d 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20  - - col1 IS NOT 
1cb80 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
1cb90 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1cba0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
1cbb0 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
1cbc0 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
1cbd0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20  lumns..query II 
1cbe0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1cbf0 44 49 53 54 49 4e 43 54 20 2b 20 37 2c 20 63 6f  DISTINCT + 7, co
1cc00 6c 31 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l1 col1 FROM tab
1cc10 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
1cc20 0a 37 0d 0a 31 34 0d 0a 37 0d 0a 34 37 0d 0a 37  .7..14..7..47..7
1cc30 0d 0a 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..5....query I r
1cc40 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35  owsort..SELECT 5
1cc50 39 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  9 AS col2 FROM t
1cc60 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
1cc70 63 6f 6c 31 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d  col1 > NULL..---
1cc80 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
1cc90 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
1cca0 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
1ccb0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1ccc0 74 20 6c 61 62 65 6c 2d 36 33 34 0d 0a 53 45 4c  t label-634..SEL
1ccd0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
1cce0 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
1ccf0 55 4c 4c 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c  ULL BETWEEN NULL
1cd00 20 41 4e 44 20 28 20 63 6f 6c 31 20 2b 20 2b 20   AND ( col1 + + 
1cd10 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
1cd20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 2b 20 63  SIGNED ) + + + c
1cd30 6f 6c 32 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 63  ol2 + - col0 * c
1cd40 6f 6c 31 20 2b 20 2b 20 63 6f 6c 31 20 29 0d 0a  ol1 + + col1 )..
1cd50 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ----....skipif m
1cd60 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1cd70 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49  tible..query III
1cd80 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1cd90 33 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  34..SELECT DISTI
1cda0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
1cdb0 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54 57 45  WHERE NULL BETWE
1cdc0 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 28 20 63 6f  EN NULL AND ( co
1cdd0 6c 31 20 2b 20 2b 20 2d 20 43 41 53 54 20 28 20  l1 + + - CAST ( 
1cde0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
1cdf0 29 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d  ) + + + col2 + -
1ce00 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20 2b 20 2b   col0 * col1 + +
1ce10 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col1 )..----...
1ce20 0a 71 75 65 72 79 20 49 49 49 49 49 49 20 72 6f  .query IIIIII ro
1ce30 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1ce40 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  L * FROM tab0 co
1ce50 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
1ce60 62 31 20 41 53 20 63 6f 72 31 20 57 48 45 52 45  b1 AS cor1 WHERE
1ce70 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3d 20 2d 20 37   NOT NULL <= - 7
1ce80 39 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  9..----....onlyi
1ce90 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
1cea0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1ceb0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20  pe: ..query III 
1cec0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33  rowsort label-63
1ced0 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  6..SELECT DISTIN
1cee0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
1cef0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
1cf00 20 28 20 2d 20 28 20 2b 20 43 41 53 54 28 20 2b   ( - ( + CAST( +
1cf10 20 2d 20 33 36 20 41 53 20 53 49 47 4e 45 44 20   - 36 AS SIGNED 
1cf20 29 20 29 20 29 20 2a 20 2b 20 34 34 20 2f 20 2b  ) ) ) * + 44 / +
1cf30 20 2d 20 63 6f 6c 31 20 4e 4f 54 20 42 45 54 57   - col1 NOT BETW
1cf40 45 45 4e 20 28 20 2b 20 63 6f 6c 30 20 29 20 41  EEN ( + col0 ) A
1cf50 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  ND NULL..----...
1cf60 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1cf70 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1cf80 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1cf90 74 20 6c 61 62 65 6c 2d 36 33 36 0d 0a 53 45 4c  t label-636..SEL
1cfa0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
1cfb0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1cfc0 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 28   WHERE NOT ( - (
1cfd0 20 2b 20 43 41 53 54 20 28 20 2b 20 2d 20 33 36   + CAST ( + - 36
1cfe0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
1cff0 29 20 2a 20 2b 20 34 34 20 2f 20 2b 20 2d 20 63  ) * + 44 / + - c
1d000 6f 6c 31 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ol1 NOT BETWEEN 
1d010 28 20 2b 20 63 6f 6c 30 20 29 20 41 4e 44 20 4e  ( + col0 ) AND N
1d020 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
1d030 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1d040 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1d050 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1d060 6c 61 62 65 6c 2d 36 33 37 0d 0a 53 45 4c 45 43  label-637..SELEC
1d070 54 20 2b 20 43 4f 55 4e 54 28 20 2d 20 28 20 2b  T + COUNT( - ( +
1d080 20 63 6f 6c 32 20 29 20 29 20 46 52 4f 4d 20 74   col2 ) ) FROM t
1d090 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
1d0a0 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..3....skipif m
1d0b0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1d0c0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1d0d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 37  owsort label-637
1d0e0 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
1d0f0 20 28 20 2d 20 28 20 2b 20 63 6f 6c 32 20 29 20   ( - ( + col2 ) 
1d100 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
1d110 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
1d120 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1d130 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
1d140 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
1d150 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 2b 20 2b  ERE NOT col1 + +
1d160 20 36 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d   61 IS NULL..---
1d170 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
1d180 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35  ing to 75c998aa5
1d190 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39  3ac83218cbf2feb9
1d1a0 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79  62d0a49....query
1d1b0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
1d1c0 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
1d1d0 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
1d1e0 52 45 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20  RE NULL BETWEEN 
1d1f0 63 6f 6c 30 20 2a 20 2d 20 2b 20 63 6f 6c 32 20  col0 * - + col2 
1d200 41 4e 44 20 2d 20 34 36 0d 0a 2d 2d 2d 2d 0d 0a  AND - 46..----..
1d210 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1d220 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1d230 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1d240 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 30 0d 0a  sort label-640..
1d250 53 45 4c 45 43 54 20 2b 20 2b 20 4d 41 58 28 20  SELECT + + MAX( 
1d260 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 29 20  DISTINCT col1 ) 
1d270 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1d280 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
1d290 0a 37 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .77....skipif my
1d2a0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1d2b0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1d2c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 30 0d  wsort label-640.
1d2d0 0a 53 45 4c 45 43 54 20 2b 20 2b 20 4d 41 58 20  .SELECT + + MAX 
1d2e0 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20  ( DISTINCT col1 
1d2f0 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
1d300 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
1d310 2d 0d 0a 37 37 0d 0a 0d 0a 71 75 65 72 79 20 49  -..77....query I
1d320 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1d330 20 2b 20 2b 20 36 32 20 2a 20 63 6f 6c 31 20 41   + + 62 * col1 A
1d340 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
1d350 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1d360 32 39 31 34 0d 0a 33 31 30 0d 0a 38 36 38 0d 0a  2914..310..868..
1d370 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
1d380 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1d390 4e 43 54 20 39 31 20 41 53 20 63 6f 6c 32 2c 20  NCT 91 AS col2, 
1d3a0 36 38 20 2a 20 63 6f 6c 32 20 2a 20 2d 20 63 6f  68 * col2 * - co
1d3b0 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
1d3c0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 34  cor0 WHERE NOT 4
1d3d0 33 20 3e 20 2d 20 63 6f 6c 30 20 2f 20 2d 20 2d  3 > - col0 / - -
1d3e0 20 39 34 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65   94..----....que
1d3f0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1d400 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1d410 38 34 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  84 AS col1 FROM 
1d420 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
1d430 52 45 20 4e 4f 54 20 2d 20 33 20 42 45 54 57 45  RE NOT - 3 BETWE
1d440 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2d 20 32 0d  EN NULL AND - 2.
1d450 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
1d460 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
1d470 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
1d480 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1d490 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
1d4a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 34 0d  wsort label-644.
1d4b0 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20  .SELECT + CAST( 
1d4c0 39 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b  90 AS SIGNED ) +
1d4d0 20 2d 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54   - SUM( DISTINCT
1d4e0 20 2d 20 35 36 20 29 20 46 52 4f 4d 20 74 61 62   - 56 ) FROM tab
1d4f0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
1d500 0a 31 34 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .146....skipif m
1d510 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1d520 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1d530 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 34  owsort label-644
1d540 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20  ..SELECT + CAST 
1d550 28 20 39 30 20 41 53 20 49 4e 54 45 47 45 52 20  ( 90 AS INTEGER 
1d560 29 20 2b 20 2d 20 53 55 4d 20 28 20 44 49 53 54  ) + - SUM ( DIST
1d570 49 4e 43 54 20 2d 20 35 36 20 29 20 46 52 4f 4d  INCT - 56 ) FROM
1d580 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
1d590 2d 2d 2d 0d 0a 31 34 36 0d 0a 0d 0a 71 75 65 72  ---..146....quer
1d5a0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1d5b0 45 43 54 20 2b 20 2d 20 33 39 20 2b 20 2d 20 39  ECT + - 39 + - 9
1d5c0 35 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  5 FROM tab2 AS c
1d5d0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 34 0d  or0..----..-134.
1d5e0 0a 2d 31 33 34 0d 0a 2d 31 33 34 0d 0a 0d 0a 71  .-134..-134....q
1d5f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1d600 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
1d610 30 20 2b 20 32 36 20 46 52 4f 4d 20 74 61 62 30  0 + 26 FROM tab0
1d620 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 31 0d 0a 2d 37 31  ..----..-61..-71
1d630 0d 0a 31 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..11....onlyif m
1d640 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1d650 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1d660 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1d670 2d 36 34 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -647..SELECT ALL
1d680 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   + COUNT( * ) * 
1d690 36 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  61 FROM tab1..--
1d6a0 2d 2d 0d 0a 31 38 33 0d 0a 0d 0a 73 6b 69 70 69  --..183....skipi
1d6b0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1d6c0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1d6d0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1d6e0 36 34 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  647..SELECT ALL 
1d6f0 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  + COUNT ( * ) * 
1d700 36 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  61 FROM tab1..--
1d710 2d 2d 0d 0a 31 38 33 0d 0a 0d 0a 71 75 65 72 79  --..183....query
1d720 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
1d730 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
1d740 20 57 48 45 52 45 20 28 20 2d 20 2d 20 63 6f 6c   WHERE ( - - col
1d750 30 20 2a 20 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c  0 * + col0 * col
1d760 30 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  0 ) IS NULL..---
1d770 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
1d780 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1d790 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 2b 20 35 30   + col0 * + + 50
1d7a0 20 2a 20 2b 20 34 36 20 46 52 4f 4d 20 74 61 62   * + 46 FROM tab
1d7b0 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35 38 30 30 0d  2..----..105800.
1d7c0 0a 31 34 37 32 30 30 0d 0a 31 37 32 35 30 30 0d  .147200..172500.
1d7d0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1d7e0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
1d7f0 20 63 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31   col1 * - - col1
1d800 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c   + + col2 AS col
1d810 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
1d820 2d 0d 0a 2d 31 30 30 0d 0a 2d 32 31 34 31 0d 0a  -..-100..-2141..
1d830 33 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  34....query III 
1d840 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1d850 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ALL * FROM tab0 
1d860 63 6f 72 30 20 57 48 45 52 45 20 32 31 20 49 53  cor0 WHERE 21 IS
1d870 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
1d880 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
1d890 67 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66  g to c4b42765dff
1d8a0 39 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66  94eaaa46040e537f
1d8b0 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  b43b7....onlyif 
1d8c0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
1d8d0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
1d8e0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1d8f0 6c 2d 36 35 32 0d 0a 53 45 4c 45 43 54 20 2d 20  l-652..SELECT - 
1d900 4d 49 4e 28 20 2b 20 36 34 20 29 20 41 53 20 63  MIN( + 64 ) AS c
1d910 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
1d920 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 34   cor0..----..-64
1d930 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1d940 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1d950 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1d960 72 74 20 6c 61 62 65 6c 2d 36 35 32 0d 0a 53 45  rt label-652..SE
1d970 4c 45 43 54 20 2d 20 4d 49 4e 20 28 20 2b 20 36  LECT - MIN ( + 6
1d980 34 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  4 ) AS col0 FROM
1d990 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
1d9a0 2d 2d 2d 0d 0a 2d 36 34 0d 0a 0d 0a 6f 6e 6c 79  ---..-64....only
1d9b0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
1d9c0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
1d9d0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
1d9e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35  rowsort label-65
1d9f0 33 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f  3..SELECT + + co
1da00 6c 31 20 2a 20 2d 20 63 6f 6c 30 20 2a 20 2d 20  l1 * - col0 * - 
1da10 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
1da20 47 4e 45 44 20 29 20 2a 20 2d 20 38 32 20 2a 20  GNED ) * - 82 * 
1da30 2b 20 63 6f 6c 30 20 2d 20 2b 20 43 41 53 54 28  + col0 - + CAST(
1da40 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
1da50 29 20 41 53 20 63 6f 6c 32 2c 20 2b 20 35 34 20  ) AS col2, + 54 
1da60 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1da70 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
1da80 0a 4e 55 4c 4c 0d 0a 35 34 0d 0a 4e 55 4c 4c 0d  .NULL..54..NULL.
1da90 0a 35 34 0d 0a 4e 55 4c 4c 0d 0a 35 34 0d 0a 0d  .54..NULL..54...
1daa0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1dab0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1dac0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
1dad0 20 6c 61 62 65 6c 2d 36 35 33 0d 0a 53 45 4c 45   label-653..SELE
1dae0 43 54 20 2b 20 2b 20 63 6f 6c 31 20 2a 20 2d 20  CT + + col1 * - 
1daf0 63 6f 6c 30 20 2a 20 2d 20 43 41 53 54 20 28 20  col0 * - CAST ( 
1db00 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
1db10 29 20 2a 20 2d 20 38 32 20 2a 20 2b 20 63 6f 6c  ) * - 82 * + col
1db20 30 20 2d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  0 - + CAST ( NUL
1db30 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  L AS INTEGER ) A
1db40 53 20 63 6f 6c 32 2c 20 2b 20 35 34 20 41 53 20  S col2, + 54 AS 
1db50 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
1db60 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
1db70 4c 4c 0d 0a 35 34 0d 0a 4e 55 4c 4c 0d 0a 35 34  LL..54..NULL..54
1db80 0d 0a 4e 55 4c 4c 0d 0a 35 34 0d 0a 0d 0a 6f 6e  ..NULL..54....on
1db90 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
1dba0 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
1dbb0 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
1dbc0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1dbd0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1dbe0 2d 36 35 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -654..SELECT DIS
1dbf0 54 49 4e 43 54 20 53 55 4d 28 20 44 49 53 54 49  TINCT SUM( DISTI
1dc00 4e 43 54 20 2d 20 2d 20 63 6f 6c 31 20 29 20 2d  NCT - - col1 ) -
1dc10 20 2d 20 2b 20 28 20 2b 20 2d 20 43 41 53 54 28   - + ( + - CAST(
1dc20 20 36 37 20 41 53 20 53 49 47 4e 45 44 20 29 20   67 AS SIGNED ) 
1dc30 29 20 2a 20 39 31 20 2a 20 2b 20 35 39 20 2a 20  ) * 91 * + 59 * 
1dc40 2d 20 2d 20 39 36 20 46 52 4f 4d 20 74 61 62 32  - - 96 FROM tab2
1dc50 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1dc60 2d 33 34 35 33 33 32 31 33 0d 0a 0d 0a 73 6b 69  -34533213....ski
1dc70 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1dc80 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1dc90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1dca0 6c 2d 36 35 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-654..SELECT DI
1dcb0 53 54 49 4e 43 54 20 53 55 4d 20 28 20 44 49 53  STINCT SUM ( DIS
1dcc0 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 31 20 29  TINCT - - col1 )
1dcd0 20 2d 20 2d 20 2b 20 28 20 2b 20 2d 20 43 41 53   - - + ( + - CAS
1dce0 54 20 28 20 36 37 20 41 53 20 49 4e 54 45 47 45  T ( 67 AS INTEGE
1dcf0 52 20 29 20 29 20 2a 20 39 31 20 2a 20 2b 20 35  R ) ) * 91 * + 5
1dd00 39 20 2a 20 2d 20 2d 20 39 36 20 46 52 4f 4d 20  9 * - - 96 FROM 
1dd10 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
1dd20 2d 2d 0d 0a 2d 33 34 35 33 33 32 31 33 0d 0a 0d  --..-34533213...
1dd30 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
1dd40 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
1dd50 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1dd60 72 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 32 20  r0 WHERE - col2 
1dd70 2f 20 34 33 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  / 43 IS NOT NULL
1dd80 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
1dd90 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39   hashing to 75c9
1dda0 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66  98aa53ac83218cbf
1ddb0 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a  2feb962d0a49....
1ddc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1ddd0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1dde0 20 28 20 2b 20 35 30 20 29 20 41 53 20 63 6f 6c   ( + 50 ) AS col
1ddf0 31 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61 62  1 FROM tab0, tab
1de00 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
1de10 4e 4f 54 20 2d 20 2b 20 38 38 20 49 53 20 4e 55  NOT - + 88 IS NU
1de20 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35 30 0d 0a 0d 0a  LL..----..50....
1de30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1de40 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1de50 20 2d 20 39 30 20 46 52 4f 4d 20 74 61 62 30 20   - 90 FROM tab0 
1de60 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
1de70 74 61 62 32 20 41 53 20 63 6f 72 31 20 57 48 45  tab2 AS cor1 WHE
1de80 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d  RE NULL IS NULL.
1de90 0a 2d 2d 2d 2d 0d 0a 2d 39 30 0d 0a 0d 0a 71 75  .----..-90....qu
1dea0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1deb0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
1dec0 20 2d 20 36 35 20 46 52 4f 4d 20 74 61 62 30 20   - 65 FROM tab0 
1ded0 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
1dee0 49 4e 20 74 61 62 32 20 63 6f 72 31 0d 0a 2d 2d  IN tab2 cor1..--
1def0 2d 2d 0d 0a 36 35 0d 0a 0d 0a 71 75 65 72 79 20  --..65....query 
1df00 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1df10 54 20 41 4c 4c 20 2d 20 28 20 2b 20 38 35 20 29  T ALL - ( + 85 )
1df20 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1df30 62 31 2c 20 74 61 62 31 20 41 53 20 63 6f 72 30  b1, tab1 AS cor0
1df40 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
1df50 20 68 61 73 68 69 6e 67 20 74 6f 20 38 65 62 63   hashing to 8ebc
1df60 38 66 66 61 66 62 31 35 31 37 65 61 30 34 65 33  8ffafb1517ea04e3
1df70 61 36 66 63 34 30 35 39 64 38 38 61 0d 0a 0d 0a  a6fc4059d88a....
1df80 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1df90 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
1dfa0 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
1dfb0 45 52 45 20 28 20 38 31 20 2a 20 2d 20 31 31 20  ERE ( 81 * - 11 
1dfc0 2a 20 2d 20 63 6f 6c 31 20 29 20 49 4e 20 28 20  * - col1 ) IN ( 
1dfd0 63 6f 6c 31 20 2a 20 63 6f 6c 30 2c 20 2d 20 37  col1 * col0, - 7
1dfe0 38 20 2f 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d  8 / + col0 )..--
1dff0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
1e000 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
1e010 63 6f 6c 32 20 2b 20 2b 20 2b 20 63 6f 6c 30 20  col2 + + + col0 
1e020 2b 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  + + + col1 FROM 
1e030 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
1e040 0a 31 32 30 0d 0a 31 38 31 0d 0a 32 30 30 0d 0a  .120..181..200..
1e050 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e060 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
1e070 43 54 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 2d 20  CT - col2 + - - 
1e080 33 37 20 2b 20 2b 20 36 35 20 46 52 4f 4d 20 74  37 + + 65 FROM t
1e090 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
1e0a0 2d 0d 0a 33 34 0d 0a 34 33 0d 0a 36 0d 0a 0d 0a  -..34..43..6....
1e0b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1e0c0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1e0d0 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 20 41 53 20   col2 + col2 AS 
1e0e0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
1e0f0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c  S cor0 WHERE NUL
1e100 4c 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  L > NULL..----..
1e110 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e120 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20  t..SELECT ALL ( 
1e130 63 6f 6c 32 20 29 20 2a 20 2d 20 63 6f 6c 31 20  col2 ) * - col1 
1e140 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
1e150 2d 20 2d 20 63 6f 6c 30 20 4e 4f 54 20 42 45 54  - - col0 NOT BET
1e160 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2d 20  WEEN NULL AND - 
1e170 33 37 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 34 34 0d  37..----..-1344.
1e180 0a 2d 32 39 35 0d 0a 2d 33 31 39 36 0d 0a 0d 0a  .-295..-3196....
1e190 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1e1a0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 31 30  .SELECT ALL - 10
1e1b0 20 2a 20 2d 20 2d 20 38 37 20 46 52 4f 4d 20 74   * - - 87 FROM t
1e1c0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 37 30 0d  ab0..----..-870.
1e1d0 0a 2d 38 37 30 0d 0a 2d 38 37 30 0d 0a 0d 0a 6f  .-870..-870....o
1e1e0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1e1f0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
1e200 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
1e210 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1e220 36 36 36 0d 0a 53 45 4c 45 43 54 20 43 41 53 54  666..SELECT CAST
1e230 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
1e240 20 29 20 2a 20 28 20 2d 20 63 6f 6c 31 20 29 20   ) * ( - col1 ) 
1e250 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1e260 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  2..----..NULL..N
1e270 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
1e280 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1e290 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1e2a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1e2b0 6c 2d 36 36 36 0d 0a 53 45 4c 45 43 54 20 43 41  l-666..SELECT CA
1e2c0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
1e2d0 45 47 45 52 20 29 20 2a 20 28 20 2d 20 63 6f 6c  EGER ) * ( - col
1e2e0 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
1e2f0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab2..----..NUL
1e300 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
1e310 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1e320 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
1e330 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
1e340 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1e350 6c 2d 36 36 37 0d 0a 53 45 4c 45 43 54 20 41 4c  l-667..SELECT AL
1e360 4c 20 2b 20 38 34 20 44 49 56 20 2d 20 2b 20 34  L + 84 DIV - + 4
1e370 33 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  3 FROM tab1..---
1e380 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d  -..-1..-1..-1...
1e390 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1e3a0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1e3b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1e3c0 6c 61 62 65 6c 2d 36 36 37 0d 0a 53 45 4c 45 43  label-667..SELEC
1e3d0 54 20 41 4c 4c 20 2b 20 38 34 20 2f 20 2d 20 2b  T ALL + 84 / - +
1e3e0 20 34 33 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d   43 FROM tab1..-
1e3f0 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d  ---..-1..-1..-1.
1e400 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1e410 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1e420 4e 43 54 20 63 6f 6c 31 20 2a 20 2d 20 33 37 20  NCT col1 * - 37 
1e430 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
1e440 0a 2d 32 39 39 37 0d 0a 2d 33 37 0d 0a 2d 37 37  .-2997..-37..-77
1e450 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....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 36 39 0d 0a 53 45 4c 45 43  label-669..SELEC
1e4a0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
1e4b0 30 20 44 49 56 20 35 30 20 2a 20 2b 20 63 6f 6c  0 DIV 50 * + col
1e4c0 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
1e4d0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 34 30  or0..----..0..40
1e4e0 0d 0a 35 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..58....skipif m
1e4f0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1e500 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1e510 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 39  owsort label-669
1e520 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1e530 54 20 2b 20 63 6f 6c 30 20 2f 20 35 30 20 2a 20  T + col0 / 50 * 
1e540 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  + col2 FROM tab2
1e550 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1e560 30 0d 0a 34 30 0d 0a 35 38 0d 0a 0d 0a 71 75 65  0..40..58....que
1e570 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1e580 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 31 20  LECT ALL - col1 
1e590 2a 20 2d 20 33 39 20 2a 20 2d 20 2b 20 35 20 2b  * - 39 * - + 5 +
1e5a0 20 2d 20 35 35 20 46 52 4f 4d 20 74 61 62 30 20   - 55 FROM tab0 
1e5b0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1e5c0 31 35 38 35 30 0d 0a 2d 32 35 30 0d 0a 2d 34 31  15850..-250..-41
1e5d0 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 49  50....query IIII
1e5e0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1e5f0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
1e600 53 20 63 6f 72 30 20 4c 45 46 54 20 4a 4f 49 4e  S cor0 LEFT JOIN
1e610 20 74 61 62 31 20 41 53 20 63 6f 72 31 20 4f 4e   tab1 AS cor1 ON
1e620 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
1e630 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 38 20 76 61 6c 75  L..----..18 valu
1e640 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 31 38  es hashing to 18
1e650 62 31 39 66 38 39 63 65 37 33 33 39 32 30 38 32  b19f89ce73392082
1e660 61 36 39 61 63 63 34 61 65 64 37 38 66 31 0d 0a  a69acc4aed78f1..
1e670 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e680 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
1e690 37 33 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f 4d  73 + - col0 FROM
1e6a0 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
1e6b0 20 34 39 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   49 IS NOT NULL.
1e6c0 0a 2d 2d 2d 2d 0d 0a 2d 31 32 0d 0a 2d 31 38 0d  .----..-12..-18.
1e6d0 0a 32 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .22....onlyif my
1e6e0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
1e6f0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
1e700 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e710 74 20 6c 61 62 65 6c 2d 36 37 33 0d 0a 53 45 4c  t label-673..SEL
1e720 45 43 54 20 44 49 53 54 49 4e 43 54 20 36 30 20  ECT DISTINCT 60 
1e730 2b 20 2b 20 63 6f 6c 31 20 44 49 56 20 63 6f 6c  + + col1 DIV col
1e740 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
1e750 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 30 0d 0a 0d  or0..----..60...
1e760 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1e770 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1e780 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1e790 6c 61 62 65 6c 2d 36 37 33 0d 0a 53 45 4c 45 43  label-673..SELEC
1e7a0 54 20 44 49 53 54 49 4e 43 54 20 36 30 20 2b 20  T DISTINCT 60 + 
1e7b0 2b 20 63 6f 6c 31 20 2f 20 63 6f 6c 32 20 46 52  + col1 / col2 FR
1e7c0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1e7d0 0a 2d 2d 2d 2d 0d 0a 36 30 0d 0a 0d 0a 71 75 65  .----..60....que
1e7e0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1e7f0 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
1e800 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
1e810 48 45 52 45 20 2b 20 63 6f 6c 32 20 49 4e 20 28  HERE + col2 IN (
1e820 20 2d 20 36 2c 20 63 6f 6c 32 2c 20 2b 20 2d 20   - 6, col2, + - 
1e830 36 30 2c 20 2d 20 32 33 2c 20 2d 20 2b 20 36 34  60, - 23, - + 64
1e840 20 2a 20 2d 20 2d 20 33 37 20 29 0d 0a 2d 2d 2d   * - - 37 )..---
1e850 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
1e860 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31  ing to c6c0a4111
1e870 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65  b36d04dbc811a11e
1e880 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69  4d54cad....onlyi
1e890 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
1e8a0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1e8b0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
1e8c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37 35 0d  wsort label-675.
1e8d0 0a 53 45 4c 45 43 54 20 2b 20 2d 20 28 20 43 41  .SELECT + - ( CA
1e8e0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
1e8f0 45 44 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32  ED ) ) FROM tab2
1e900 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
1e910 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
1e920 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1e930 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1e940 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1e950 6c 61 62 65 6c 2d 36 37 35 0d 0a 53 45 4c 45 43  label-675..SELEC
1e960 54 20 2b 20 2d 20 28 20 43 41 53 54 20 28 20 4e  T + - ( CAST ( N
1e970 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
1e980 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72   ) FROM tab2 cor
1e990 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
1e9a0 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c  ULL..NULL....onl
1e9b0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1e9c0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1e9d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1e9e0 6c 61 62 65 6c 2d 36 37 36 0d 0a 53 45 4c 45 43  label-676..SELEC
1e9f0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d 41 58  T DISTINCT - MAX
1ea00 28 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f  ( + col1 ) AS co
1ea10 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
1ea20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 31 0d  cor0..----..-81.
1ea30 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1ea40 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1ea50 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1ea60 74 20 6c 61 62 65 6c 2d 36 37 36 0d 0a 53 45 4c  t label-676..SEL
1ea70 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d  ECT DISTINCT - M
1ea80 41 58 20 28 20 2b 20 63 6f 6c 31 20 29 20 41 53  AX ( + col1 ) AS
1ea90 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
1eaa0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1eab0 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  81....query I ro
1eac0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1ead0 4c 20 28 20 2d 20 2d 20 28 20 2b 20 37 31 20 29  L ( - - ( + 71 )
1eae0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
1eaf0 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
1eb00 0a 37 31 0d 0a 37 31 0d 0a 37 31 0d 0a 0d 0a 71  .71..71..71....q
1eb10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1eb20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1eb30 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46  - col0 AS col0 F
1eb40 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1eb50 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c   WHERE NOT - col
1eb60 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  0 IS NOT NULL..-
1eb70 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
1eb80 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
1eb90 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1eba0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1ebb0 74 20 6c 61 62 65 6c 2d 36 37 39 0d 0a 53 45 4c  t label-679..SEL
1ebc0 45 43 54 20 44 49 53 54 49 4e 43 54 20 41 56 47  ECT DISTINCT AVG
1ebd0 20 28 20 41 4c 4c 20 2d 20 43 41 53 54 28 20 4e   ( ALL - CAST( N
1ebe0 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
1ebf0 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
1ec00 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
1ec10 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1ec20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1ec30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1ec40 74 20 6c 61 62 65 6c 2d 36 37 39 0d 0a 53 45 4c  t label-679..SEL
1ec50 45 43 54 20 44 49 53 54 49 4e 43 54 20 41 56 47  ECT DISTINCT AVG
1ec60 20 28 20 41 4c 4c 20 2d 20 43 41 53 54 20 28 20   ( ALL - CAST ( 
1ec70 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
1ec80 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ) ) FROM tab1 AS
1ec90 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
1eca0 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
1ecb0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
1ecc0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
1ecd0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 38  rowsort label-68
1ece0 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f  0..SELECT - + CO
1ecf0 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
1ed00 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
1ed10 20 2b 20 38 35 20 4e 4f 54 20 42 45 54 57 45 45   + 85 NOT BETWEE
1ed20 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d  N NULL AND NULL.
1ed30 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
1ed40 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1ed50 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1ed60 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1ed70 2d 36 38 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  -680..SELECT - +
1ed80 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
1ed90 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
1eda0 48 45 52 45 20 2b 20 38 35 20 4e 4f 54 20 42 45  HERE + 85 NOT BE
1edb0 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e  TWEEN NULL AND N
1edc0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
1edd0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1ede0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1edf0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1ee00 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1ee10 2d 36 38 31 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -681..SELECT + C
1ee20 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
1ee30 4e 45 44 20 29 20 2a 20 2d 20 63 6f 6c 30 20 41  NED ) * - col0 A
1ee40 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
1ee50 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
1ee60 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  LL..NULL....skip
1ee70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1ee80 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1ee90 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1eea0 2d 36 38 31 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -681..SELECT + C
1eeb0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
1eec0 54 45 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 30  TEGER ) * - col0
1eed0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1eee0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b0..----..NULL..
1eef0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
1ef00 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1ef10 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
1ef20 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
1ef30 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
1ef40 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
1ef50 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
1ef60 20 36 37 20 2a 20 2b 20 2d 20 63 6f 6c 32 20 2a   67 * + - col2 *
1ef70 20 2d 20 2d 20 63 6f 6c 32 20 63 6f 6c 31 20 46   - - col2 col1 F
1ef80 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
1ef90 2d 31 30 37 32 30 30 0d 0a 2d 32 32 35 33 38 38  -107200..-225388
1efa0 0d 0a 2d 33 35 34 34 33 0d 0a 0d 0a 6f 6e 6c 79  ..-35443....only
1efb0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
1efc0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
1efd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1efe0 61 62 65 6c 2d 36 38 33 0d 0a 53 45 4c 45 43 54  abel-683..SELECT
1eff0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   - COUNT( * ) * 
1f000 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  + + COUNT( * ) A
1f010 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
1f020 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54 57   WHERE NULL BETW
1f030 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 63  EEN NULL AND + c
1f040 6f 6c 32 20 2a 20 2d 20 2b 20 28 20 63 6f 6c 30  ol2 * - + ( col0
1f050 20 29 20 2a 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d   ) * - col1..---
1f060 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
1f070 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1f080 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1f090 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 38 33  owsort label-683
1f0a0 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
1f0b0 20 28 20 2a 20 29 20 2a 20 2b 20 2b 20 43 4f 55   ( * ) * + + COU
1f0c0 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  NT ( * ) AS col1
1f0d0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
1f0e0 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 4e 55   NULL BETWEEN NU
1f0f0 4c 4c 20 41 4e 44 20 2b 20 63 6f 6c 32 20 2a 20  LL AND + col2 * 
1f100 2d 20 2b 20 28 20 63 6f 6c 30 20 29 20 2a 20 2d  - + ( col0 ) * -
1f110 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   col1..----..0..
1f120 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f130 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
1f140 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 30 20 2b 20  col1 + - col0 + 
1f150 2d 20 2b 20 37 20 41 53 20 63 6f 6c 31 20 46 52  - + 7 AS col1 FR
1f160 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
1f170 34 34 0d 0a 2d 35 31 0d 0a 2d 38 37 0d 0a 0d 0a  44..-51..-87....
1f180 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1f190 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
1f1a0 20 74 61 62 32 20 57 48 45 52 45 20 28 20 4e 4f   tab2 WHERE ( NO
1f1b0 54 20 2d 20 28 20 63 6f 6c 30 20 29 20 2a 20 38  T - ( col0 ) * 8
1f1c0 30 20 2f 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55  0 / + col1 IS NU
1f1d0 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  LL )..----..9 va
1f1e0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
1f1f0 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31  75c998aa53ac8321
1f200 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39  8cbf2feb962d0a49
1f210 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1f220 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 39 20 2b  ort..SELECT 59 +
1f230 20 2b 20 32 30 20 41 53 20 63 6f 6c 30 20 46 52   + 20 AS col0 FR
1f240 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 37  OM tab2..----..7
1f250 39 0d 0a 37 39 0d 0a 37 39 0d 0a 0d 0a 71 75 65  9..79..79....que
1f260 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1f270 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1f280 2b 20 63 6f 6c 31 20 2b 20 2b 20 2b 20 35 31 20  + col1 + + + 51 
1f290 2a 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c  * - col0 * - col
1f2a0 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
1f2b0 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
1f2c0 33 36 30 33 36 0d 0a 34 34 33 39 31 0d 0a 34 38  36036..44391..48
1f2d0 39 37 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  9754....query I 
1f2e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1f2f0 41 4c 4c 20 2b 20 28 20 63 6f 6c 31 20 29 20 2a  ALL + ( col1 ) *
1f300 20 2d 20 63 6f 6c 31 20 2d 20 2b 20 63 6f 6c 31   - col1 - + col1
1f310 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c   * + col0 AS col
1f320 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
1f330 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 36 38  or0..----..-2268
1f340 0d 0a 2d 37 37 37 36 0d 0a 2d 39 38 0d 0a 0d 0a  ..-7776..-98....
1f350 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
1f360 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
1f370 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
1f380 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
1f390 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
1f3a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1f3b0 20 44 49 53 54 49 4e 43 54 20 2b 20 32 37 20 63   DISTINCT + 27 c
1f3c0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol0 FROM tab2 co
1f3d0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 37 0d 0a 0d 0a  r0..----..27....
1f3e0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1f3f0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1f400 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1f410 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1f420 2d 36 39 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  -690..SELECT - +
1f430 20 37 32 20 2a 20 2b 20 43 41 53 54 28 20 2b 20   72 * + CAST( + 
1f440 35 36 20 41 53 20 53 49 47 4e 45 44 20 29 20 41  56 AS SIGNED ) A
1f450 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
1f460 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1f470 2d 34 30 33 32 0d 0a 2d 34 30 33 32 0d 0a 2d 34  -4032..-4032..-4
1f480 30 33 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  032....skipif my
1f490 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1f4a0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1f4b0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 30 0d  wsort label-690.
1f4c0 0a 53 45 4c 45 43 54 20 2d 20 2b 20 37 32 20 2a  .SELECT - + 72 *
1f4d0 20 2b 20 43 41 53 54 20 28 20 2b 20 35 36 20 41   + CAST ( + 56 A
1f4e0 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63  S INTEGER ) AS c
1f4f0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
1f500 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30   cor0..----..-40
1f510 33 32 0d 0a 2d 34 30 33 32 0d 0a 2d 34 30 33 32  32..-4032..-4032
1f520 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1f530 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1f540 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1f550 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 31  owsort label-691
1f560 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 31  ..SELECT ALL ( 1
1f570 39 20 29 20 2b 20 2d 20 32 31 20 2a 20 43 4f 55  9 ) + - 21 * COU
1f580 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  NT( * ) AS col0 
1f590 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
1f5a0 0a 2d 34 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-44....skipif m
1f5b0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1f5c0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1f5d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 31  owsort label-691
1f5e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 31  ..SELECT ALL ( 1
1f5f0 39 20 29 20 2b 20 2d 20 32 31 20 2a 20 43 4f 55  9 ) + - 21 * COU
1f600 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  NT ( * ) AS col0
1f610 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1f620 0d 0a 2d 34 34 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-44....query I
1f630 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1f640 20 2d 20 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c 32   - + col0 * col2
1f650 20 2d 20 2b 20 36 34 20 41 53 20 63 6f 6c 32 20   - + 64 AS col2 
1f660 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1f670 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 4f  0 WHERE NOT ( NO
1f680 54 20 28 20 2d 20 36 32 20 29 20 42 45 54 57 45  T ( - 62 ) BETWE
1f690 45 4e 20 63 6f 6c 32 20 2d 20 2b 20 34 33 20 41  EN col2 - + 43 A
1f6a0 4e 44 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32  ND col1 * + col2
1f6b0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70   )..----....skip
1f6c0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
1f6d0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
1f6e0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
1f6f0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
1f700 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
1f710 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1f720 54 49 4e 43 54 20 2b 20 39 36 20 2a 20 2d 20 63  TINCT + 96 * - c
1f730 6f 6c 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ol0 col1 FROM ta
1f740 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
1f750 0d 0a 2d 34 38 39 36 0d 0a 2d 38 31 36 30 0d 0a  ..-4896..-8160..
1f760 2d 38 37 33 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -8736....onlyif 
1f770 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
1f780 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
1f790 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1f7a0 6f 72 74 20 6c 61 62 65 6c 2d 36 39 34 0d 0a 53  ort label-694..S
1f7b0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
1f7c0 20 32 37 20 2a 20 2d 20 63 6f 6c 30 20 2f 20 2b   27 * - col0 / +
1f7d0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
1f7e0 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
1f7f0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
1f800 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
1f810 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1f820 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1f830 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39  rowsort label-69
1f840 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
1f850 43 54 20 2b 20 32 37 20 2a 20 2d 20 63 6f 6c 30  CT + 27 * - col0
1f860 20 2f 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c   / + CAST ( NULL
1f870 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
1f880 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1f890 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .----..NULL....q
1f8a0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
1f8b0 0a 53 45 4c 45 43 54 20 2b 20 31 34 20 41 53 20  .SELECT + 14 AS 
1f8c0 63 6f 6c 32 2c 20 35 31 20 46 52 4f 4d 20 74 61  col2, 51 FROM ta
1f8d0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
1f8e0 0d 0a 31 34 0d 0a 35 31 0d 0a 31 34 0d 0a 35 31  ..14..51..14..51
1f8f0 0d 0a 31 34 0d 0a 35 31 0d 0a 0d 0a 71 75 65 72  ..14..51....quer
1f900 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
1f910 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
1f920 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  1 WHERE NOT NULL
1f930 20 4e 4f 54 20 49 4e 20 28 20 2b 20 63 6f 6c 30   NOT IN ( + col0
1f940 20 2a 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d   * col0 )..----.
1f950 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1f960 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
1f970 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  ax: ..query II r
1f980 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 37  owsort label-697
1f990 0d 0a 53 45 4c 45 43 54 20 35 37 20 2a 20 2d 20  ..SELECT 57 * - 
1f9a0 35 36 20 41 53 20 63 6f 6c 30 2c 20 2b 20 28 20  56 AS col0, + ( 
1f9b0 2d 20 33 37 20 29 20 2a 20 2b 20 43 4f 55 4e 54  - 37 ) * + COUNT
1f9c0 28 20 2a 20 29 20 2d 20 2b 20 2b 20 38 31 20 2b  ( * ) - + + 81 +
1f9d0 20 2d 20 2b 20 53 55 4d 28 20 2b 20 63 6f 6c 31   - + SUM( + col1
1f9e0 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
1f9f0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31 39  tab2..----..-319
1fa00 32 0d 0a 2d 33 38 37 0d 0a 0d 0a 73 6b 69 70 69  2..-387....skipi
1fa10 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1fa20 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1fa30 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
1fa40 2d 36 39 37 0d 0a 53 45 4c 45 43 54 20 35 37 20  -697..SELECT 57 
1fa50 2a 20 2d 20 35 36 20 41 53 20 63 6f 6c 30 2c 20  * - 56 AS col0, 
1fa60 2b 20 28 20 2d 20 33 37 20 29 20 2a 20 2b 20 43  + ( - 37 ) * + C
1fa70 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20 2b 20 2b  OUNT ( * ) - + +
1fa80 20 38 31 20 2b 20 2d 20 2b 20 53 55 4d 20 28 20   81 + - + SUM ( 
1fa90 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30  + col1 ) AS col0
1faa0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1fab0 0d 0a 2d 33 31 39 32 0d 0a 2d 33 38 37 0d 0a 0d  ..-3192..-387...
1fac0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
1fad0 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
1fae0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
1faf0 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3d 20  HERE NOT NULL = 
1fb00 28 20 2d 20 33 30 20 2b 20 63 6f 6c 32 20 29 0d  ( - 30 + col2 ).
1fb10 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
1fb20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
1fb30 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
1fb40 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
1fb50 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
1fb60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1fb70 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
1fb80 63 6f 6c 32 20 2a 20 2d 20 37 35 20 63 6f 6c 32  col2 * - 75 col2
1fb90 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1fba0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 35 32 35 0d 0a  r0..----..3525..
1fbb0 37 34 32 35 0d 0a 37 35 30 0d 0a 0d 0a 6f 6e 6c  7425..750....onl
1fbc0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1fbd0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1fbe0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1fbf0 6c 61 62 65 6c 2d 37 30 30 0d 0a 53 45 4c 45 43  label-700..SELEC
1fc00 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  T + COUNT( * ) *
1fc10 20 2b 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54   + SUM( DISTINCT
1fc20 20 2d 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74   - col2 ) FROM t
1fc30 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
1fc40 2d 0d 0a 2d 36 36 39 0d 0a 0d 0a 73 6b 69 70 69  -..-669....skipi
1fc50 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1fc60 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1fc70 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1fc80 37 30 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  700..SELECT + CO
1fc90 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 53 55  UNT ( * ) * + SU
1fca0 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63  M ( DISTINCT - c
1fcb0 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20  ol2 ) FROM tab1 
1fcc0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1fcd0 36 36 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  669....onlyif my
1fce0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1fcf0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1fd00 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1fd10 37 30 31 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  701..SELECT - - 
1fd20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
1fd30 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
1fd40 52 45 20 4e 4f 54 20 2d 20 34 33 20 4e 4f 54 20  RE NOT - 43 NOT 
1fd50 49 4e 20 28 20 2b 20 33 30 2c 20 36 31 2c 20 2d  IN ( + 30, 61, -
1fd60 20 28 20 2b 20 63 6f 6c 31 20 29 20 29 0d 0a 2d   ( + col1 ) )..-
1fd70 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
1fd80 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1fd90 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1fda0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
1fdb0 30 31 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 43  01..SELECT - - C
1fdc0 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
1fdd0 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
1fde0 52 45 20 4e 4f 54 20 2d 20 34 33 20 4e 4f 54 20  RE NOT - 43 NOT 
1fdf0 49 4e 20 28 20 2b 20 33 30 2c 20 36 31 2c 20 2d  IN ( + 30, 61, -
1fe00 20 28 20 2b 20 63 6f 6c 31 20 29 20 29 0d 0a 2d   ( + col1 ) )..-
1fe10 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..0....onlyif
1fe20 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
1fe30 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
1fe40 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1fe50 65 6c 2d 37 30 32 0d 0a 53 45 4c 45 43 54 20 2b  el-702..SELECT +
1fe60 20 43 4f 55 4e 54 28 20 63 6f 6c 30 20 29 20 41   COUNT( col0 ) A
1fe70 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
1fe80 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
1fe90 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20  ( NULL ) IS NOT 
1fea0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  NULL..----..3...
1feb0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1fec0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1fed0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1fee0 6c 61 62 65 6c 2d 37 30 32 0d 0a 53 45 4c 45 43  label-702..SELEC
1fef0 54 20 2b 20 43 4f 55 4e 54 20 28 20 63 6f 6c 30  T + COUNT ( col0
1ff00 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
1ff10 74 61 62 32 20 63 6f 72 30 20 57 48 45 52 45 20  tab2 cor0 WHERE 
1ff20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 49 53 20  NOT ( NULL ) IS 
1ff30 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
1ff40 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 49 49  3....query IIIII
1ff50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1ff60 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
1ff70 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43  M tab0 AS cor0 C
1ff80 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41  ROSS JOIN tab1 A
1ff90 53 20 63 6f 72 31 20 57 48 45 52 45 20 2b 20 37  S cor1 WHERE + 7
1ffa0 37 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  7 IS NULL..----.
1ffb0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1ffc0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
1ffd0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
1ffe0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 34 0d  wsort label-704.
1fff0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
20000 20 2b 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54   + MAX( DISTINCT
20010 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   - col0 ) FROM t
20020 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  ab0 WHERE NOT NU
20030 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
20040 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 0d 0a 73 6b 69  ----..-15....ski
20050 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
20060 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
20070 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
20080 6c 2d 37 30 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-704..SELECT DI
20090 53 54 49 4e 43 54 20 2b 20 4d 41 58 20 28 20 44  STINCT + MAX ( D
200a0 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 29  ISTINCT - col0 )
200b0 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
200c0 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54   NOT NULL IS NOT
200d0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   NULL..----..-15
200e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
200f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
20100 63 6f 6c 30 20 2b 20 32 36 20 41 53 20 63 6f 6c  col0 + 26 AS col
20110 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
20120 2d 0d 0a 31 31 31 0d 0a 31 31 37 0d 0a 37 37 0d  -..111..117..77.
20130 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
20140 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
20150 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
20160 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 36 0d  wsort label-706.
20170 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
20180 20 43 4f 55 4e 54 28 20 2b 20 32 37 20 29 20 2a   COUNT( + 27 ) *
20190 20 33 20 2b 20 2d 20 28 20 2d 20 2b 20 31 30 20   3 + - ( - + 10 
201a0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
201b0 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
201c0 61 62 31 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a  ab1 cor1..----..
201d0 33 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  37....skipif mys
201e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
201f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
20200 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 36 0d 0a  sort label-706..
20210 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
20220 43 4f 55 4e 54 20 28 20 2b 20 32 37 20 29 20 2a  COUNT ( + 27 ) *
20230 20 33 20 2b 20 2d 20 28 20 2d 20 2b 20 31 30 20   3 + - ( - + 10 
20240 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
20250 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
20260 61 62 31 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a  ab1 cor1..----..
20270 33 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  37....onlyif mys
20280 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
20290 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20  : DECIMAL type: 
202a0 0d 0a 71 75 65 72 79 20 49 49 49 49 49 49 20 72  ..query IIIIII r
202b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 37  owsort label-707
202c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
202d0 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 43 52  ROM tab2 cor0 CR
202e0 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
202f0 20 63 6f 72 31 20 57 48 45 52 45 20 28 20 2b 20   cor1 WHERE ( + 
20300 2d 20 35 35 20 3e 3d 20 2b 20 43 41 53 54 28 20  - 55 >= + CAST( 
20310 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20  NULL AS DECIMAL 
20320 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ) )..----....ski
20330 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
20340 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
20350 79 20 49 49 49 49 49 49 20 72 6f 77 73 6f 72 74  y IIIIII rowsort
20360 20 6c 61 62 65 6c 2d 37 30 37 0d 0a 53 45 4c 45   label-707..SELE
20370 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
20380 62 32 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  b2 cor0 CROSS JO
20390 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 20  IN tab1 AS cor1 
203a0 57 48 45 52 45 20 28 20 2b 20 2d 20 35 35 20 3e  WHERE ( + - 55 >
203b0 3d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  = + CAST ( NULL 
203c0 41 53 20 52 45 41 4c 20 29 20 29 0d 0a 2d 2d 2d  AS REAL ) )..---
203d0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
203e0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28  sort..SELECT + (
203f0 20 2d 20 32 20 29 20 41 53 20 63 6f 6c 32 20 46   - 2 ) AS col2 F
20400 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
20410 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30   CROSS JOIN tab0
20420 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
20430 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
20440 20 74 6f 20 65 63 31 31 32 30 39 61 62 32 35 37   to ec11209ab257
20450 30 33 30 30 35 33 34 38 34 66 63 31 33 61 31 66  030053484fc13a1f
20460 36 64 31 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  6d17....query I 
20470 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
20480 2d 20 35 38 20 2b 20 2b 20 2d 20 63 6f 6c 31 20  - 58 + + - col1 
20490 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
204a0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 39 0d 0a 2d  0..----..-109..-
204b0 31 32 35 0d 0a 2d 31 33 35 0d 0a 0d 0a 6f 6e 6c  125..-135....onl
204c0 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
204d0 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
204e0 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
204f0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
20500 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
20510 37 31 30 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28  710..SELECT MAX(
20520 20 2d 20 63 6f 6c 30 20 29 20 2a 20 2b 20 2d 20   - col0 ) * + - 
20530 43 4f 55 4e 54 28 20 41 4c 4c 20 2b 20 2d 20 63  COUNT( ALL + - c
20540 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ol2 ) FROM tab2 
20550 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f  AS cor0 WHERE co
20560 6c 30 20 3c 3e 20 43 41 53 54 28 20 4e 55 4c 4c  l0 <> CAST( NULL
20570 20 41 53 20 53 49 47 4e 45 44 20 29 0d 0a 2d 2d   AS SIGNED )..--
20580 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
20590 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
205a0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
205b0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
205c0 2d 37 31 30 0d 0a 53 45 4c 45 43 54 20 4d 41 58  -710..SELECT MAX
205d0 20 28 20 2d 20 63 6f 6c 30 20 29 20 2a 20 2b 20   ( - col0 ) * + 
205e0 2d 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20  - COUNT ( ALL + 
205f0 2d 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61  - col2 ) FROM ta
20600 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
20610 20 63 6f 6c 30 20 3c 3e 20 43 41 53 54 20 28 20   col0 <> CAST ( 
20620 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
20630 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  )..----..NULL...
20640 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
20650 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
20660 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
20670 6f 72 74 20 6c 61 62 65 6c 2d 37 31 31 0d 0a 53  ort label-711..S
20680 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
20690 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2d 20 63 6f   COUNT( ALL - co
206a0 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l1 ) AS col1 FRO
206b0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
206c0 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ----..3....skipi
206d0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
206e0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
206f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
20700 37 31 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  711..SELECT DIST
20710 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 41  INCT + COUNT ( A
20720 4c 4c 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63  LL - col1 ) AS c
20730 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
20740 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   cor0..----..3..
20750 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
20760 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
20770 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
20780 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
20790 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
207a0 61 62 65 6c 2d 37 31 32 0d 0a 53 45 4c 45 43 54  abel-712..SELECT
207b0 20 2b 20 43 41 53 54 28 20 2b 20 36 38 20 41 53   + CAST( + 68 AS
207c0 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 2d 20   SIGNED ) + + - 
207d0 53 55 4d 28 20 2d 20 2b 20 63 6f 6c 30 20 29 20  SUM( - + col0 ) 
207e0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
207f0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36  S cor0..----..26
20800 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
20810 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
20820 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
20830 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
20840 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
20850 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
20860 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
20870 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
20880 65 6c 2d 37 31 32 0d 0a 53 45 4c 45 43 54 20 2b  el-712..SELECT +
20890 20 43 41 53 54 20 28 20 2b 20 36 38 20 41 53 20   CAST ( + 68 AS 
208a0 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 2d 20  INTEGER ) + + - 
208b0 53 55 4d 20 28 20 2d 20 2b 20 63 6f 6c 30 20 29  SUM ( - + col0 )
208c0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
208d0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32  AS cor0..----..2
208e0 36 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  67....onlyif mys
208f0 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
20900 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
20910 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20920 20 6c 61 62 65 6c 2d 37 31 33 0d 0a 53 45 4c 45   label-713..SELE
20930 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 32 32  CT DISTINCT - 22
20940 20 2b 20 2d 20 36 33 20 2d 20 2d 20 2b 20 63 6f   + - 63 - - + co
20950 6c 30 20 2d 20 2d 20 2d 20 63 6f 6c 31 20 2b 20  l0 - - - col1 + 
20960 2b 20 2d 20 63 6f 6c 30 20 44 49 56 20 63 6f 6c  + - col0 DIV col
20970 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
20980 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d 0a  or0..----..-78..
20990 2d 39 32 0d 0a 2d 39 39 0d 0a 0d 0a 73 6b 69 70  -92..-99....skip
209a0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
209b0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
209c0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
209d0 2d 37 31 33 0d 0a 53 45 4c 45 43 54 20 44 49 53  -713..SELECT DIS
209e0 54 49 4e 43 54 20 2d 20 32 32 20 2b 20 2d 20 36  TINCT - 22 + - 6
209f0 33 20 2d 20 2d 20 2b 20 63 6f 6c 30 20 2d 20 2d  3 - - + col0 - -
20a00 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 63 6f   - col1 + + - co
20a10 6c 30 20 2f 20 63 6f 6c 32 20 46 52 4f 4d 20 74  l0 / col2 FROM t
20a20 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
20a30 2d 0d 0a 2d 37 38 0d 0a 2d 39 32 0d 0a 2d 39 39  -..-78..-92..-99
20a40 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
20a50 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
20a60 2d 20 63 6f 6c 31 20 2d 20 63 6f 6c 32 20 46 52  - col1 - col2 FR
20a70 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
20a80 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2b  WHERE NOT col0 +
20a90 20 2d 20 2b 20 63 6f 6c 30 20 4e 4f 54 20 42 45   - + col0 NOT BE
20aa0 54 57 45 45 4e 20 2d 20 63 6f 6c 32 20 41 4e 44  TWEEN - col2 AND
20ab0 20 2b 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d   + - col2..----.
20ac0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
20ad0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
20ae0 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 28 20 2d 20   col2 + + - ( - 
20af0 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30  col2 ) FROM tab0
20b00 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
20b10 31 39 38 0d 0a 32 30 0d 0a 39 34 0d 0a 0d 0a 73  198..20..94....s
20b20 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
20b30 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
20b40 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
20b50 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
20b60 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
20b70 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
20b80 2d 20 63 6f 6c 30 20 2b 20 28 20 2b 20 2d 20 63  - col0 + ( + - c
20b90 6f 6c 32 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20  ol2 ) col0 FROM 
20ba0 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
20bb0 0a 2d 31 39 36 0d 0a 2d 36 32 0d 0a 2d 39 37 0d  .-196..-62..-97.
20bc0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
20bd0 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20  rt..SELECT col2 
20be0 2b 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 63  + - - col1 + - c
20bf0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol1 FROM tab2 co
20c00 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34 30  r0..----..23..40
20c10 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..58....onlyif m
20c20 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
20c30 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
20c40 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
20c50 72 74 20 6c 61 62 65 6c 2d 37 31 38 0d 0a 53 45  rt label-718..SE
20c60 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
20c70 2b 20 39 31 20 44 49 56 20 63 6f 6c 32 20 44 49  + 91 DIV col2 DI
20c80 56 20 2d 20 37 30 20 46 52 4f 4d 20 74 61 62 32  V - 70 FROM tab2
20c90 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
20ca0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
20cb0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
20cc0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
20cd0 6f 72 74 20 6c 61 62 65 6c 2d 37 31 38 0d 0a 53  ort label-718..S
20ce0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
20cf0 20 2b 20 39 31 20 2f 20 63 6f 6c 32 20 2f 20 2d   + 91 / col2 / -
20d00 20 37 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53   70 FROM tab2 AS
20d10 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
20d20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
20d30 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
20d40 2b 20 28 20 2b 20 2b 20 33 20 29 20 41 53 20 63  + ( + + 3 ) AS c
20d50 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
20d60 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   cor0..----..-3.
20d70 0a 2d 33 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79  .-3..-3....query
20d80 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
20d90 45 43 54 20 41 4c 4c 20 2b 20 38 32 2c 20 2b 20  ECT ALL + 82, + 
20da0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col1 FROM tab0..
20db0 2d 2d 2d 2d 0d 0a 38 32 0d 0a 31 0d 0a 38 32 0d  ----..82..1..82.
20dc0 0a 32 31 0d 0a 38 32 0d 0a 38 31 0d 0a 0d 0a 71  .21..82..81....q
20dd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
20de0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
20df0 31 20 2a 20 2d 20 2d 20 34 30 20 46 52 4f 4d 20  1 * - - 40 FROM 
20e00 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  tab0 WHERE NOT +
20e10 20 2b 20 63 6f 6c 30 20 42 45 54 57 45 45 4e 20   + col0 BETWEEN 
20e20 4e 55 4c 4c 20 41 4e 44 20 28 20 4e 55 4c 4c 20  NULL AND ( NULL 
20e30 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
20e40 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
20e50 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
20e60 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
20e70 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 32 32 0d  wsort label-722.
20e80 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54  .SELECT ALL CAST
20e90 28 20 2b 20 63 6f 6c 32 20 41 53 20 53 49 47 4e  ( + col2 AS SIGN
20ea0 45 44 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ED ) col1 FROM t
20eb0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34  ab2..----..23..4
20ec0 30 0d 0a 35 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  0..58....skipif 
20ed0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
20ee0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
20ef0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
20f00 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
20f10 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
20f20 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
20f30 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20f40 20 6c 61 62 65 6c 2d 37 32 32 0d 0a 53 45 4c 45   label-722..SELE
20f50 43 54 20 41 4c 4c 20 43 41 53 54 20 28 20 2b 20  CT ALL CAST ( + 
20f60 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20  col2 AS INTEGER 
20f70 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  ) col1 FROM tab2
20f80 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34 30 0d 0a  ..----..23..40..
20f90 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  58....query I ro
20fa0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
20fb0 63 6f 6c 32 20 2b 20 2b 20 35 20 41 53 20 63 6f  col2 + + 5 AS co
20fc0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l2 FROM tab0 WHE
20fd0 52 45 20 2b 20 2b 20 63 6f 6c 30 20 3d 20 4e 55  RE + + col0 = NU
20fe0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
20ff0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
21000 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
21010 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
21020 61 62 65 6c 2d 37 32 34 0d 0a 53 45 4c 45 43 54  abel-724..SELECT
21030 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a 20 29 20   ALL COUNT( * ) 
21040 2b 20 2d 20 36 38 20 46 52 4f 4d 20 74 61 62 30  + - 68 FROM tab0
21050 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35 0d 0a 0d 0a 73  ..----..-65....s
21060 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
21070 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
21080 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
21090 62 65 6c 2d 37 32 34 0d 0a 53 45 4c 45 43 54 20  bel-724..SELECT 
210a0 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ALL COUNT ( * ) 
210b0 2b 20 2d 20 36 38 20 46 52 4f 4d 20 74 61 62 30  + - 68 FROM tab0
210c0 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35 0d 0a 0d 0a 6f  ..----..-65....o
210d0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
210e0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
210f0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
21100 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
21110 37 32 35 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20  725..SELECT - ( 
21120 2b 20 63 6f 6c 30 20 29 20 2d 20 2b 20 2d 20 43  + col0 ) - + - C
21130 41 53 54 28 20 2d 20 36 34 20 41 53 20 53 49 47  AST( - 64 AS SIG
21140 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20 46 52  NED ) AS col0 FR
21150 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
21160 0a 2d 2d 2d 2d 0d 0a 2d 31 35 31 0d 0a 2d 31 36  .----..-151..-16
21170 31 0d 0a 2d 37 39 0d 0a 0d 0a 73 6b 69 70 69 66  1..-79....skipif
21180 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
21190 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
211a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
211b0 32 35 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2b  25..SELECT - ( +
211c0 20 63 6f 6c 30 20 29 20 2d 20 2b 20 2d 20 43 41   col0 ) - + - CA
211d0 53 54 20 28 20 2d 20 36 34 20 41 53 20 49 4e 54  ST ( - 64 AS INT
211e0 45 47 45 52 20 29 20 41 53 20 63 6f 6c 30 20 46  EGER ) AS col0 F
211f0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
21200 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 31 0d 0a 2d 31  ..----..-151..-1
21210 36 31 0d 0a 2d 37 39 0d 0a 0d 0a 6f 6e 6c 79 69  61..-79....onlyi
21220 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
21230 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
21240 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
21250 62 65 6c 2d 37 32 36 0d 0a 53 45 4c 45 43 54 20  bel-726..SELECT 
21260 41 4c 4c 20 2b 20 28 20 43 4f 55 4e 54 28 20 2a  ALL + ( COUNT( *
21270 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41   ) ) FROM tab2 A
21280 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
21290 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a  N tab0 AS cor1..
212a0 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69  ----..9....skipi
212b0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
212c0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
212d0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
212e0 37 32 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  726..SELECT ALL 
212f0 2b 20 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  + ( COUNT ( * ) 
21300 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
21310 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
21320 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab0 AS cor1..---
21330 2d 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..9....onlyif m
21340 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
21350 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
21360 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
21370 2d 37 32 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -727..SELECT DIS
21380 54 49 4e 43 54 20 2b 20 2d 20 43 4f 55 4e 54 28  TINCT + - COUNT(
21390 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 35 36   DISTINCT + - 56
213a0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
213b0 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
213c0 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66  --..-1....skipif
213d0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
213e0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
213f0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
21400 32 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  27..SELECT DISTI
21410 4e 43 54 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20  NCT + - COUNT ( 
21420 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 35 36 20  DISTINCT + - 56 
21430 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
21440 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
21450 2d 0d 0a 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..-1....onlyif 
21460 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
21470 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
21480 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
21490 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
214a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 32 38 0d  wsort label-728.
214b0 0a 53 45 4c 45 43 54 20 2b 20 2d 20 43 4f 55 4e  .SELECT + - COUN
214c0 54 28 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41  T( DISTINCT + CA
214d0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
214e0 45 44 20 29 20 29 20 2a 20 28 20 2b 20 2b 20 37  ED ) ) * ( + + 7
214f0 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  0 ) AS col2 FROM
21500 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
21510 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
21520 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
21530 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
21540 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
21550 32 38 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 43  28..SELECT + - C
21560 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20  OUNT ( DISTINCT 
21570 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
21580 20 49 4e 54 45 47 45 52 20 29 20 29 20 2a 20 28   INTEGER ) ) * (
21590 20 2b 20 2b 20 37 30 20 29 20 41 53 20 63 6f 6c   + + 70 ) AS col
215a0 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
215b0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  or0..----..0....
215c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
215d0 0a 53 45 4c 45 43 54 20 37 38 20 46 52 4f 4d 20  .SELECT 78 FROM 
215e0 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
215f0 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20  RE NOT NULL NOT 
21600 49 4e 20 28 20 33 30 2c 20 2d 20 63 6f 6c 30 20  IN ( 30, - col0 
21610 2b 20 2d 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d  + - + col2 )..--
21620 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
21630 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
21640 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
21650 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
21660 52 45 20 28 20 35 32 20 29 20 3e 20 4e 55 4c 4c  RE ( 52 ) > NULL
21670 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
21680 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
21690 43 54 20 41 4c 4c 20 2d 20 2d 20 38 31 2c 20 2b  CT ALL - - 81, +
216a0 20 37 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53   70 FROM tab1 AS
216b0 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 30   cor0 WHERE col0
216c0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
216d0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
216e0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
216f0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
21700 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 32 0d 0a  sort label-732..
21710 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
21720 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
21730 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45   tab0 cor0 WHERE
21740 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 49 53 20 4e   NOT + col1 IS N
21750 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d  ULL..----..-3...
21760 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
21770 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
21780 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
21790 6c 61 62 65 6c 2d 37 33 32 0d 0a 53 45 4c 45 43  label-732..SELEC
217a0 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T - COUNT ( * ) 
217b0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
217c0 30 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  0 cor0 WHERE NOT
217d0 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d   + col1 IS NULL.
217e0 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c  .----..-3....onl
217f0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
21800 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
21810 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
21820 6c 61 62 65 6c 2d 37 33 33 0d 0a 53 45 4c 45 43  label-733..SELEC
21830 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 35  T DISTINCT - + 5
21840 37 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  7 * - COUNT( * )
21850 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
21860 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
21870 0d 0a 31 37 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..171....skipif 
21880 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
21890 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
218a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33  rowsort label-73
218b0 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  3..SELECT DISTIN
218c0 43 54 20 2d 20 2b 20 35 37 20 2a 20 2d 20 43 4f  CT - + 57 * - CO
218d0 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
218e0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
218f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 31 0d 0a  or0..----..171..
21900 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
21910 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
21920 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
21930 45 20 4e 4f 54 20 28 20 4e 4f 54 20 2b 20 36 30  E NOT ( NOT + 60
21940 20 3c 20 2d 20 63 6f 6c 31 20 2f 20 2b 20 63 6f   < - col1 / + co
21950 6c 31 20 2a 20 2b 20 34 34 20 29 0d 0a 2d 2d 2d  l1 * + 44 )..---
21960 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  -....query II ro
21970 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
21980 4c 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c 31 20 41  L col0, + col1 A
21990 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
219a0 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 35 31 0d 0a  ..----..46..51..
219b0 36 34 0d 0a 37 37 0d 0a 37 35 0d 0a 36 37 0d 0a  64..77..75..67..
219c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
219d0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
219e0 43 54 20 28 20 2d 20 31 38 20 29 20 46 52 4f 4d  CT ( - 18 ) FROM
219f0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   tab0..----..-18
21a00 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
21a10 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
21a20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
21a30 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
21a40 61 62 65 6c 2d 37 33 37 0d 0a 53 45 4c 45 43 54  abel-737..SELECT
21a50 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
21a60 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74   SIGNED ) FROM t
21a70 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  ab0 WHERE NOT co
21a80 6c 31 20 3d 20 2d 20 38 30 0d 0a 2d 2d 2d 2d 0d  l1 = - 80..----.
21a90 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
21aa0 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
21ab0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
21ac0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
21ad0 6f 72 74 20 6c 61 62 65 6c 2d 37 33 37 0d 0a 53  ort label-737..S
21ae0 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28 20 4e  ELECT + CAST ( N
21af0 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
21b00 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
21b10 20 4e 4f 54 20 63 6f 6c 31 20 3d 20 2d 20 38 30   NOT col1 = - 80
21b20 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
21b30 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  LL..NULL....only
21b40 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
21b50 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74  syntax: aggregat
21b60 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  e syntax: SIGNED
21b70 20 74 79 70 65 3a 20 44 49 56 20 66 6f 72 20 69   type: DIV for i
21b80 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
21b90 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
21ba0 72 74 20 6c 61 62 65 6c 2d 37 33 38 0d 0a 53 45  rt label-738..SE
21bb0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 33 37  LECT DISTINCT 37
21bc0 20 44 49 56 20 43 4f 55 4e 54 28 20 2a 20 29 20   DIV COUNT( * ) 
21bd0 2b 20 2b 20 43 41 53 54 28 20 4d 49 4e 28 20 44  + + CAST( MIN( D
21be0 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 29  ISTINCT + col1 )
21bf0 20 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f 6c   AS SIGNED ) col
21c00 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  0 FROM tab2 cor0
21c10 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a 73 6b  ..----..63....sk
21c20 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
21c30 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
21c40 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
21c50 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
21c60 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
21c70 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
21c80 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
21c90 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 38 0d  wsort label-738.
21ca0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
21cb0 20 33 37 20 2f 20 43 4f 55 4e 54 20 28 20 2a 20   37 / COUNT ( * 
21cc0 29 20 2b 20 2b 20 43 41 53 54 20 28 20 4d 49 4e  ) + + CAST ( MIN
21cd0 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f   ( DISTINCT + co
21ce0 6c 31 20 29 20 41 53 20 49 4e 54 45 47 45 52 20  l1 ) AS INTEGER 
21cf0 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  ) col0 FROM tab2
21d00 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d   cor0..----..63.
21d10 0a 0d 0a 71 75 65 72 79 20 49 49 49 49 49 49 20  ...query IIIIII 
21d20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
21d30 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
21d40 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
21d50 61 62 32 20 41 53 20 63 6f 72 31 20 57 48 45 52  ab2 AS cor1 WHER
21d60 45 20 2d 20 38 33 20 49 53 20 4e 4f 54 20 4e 55  E - 83 IS NOT NU
21d70 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35 34 20 76 61 6c  LL..----..54 val
21d80 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 65  ues hashing to e
21d90 65 35 31 32 39 62 61 65 35 32 39 33 39 33 35 61  e5129bae5293935a
21da0 65 35 35 38 65 62 65 39 35 32 39 30 65 32 39 0d  e558ebe95290e29.
21db0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
21dc0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28  rt..SELECT ALL (
21dd0 20 2d 20 37 36 20 29 20 2b 20 2b 20 63 6f 6c 32   - 76 ) + + col2
21de0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
21df0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 0d 0a 2d  b1..----..-17..-
21e00 38 0d 0a 32 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  8..20....onlyif 
21e10 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
21e20 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
21e30 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
21e40 6c 2d 37 34 31 0d 0a 53 45 4c 45 43 54 20 41 4c  l-741..SELECT AL
21e50 4c 20 2d 20 34 35 20 2b 20 4d 49 4e 28 20 28 20  L - 45 + MIN( ( 
21e60 63 6f 6c 31 20 29 20 29 20 46 52 4f 4d 20 74 61  col1 ) ) FROM ta
21e70 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
21e80 0d 0a 2d 34 34 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-44....skipif 
21e90 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
21ea0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
21eb0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34  rowsort label-74
21ec0 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  1..SELECT ALL - 
21ed0 34 35 20 2b 20 4d 49 4e 20 28 20 28 20 63 6f 6c  45 + MIN ( ( col
21ee0 31 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 20  1 ) ) FROM tab0 
21ef0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
21f00 34 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  44....onlyif mys
21f10 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
21f20 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
21f30 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
21f40 72 74 20 6c 61 62 65 6c 2d 37 34 32 0d 0a 53 45  rt label-742..SE
21f50 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
21f60 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
21f70 52 45 20 4e 55 4c 4c 20 3e 3d 20 2b 20 43 41 53  RE NULL >= + CAS
21f80 54 28 20 2d 20 63 6f 6c 31 20 41 53 20 53 49 47  T( - col1 AS SIG
21f90 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73  NED )..----....s
21fa0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
21fb0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
21fc0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
21fd0 6c 61 62 65 6c 2d 37 34 32 0d 0a 53 45 4c 45 43  label-742..SELEC
21fe0 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
21ff0 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
22000 4e 55 4c 4c 20 3e 3d 20 2b 20 43 41 53 54 20 28  NULL >= + CAST (
22010 20 2d 20 63 6f 6c 31 20 41 53 20 49 4e 54 45 47   - col1 AS INTEG
22020 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  ER )..----....qu
22030 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
22040 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
22050 20 2b 20 35 30 20 2b 20 2b 20 35 33 20 41 53 20   + 50 + + 53 AS 
22060 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
22070 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S cor0..----..10
22080 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
22090 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
220a0 20 63 6f 6c 32 20 2d 20 2b 20 36 36 20 46 52 4f   col2 - + 66 FRO
220b0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
220c0 2d 2d 2d 2d 0d 0a 2d 37 0d 0a 32 0d 0a 33 30 0d  ----..-7..2..30.
220d0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
220e0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
220f0 4e 43 54 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 2b  NCT + col0 + + +
22100 20 37 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   72 AS col1 FROM
22110 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
22120 2d 2d 2d 0d 0a 31 32 33 0d 0a 31 35 37 0d 0a 31  ---..123..157..1
22130 36 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  63....onlyif mys
22140 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
22150 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
22160 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
22170 34 36 0d 0a 53 45 4c 45 43 54 20 33 33 20 2b 20  46..SELECT 33 + 
22180 2b 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20  + MAX( DISTINCT 
22190 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61  + col2 ) FROM ta
221a0 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
221b0 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
221c0 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  L..----..NULL...
221d0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
221e0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
221f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
22200 6c 61 62 65 6c 2d 37 34 36 0d 0a 53 45 4c 45 43  label-746..SELEC
22210 54 20 33 33 20 2b 20 2b 20 4d 41 58 20 28 20 44  T 33 + + MAX ( D
22220 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 29  ISTINCT + col2 )
22230 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
22240 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  r0 WHERE NULL IS
22250 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
22260 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49  .NULL....query I
22270 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
22280 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f   DISTINCT - + co
22290 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l2 FROM tab1 WHE
222a0 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 2a 20  RE NOT + col1 * 
222b0 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col0 IS NULL..--
222c0 2d 2d 0d 0a 2d 35 39 0d 0a 2d 36 38 0d 0a 2d 39  --..-59..-68..-9
222d0 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  6....query II ro
222e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
222f0 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 2c 20 2b  STINCT + col2, +
22300 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 2d   col0 * - col2 -
22310 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
22320 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab2..----..2
22330 33 0d 0a 2d 31 31 30 34 0d 0a 34 30 0d 0a 2d 32  3..-1104..40..-2
22340 36 32 34 0d 0a 35 38 0d 0a 2d 34 34 32 35 0d 0a  624..58..-4425..
22350 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
22360 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
22370 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
22380 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
22390 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
223a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
223b0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 31 30  CT DISTINCT - 10
223c0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
223d0 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 0d 0a 71 75  .----..-10....qu
223e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
223f0 45 4c 45 43 54 20 2b 20 38 37 20 2b 20 2d 20 63  ELECT + 87 + - c
22400 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
22410 2d 2d 2d 0d 0a 32 39 0d 0a 34 37 0d 0a 36 34 0d  ---..29..47..64.
22420 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
22430 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
22440 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
22450 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 31 0d  wsort label-751.
22460 0a 53 45 4c 45 43 54 20 38 35 20 2a 20 2d 20 2b  .SELECT 85 * - +
22470 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43 54   COUNT( DISTINCT
22480 20 2b 20 37 36 20 29 20 2b 20 2d 20 2d 20 36 33   + 76 ) + - - 63
22490 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
224a0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 0d  b0..----..-22...
224b0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
224c0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
224d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
224e0 6c 61 62 65 6c 2d 37 35 31 0d 0a 53 45 4c 45 43  label-751..SELEC
224f0 54 20 38 35 20 2a 20 2d 20 2b 20 43 4f 55 4e 54  T 85 * - + COUNT
22500 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 37 36   ( DISTINCT + 76
22510 20 29 20 2b 20 2d 20 2d 20 36 33 20 41 53 20 63   ) + - - 63 AS c
22520 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
22530 2d 2d 2d 0d 0a 2d 32 32 0d 0a 0d 0a 71 75 65 72  ---..-22....quer
22540 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
22550 4c 45 43 54 20 41 4c 4c 20 2d 20 35 31 20 41 53  LECT ALL - 51 AS
22560 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 32 20 46 52   col0, - col2 FR
22570 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
22580 35 31 0d 0a 2d 31 30 0d 0a 2d 35 31 0d 0a 2d 34  51..-10..-51..-4
22590 37 0d 0a 2d 35 31 0d 0a 2d 39 39 0d 0a 0d 0a 71  7..-51..-99....q
225a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
225b0 53 45 4c 45 43 54 20 2d 20 35 33 20 2b 20 2d 20  SELECT - 53 + - 
225c0 33 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  3 FROM tab2..---
225d0 2d 0d 0a 2d 35 36 0d 0a 2d 35 36 0d 0a 2d 35 36  -..-56..-56..-56
225e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
225f0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
22600 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  tax: ..query II 
22610 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35  rowsort label-75
22620 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
22630 43 54 20 2b 20 28 20 2d 20 36 37 20 29 20 41 53  CT + ( - 67 ) AS
22640 20 63 6f 6c 30 2c 20 4d 49 4e 28 20 2b 20 63 6f   col0, MIN( + co
22650 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 57  l0 ) FROM tab2 W
22660 48 45 52 45 20 2d 20 2d 20 63 6f 6c 30 20 49 53  HERE - - col0 IS
22670 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
22680 0a 2d 36 37 0d 0a 34 36 0d 0a 0d 0a 73 6b 69 70  .-67..46....skip
22690 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
226a0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
226b0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
226c0 6c 2d 37 35 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-754..SELECT DI
226d0 53 54 49 4e 43 54 20 2b 20 28 20 2d 20 36 37 20  STINCT + ( - 67 
226e0 29 20 41 53 20 63 6f 6c 30 2c 20 4d 49 4e 20 28  ) AS col0, MIN (
226f0 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   + col0 ) FROM t
22700 61 62 32 20 57 48 45 52 45 20 2d 20 2d 20 63 6f  ab2 WHERE - - co
22710 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  l0 IS NOT NULL..
22720 2d 2d 2d 2d 0d 0a 2d 36 37 0d 0a 34 36 0d 0a 0d  ----..-67..46...
22730 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
22740 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
22750 31 20 2a 20 2b 20 39 30 20 46 52 4f 4d 20 74 61  1 * + 90 FROM ta
22760 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35 39 30 0d 0a  b2..----..4590..
22770 36 30 33 30 0d 0a 36 39 33 30 0d 0a 0d 0a 71 75  6030..6930....qu
22780 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
22790 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
227a0 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
227b0 63 6f 6c 32 20 3e 20 63 6f 6c 30 0d 0a 2d 2d 2d  col2 > col0..---
227c0 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
227d0 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35  ing to 75c998aa5
227e0 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39  3ac83218cbf2feb9
227f0 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79  62d0a49....query
22800 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
22810 43 54 20 2b 20 39 34 20 2a 20 2b 20 63 6f 6c 32  CT + 94 * + col2
22820 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   * col2 AS col0 
22830 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
22840 30 0d 0a 2d 2d 2d 2d 0d 0a 33 32 37 32 31 34 0d  0..----..327214.
22850 0a 34 33 34 36 35 36 0d 0a 38 36 36 33 30 34 0d  .434656..866304.
22860 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
22870 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
22880 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
22890 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 38 0d  wsort label-758.
228a0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 4d 49  .SELECT ALL ( MI
228b0 4e 28 20 63 6f 6c 32 20 29 20 29 20 41 53 20 63  N( col2 ) ) AS c
228c0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
228d0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d   cor0..----..23.
228e0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
228f0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
22900 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22910 74 20 6c 61 62 65 6c 2d 37 35 38 0d 0a 53 45 4c  t label-758..SEL
22920 45 43 54 20 41 4c 4c 20 28 20 4d 49 4e 20 28 20  ECT ALL ( MIN ( 
22930 63 6f 6c 32 20 29 20 29 20 41 53 20 63 6f 6c 32  col2 ) ) AS col2
22940 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
22950 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 0d 0a  r0..----..23....
22960 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
22970 0a 53 45 4c 45 43 54 20 2d 20 28 20 2d 20 63 6f  .SELECT - ( - co
22980 6c 32 20 29 20 2a 20 2d 20 2d 20 63 6f 6c 30 20  l2 ) * - - col0 
22990 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * + col2 FROM ta
229a0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
229b0 0d 0a 32 39 35 38 38 35 0d 0a 34 32 30 37 38 34  ..295885..420784
229c0 0d 0a 34 37 30 30 31 36 0d 0a 0d 0a 71 75 65 72  ..470016....quer
229d0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
229e0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
229f0 63 6f 6c 32 20 41 53 20 63 6f 6c 32 2c 20 34 35  col2 AS col2, 45
22a00 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
22a10 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  r0 WHERE NOT + c
22a20 6f 6c 32 20 3e 3d 20 63 6f 6c 32 0d 0a 2d 2d 2d  ol2 >= col2..---
22a30 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  -....skipif post
22a40 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
22a50 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
22a60 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
22a70 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
22a80 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
22a90 53 45 4c 45 43 54 20 2d 20 2b 20 32 31 20 63 6f  SELECT - + 21 co
22aa0 6c 31 2c 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  l1, - col2 FROM 
22ab0 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
22ac0 0a 2d 32 31 0d 0a 2d 32 33 0d 0a 2d 32 31 0d 0a  .-21..-23..-21..
22ad0 2d 34 30 0d 0a 2d 32 31 0d 0a 2d 35 38 0d 0a 0d  -40..-21..-58...
22ae0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
22af0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
22b00 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
22b10 6f 72 74 20 6c 61 62 65 6c 2d 37 36 32 0d 0a 53  ort label-762..S
22b20 45 4c 45 43 54 20 2d 20 4d 49 4e 28 20 41 4c 4c  ELECT - MIN( ALL
22b30 20 34 33 20 29 20 46 52 4f 4d 20 74 61 62 32 20   43 ) FROM tab2 
22b40 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
22b50 34 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  43....skipif mys
22b60 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
22b70 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
22b80 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 32 0d 0a  sort label-762..
22b90 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20 28 20 41  SELECT - MIN ( A
22ba0 4c 4c 20 34 33 20 29 20 46 52 4f 4d 20 74 61 62  LL 43 ) FROM tab
22bb0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
22bc0 0a 2d 34 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-43....query II
22bd0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
22be0 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31   DISTINCT + col1
22bf0 2c 20 2d 20 34 36 20 2a 20 2d 20 63 6f 6c 30 20  , - 46 * - col0 
22c00 2a 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 2b 20 63  * - col0 + - + c
22c10 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
22c20 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
22c30 2d 2d 2d 0d 0a 35 31 0d 0a 2d 39 37 33 38 32 0d  ---..51..-97382.
22c40 0a 36 37 0d 0a 2d 32 35 38 38 32 35 0d 0a 37 37  .67..-258825..77
22c50 0d 0a 2d 31 38 38 34 38 30 0d 0a 0d 0a 71 75 65  ..-188480....que
22c60 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
22c70 4c 45 43 54 20 2b 20 63 6f 6c 30 20 2b 20 2b 20  LECT + col0 + + 
22c80 2b 20 39 39 20 46 52 4f 4d 20 74 61 62 32 0d 0a  + 99 FROM tab2..
22c90 2d 2d 2d 2d 0d 0a 31 34 35 0d 0a 31 36 33 0d 0a  ----..145..163..
22ca0 31 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  174....query I r
22cb0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
22cc0 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 46  ISTINCT + col2 F
22cd0 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2d  ROM tab2 WHERE -
22ce0 20 37 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d   70 IS NULL..---
22cf0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
22d00 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
22d10 54 49 4e 43 54 20 36 32 20 41 53 20 63 6f 6c 30  TINCT 62 AS col0
22d20 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
22d30 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 49 53 20 4e   NOT + col2 IS N
22d40 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 36 32 0d 0a 0d  ULL..----..62...
22d50 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
22d60 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
22d70 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
22d80 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
22d90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
22da0 62 65 6c 2d 37 36 37 0d 0a 53 45 4c 45 43 54 20  bel-767..SELECT 
22db0 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
22dc0 28 20 2a 20 29 20 2b 20 2b 20 4d 49 4e 28 20 2b  ( * ) + + MIN( +
22dd0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
22de0 49 47 4e 45 44 20 29 20 29 20 2f 20 43 4f 55 4e  IGNED ) ) / COUN
22df0 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46  T( * ) AS col0 F
22e00 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
22e10 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
22e20 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
22e30 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
22e40 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 37  owsort label-767
22e50 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
22e60 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T - COUNT ( * ) 
22e70 2b 20 2b 20 4d 49 4e 20 28 20 2b 20 43 41 53 54  + + MIN ( + CAST
22e80 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
22e90 45 52 20 29 20 29 20 2f 20 43 4f 55 4e 54 20 28  ER ) ) / COUNT (
22ea0 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   * ) AS col0 FRO
22eb0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab1..----..NU
22ec0 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
22ed0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
22ee0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
22ef0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
22f00 20 6c 61 62 65 6c 2d 37 36 38 0d 0a 53 45 4c 45   label-768..SELE
22f10 43 54 20 2d 20 63 6f 6c 30 20 2b 20 28 20 2b 20  CT - col0 + ( + 
22f20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
22f30 53 49 47 4e 45 44 20 29 20 29 20 2b 20 2b 20 33  SIGNED ) ) + + 3
22f40 38 20 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  8 * col0 FROM ta
22f50 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b2..----..NULL..
22f60 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
22f70 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
22f80 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
22f90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
22fa0 65 6c 2d 37 36 38 0d 0a 53 45 4c 45 43 54 20 2d  el-768..SELECT -
22fb0 20 63 6f 6c 30 20 2b 20 28 20 2b 20 2b 20 43 41   col0 + ( + + CA
22fc0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
22fd0 45 47 45 52 20 29 20 29 20 2b 20 2b 20 33 38 20  EGER ) ) + + 38 
22fe0 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  * col0 FROM tab2
22ff0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
23000 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
23010 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23020 45 43 54 20 2b 20 39 20 46 52 4f 4d 20 74 61 62  ECT + 9 FROM tab
23030 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 31 36  0 WHERE NOT + 16
23040 20 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   <= NULL..----..
23050 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23060 74 0d 0a 53 45 4c 45 43 54 20 2d 20 39 38 20 2a  t..SELECT - 98 *
23070 20 2d 20 38 20 46 52 4f 4d 20 74 61 62 32 0d 0a   - 8 FROM tab2..
23080 2d 2d 2d 2d 0d 0a 37 38 34 0d 0a 37 38 34 0d 0a  ----..784..784..
23090 37 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  784....query III
230a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
230b0 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30   ALL * FROM tab0
230c0 20 57 48 45 52 45 20 2b 20 36 32 20 2a 20 2d 20   WHERE + 62 * - 
230d0 2d 20 63 6f 6c 31 20 2a 20 2b 20 2b 20 63 6f 6c  - col1 * + + col
230e0 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  2 IS NULL..----.
230f0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
23100 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 63  rt..SELECT - ( c
23110 6f 6c 31 20 29 20 2a 20 2b 20 34 33 20 2a 20 2d  ol1 ) * + 43 * -
23120 20 2d 20 34 30 20 41 53 20 63 6f 6c 32 20 46 52   - 40 AS col2 FR
23130 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
23140 0a 2d 2d 2d 2d 0d 0a 2d 32 34 30 38 30 0d 0a 2d  .----..-24080..-
23150 38 30 38 34 30 0d 0a 2d 38 36 30 30 0d 0a 0d 0a  80840..-8600....
23160 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
23170 0a 53 45 4c 45 43 54 20 2b 20 37 39 20 2a 20 2b  .SELECT + 79 * +
23180 20 2d 20 32 37 20 2a 20 2d 20 63 6f 6c 32 20 46   - 27 * - col2 F
23190 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
231a0 31 32 33 37 31 34 0d 0a 34 39 30 35 39 0d 0a 38  123714..49059..8
231b0 35 33 32 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  5320....onlyif m
231c0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
231d0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
231e0 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
231f0 6f 72 74 20 6c 61 62 65 6c 2d 37 37 34 0d 0a 53  ort label-774..S
23200 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 34 31  ELECT ALL + - 41
23210 20 2a 20 33 36 20 2d 20 2d 20 63 6f 6c 32 2c 20   * 36 - - col2, 
23220 63 6f 6c 32 20 2d 20 2b 20 28 20 2b 20 32 33 20  col2 - + ( + 23 
23230 29 20 2d 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  ) - - CAST( NULL
23240 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 63   AS SIGNED ) + c
23250 6f 6c 31 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20  ol1 + + col0 AS 
23260 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
23270 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
23280 33 37 37 0d 0a 4e 55 4c 4c 0d 0a 2d 31 34 32 39  377..NULL..-1429
23290 0d 0a 4e 55 4c 4c 0d 0a 2d 31 34 36 36 0d 0a 4e  ..NULL..-1466..N
232a0 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
232b0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
232c0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
232d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 34  owsort label-774
232e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
232f0 20 34 31 20 2a 20 33 36 20 2d 20 2d 20 63 6f 6c   41 * 36 - - col
23300 32 2c 20 63 6f 6c 32 20 2d 20 2b 20 28 20 2b 20  2, col2 - + ( + 
23310 32 33 20 29 20 2d 20 2d 20 43 41 53 54 20 28 20  23 ) - - CAST ( 
23320 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
23330 29 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c  ) + col1 + + col
23340 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
23350 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
23360 2d 0d 0a 2d 31 33 37 37 0d 0a 4e 55 4c 4c 0d 0a  -..-1377..NULL..
23370 2d 31 34 32 39 0d 0a 4e 55 4c 4c 0d 0a 2d 31 34  -1429..NULL..-14
23380 36 36 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  66..NULL....only
23390 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
233a0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
233b0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
233c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 35  owsort label-775
233d0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
233e0 54 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 2b 20 43  T - col2 + - + C
233f0 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
23400 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20  NED ) FROM tab1 
23410 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
23420 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
23430 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
23440 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
23450 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 35 0d  wsort label-775.
23460 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
23470 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 2b 20 43 41   - col2 + - + CA
23480 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
23490 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31  EGER ) FROM tab1
234a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
234b0 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
234c0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
234d0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
234e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
234f0 2d 37 37 36 0d 0a 53 45 4c 45 43 54 20 33 31 20  -776..SELECT 31 
23500 2b 20 43 4f 55 4e 54 28 20 41 4c 4c 20 32 37 20  + COUNT( ALL 27 
23510 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
23520 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
23530 2d 0d 0a 33 34 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..34....skipif 
23540 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
23550 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
23560 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37  rowsort label-77
23570 36 0d 0a 53 45 4c 45 43 54 20 33 31 20 2b 20 43  6..SELECT 31 + C
23580 4f 55 4e 54 20 28 20 41 4c 4c 20 32 37 20 29 20  OUNT ( ALL 27 ) 
23590 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
235a0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
235b0 0a 33 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .34....query I r
235c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
235d0 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 31   - col2 + + col1
235e0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
235f0 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0 cor0..----..-
23600 39 38 0d 0a 31 31 0d 0a 33 34 0d 0a 0d 0a 6f 6e  98..11..34....on
23610 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
23620 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
23630 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
23640 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
23650 37 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  78..SELECT DISTI
23660 4e 43 54 20 2d 20 43 41 53 54 28 20 34 20 41 53  NCT - CAST( 4 AS
23670 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 37 20   SIGNED ) + + 7 
23680 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
23690 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
236a0 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .3....skipif mys
236b0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
236c0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
236d0 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 38 0d 0a  sort label-778..
236e0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
236f0 2d 20 43 41 53 54 20 28 20 34 20 41 53 20 49 4e  - CAST ( 4 AS IN
23700 54 45 47 45 52 20 29 20 2b 20 2b 20 37 20 41 53  TEGER ) + + 7 AS
23710 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
23720 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
23730 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
23740 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
23750 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
23760 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 39  owsort label-779
23770 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
23780 20 43 4f 55 4e 54 28 20 2a 20 29 20 2d 20 2d 20   COUNT( * ) - - 
23790 32 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  27 AS col0 FROM 
237a0 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
237b0 2d 2d 0d 0a 32 34 0d 0a 0d 0a 73 6b 69 70 69 66  --..24....skipif
237c0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
237d0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
237e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
237f0 37 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  79..SELECT ALL +
23800 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d   - COUNT ( * ) -
23810 20 2d 20 32 37 20 41 53 20 63 6f 6c 30 20 46 52   - 27 AS col0 FR
23820 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
23830 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 0d 0a 71 75 65  .----..24....que
23840 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
23850 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
23860 28 20 63 6f 6c 31 20 29 20 2d 20 2b 20 63 6f 6c  ( col1 ) - + col
23870 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
23880 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
23890 2d 0d 0a 2d 33 37 0d 0a 2d 34 34 0d 0a 2d 38 30  -..-37..-44..-80
238a0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
238b0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
238c0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
238d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
238e0 61 62 65 6c 2d 37 38 31 0d 0a 53 45 4c 45 43 54  abel-781..SELECT
238f0 20 41 4c 4c 20 32 20 2a 20 2b 20 28 20 2d 20 63   ALL 2 * + ( - c
23900 6f 6c 32 20 29 20 44 49 56 20 63 6f 6c 32 20 2b  ol2 ) DIV col2 +
23910 20 2b 20 63 6f 6c 31 20 2b 20 2d 20 33 37 20 2a   + col1 + - 37 *
23920 20 2d 20 33 39 20 2b 20 32 33 20 46 52 4f 4d 20   - 39 + 23 FROM 
23930 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 36 35  tab0..----..1465
23940 0d 0a 31 34 38 35 0d 0a 31 35 34 35 0d 0a 0d 0a  ..1485..1545....
23950 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
23960 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
23970 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
23980 61 62 65 6c 2d 37 38 31 0d 0a 53 45 4c 45 43 54  abel-781..SELECT
23990 20 41 4c 4c 20 32 20 2a 20 2b 20 28 20 2d 20 63   ALL 2 * + ( - c
239a0 6f 6c 32 20 29 20 2f 20 63 6f 6c 32 20 2b 20 2b  ol2 ) / col2 + +
239b0 20 63 6f 6c 31 20 2b 20 2d 20 33 37 20 2a 20 2d   col1 + - 37 * -
239c0 20 33 39 20 2b 20 32 33 20 46 52 4f 4d 20 74 61   39 + 23 FROM ta
239d0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 36 35 0d 0a  b0..----..1465..
239e0 31 34 38 35 0d 0a 31 35 34 35 0d 0a 0d 0a 71 75  1485..1545....qu
239f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
23a00 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
23a10 20 35 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   58 AS col2 FROM
23a20 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
23a30 38 30 20 3e 3d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  80 >= col0..----
23a40 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
23a50 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
23a60 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
23a70 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 38 33  owsort label-783
23a80 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 31 38 20  ..SELECT ALL 18 
23a90 2a 20 2d 20 4d 41 58 28 20 44 49 53 54 49 4e 43  * - MAX( DISTINC
23aa0 54 20 2b 20 33 34 20 29 20 46 52 4f 4d 20 74 61  T + 34 ) FROM ta
23ab0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 31 32 0d 0a  b1..----..-612..
23ac0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
23ad0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
23ae0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
23af0 20 6c 61 62 65 6c 2d 37 38 33 0d 0a 53 45 4c 45   label-783..SELE
23b00 43 54 20 41 4c 4c 20 31 38 20 2a 20 2d 20 4d 41  CT ALL 18 * - MA
23b10 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 33  X ( DISTINCT + 3
23b20 34 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  4 ) FROM tab1..-
23b30 2d 2d 2d 0d 0a 2d 36 31 32 0d 0a 0d 0a 71 75 65  ---..-612....que
23b40 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
23b50 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20  LECT ALL + col0 
23b60 2b 20 2b 20 35 30 20 46 52 4f 4d 20 74 61 62 30  + + 50 FROM tab0
23b70 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 37 31 20   WHERE NOT + 71 
23b80 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
23b90 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
23ba0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
23bb0 20 2b 20 34 35 20 2a 20 63 6f 6c 32 20 41 53 20   + 45 * col2 AS 
23bc0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
23bd0 2d 2d 2d 2d 0d 0a 32 36 35 35 0d 0a 33 30 36 30  ----..2655..3060
23be0 0d 0a 34 33 32 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..4320....onlyif
23bf0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
23c00 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
23c10 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72  e: ..query III r
23c20 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 38 36  owsort label-786
23c30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
23c40 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48  T * FROM tab2 WH
23c50 45 52 45 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  ERE - CAST( NULL
23c60 20 41 53 20 53 49 47 4e 45 44 20 29 20 2f 20 63   AS SIGNED ) / c
23c70 6f 6c 32 20 2f 20 2d 20 63 6f 6c 30 20 2d 20 2d  ol2 / - col0 - -
23c80 20 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d   - col2 IS NULL.
23c90 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
23ca0 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39  hashing to 75c99
23cb0 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32  8aa53ac83218cbf2
23cc0 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 73  feb962d0a49....s
23cd0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
23ce0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
23cf0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
23d00 6c 61 62 65 6c 2d 37 38 36 0d 0a 53 45 4c 45 43  label-786..SELEC
23d10 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
23d20 4d 20 74 61 62 32 20 57 48 45 52 45 20 2d 20 43  M tab2 WHERE - C
23d30 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
23d40 54 45 47 45 52 20 29 20 2f 20 63 6f 6c 32 20 2f  TEGER ) / col2 /
23d50 20 2d 20 63 6f 6c 30 20 2d 20 2d 20 2d 20 63 6f   - col0 - - - co
23d60 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l2 IS NULL..----
23d70 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
23d80 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33  ng to 75c998aa53
23d90 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36  ac83218cbf2feb96
23da0 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20  2d0a49....query 
23db0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
23dc0 54 20 63 6f 6c 31 20 2d 20 37 32 20 46 52 4f 4d  T col1 - 72 FROM
23dd0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35   tab1..----..-25
23de0 0d 0a 2d 35 38 0d 0a 2d 36 37 0d 0a 0d 0a 6f 6e  ..-58..-67....on
23df0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
23e00 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
23e10 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
23e20 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
23e30 38 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  88..SELECT DISTI
23e40 4e 43 54 20 33 20 44 49 56 20 2d 20 63 6f 6c 32  NCT 3 DIV - col2
23e50 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
23e60 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
23e70 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
23e80 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
23e90 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 38 38 0d  wsort label-788.
23ea0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
23eb0 20 33 20 2f 20 2d 20 63 6f 6c 32 20 46 52 4f 4d   3 / - col2 FROM
23ec0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   tab0..----..0..
23ed0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
23ee0 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
23ef0 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
23f00 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
23f10 65 6c 2d 37 38 39 0d 0a 53 45 4c 45 43 54 20 2b  el-789..SELECT +
23f20 20 63 6f 6c 31 20 44 49 56 20 2b 20 38 31 20 41   col1 DIV + 81 A
23f30 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
23f40 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
23f50 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
23f60 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
23f70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23f80 74 20 6c 61 62 65 6c 2d 37 38 39 0d 0a 53 45 4c  t label-789..SEL
23f90 45 43 54 20 2b 20 63 6f 6c 31 20 2f 20 2b 20 38  ECT + col1 / + 8
23fa0 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
23fb0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d  ab1..----..0..0.
23fc0 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  .0....query II r
23fd0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
23fe0 4c 4c 20 35 37 20 41 53 20 63 6f 6c 32 2c 20 63  LL 57 AS col2, c
23ff0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
24000 2d 2d 2d 0d 0a 35 37 0d 0a 34 36 0d 0a 35 37 0d  ---..57..46..57.
24010 0a 36 34 0d 0a 35 37 0d 0a 37 35 0d 0a 0d 0a 6f  .64..57..75....o
24020 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
24030 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
24040 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
24050 74 20 6c 61 62 65 6c 2d 37 39 31 0d 0a 53 45 4c  t label-791..SEL
24060 45 43 54 20 44 49 53 54 49 4e 43 54 20 39 20 2b  ECT DISTINCT 9 +
24070 20 2b 20 28 20 43 4f 55 4e 54 28 20 41 4c 4c 20   + ( COUNT( ALL 
24080 2b 20 2d 20 28 20 2b 20 63 6f 6c 30 20 29 20 29  + - ( + col0 ) )
24090 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
240a0 2d 2d 0d 0a 31 32 0d 0a 0d 0a 73 6b 69 70 69 66  --..12....skipif
240b0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
240c0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
240d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
240e0 39 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  91..SELECT DISTI
240f0 4e 43 54 20 39 20 2b 20 2b 20 28 20 43 4f 55 4e  NCT 9 + + ( COUN
24100 54 20 28 20 41 4c 4c 20 2b 20 2d 20 28 20 2b 20  T ( ALL + - ( + 
24110 63 6f 6c 30 20 29 20 29 20 29 20 46 52 4f 4d 20  col0 ) ) ) FROM 
24120 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a  tab0..----..12..
24130 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
24140 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
24150 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
24160 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
24170 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
24180 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
24190 45 43 54 20 33 38 20 41 53 20 63 6f 6c 32 2c 20  ECT 38 AS col2, 
241a0 2b 20 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f 4d  + col0 col1 FROM
241b0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 38 0d   tab2..----..38.
241c0 0a 34 36 0d 0a 33 38 0d 0a 36 34 0d 0a 33 38 0d  .46..38..64..38.
241d0 0a 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .75....onlyif my
241e0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
241f0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
24200 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
24210 37 39 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  793..SELECT DIST
24220 49 4e 43 54 20 4d 41 58 28 20 41 4c 4c 20 2d 20  INCT MAX( ALL - 
24230 2d 20 34 36 20 29 20 41 53 20 63 6f 6c 31 20 46  - 46 ) AS col1 F
24240 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
24250 34 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  46....skipif mys
24260 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
24270 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
24280 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 33 0d 0a  sort label-793..
24290 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
242a0 4d 41 58 20 28 20 41 4c 4c 20 2d 20 2d 20 34 36  MAX ( ALL - - 46
242b0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
242c0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a  tab0..----..46..
242d0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
242e0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 31 30 20  rt..SELECT + 10 
242f0 41 53 20 63 6f 6c 30 2c 20 2b 20 39 34 20 46 52  AS col0, + 94 FR
24300 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
24310 30 0d 0a 39 34 0d 0a 31 30 0d 0a 39 34 0d 0a 31  0..94..10..94..1
24320 30 0d 0a 39 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  0..94....onlyif 
24330 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
24340 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
24350 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
24360 6f 72 74 20 6c 61 62 65 6c 2d 37 39 35 0d 0a 53  ort label-795..S
24370 45 4c 45 43 54 20 43 41 53 54 28 20 2d 20 28 20  ELECT CAST( - ( 
24380 2b 20 37 34 20 29 20 41 53 20 53 49 47 4e 45 44  + 74 ) AS SIGNED
24390 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d   ) FROM tab1..--
243a0 2d 2d 0d 0a 2d 37 34 0d 0a 2d 37 34 0d 0a 2d 37  --..-74..-74..-7
243b0 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
243c0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
243d0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
243e0 6f 72 74 20 6c 61 62 65 6c 2d 37 39 35 0d 0a 53  ort label-795..S
243f0 45 4c 45 43 54 20 43 41 53 54 20 28 20 2d 20 28  ELECT CAST ( - (
24400 20 2b 20 37 34 20 29 20 41 53 20 49 4e 54 45 47   + 74 ) AS INTEG
24410 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a  ER ) FROM tab1..
24420 2d 2d 2d 2d 0d 0a 2d 37 34 0d 0a 2d 37 34 0d 0a  ----..-74..-74..
24430 2d 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -74....query I r
24440 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
24450 49 53 54 49 4e 43 54 20 32 31 20 2b 20 2b 20 2b  ISTINCT 21 + + +
24460 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
24470 0a 2d 2d 2d 2d 0d 0a 31 30 36 0d 0a 31 31 32 0d  .----..106..112.
24480 0a 37 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  .72....skipif po
24490 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
244a0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
244b0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
244c0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
244d0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
244e0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
244f0 54 20 2b 20 38 30 20 63 6f 6c 30 2c 20 63 6f 6c  T + 80 col0, col
24500 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
24510 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 30 0d 0a 35  or0..----..80..5
24520 39 0d 0a 38 30 0d 0a 36 38 0d 0a 38 30 0d 0a 39  9..80..68..80..9
24530 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
24540 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
24550 6f 6c 31 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 2a  ol1 * + + col2 *
24560 20 2b 20 2d 20 38 35 20 2b 20 2b 20 63 6f 6c 31   + - 85 + + col1
24570 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
24580 0d 0a 2d 31 31 34 32 32 36 0d 0a 2d 32 35 30 37  ..-114226..-2507
24590 30 0d 0a 2d 32 37 31 36 31 33 0d 0a 0d 0a 71 75  0..-271613....qu
245a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
245b0 45 4c 45 43 54 20 2d 20 36 36 20 41 53 20 63 6f  ELECT - 66 AS co
245c0 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
245d0 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
245e0 74 61 62 30 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  tab0 cor1..----.
245f0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
24600 67 20 74 6f 20 61 34 30 38 31 30 38 64 34 32 33  g to a408108d423
24610 64 37 37 38 34 62 37 64 36 31 30 63 62 37 37 39  d7784b7d610cb779
24620 65 35 31 35 61 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  e515a....onlyif 
24630 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
24640 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
24650 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
24660 6f 72 74 20 6c 61 62 65 6c 2d 38 30 30 0d 0a 53  ort label-800..S
24670 45 4c 45 43 54 20 43 41 53 54 28 20 4e 55 4c 4c  ELECT CAST( NULL
24680 20 41 53 20 53 49 47 4e 45 44 20 29 20 2f 20 2b   AS SIGNED ) / +
24690 20 31 31 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 63   11 * - + col1 c
246a0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
246b0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
246c0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
246d0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
246e0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
246f0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
24700 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
24710 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
24720 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
24730 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24740 20 6c 61 62 65 6c 2d 38 30 30 0d 0a 53 45 4c 45   label-800..SELE
24750 43 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41  CT CAST ( NULL A
24760 53 20 49 4e 54 45 47 45 52 20 29 20 2f 20 2b 20  S INTEGER ) / + 
24770 31 31 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 63 6f  11 * - + col1 co
24780 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
24790 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
247a0 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
247b0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
247c0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
247d0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
247e0 72 74 20 6c 61 62 65 6c 2d 38 30 31 0d 0a 53 45  rt label-801..SE
247f0 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 28  LECT ALL + CAST(
24800 20 2b 20 63 6f 6c 31 20 41 53 20 53 49 47 4e 45   + col1 AS SIGNE
24810 44 20 29 20 2a 20 2d 20 2b 20 28 20 39 32 20 29  D ) * - + ( 92 )
24820 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
24830 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 33 32 0d  r0..----..-1932.
24840 0a 2d 37 34 35 32 0d 0a 2d 39 32 0d 0a 0d 0a 73  .-7452..-92....s
24850 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
24860 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
24870 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
24880 62 65 6c 2d 38 30 31 0d 0a 53 45 4c 45 43 54 20  bel-801..SELECT 
24890 41 4c 4c 20 2b 20 43 41 53 54 20 28 20 2b 20 63  ALL + CAST ( + c
248a0 6f 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol1 AS INTEGER )
248b0 20 2a 20 2d 20 2b 20 28 20 39 32 20 29 20 46 52   * - + ( 92 ) FR
248c0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
248d0 0a 2d 2d 2d 2d 0d 0a 2d 31 39 33 32 0d 0a 2d 37  .----..-1932..-7
248e0 34 35 32 0d 0a 2d 39 32 0d 0a 0d 0a 73 6b 69 70  452..-92....skip
248f0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
24900 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
24910 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
24920 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
24930 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
24940 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
24950 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 36 37 20 63   + col0 + - 67 c
24960 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
24970 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31   cor0..----..-21
24980 0d 0a 2d 33 0d 0a 38 0d 0a 0d 0a 6f 6e 6c 79 69  ..-3..8....onlyi
24990 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
249a0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
249b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
249c0 62 65 6c 2d 38 30 33 0d 0a 53 45 4c 45 43 54 20  bel-803..SELECT 
249d0 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
249e0 28 20 2a 20 29 20 2a 20 2b 20 2b 20 38 30 20 2d  ( * ) * + + 80 -
249f0 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20   COUNT( * ) * + 
24a00 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 39  COUNT( * ) * + 9
24a10 38 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  8 col0 FROM tab0
24a20 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
24a30 2d 31 31 32 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  -1122....skipif 
24a40 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
24a50 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
24a60 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
24a70 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
24a80 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
24a90 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
24aa0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24ab0 20 6c 61 62 65 6c 2d 38 30 33 0d 0a 53 45 4c 45   label-803..SELE
24ac0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f  CT DISTINCT - CO
24ad0 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 2b 20  UNT ( * ) * + + 
24ae0 38 30 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29  80 - COUNT ( * )
24af0 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   * + COUNT ( * )
24b00 20 2a 20 2b 20 39 38 20 63 6f 6c 30 20 46 52 4f   * + 98 col0 FRO
24b10 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
24b20 2d 2d 2d 2d 0d 0a 2d 31 31 32 32 0d 0a 0d 0a 71  ----..-1122....q
24b30 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
24b40 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
24b50 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
24b60 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c   WHERE NOT + col
24b70 30 20 2b 20 2d 20 2b 20 31 33 20 3c 3e 20 4e 55  0 + - + 13 <> NU
24b80 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
24b90 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
24ba0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
24bb0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
24bc0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 35  owsort label-805
24bd0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
24be0 54 20 2b 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 2b  T + + col1 * + +
24bf0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
24c00 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20  IGNED ) AS col1 
24c10 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a  FROM tab2 cor0..
24c20 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
24c30 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
24c40 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
24c50 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
24c60 65 6c 2d 38 30 35 0d 0a 53 45 4c 45 43 54 20 44  el-805..SELECT D
24c70 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31  ISTINCT + + col1
24c80 20 2a 20 2b 20 2b 20 43 41 53 54 20 28 20 4e 55   * + + CAST ( NU
24c90 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
24ca0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
24cb0 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  2 cor0..----..NU
24cc0 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
24cd0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
24ce0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
24cf0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
24d00 30 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  06..SELECT DISTI
24d10 4e 43 54 20 35 37 20 2d 20 2b 20 4d 41 58 28 20  NCT 57 - + MAX( 
24d20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 29 20  DISTINCT col1 ) 
24d30 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b  * + COUNT( * ) +
24d40 20 2d 20 37 20 46 52 4f 4d 20 74 61 62 30 20 41   - 7 FROM tab0 A
24d50 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
24d60 39 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  93....skipif mys
24d70 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
24d80 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
24d90 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 36 0d 0a  sort label-806..
24da0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
24db0 35 37 20 2d 20 2b 20 4d 41 58 20 28 20 44 49 53  57 - + MAX ( DIS
24dc0 54 49 4e 43 54 20 63 6f 6c 31 20 29 20 2a 20 2b  TINCT col1 ) * +
24dd0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d   COUNT ( * ) + -
24de0 20 37 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   7 FROM tab0 AS 
24df0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 33  cor0..----..-193
24e00 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
24e10 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
24e20 6c 30 20 2b 20 28 20 2d 20 2d 20 37 31 20 29 20  l0 + ( - - 71 ) 
24e30 2b 20 2b 20 2d 20 38 30 20 2a 20 2d 20 2b 20 63  + + - 80 * - + c
24e40 6f 6c 31 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20  ol1 * + col0 AS 
24e50 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
24e60 2d 2d 2d 2d 0d 0a 31 34 36 31 34 34 0d 0a 37 37  ----..146144..77
24e70 33 34 0d 0a 39 37 32 35 36 0d 0a 0d 0a 6f 6e 6c  34..97256....onl
24e80 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
24e90 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
24ea0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
24eb0 6c 61 62 65 6c 2d 38 30 38 0d 0a 53 45 4c 45 43  label-808..SELEC
24ec0 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a 20 29  T ALL COUNT( * )
24ed0 20 2d 20 2b 20 38 20 41 53 20 63 6f 6c 32 20 46   - + 8 AS col2 F
24ee0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
24ef0 2d 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -5....skipif mys
24f00 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
24f10 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
24f20 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 38 0d 0a  sort label-808..
24f30 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54  SELECT ALL COUNT
24f40 20 28 20 2a 20 29 20 2d 20 2b 20 38 20 41 53 20   ( * ) - + 8 AS 
24f50 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
24f60 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 0d 0a 71 75 65 72  ----..-5....quer
24f70 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
24f80 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 2d  ECT ALL col2 * -
24f90 20 36 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   67 AS col1 FROM
24fa0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31   tab0..----..-31
24fb0 34 39 0d 0a 2d 36 36 33 33 0d 0a 2d 36 37 30 0d  49..-6633..-670.
24fc0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
24fd0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
24fe0 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
24ff0 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20  RE NOT NULL NOT 
25000 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44  BETWEEN NULL AND
25010 20 28 20 63 6f 6c 30 20 29 20 2b 20 2d 20 38 38   ( col0 ) + - 88
25020 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
25030 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
25040 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
25050 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
25060 65 6c 2d 38 31 31 0d 0a 53 45 4c 45 43 54 20 2d  el-811..SELECT -
25070 20 32 33 20 2b 20 2b 20 4d 49 4e 28 20 41 4c 4c   23 + + MIN( ALL
25080 20 2b 20 63 6f 6c 30 20 29 20 2a 20 43 4f 55 4e   + col0 ) * COUN
25090 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46  T( * ) AS col1 F
250a0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
250b0 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20   WHERE NOT col2 
250c0 2a 20 2d 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c  * - col1 IS NULL
250d0 0d 0a 2d 2d 2d 2d 0d 0a 31 31 35 0d 0a 0d 0a 73  ..----..115....s
250e0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
250f0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
25100 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
25110 62 65 6c 2d 38 31 31 0d 0a 53 45 4c 45 43 54 20  bel-811..SELECT 
25120 2d 20 32 33 20 2b 20 2b 20 4d 49 4e 20 28 20 41  - 23 + + MIN ( A
25130 4c 4c 20 2b 20 63 6f 6c 30 20 29 20 2a 20 43 4f  LL + col0 ) * CO
25140 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
25150 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
25160 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  or0 WHERE NOT co
25170 6c 32 20 2a 20 2d 20 63 6f 6c 31 20 49 53 20 4e  l2 * - col1 IS N
25180 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 31 35 0d 0a  ULL..----..115..
25190 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
251a0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
251b0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
251c0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 32 0d 0a  sort label-812..
251d0 53 45 4c 45 43 54 20 2b 20 53 55 4d 28 20 44 49  SELECT + SUM( DI
251e0 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 29 20  STINCT - col0 ) 
251f0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
25200 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  1 cor0..----..-2
25210 32 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  27....skipif mys
25220 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
25230 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
25240 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 32 0d 0a  sort label-812..
25250 53 45 4c 45 43 54 20 2b 20 53 55 4d 20 28 20 44  SELECT + SUM ( D
25260 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 29  ISTINCT - col0 )
25270 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
25280 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1 cor0..----..-
25290 32 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  227....query III
252a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
252b0 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
252c0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63  cor0 WHERE NOT c
252d0 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32 20 49 53 20  ol0 + + col2 IS 
252e0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  NULL..----..9 va
252f0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
25300 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64  c6c0a4111b36d04d
25310 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64  bc811a11e4d54cad
25320 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
25330 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
25340 2d 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c  - - col0 + + col
25350 31 20 2b 20 2b 20 2b 20 32 38 20 2a 20 2d 20 63  1 + + + 28 * - c
25360 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
25370 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
25380 2d 2d 2d 0d 0a 2d 31 33 36 33 0d 0a 2d 32 32 39  ---..-1363..-229
25390 30 0d 0a 2d 32 34 31 30 0d 0a 0d 0a 71 75 65 72  0..-2410....quer
253a0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
253b0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
253c0 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
253d0 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3d 20 28  NOT ( NULL ) = (
253e0 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 2b 20 37 38   + col0 * - + 78
253f0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79   )..----....only
25400 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
25410 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
25420 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
25430 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 36  owsort label-816
25440 0d 0a 53 45 4c 45 43 54 20 2d 20 35 32 20 44 49  ..SELECT - 52 DI
25450 56 20 2b 20 28 20 2b 20 63 6f 6c 32 20 29 20 41  V + ( + col2 ) A
25460 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
25470 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
25480 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  0..0..0....skipi
25490 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
254a0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
254b0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
254c0 38 31 36 0d 0a 53 45 4c 45 43 54 20 2d 20 35 32  816..SELECT - 52
254d0 20 2f 20 2b 20 28 20 2b 20 63 6f 6c 32 20 29 20   / + ( + col2 ) 
254e0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
254f0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
25500 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .0..0..0....skip
25510 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
25520 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
25530 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
25540 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
25550 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
25560 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
25570 4c 20 2b 20 28 20 2d 20 33 33 20 29 20 2b 20 2b  L + ( - 33 ) + +
25580 20 2d 20 38 38 20 41 53 20 63 6f 6c 30 2c 20 63   - 88 AS col0, c
25590 6f 6c 31 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ol1 col1 FROM ta
255a0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 0d 0a  b1..----..-121..
255b0 31 34 0d 0a 2d 31 32 31 0d 0a 34 37 0d 0a 2d 31  14..-121..47..-1
255c0 32 31 0d 0a 35 0d 0a 0d 0a 71 75 65 72 79 20 49  21..5....query I
255d0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
255e0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
255f0 48 45 52 45 20 2b 20 38 35 20 49 53 20 4e 4f 54  HERE + 85 IS NOT
25600 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
25610 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
25620 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32   75c998aa53ac832
25630 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34  18cbf2feb962d0a4
25640 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
25650 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
25660 20 63 6f 6c 30 20 2b 20 2b 20 32 32 20 46 52 4f   col0 + + 22 FRO
25670 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab0..----..10
25680 39 0d 0a 31 31 39 0d 0a 33 37 0d 0a 0d 0a 71 75  9..119..37....qu
25690 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
256a0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 63 6f  ELECT ALL + - co
256b0 6c 32 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74  l2 + col2 FROM t
256c0 61 62 32 20 57 48 45 52 45 20 2d 20 32 39 20 49  ab2 WHERE - 29 I
256d0 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
256e0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
256f0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
25700 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
25710 72 74 20 6c 61 62 65 6c 2d 38 32 31 0d 0a 53 45  rt label-821..SE
25720 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 31 34 20  LECT ALL - + 14 
25730 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  + + COUNT( * ) F
25740 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
25750 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d 0a 0d 0a 73  ..----..-11....s
25760 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
25770 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
25780 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
25790 62 65 6c 2d 38 32 31 0d 0a 53 45 4c 45 43 54 20  bel-821..SELECT 
257a0 41 4c 4c 20 2d 20 2b 20 31 34 20 2b 20 2b 20 43  ALL - + 14 + + C
257b0 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
257c0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
257d0 2d 2d 0d 0a 2d 31 31 0d 0a 0d 0a 6f 6e 6c 79 69  --..-11....onlyi
257e0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
257f0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
25800 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
25810 62 65 6c 2d 38 32 32 0d 0a 53 45 4c 45 43 54 20  bel-822..SELECT 
25820 41 4c 4c 20 4d 49 4e 28 20 41 4c 4c 20 2d 20 2d  ALL MIN( ALL - -
25830 20 36 33 20 29 20 41 53 20 63 6f 6c 32 20 46 52   63 ) AS col2 FR
25840 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
25850 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a 73 6b 69  .----..63....ski
25860 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
25870 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
25880 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
25890 6c 2d 38 32 32 0d 0a 53 45 4c 45 43 54 20 41 4c  l-822..SELECT AL
258a0 4c 20 4d 49 4e 20 28 20 41 4c 4c 20 2d 20 2d 20  L MIN ( ALL - - 
258b0 36 33 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  63 ) AS col2 FRO
258c0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
258d0 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a 6f 6e 6c 79  ----..63....only
258e0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
258f0 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74  syntax: aggregat
25900 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  e syntax: SIGNED
25910 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
25920 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
25930 32 33 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28 20  23..SELECT MAX( 
25940 2d 20 43 41 53 54 28 20 2d 20 39 36 20 41 53 20  - CAST( - 96 AS 
25950 53 49 47 4e 45 44 20 29 20 29 20 46 52 4f 4d 20  SIGNED ) ) FROM 
25960 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
25970 2d 2d 0d 0a 39 36 0d 0a 0d 0a 73 6b 69 70 69 66  --..96....skipif
25980 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
25990 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
259a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
259b0 32 33 0d 0a 53 45 4c 45 43 54 20 4d 41 58 20 28  23..SELECT MAX (
259c0 20 2d 20 43 41 53 54 20 28 20 2d 20 39 36 20 41   - CAST ( - 96 A
259d0 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 46 52  S INTEGER ) ) FR
259e0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
259f0 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 0d 0a 73 6b 69  .----..96....ski
25a00 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
25a10 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
25a20 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
25a30 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
25a40 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
25a50 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
25a60 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 2c 20 2b   col2 AS col2, +
25a70 20 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f 4d 20   col2 col0 FROM 
25a80 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
25a90 2d 2d 0d 0a 2d 32 33 0d 0a 32 33 0d 0a 2d 34 30  --..-23..23..-40
25aa0 0d 0a 34 30 0d 0a 2d 35 38 0d 0a 35 38 0d 0a 0d  ..40..-58..58...
25ab0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
25ac0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
25ad0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
25ae0 6f 72 74 20 6c 61 62 65 6c 2d 38 32 35 0d 0a 53  ort label-825..S
25af0 45 4c 45 43 54 20 31 37 20 2a 20 2d 20 43 4f 55  ELECT 17 * - COU
25b00 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20  NT( * ) AS col1 
25b10 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
25b20 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a  0..----..-51....
25b30 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
25b40 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
25b50 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
25b60 61 62 65 6c 2d 38 32 35 0d 0a 53 45 4c 45 43 54  abel-825..SELECT
25b70 20 31 37 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20   17 * - COUNT ( 
25b80 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
25b90 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
25ba0 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a 71 75 65 72  ---..-51....quer
25bb0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
25bc0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
25bd0 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
25be0 63 6f 6c 30 20 2d 20 2b 20 39 30 20 3c 3e 20 4e  col0 - + 90 <> N
25bf0 55 4c 4c 20 4f 52 20 4e 4f 54 20 4e 55 4c 4c 20  ULL OR NOT NULL 
25c00 49 4e 20 28 20 2d 20 2b 20 63 6f 6c 31 2c 20 2b  IN ( - + col1, +
25c10 20 37 32 20 2d 20 2d 20 63 6f 6c 30 20 2b 20 2b   72 - - col0 + +
25c20 20 35 37 20 2a 20 2d 20 2d 20 63 6f 6c 31 2c 20   57 * - - col1, 
25c30 2d 20 63 6f 6c 32 2c 20 63 6f 6c 32 20 29 0d 0a  - col2, col2 )..
25c40 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
25c50 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
25c60 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
25c70 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
25c80 2d 38 32 37 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -827..SELECT COU
25c90 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  NT( * ) AS col2 
25ca0 46 52 4f 4d 20 28 20 74 61 62 31 20 63 6f 72 30  FROM ( tab1 cor0
25cb0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32   CROSS JOIN tab2
25cc0 20 41 53 20 63 6f 72 31 20 29 0d 0a 2d 2d 2d 2d   AS cor1 )..----
25cd0 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..9....skipif my
25ce0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
25cf0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
25d00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32 37 0d  wsort label-827.
25d10 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20  .SELECT COUNT ( 
25d20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
25d30 20 28 20 74 61 62 31 20 63 6f 72 30 20 43 52 4f   ( tab1 cor0 CRO
25d40 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20  SS JOIN tab2 AS 
25d50 63 6f 72 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 0d  cor1 )..----..9.
25d60 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
25d70 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
25d80 63 6f 6c 30 20 2a 20 63 6f 6c 31 20 41 53 20 63  col0 * col1 AS c
25d90 6f 6c 30 2c 20 63 6f 6c 32 20 41 53 20 63 6f 6c  ol0, col2 AS col
25da0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
25db0 2d 0d 0a 34 32 35 0d 0a 35 39 0d 0a 34 32 37 37  -..425..59..4277
25dc0 0d 0a 36 38 0d 0a 37 31 34 0d 0a 39 36 0d 0a 0d  ..68..714..96...
25dd0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25de0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b  ..SELECT ALL - +
25df0 20 28 20 37 35 20 29 20 2a 20 2b 20 37 39 20 2b   ( 75 ) * + 79 +
25e00 20 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   1 AS col1 FROM 
25e10 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
25e20 2d 2d 0d 0a 2d 35 39 32 34 0d 0a 2d 35 39 32 34  --..-5924..-5924
25e30 0d 0a 2d 35 39 32 34 0d 0a 0d 0a 71 75 65 72 79  ..-5924....query
25e40 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
25e50 43 54 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20  CT - + col2 * + 
25e60 63 6f 6c 32 20 2d 20 2b 20 2d 20 34 39 20 2d 20  col2 - + - 49 - 
25e70 63 6f 6c 30 20 2a 20 63 6f 6c 32 20 41 53 20 63  col0 * col2 AS c
25e80 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol1 FROM tab0 co
25e90 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 33 35 35  r0..----..-19355
25ea0 0d 0a 2d 32 38 36 35 0d 0a 2d 39 32 31 0d 0a 0d  ..-2865..-921...
25eb0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25ec0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b  ..SELECT ALL + +
25ed0 20 38 32 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20   82 + - col1 AS 
25ee0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
25ef0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  S cor0..----..15
25f00 0d 0a 33 31 0d 0a 35 0d 0a 0d 0a 6f 6e 6c 79 69  ..31..5....onlyi
25f10 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
25f20 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
25f30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
25f40 62 65 6c 2d 38 33 32 0d 0a 53 45 4c 45 43 54 20  bel-832..SELECT 
25f50 41 4c 4c 20 2d 20 36 35 20 2a 20 2d 20 2b 20 43  ALL - 65 * - + C
25f60 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20 2b 20  OUNT( * ) + - + 
25f70 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
25f80 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
25f90 2d 2d 0d 0a 31 39 32 0d 0a 0d 0a 73 6b 69 70 69  --..192....skipi
25fa0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
25fb0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
25fc0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
25fd0 38 33 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  832..SELECT ALL 
25fe0 2d 20 36 35 20 2a 20 2d 20 2b 20 43 4f 55 4e 54  - 65 * - + COUNT
25ff0 20 28 20 2a 20 29 20 2b 20 2d 20 2b 20 43 4f 55   ( * ) + - + COU
26000 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
26010 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
26020 0d 0a 31 39 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..192....onlyif 
26030 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
26040 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
26050 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
26060 6c 2d 38 33 33 0d 0a 53 45 4c 45 43 54 20 41 4c  l-833..SELECT AL
26070 4c 20 2b 20 4d 49 4e 28 20 2d 20 63 6f 6c 30 20  L + MIN( - col0 
26080 29 20 2d 20 39 20 2d 20 2d 20 2b 20 43 4f 55 4e  ) - 9 - - + COUN
26090 54 28 20 2a 20 29 20 2a 20 2b 20 2d 20 34 37 20  T( * ) * + - 47 
260a0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
260b0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 37 0d 0a 0d  0..----..-247...
260c0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
260d0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
260e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
260f0 6c 61 62 65 6c 2d 38 33 33 0d 0a 53 45 4c 45 43  label-833..SELEC
26100 54 20 41 4c 4c 20 2b 20 4d 49 4e 20 28 20 2d 20  T ALL + MIN ( - 
26110 63 6f 6c 30 20 29 20 2d 20 39 20 2d 20 2d 20 2b  col0 ) - 9 - - +
26120 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b   COUNT ( * ) * +
26130 20 2d 20 34 37 20 46 52 4f 4d 20 74 61 62 30 20   - 47 FROM tab0 
26140 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
26150 32 34 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  247....onlyif my
26160 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
26170 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
26180 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
26190 38 33 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  834..SELECT DIST
261a0 49 4e 43 54 20 2b 20 2b 20 4d 49 4e 28 20 28 20  INCT + + MIN( ( 
261b0 2d 20 32 20 29 20 29 20 46 52 4f 4d 20 74 61 62  - 2 ) ) FROM tab
261c0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
261d0 0a 2d 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-2....skipif my
261e0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
261f0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
26200 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 34 0d  wsort label-834.
26210 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
26220 20 2b 20 2b 20 4d 49 4e 20 28 20 28 20 2d 20 32   + + MIN ( ( - 2
26230 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41   ) ) FROM tab2 A
26240 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
26250 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
26260 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
26270 20 28 20 2b 20 2d 20 63 6f 6c 30 20 29 2c 20 63   ( + - col0 ), c
26280 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
26290 2d 2d 2d 0d 0a 2d 35 31 0d 0a 39 36 0d 0a 2d 38  ---..-51..96..-8
262a0 35 0d 0a 35 39 0d 0a 2d 39 31 0d 0a 36 38 0d 0a  5..59..-91..68..
262b0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
262c0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
262d0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
262e0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 36 0d 0a  sort label-836..
262f0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
26300 43 4f 55 4e 54 28 20 2d 20 2b 20 63 6f 6c 31 20  COUNT( - + col1 
26310 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
26320 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
26330 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..3....skipif m
26340 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
26350 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
26360 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 36  owsort label-836
26370 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
26380 54 20 43 4f 55 4e 54 20 28 20 2d 20 2b 20 63 6f  T COUNT ( - + co
26390 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l1 ) AS col1 FRO
263a0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
263b0 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79  ----..3....query
263c0 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
263d0 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 41 53 20  ECT ALL col2 AS 
263e0 63 6f 6c 31 2c 20 63 6f 6c 30 20 41 53 20 63 6f  col1, col0 AS co
263f0 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
26400 2d 2d 0d 0a 35 39 0d 0a 38 35 0d 0a 36 38 0d 0a  --..59..85..68..
26410 39 31 0d 0a 39 36 0d 0a 35 31 0d 0a 0d 0a 71 75  91..96..51....qu
26420 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
26430 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31  ELECT ALL + col1
26440 20 2b 20 2d 20 2d 20 28 20 2d 20 36 33 20 29 20   + - - ( - 63 ) 
26450 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
26460 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32 0d 0a 2d 36  0..----..-42..-6
26470 32 0d 0a 31 38 0d 0a 0d 0a 71 75 65 72 79 20 49  2..18....query I
26480 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
26490 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 2a   DISTINCT col1 *
264a0 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 35 34 20 41   + col1 + + 54 A
264b0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
264c0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
264d0 34 39 35 0d 0a 35 35 0d 0a 36 36 31 35 0d 0a 0d  495..55..6615...
264e0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
264f0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
26500 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
26510 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
26520 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
26530 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
26540 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 63 6f 6c  T ALL + col1 col
26550 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
26560 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
26570 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
26580 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
26590 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
265a0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
265b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
265c0 61 62 65 6c 2d 38 34 31 0d 0a 53 45 4c 45 43 54  abel-841..SELECT
265d0 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 43 41   DISTINCT - - CA
265e0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
265f0 45 44 20 29 20 2a 20 31 38 20 63 6f 6c 30 20 46  ED ) * 18 col0 F
26600 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
26610 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
26620 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
26630 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
26640 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
26650 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
26660 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
26670 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
26680 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
26690 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34  rowsort label-84
266a0 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  1..SELECT DISTIN
266b0 43 54 20 2d 20 2d 20 43 41 53 54 20 28 20 4e 55  CT - - CAST ( NU
266c0 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
266d0 2a 20 31 38 20 63 6f 6c 30 20 46 52 4f 4d 20 74  * 18 col0 FROM t
266e0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
266f0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  -..NULL....query
26700 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
26710 43 54 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2b 20  CT + - col2 * + 
26720 2b 20 63 6f 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c  + col0 + + + col
26730 30 20 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20  0 - + col2 FROM 
26740 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
26750 52 45 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54  RE - col0 IS NOT
26760 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 39   NULL..----..-49
26770 34 31 0d 0a 2d 34 39 38 39 0d 0a 2d 36 31 36 35  41..-4989..-6165
26780 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
26790 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
267a0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
267b0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
267c0 6c 61 62 65 6c 2d 38 34 33 0d 0a 53 45 4c 45 43  label-843..SELEC
267d0 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 44 49 56  T ALL + col1 DIV
267e0 20 2d 20 2b 20 63 6f 6c 31 2c 20 63 6f 6c 32 20   - + col1, col2 
267f0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
26800 0a 2d 31 0d 0a 32 33 0d 0a 2d 31 0d 0a 34 30 0d  .-1..23..-1..40.
26810 0a 2d 31 0d 0a 35 38 0d 0a 0d 0a 73 6b 69 70 69  .-1..58....skipi
26820 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
26830 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
26840 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
26850 2d 38 34 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -843..SELECT ALL
26860 20 2b 20 63 6f 6c 31 20 2f 20 2d 20 2b 20 63 6f   + col1 / - + co
26870 6c 31 2c 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  l1, col2 FROM ta
26880 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 32 33  b2..----..-1..23
26890 0d 0a 2d 31 0d 0a 34 30 0d 0a 2d 31 0d 0a 35 38  ..-1..40..-1..58
268a0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
268b0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
268c0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
268d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
268e0 61 62 65 6c 2d 38 34 34 0d 0a 53 45 4c 45 43 54  abel-844..SELECT
268f0 20 44 49 53 54 49 4e 43 54 20 34 33 20 44 49 56   DISTINCT 43 DIV
26900 20 2d 20 39 33 20 46 52 4f 4d 20 74 61 62 32 0d   - 93 FROM tab2.
26910 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
26920 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
26930 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
26940 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
26950 2d 38 34 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -844..SELECT DIS
26960 54 49 4e 43 54 20 34 33 20 2f 20 2d 20 39 33 20  TINCT 43 / - 93 
26970 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
26980 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
26990 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
269a0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
269b0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
269c0 34 35 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  45..SELECT COUNT
269d0 28 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2b 20 38  ( - col1 ) * + 8
269e0 37 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  7 FROM tab0..---
269f0 2d 0d 0a 32 36 31 0d 0a 0d 0a 73 6b 69 70 69 66  -..261....skipif
26a00 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
26a10 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
26a20 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
26a30 34 35 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  45..SELECT COUNT
26a40 20 28 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2b 20   ( - col1 ) * + 
26a50 38 37 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  87 FROM tab0..--
26a60 2d 2d 0d 0a 32 36 31 0d 0a 0d 0a 71 75 65 72 79  --..261....query
26a70 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
26a80 43 54 20 37 30 20 2a 20 2b 20 2b 20 63 6f 6c 30  CT 70 * + + col0
26a90 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
26aa0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35 30 0d 0a  b0..----..1050..
26ab0 36 30 39 30 0d 0a 36 37 39 30 0d 0a 0d 0a 71 75  6090..6790....qu
26ac0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
26ad0 45 4c 45 43 54 20 2b 20 36 39 20 2a 20 63 6f 6c  ELECT + 69 * col
26ae0 30 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  0 + - col2 AS co
26af0 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
26b00 2d 2d 0d 0a 33 31 35 31 0d 0a 34 33 37 36 0d 0a  --..3151..4376..
26b10 35 31 31 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  5117....onlyif m
26b20 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
26b30 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65  ax: DECIMAL type
26b40 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
26b50 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34 38 0d  wsort label-848.
26b60 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
26b70 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
26b80 45 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  E CAST( NULL AS 
26b90 44 45 43 49 4d 41 4c 20 29 20 42 45 54 57 45 45  DECIMAL ) BETWEE
26ba0 4e 20 2b 20 2b 20 63 6f 6c 31 20 41 4e 44 20 63  N + + col1 AND c
26bb0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ol0..----....ski
26bc0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
26bd0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
26be0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
26bf0 62 65 6c 2d 38 34 38 0d 0a 53 45 4c 45 43 54 20  bel-848..SELECT 
26c00 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
26c10 6f 72 30 20 57 48 45 52 45 20 43 41 53 54 20 28  or0 WHERE CAST (
26c20 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29 20   NULL AS REAL ) 
26c30 42 45 54 57 45 45 4e 20 2b 20 2b 20 63 6f 6c 31  BETWEEN + + col1
26c40 20 41 4e 44 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d   AND col0..----.
26c50 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
26c60 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
26c70 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
26c80 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20  0 WHERE NOT ( - 
26c90 38 33 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  83 ) IS NOT NULL
26ca0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
26cb0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
26cc0 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ECT * FROM tab0 
26cd0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
26ce0 54 20 28 20 63 6f 6c 30 20 29 20 4e 4f 54 20 42  T ( col0 ) NOT B
26cf0 45 54 57 45 45 4e 20 2b 20 63 6f 6c 30 20 2b 20  ETWEEN + col0 + 
26d00 2d 20 63 6f 6c 31 20 41 4e 44 20 34 35 0d 0a 2d  - col1 AND 45..-
26d10 2d 2d 2d 0d 0a 31 35 0d 0a 38 31 0d 0a 34 37 0d  ---..15..81..47.
26d20 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
26d30 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
26d40 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
26d50 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
26d60 61 62 65 6c 2d 38 35 31 0d 0a 53 45 4c 45 43 54  abel-851..SELECT
26d70 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 41 53 20 63   ALL + col0 AS c
26d80 6f 6c 32 2c 20 43 41 53 54 28 20 2d 20 63 6f 6c  ol2, CAST( - col
26d90 32 20 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f  2 AS SIGNED ) co
26da0 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l0 FROM tab2 cor
26db0 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 2d 32 33  0..----..46..-23
26dc0 0d 0a 36 34 0d 0a 2d 34 30 0d 0a 37 35 0d 0a 2d  ..64..-40..75..-
26dd0 35 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  58....skipif mys
26de0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
26df0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
26e00 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
26e10 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
26e20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
26e30 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
26e40 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
26e50 61 62 65 6c 2d 38 35 31 0d 0a 53 45 4c 45 43 54  abel-851..SELECT
26e60 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 41 53 20 63   ALL + col0 AS c
26e70 6f 6c 32 2c 20 43 41 53 54 20 28 20 2d 20 63 6f  ol2, CAST ( - co
26e80 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  l2 AS INTEGER ) 
26e90 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63  col0 FROM tab2 c
26ea0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 2d  or0..----..46..-
26eb0 32 33 0d 0a 36 34 0d 0a 2d 34 30 0d 0a 37 35 0d  23..64..-40..75.
26ec0 0a 2d 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-58....query II
26ed0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
26ee0 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
26ef0 45 52 45 20 4e 4f 54 20 28 20 2d 20 28 20 38 20  ERE NOT ( - ( 8 
26f00 29 20 29 20 3d 20 2b 20 37 33 0d 0a 2d 2d 2d 2d  ) ) = + 73..----
26f10 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
26f20 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
26f30 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
26f40 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20  d54cad....query 
26f50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
26f60 54 20 44 49 53 54 49 4e 43 54 20 37 30 20 2f 20  T DISTINCT 70 / 
26f70 2d 20 2d 20 41 56 47 20 28 20 2d 20 2d 20 63 6f  - - AVG ( - - co
26f80 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l0 ) AS col2 FRO
26f90 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b 20 63  M tab2 WHERE + c
26fa0 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol0 IS NULL..---
26fb0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
26fc0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
26fd0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
26fe0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
26ff0 62 65 6c 2d 38 35 34 0d 0a 53 45 4c 45 43 54 20  bel-854..SELECT 
27000 2b 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20  + MAX( DISTINCT 
27010 2b 20 2d 20 39 30 20 29 20 41 53 20 63 6f 6c 31  + - 90 ) AS col1
27020 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
27030 0d 0a 2d 39 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-90....skipif 
27040 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
27050 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
27060 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35  rowsort label-85
27070 34 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 41 58 20  4..SELECT + MAX 
27080 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 39  ( DISTINCT + - 9
27090 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  0 ) AS col1 FROM
270a0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 30   tab1..----..-90
270b0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
270c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
270d0 37 20 2a 20 2b 20 2b 20 36 33 20 41 53 20 63 6f  7 * + + 63 AS co
270e0 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
270f0 2d 2d 0d 0a 34 34 31 0d 0a 34 34 31 0d 0a 34 34  --..441..441..44
27100 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
27110 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39 32 20  sort..SELECT 92 
27120 2a 20 2d 20 2b 20 35 20 41 53 20 63 6f 6c 32 20  * - + 5 AS col2 
27130 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
27140 0a 2d 34 36 30 0d 0a 2d 34 36 30 0d 0a 2d 34 36  .-460..-460..-46
27150 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  0....query III r
27160 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
27170 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
27180 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab0 WHERE NOT ( 
27190 4e 55 4c 4c 20 3e 3d 20 4e 55 4c 4c 20 29 0d 0a  NULL >= NULL )..
271a0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
271b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
271c0 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
271d0 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
271e0 4e 4f 54 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 31  NOT + col1 * + 1
271f0 34 20 2b 20 63 6f 6c 30 20 3c 3e 20 39 36 0d 0a  4 + col0 <> 96..
27200 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
27210 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
27220 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
27230 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52  M tab1 cor0 WHER
27240 45 20 28 20 2d 20 63 6f 6c 32 20 29 20 4e 4f 54  E ( - col2 ) NOT
27250 20 42 45 54 57 45 45 4e 20 63 6f 6c 30 20 41 4e   BETWEEN col0 AN
27260 44 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20  D col2..----..9 
27270 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
27280 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30  o c6c0a4111b36d0
27290 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63  4dbc811a11e4d54c
272a0 61 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  ad....onlyif mys
272b0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
272c0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
272d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
272e0 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  60..SELECT - COU
272f0 4e 54 28 20 2a 20 29 20 2a 20 2d 20 2d 20 31 32  NT( * ) * - - 12
27300 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
27310 0a 2d 2d 2d 2d 0d 0a 2d 33 36 0d 0a 0d 0a 73 6b  .----..-36....sk
27320 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
27330 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
27340 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
27350 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
27360 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
27370 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
27380 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
27390 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 30 0d  wsort label-860.
273a0 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20  .SELECT - COUNT 
273b0 28 20 2a 20 29 20 2a 20 2d 20 2d 20 31 32 20 63  ( * ) * - - 12 c
273c0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
273d0 2d 2d 2d 0d 0a 2d 33 36 0d 0a 0d 0a 71 75 65 72  ---..-36....quer
273e0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
273f0 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2b 20 63 6f  LECT - col0 + co
27400 6c 32 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c  l2 - col2 AS col
27410 31 2c 20 2d 20 35 33 20 46 52 4f 4d 20 74 61 62  1, - 53 FROM tab
27420 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
27430 0a 2d 35 31 0d 0a 2d 35 33 0d 0a 2d 38 35 0d 0a  .-51..-53..-85..
27440 2d 35 33 0d 0a 2d 39 31 0d 0a 2d 35 33 0d 0a 0d  -53..-91..-53...
27450 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27460 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 2b 20 2d  ..SELECT + ( + -
27470 20 63 6f 6c 32 20 29 20 2b 20 2b 20 63 6f 6c 32   col2 ) + + col2
27480 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
27490 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
274a0 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65  ..0..0..0....que
274b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
274c0 4c 45 43 54 20 2d 20 32 32 20 41 53 20 63 6f 6c  LECT - 22 AS col
274d0 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
274e0 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c  or0 WHERE ( NULL
274f0 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
27500 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
27510 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
27520 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65  ax: DECIMAL type
27530 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
27540 6f 72 74 20 6c 61 62 65 6c 2d 38 36 34 0d 0a 53  ort label-864..S
27550 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 2b 20 2b  ELECT + col0 + +
27560 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 2d 20 63 6f   + col0 + - - co
27570 6c 32 20 2a 20 2b 20 43 41 53 54 28 20 4e 55 4c  l2 * + CAST( NUL
27580 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2a  L AS DECIMAL ) *
27590 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32   + col0 * + col2
275a0 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 2d 20   + + col0 * + - 
275b0 63 6f 6c 32 20 2a 20 2d 20 2b 20 63 6f 6c 31 20  col2 * - + col1 
275c0 2a 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 2d  * - - col1 + + -
275d0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
275e0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
275f0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
27600 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  L..NULL....skipi
27610 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
27620 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
27630 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
27640 38 36 34 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  864..SELECT + co
27650 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c 30 20 2b 20  l0 + + + col0 + 
27660 2d 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 43 41 53  - - col2 * + CAS
27670 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c  T ( NULL AS REAL
27680 20 29 20 2a 20 2b 20 63 6f 6c 30 20 2a 20 2b 20   ) * + col0 * + 
27690 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 30 20 2a 20  col2 + + col0 * 
276a0 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 2b 20 63  + - col2 * - + c
276b0 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20 2b  ol1 * - - col1 +
276c0 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c   + - col2 AS col
276d0 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
276e0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
276f0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .NULL..NULL....q
27700 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
27710 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
27720 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46  - col2 AS col2 F
27730 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 57 48  ROM tab0 cor0 WH
27740 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3e 20  ERE NOT NULL <> 
27750 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
27760 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
27770 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
27780 20 74 79 70 65 3a 20 44 45 43 49 4d 41 4c 20 74   type: DECIMAL t
27790 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
277a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 36  owsort label-866
277b0 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20  ..SELECT + col2 
277c0 2a 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c  * + col0 * - col
277d0 32 20 2a 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  2 * + CAST( NULL
277e0 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 2b   AS SIGNED ) + +
277f0 20 2d 20 63 6f 6c 30 20 2d 20 2d 20 63 6f 6c 32   - col0 - - col2
27800 20 2a 20 2b 20 2b 20 32 31 20 2b 20 2b 20 2d 20   * + + 21 + + - 
27810 34 36 20 2a 20 2d 20 43 41 53 54 28 20 2d 20 2d  46 * - CAST( - -
27820 20 63 6f 6c 31 20 41 53 20 44 45 43 49 4d 41 4c   col1 AS DECIMAL
27830 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
27840 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
27850 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
27860 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
27870 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
27880 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
27890 61 62 65 6c 2d 38 36 36 0d 0a 53 45 4c 45 43 54  abel-866..SELECT
278a0 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 30   + col2 * + col0
278b0 20 2a 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 43 41   * - col2 * + CA
278c0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
278d0 45 47 45 52 20 29 20 2b 20 2b 20 2d 20 63 6f 6c  EGER ) + + - col
278e0 30 20 2d 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 2b  0 - - col2 * + +
278f0 20 32 31 20 2b 20 2b 20 2d 20 34 36 20 2a 20 2d   21 + + - 46 * -
27900 20 43 41 53 54 20 28 20 2d 20 2d 20 63 6f 6c 31   CAST ( - - col1
27910 20 41 53 20 52 45 41 4c 20 29 20 46 52 4f 4d 20   AS REAL ) FROM 
27920 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
27930 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
27940 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
27950 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
27960 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
27970 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
27980 2d 38 36 37 0d 0a 53 45 4c 45 43 54 20 28 20 2d  -867..SELECT ( -
27990 20 2b 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54   + MIN( DISTINCT
279a0 20 2b 20 2d 20 63 6f 6c 30 20 29 20 29 20 2b 20   + - col0 ) ) + 
279b0 2b 20 39 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  + 9 FROM tab0..-
279c0 2d 2d 2d 0d 0a 31 30 36 0d 0a 0d 0a 73 6b 69 70  ---..106....skip
279d0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
279e0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
279f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
27a00 2d 38 36 37 0d 0a 53 45 4c 45 43 54 20 28 20 2d  -867..SELECT ( -
27a10 20 2b 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43   + MIN ( DISTINC
27a20 54 20 2b 20 2d 20 63 6f 6c 30 20 29 20 29 20 2b  T + - col0 ) ) +
27a30 20 2b 20 39 20 46 52 4f 4d 20 74 61 62 30 0d 0a   + 9 FROM tab0..
27a40 2d 2d 2d 2d 0d 0a 31 30 36 0d 0a 0d 0a 6f 6e 6c  ----..106....onl
27a50 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
27a60 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
27a70 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
27a80 6c 61 62 65 6c 2d 38 36 38 0d 0a 53 45 4c 45 43  label-868..SELEC
27a90 54 20 44 49 53 54 49 4e 43 54 20 2b 20 33 35 20  T DISTINCT + 35 
27aa0 2a 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  * - COUNT( * ) *
27ab0 20 2d 20 2b 20 37 36 20 46 52 4f 4d 20 74 61 62   - + 76 FROM tab
27ac0 32 0d 0a 2d 2d 2d 2d 0d 0a 37 39 38 30 0d 0a 0d  2..----..7980...
27ad0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
27ae0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
27af0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
27b00 6c 61 62 65 6c 2d 38 36 38 0d 0a 53 45 4c 45 43  label-868..SELEC
27b10 54 20 44 49 53 54 49 4e 43 54 20 2b 20 33 35 20  T DISTINCT + 35 
27b20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  * - COUNT ( * ) 
27b30 2a 20 2d 20 2b 20 37 36 20 46 52 4f 4d 20 74 61  * - + 76 FROM ta
27b40 62 32 0d 0a 2d 2d 2d 2d 0d 0a 37 39 38 30 0d 0a  b2..----..7980..
27b50 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
27b60 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
27b70 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
27b80 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
27b90 65 6c 2d 38 36 39 0d 0a 53 45 4c 45 43 54 20 41  el-869..SELECT A
27ba0 4c 4c 20 2b 20 43 41 53 54 28 20 63 6f 6c 32 20  LL + CAST( col2 
27bb0 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f 6c 31  AS SIGNED ) col1
27bc0 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
27bd0 20 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d   - col2 IS NULL.
27be0 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
27bf0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
27c00 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
27c10 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
27c20 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
27c30 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
27c40 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
27c50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27c60 20 6c 61 62 65 6c 2d 38 36 39 0d 0a 53 45 4c 45   label-869..SELE
27c70 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 20 28 20  CT ALL + CAST ( 
27c80 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20  col2 AS INTEGER 
27c90 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  ) col1 FROM tab0
27ca0 20 57 48 45 52 45 20 2d 20 63 6f 6c 32 20 49 53   WHERE - col2 IS
27cb0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
27cc0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
27cd0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
27ce0 6c 32 2c 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  l2, col2 AS col0
27cf0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
27d00 0d 0a 35 39 0d 0a 35 39 0d 0a 36 38 0d 0a 36 38  ..59..59..68..68
27d10 0d 0a 39 36 0d 0a 39 36 0d 0a 0d 0a 71 75 65 72  ..96..96....quer
27d20 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
27d30 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
27d40 30 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2b  0 * + - col1 * +
27d50 20 28 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d   ( + col2 ) FROM
27d60 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   tab0..----..-18
27d70 32 37 30 0d 0a 2d 35 37 31 30 35 0d 0a 2d 39 36  270..-57105..-96
27d80 30 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  03....query I ro
27d90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
27da0 2b 20 28 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  + ( col2 ) AS co
27db0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l1 FROM tab0 WHE
27dc0 52 45 20 63 6f 6c 30 20 42 45 54 57 45 45 4e 20  RE col0 BETWEEN 
27dd0 36 38 20 2b 20 38 30 20 41 4e 44 20 4e 55 4c 4c  68 + 80 AND NULL
27de0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
27df0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
27e00 54 20 2d 20 34 35 20 2a 20 2b 20 2b 20 31 34 20  T - 45 * + + 14 
27e10 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
27e20 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 33 30 0d 0a 2d  0..----..-630..-
27e30 36 33 30 0d 0a 2d 36 33 30 0d 0a 0d 0a 73 6b 69  630..-630....ski
27e40 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
27e50 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
27e60 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
27e70 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
27e80 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
27e90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
27ea0 63 6f 6c 30 20 2a 20 2b 20 38 38 20 63 6f 6c 30  col0 * + 88 col0
27eb0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
27ec0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 32 30 0d  r0..----..-1320.
27ed0 0a 2d 37 36 35 36 0d 0a 2d 38 35 33 36 0d 0a 0d  .-7656..-8536...
27ee0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
27ef0 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
27f00 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
27f10 48 45 52 45 20 39 31 20 2a 20 2d 20 33 34 20 49  HERE 91 * - 34 I
27f20 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
27f30 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
27f40 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
27f50 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
27f60 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69 66  d54cad....onlyif
27f70 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
27f80 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
27f90 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
27fa0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37 36 0d 0a  sort label-876..
27fb0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
27fc0 2b 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31  + + col1 AS col1
27fd0 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
27fe0 20 4e 4f 54 20 43 41 53 54 28 20 2d 20 2d 20 63   NOT CAST( - - c
27ff0 6f 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol1 AS SIGNED ) 
28000 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44  BETWEEN NULL AND
28010 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73   NULL..----....s
28020 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
28030 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
28040 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
28050 62 65 6c 2d 38 37 36 0d 0a 53 45 4c 45 43 54 20  bel-876..SELECT 
28060 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c  DISTINCT + + col
28070 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
28080 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 43 41  ab1 WHERE NOT CA
28090 53 54 20 28 20 2d 20 2d 20 63 6f 6c 31 20 41 53  ST ( - - col1 AS
280a0 20 49 4e 54 45 47 45 52 20 29 20 42 45 54 57 45   INTEGER ) BETWE
280b0 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c  EN NULL AND NULL
280c0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
280d0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
280e0 54 20 2d 20 38 33 20 2d 20 2b 20 2d 20 39 38 20  T - 83 - + - 98 
280f0 2b 20 2b 20 2d 20 28 20 33 33 20 29 20 46 52 4f  + + - ( 33 ) FRO
28100 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43  M tab2 AS cor0 C
28110 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41  ROSS JOIN tab0 A
28120 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20  S cor1..----..9 
28130 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
28140 6f 20 30 39 61 66 61 66 65 63 36 35 37 61 35 65  o 09afafec657a5e
28150 39 66 30 38 32 62 65 62 36 61 31 36 65 63 38 35  9f082beb6a16ec85
28160 64 65 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  de....onlyif mys
28170 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
28180 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
28190 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
281a0 20 6c 61 62 65 6c 2d 38 37 38 0d 0a 53 45 4c 45   label-878..SELE
281b0 43 54 20 2b 20 39 31 20 44 49 56 20 2d 20 63 6f  CT + 91 DIV - co
281c0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
281d0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  cor0..----..-1..
281e0 2d 34 0d 0a 2d 39 31 0d 0a 0d 0a 73 6b 69 70 69  -4..-91....skipi
281f0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
28200 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
28210 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
28220 38 37 38 0d 0a 53 45 4c 45 43 54 20 2b 20 39 31  878..SELECT + 91
28230 20 2f 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   / - col1 FROM t
28240 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
28250 2d 0d 0a 2d 31 0d 0a 2d 34 0d 0a 2d 39 31 0d 0a  -..-1..-4..-91..
28260 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
28270 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
28280 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
28290 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
282a0 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e  LL NOT BETWEEN N
282b0 55 4c 4c 20 41 4e 44 20 2d 20 63 6f 6c 31 0d 0a  ULL AND - col1..
282c0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
282d0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
282e0 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  T * FROM tab1 co
282f0 72 30 20 57 48 45 52 45 20 4e 4f 54 20 32 30 20  r0 WHERE NOT 20 
28300 4e 4f 54 20 42 45 54 57 45 45 4e 20 2b 20 38 34  NOT BETWEEN + 84
28310 20 41 4e 44 20 2d 20 34 30 0d 0a 2d 2d 2d 2d 0d   AND - 40..----.
28320 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
28330 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
28340 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
28350 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
28360 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
28370 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
28380 45 43 54 20 2d 20 28 20 2d 20 2d 20 31 34 20 29  ECT - ( - - 14 )
28390 20 2a 20 2d 20 2d 20 33 30 20 2a 20 2d 20 63 6f   * - - 30 * - co
283a0 6c 32 20 2d 20 2b 20 2d 20 63 6f 6c 32 20 63 6f  l2 - + - col2 co
283b0 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
283c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 38 33  cor0..----..2483
283d0 39 0d 0a 32 38 36 32 38 0d 0a 34 30 34 31 36 0d  9..28628..40416.
283e0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
283f0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
28400 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
28410 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c   WHERE NOT - col
28420 30 20 2a 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c  0 * col0 IS NULL
28430 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
28440 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34   hashing to c4b4
28450 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30  2765dff94eaaa460
28460 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a  40e537fb43b7....
28470 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
28480 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
28490 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
284a0 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
284b0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
284c0 62 65 6c 2d 38 38 33 0d 0a 53 45 4c 45 43 54 20  bel-883..SELECT 
284d0 31 38 20 44 49 56 20 2b 20 43 4f 55 4e 54 28 20  18 DIV + COUNT( 
284e0 2a 20 29 20 41 53 20 63 6f 6c 30 2c 20 32 36 20  * ) AS col0, 26 
284f0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
28500 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 32 36 0d 0a  0..----..6..26..
28510 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
28520 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
28530 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
28540 74 20 6c 61 62 65 6c 2d 38 38 33 0d 0a 53 45 4c  t label-883..SEL
28550 45 43 54 20 31 38 20 2f 20 2b 20 43 4f 55 4e 54  ECT 18 / + COUNT
28560 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 2c 20   ( * ) AS col0, 
28570 32 36 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  26 FROM tab1 AS 
28580 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 32  cor0..----..6..2
28590 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
285a0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
285b0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
285c0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38  rowsort label-88
285d0 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
285e0 43 54 20 2d 20 2d 20 43 4f 55 4e 54 28 20 41 4c  CT - - COUNT( AL
285f0 4c 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f  L + col0 ) AS co
28600 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
28610 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  cor0..----..3...
28620 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
28630 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
28640 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
28650 6c 61 62 65 6c 2d 38 38 34 0d 0a 53 45 4c 45 43  label-884..SELEC
28660 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 43  T DISTINCT - - C
28670 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20 63 6f 6c  OUNT ( ALL + col
28680 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  0 ) AS col2 FROM
28690 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
286a0 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..3....onlyif
286b0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
286c0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
286d0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
286e0 65 6c 2d 38 38 35 0d 0a 53 45 4c 45 43 54 20 2b  el-885..SELECT +
286f0 20 2b 20 4d 49 4e 28 20 41 4c 4c 20 2b 20 63 6f   + MIN( ALL + co
28700 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l0 ) AS col2 FRO
28710 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
28720 2d 2d 2d 2d 0d 0a 34 36 0d 0a 0d 0a 73 6b 69 70  ----..46....skip
28730 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
28740 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
28750 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
28760 2d 38 38 35 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  -885..SELECT + +
28770 20 4d 49 4e 20 28 20 41 4c 4c 20 2b 20 63 6f 6c   MIN ( ALL + col
28780 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  0 ) AS col2 FROM
28790 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
287a0 2d 2d 2d 0d 0a 34 36 0d 0a 0d 0a 71 75 65 72 79  ---..46....query
287b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
287c0 43 54 20 2d 20 38 34 20 2a 20 2b 20 39 37 20 46  CT - 84 * + 97 F
287d0 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d  ROM tab0 cor0..-
287e0 2d 2d 2d 0d 0a 2d 38 31 34 38 0d 0a 2d 38 31 34  ---..-8148..-814
287f0 38 0d 0a 2d 38 31 34 38 0d 0a 0d 0a 6f 6e 6c 79  8..-8148....only
28800 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
28810 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
28820 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
28830 61 62 65 6c 2d 38 38 37 0d 0a 53 45 4c 45 43 54  abel-887..SELECT
28840 20 41 4c 4c 20 4d 49 4e 28 20 2d 20 2b 20 63 6f   ALL MIN( - + co
28850 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l2 ) AS col0 FRO
28860 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
28870 2d 0d 0a 2d 35 38 0d 0a 0d 0a 73 6b 69 70 69 66  -..-58....skipif
28880 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
28890 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
288a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
288b0 38 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d  87..SELECT ALL M
288c0 49 4e 20 28 20 2d 20 2b 20 63 6f 6c 32 20 29 20  IN ( - + col2 ) 
288d0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
288e0 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  2 cor0..----..-5
288f0 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
28900 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32 30 20  sort..SELECT 20 
28910 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * + col2 FROM ta
28920 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 38 30 0d 0a  b1..----..1180..
28930 31 33 36 30 0d 0a 31 39 32 30 0d 0a 0d 0a 6f 6e  1360..1920....on
28940 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
28950 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
28960 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
28970 20 6c 61 62 65 6c 2d 38 38 39 0d 0a 53 45 4c 45   label-889..SELE
28980 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f  CT DISTINCT + CO
28990 55 4e 54 28 20 2b 20 63 6f 6c 32 20 29 20 41 53  UNT( + col2 ) AS
289a0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
289b0 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70  .----..3....skip
289c0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
289d0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
289e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
289f0 2d 38 38 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  -889..SELECT DIS
28a00 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  TINCT + COUNT ( 
28a10 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31  + col2 ) AS col1
28a20 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
28a30 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ..3....query II 
28a40 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
28a50 41 4c 4c 20 35 33 20 41 53 20 63 6f 6c 30 2c 20  ALL 53 AS col0, 
28a60 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  + col2 AS col1 F
28a70 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
28a80 35 33 0d 0a 32 33 0d 0a 35 33 0d 0a 34 30 0d 0a  53..23..53..40..
28a90 35 33 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  53..58....onlyif
28aa0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
28ab0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
28ac0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
28ad0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 31 0d 0a  sort label-891..
28ae0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41 53  SELECT ALL - CAS
28af0 54 28 20 34 35 20 41 53 20 53 49 47 4e 45 44 20  T( 45 AS SIGNED 
28b00 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
28b10 2d 0d 0a 2d 34 35 0d 0a 2d 34 35 0d 0a 2d 34 35  -..-45..-45..-45
28b20 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
28b30 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
28b40 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
28b50 72 74 20 6c 61 62 65 6c 2d 38 39 31 0d 0a 53 45  rt label-891..SE
28b60 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41 53 54 20  LECT ALL - CAST 
28b70 28 20 34 35 20 41 53 20 49 4e 54 45 47 45 52 20  ( 45 AS INTEGER 
28b80 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
28b90 2d 0d 0a 2d 34 35 0d 0a 2d 34 35 0d 0a 2d 34 35  -..-45..-45..-45
28ba0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
28bb0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
28bc0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
28bd0 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
28be0 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 63   NOT BETWEEN - c
28bf0 6f 6c 30 20 2f 20 2b 20 63 6f 6c 30 20 41 4e 44  ol0 / + col0 AND
28c00 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
28c10 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
28c20 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
28c30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
28c40 74 20 6c 61 62 65 6c 2d 38 39 33 0d 0a 53 45 4c  t label-893..SEL
28c50 45 43 54 20 33 35 20 2a 20 2b 20 43 4f 55 4e 54  ECT 35 * + COUNT
28c60 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ( * ) FROM tab0 
28c70 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
28c80 54 20 2b 20 38 33 20 49 53 20 4e 4f 54 20 4e 55  T + 83 IS NOT NU
28c90 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  LL..----..0....s
28ca0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
28cb0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
28cc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
28cd0 62 65 6c 2d 38 39 33 0d 0a 53 45 4c 45 43 54 20  bel-893..SELECT 
28ce0 33 35 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a  35 * + COUNT ( *
28cf0 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
28d00 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
28d10 20 38 33 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   83 IS NOT NULL.
28d20 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79  .----..0....only
28d30 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
28d40 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20  syntax: DECIMAL 
28d50 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
28d60 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
28d70 39 34 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53  94..SELECT - CAS
28d80 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d  T( NULL AS DECIM
28d90 41 4c 20 29 2c 20 63 6f 6c 32 20 46 52 4f 4d 20  AL ), col2 FROM 
28da0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
28db0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31 30 0d 0a 4e 55  --..NULL..10..NU
28dc0 4c 4c 0d 0a 34 37 0d 0a 4e 55 4c 4c 0d 0a 39 39  LL..47..NULL..99
28dd0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
28de0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
28df0 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  e..query II rows
28e00 6f 72 74 20 6c 61 62 65 6c 2d 38 39 34 0d 0a 53  ort label-894..S
28e10 45 4c 45 43 54 20 2d 20 43 41 53 54 20 28 20 4e  ELECT - CAST ( N
28e20 55 4c 4c 20 41 53 20 52 45 41 4c 20 29 2c 20 63  ULL AS REAL ), c
28e30 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
28e40 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
28e50 4c 0d 0a 31 30 0d 0a 4e 55 4c 4c 0d 0a 34 37 0d  L..10..NULL..47.
28e60 0a 4e 55 4c 4c 0d 0a 39 39 0d 0a 0d 0a 71 75 65  .NULL..99....que
28e70 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
28e80 4c 45 43 54 20 41 4c 4c 20 2b 20 39 37 20 2a 20  LECT ALL + 97 * 
28e90 2b 20 63 6f 6c 31 20 2b 20 2d 20 2d 20 36 30 20  + col1 + - - 60 
28ea0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
28eb0 30 0d 0a 2d 2d 2d 2d 0d 0a 35 30 30 37 0d 0a 36  0..----..5007..6
28ec0 35 35 39 0d 0a 37 35 32 39 0d 0a 0d 0a 6f 6e 6c  559..7529....onl
28ed0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
28ee0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
28ef0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
28f00 6c 61 62 65 6c 2d 38 39 36 0d 0a 53 45 4c 45 43  label-896..SELEC
28f10 54 20 41 4c 4c 20 2d 20 4d 49 4e 28 20 41 4c 4c  T ALL - MIN( ALL
28f20 20 2d 20 31 37 20 29 20 2b 20 2b 20 2b 20 35 37   - 17 ) + + + 57
28f30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
28f40 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  AS cor0..----..7
28f50 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
28f60 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
28f70 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
28f80 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
28f90 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
28fa0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
28fb0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
28fc0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
28fd0 65 6c 2d 38 39 36 0d 0a 53 45 4c 45 43 54 20 41  el-896..SELECT A
28fe0 4c 4c 20 2d 20 4d 49 4e 20 28 20 41 4c 4c 20 2d  LL - MIN ( ALL -
28ff0 20 31 37 20 29 20 2b 20 2b 20 2b 20 35 37 20 63   17 ) + + + 57 c
29000 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
29010 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 34 0d   cor0..----..74.
29020 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
29030 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  rt..SELECT + col
29040 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
29050 61 62 30 20 63 6f 72 30 20 57 48 45 52 45 20 63  ab0 cor0 WHERE c
29060 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol1 IS NULL..---
29070 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
29080 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
29090 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41  LL * FROM tab0 A
290a0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
290b0 20 2b 20 38 31 20 42 45 54 57 45 45 4e 20 28 20   + 81 BETWEEN ( 
290c0 2d 20 2d 20 63 6f 6c 32 20 29 20 41 4e 44 20 4e  - - col2 ) AND N
290d0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 31  ULL..----..97..1
290e0 0d 0a 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..99....onlyif m
290f0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
29100 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
29110 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
29120 2d 38 39 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  -899..SELECT DIS
29130 54 49 4e 43 54 20 2d 20 38 31 20 2b 20 2d 20 2b  TINCT - 81 + - +
29140 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2b 20   COUNT( * ) + + 
29150 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 31 32 20  COUNT( * ) + 12 
29160 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
29170 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
29180 20 4e 4f 54 20 49 4e 20 28 20 63 6f 6c 30 2c 20   NOT IN ( col0, 
29190 33 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 39 0d  30 )..----..-69.
291a0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
291b0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
291c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
291d0 74 20 6c 61 62 65 6c 2d 38 39 39 0d 0a 53 45 4c  t label-899..SEL
291e0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 38  ECT DISTINCT - 8
291f0 31 20 2b 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20  1 + - + COUNT ( 
29200 2a 20 29 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20  * ) + + COUNT ( 
29210 2a 20 29 20 2b 20 31 32 20 46 52 4f 4d 20 74 61  * ) + 12 FROM ta
29220 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
29230 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e   NOT NULL NOT IN
29240 20 28 20 63 6f 6c 30 2c 20 33 30 20 29 0d 0a 2d   ( col0, 30 )..-
29250 2d 2d 2d 0d 0a 2d 36 39 0d 0a 0d 0a 6f 6e 6c 79  ---..-69....only
29260 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
29270 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
29280 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
29290 61 62 65 6c 2d 39 30 30 0d 0a 53 45 4c 45 43 54  abel-900..SELECT
292a0 20 44 49 53 54 49 4e 43 54 20 53 55 4d 28 20 2d   DISTINCT SUM( -
292b0 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 32 20   col1 ) AS col2 
292c0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
292d0 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  0 WHERE NULL IS 
292e0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 35  NULL..----..-195
292f0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
29300 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
29310 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
29320 72 74 20 6c 61 62 65 6c 2d 39 30 30 0d 0a 53 45  rt label-900..SE
29330 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55  LECT DISTINCT SU
29340 4d 20 28 20 2d 20 63 6f 6c 31 20 29 20 41 53 20  M ( - col1 ) AS 
29350 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
29360 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c  S cor0 WHERE NUL
29370 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  L IS NULL..----.
29380 0a 2d 31 39 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .-195....onlyif 
29390 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
293a0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
293b0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
293c0 6f 72 74 20 6c 61 62 65 6c 2d 39 30 31 0d 0a 53  ort label-901..S
293d0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
293e0 20 28 20 41 56 47 20 28 20 44 49 53 54 49 4e 43   ( AVG ( DISTINC
293f0 54 20 63 6f 6c 31 20 29 20 29 20 2a 20 43 41 53  T col1 ) ) * CAS
29400 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
29410 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  D ) FROM tab1 AS
29420 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
29430 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
29440 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
29450 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
29460 6f 72 74 20 6c 61 62 65 6c 2d 39 30 31 0d 0a 53  ort label-901..S
29470 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
29480 20 28 20 41 56 47 20 28 20 44 49 53 54 49 4e 43   ( AVG ( DISTINC
29490 54 20 63 6f 6c 31 20 29 20 29 20 2a 20 43 41 53  T col1 ) ) * CAS
294a0 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
294b0 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 20  GER ) FROM tab1 
294c0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
294d0 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
294e0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
294f0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
29500 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29510 74 20 6c 61 62 65 6c 2d 39 30 32 0d 0a 53 45 4c  t label-902..SEL
29520 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28  ECT DISTINCT - (
29530 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
29540 49 47 4e 45 44 20 29 20 29 20 2a 20 2b 20 2b 20  IGNED ) ) * + + 
29550 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
29560 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
29570 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
29580 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
29590 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
295a0 65 6c 2d 39 30 32 0d 0a 53 45 4c 45 43 54 20 44  el-902..SELECT D
295b0 49 53 54 49 4e 43 54 20 2d 20 28 20 43 41 53 54  ISTINCT - ( CAST
295c0 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
295d0 45 52 20 29 20 29 20 2a 20 2b 20 2b 20 63 6f 6c  ER ) ) * + + col
295e0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
295f0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
29600 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
29610 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
29620 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
29630 62 65 6c 2d 39 30 33 0d 0a 53 45 4c 45 43 54 20  bel-903..SELECT 
29640 4d 49 4e 28 20 41 4c 4c 20 63 6f 6c 30 20 29 20  MIN( ALL col0 ) 
29650 2d 20 35 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  - 50 AS col0 FRO
29660 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab0..----..-3
29670 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
29680 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
29690 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
296a0 6f 72 74 20 6c 61 62 65 6c 2d 39 30 33 0d 0a 53  ort label-903..S
296b0 45 4c 45 43 54 20 4d 49 4e 20 28 20 41 4c 4c 20  ELECT MIN ( ALL 
296c0 63 6f 6c 30 20 29 20 2d 20 35 30 20 41 53 20 63  col0 ) - 50 AS c
296d0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
296e0 2d 2d 2d 0d 0a 2d 33 35 0d 0a 0d 0a 71 75 65 72  ---..-35....quer
296f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
29700 45 43 54 20 41 4c 4c 20 2b 20 28 20 63 6f 6c 31  ECT ALL + ( col1
29710 20 29 20 2a 20 2d 20 36 20 2b 20 2b 20 63 6f 6c   ) * - 6 + + col
29720 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
29730 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 35 0d  ab2..----..-255.
29740 0a 2d 33 33 35 0d 0a 2d 33 38 35 0d 0a 0d 0a 71  .-335..-385....q
29750 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
29760 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
29770 32 20 2b 20 37 33 20 2b 20 2b 20 2d 20 38 20 46  2 + 73 + + - 8 F
29780 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
29790 31 32 34 0d 0a 31 33 33 0d 0a 31 36 31 0d 0a 0d  124..133..161...
297a0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
297b0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
297c0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
297d0 6f 72 74 20 6c 61 62 65 6c 2d 39 30 36 0d 0a 53  ort label-906..S
297e0 45 4c 45 43 54 20 2d 20 32 31 20 2b 20 2d 20 43  ELECT - 21 + - C
297f0 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
29800 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  0 FROM tab0..---
29810 2d 0d 0a 2d 32 34 0d 0a 0d 0a 73 6b 69 70 69 66  -..-24....skipif
29820 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
29830 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
29840 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
29850 30 36 0d 0a 53 45 4c 45 43 54 20 2d 20 32 31 20  06..SELECT - 21 
29860 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  + - COUNT ( * ) 
29870 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
29880 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 0d 0a 0d 0a  0..----..-24....
29890 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
298a0 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
298b0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
298c0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
298d0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
298e0 65 6c 2d 39 30 37 0d 0a 53 45 4c 45 43 54 20 44  el-907..SELECT D
298f0 49 53 54 49 4e 43 54 20 39 30 20 2a 20 41 56 47  ISTINCT 90 * AVG
29900 20 28 20 63 6f 6c 32 20 29 20 2f 20 2d 20 2b 20   ( col2 ) / - + 
29910 4d 41 58 28 20 41 4c 4c 20 43 41 53 54 28 20 4e  MAX( ALL CAST( N
29920 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
29930 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
29940 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab2..----..NULL.
29950 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
29960 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
29970 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29980 74 20 6c 61 62 65 6c 2d 39 30 37 0d 0a 53 45 4c  t label-907..SEL
29990 45 43 54 20 44 49 53 54 49 4e 43 54 20 39 30 20  ECT DISTINCT 90 
299a0 2a 20 41 56 47 20 28 20 63 6f 6c 32 20 29 20 2f  * AVG ( col2 ) /
299b0 20 2d 20 2b 20 4d 41 58 20 28 20 41 4c 4c 20 43   - + MAX ( ALL C
299c0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
299d0 54 45 47 45 52 20 29 20 29 20 41 53 20 63 6f 6c  TEGER ) ) AS col
299e0 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
299f0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
29a00 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
29a10 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
29a20 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
29a30 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30 38 0d  wsort label-908.
29a40 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b  .SELECT col1 * +
29a50 20 2d 20 34 32 20 2a 20 2b 20 63 6f 6c 32 20 2a   - 42 * + col2 *
29a60 20 33 31 20 2b 20 2d 20 63 6f 6c 32 20 44 49 56   31 + - col2 DIV
29a70 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   - col2 FROM tab
29a80 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 34 39 38 38  1..----..-174988
29a90 37 0d 0a 2d 33 38 34 30 38 39 0d 0a 2d 34 31 36  7..-384089..-416
29aa0 31 31 39 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  1191....skipif m
29ab0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
29ac0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
29ad0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30 38  owsort label-908
29ae0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20  ..SELECT col1 * 
29af0 2b 20 2d 20 34 32 20 2a 20 2b 20 63 6f 6c 32 20  + - 42 * + col2 
29b00 2a 20 33 31 20 2b 20 2d 20 63 6f 6c 32 20 2f 20  * 31 + - col2 / 
29b10 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  - col2 FROM tab1
29b20 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 34 39 38 38 37  ..----..-1749887
29b30 0d 0a 2d 33 38 34 30 38 39 0d 0a 2d 34 31 36 31  ..-384089..-4161
29b40 31 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  191....query II 
29b50 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
29b60 44 49 53 54 49 4e 43 54 20 34 32 20 2b 20 63 6f  DISTINCT 42 + co
29b70 6c 30 2c 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  l0, col2 AS col0
29b80 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
29b90 0a 2d 2d 2d 2d 0d 0a 31 32 39 0d 0a 31 30 0d 0a  .----..129..10..
29ba0 31 33 39 0d 0a 39 39 0d 0a 35 37 0d 0a 34 37 0d  139..99..57..47.
29bb0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
29bc0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
29bd0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
29be0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31 30 0d  wsort label-910.
29bf0 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55 4e  .SELECT - + COUN
29c00 54 28 20 2a 20 29 20 2b 20 33 34 20 46 52 4f 4d  T( * ) + 34 FROM
29c10 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
29c20 0d 0a 33 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..31....skipif m
29c30 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
29c40 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
29c50 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31 30  owsort label-910
29c60 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55  ..SELECT - + COU
29c70 4e 54 20 28 20 2a 20 29 20 2b 20 33 34 20 46 52  NT ( * ) + 34 FR
29c80 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
29c90 2d 2d 0d 0a 33 31 0d 0a 0d 0a 71 75 65 72 79 20  --..31....query 
29ca0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
29cb0 43 54 20 2b 20 28 20 36 35 20 29 20 41 53 20 63  CT + ( 65 ) AS c
29cc0 6f 6c 31 2c 20 33 20 46 52 4f 4d 20 74 61 62 31  ol1, 3 FROM tab1
29cd0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
29ce0 36 35 0d 0a 33 0d 0a 36 35 0d 0a 33 0d 0a 36 35  65..3..65..3..65
29cf0 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ..3....query III
29d00 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
29d10 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30   ALL * FROM tab0
29d20 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b   AS cor0 WHERE +
29d30 20 32 32 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 2d   22 + - col0 + -
29d40 20 2b 20 31 36 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d   + 16 < NULL..--
29d50 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
29d60 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
29d70 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
29d80 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
29d90 20 6c 61 62 65 6c 2d 39 31 33 0d 0a 53 45 4c 45   label-913..SELE
29da0 43 54 20 44 49 53 54 49 4e 43 54 20 38 20 44 49  CT DISTINCT 8 DI
29db0 56 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31  V - col0 AS col1
29dc0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
29dd0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
29de0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
29df0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
29e00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31 33 0d  wsort label-913.
29e10 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
29e20 20 38 20 2f 20 2d 20 63 6f 6c 30 20 41 53 20 63   8 / - col0 AS c
29e30 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
29e40 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..0....onlyif
29e50 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
29e60 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79  ntax: DECIMAL ty
29e70 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
29e80 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31 34 0d  wsort label-914.
29e90 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
29ea0 20 2b 20 63 6f 6c 30 20 2f 20 2b 20 2b 20 63 6f   + col0 / + + co
29eb0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l2 FROM tab1 WHE
29ec0 52 45 20 2d 20 36 36 20 49 4e 20 28 20 2b 20 43  RE - 66 IN ( + C
29ed0 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43  AST( NULL AS DEC
29ee0 49 4d 41 4c 20 29 2c 20 63 6f 6c 31 20 2a 20 2b  IMAL ), col1 * +
29ef0 20 63 6f 6c 30 2c 20 2d 20 2b 20 36 31 20 2f 20   col0, - + 61 / 
29f00 2d 20 63 6f 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c  - col0 + + + col
29f10 30 2c 20 63 6f 6c 31 20 2b 20 2b 20 36 34 20 2a  0, col1 + + 64 *
29f20 20 63 6f 6c 30 20 2b 20 63 6f 6c 32 20 2f 20 2d   col0 + col2 / -
29f30 20 36 38 2c 20 39 38 20 2f 20 2b 20 63 6f 6c 32   68, 98 / + col2
29f40 20 2a 20 2d 20 28 20 63 6f 6c 31 20 29 20 2a 20   * - ( col1 ) * 
29f50 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 30 20 2a 20  col1 + - col0 * 
29f60 2b 20 2d 20 63 6f 6c 30 20 2a 20 35 35 20 2b 20  + - col0 * 55 + 
29f70 2d 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 30 2c 20  - col0, - col0, 
29f80 28 20 2d 20 32 34 20 29 20 29 0d 0a 2d 2d 2d 2d  ( - 24 ) )..----
29f90 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
29fa0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
29fb0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
29fc0 72 74 20 6c 61 62 65 6c 2d 39 31 34 0d 0a 53 45  rt label-914..SE
29fd0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
29fe0 63 6f 6c 30 20 2f 20 2b 20 2b 20 63 6f 6c 32 20  col0 / + + col2 
29ff0 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
2a000 2d 20 36 36 20 49 4e 20 28 20 2b 20 43 41 53 54  - 66 IN ( + CAST
2a010 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20   ( NULL AS REAL 
2a020 29 2c 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 30  ), col1 * + col0
2a030 2c 20 2d 20 2b 20 36 31 20 2f 20 2d 20 63 6f 6c  , - + 61 / - col
2a040 30 20 2b 20 2b 20 2b 20 63 6f 6c 30 2c 20 63 6f  0 + + + col0, co
2a050 6c 31 20 2b 20 2b 20 36 34 20 2a 20 63 6f 6c 30  l1 + + 64 * col0
2a060 20 2b 20 63 6f 6c 32 20 2f 20 2d 20 36 38 2c 20   + col2 / - 68, 
2a070 39 38 20 2f 20 2b 20 63 6f 6c 32 20 2a 20 2d 20  98 / + col2 * - 
2a080 28 20 63 6f 6c 31 20 29 20 2a 20 63 6f 6c 31 20  ( col1 ) * col1 
2a090 2b 20 2d 20 63 6f 6c 30 20 2a 20 2b 20 2d 20 63  + - col0 * + - c
2a0a0 6f 6c 30 20 2a 20 35 35 20 2b 20 2d 20 63 6f 6c  ol0 * 55 + - col
2a0b0 30 2c 20 2d 20 63 6f 6c 30 2c 20 28 20 2d 20 32  0, - col0, ( - 2
2a0c0 34 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  4 ) )..----....q
2a0d0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
2a0e0 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f 6c 32  .SELECT - - col2
2a0f0 20 41 53 20 63 6f 6c 30 2c 20 34 31 20 41 53 20   AS col0, 41 AS 
2a100 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
2a110 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S cor0..----..10
2a120 0d 0a 34 31 0d 0a 34 37 0d 0a 34 31 0d 0a 39 39  ..41..47..41..99
2a130 0d 0a 34 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..41....query II
2a140 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2a150 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 2c   - col1 AS col1,
2a160 20 36 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   65 AS col2 FROM
2a170 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
2a180 2d 2d 2d 0d 0a 2d 31 0d 0a 36 35 0d 0a 2d 32 31  ---..-1..65..-21
2a190 0d 0a 36 35 0d 0a 2d 38 31 0d 0a 36 35 0d 0a 0d  ..65..-81..65...
2a1a0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2a1b0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2a1c0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2a1d0 6f 72 74 20 6c 61 62 65 6c 2d 39 31 37 0d 0a 53  ort label-917..S
2a1e0 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2b 20 2d  ELECT COUNT( + -
2a1f0 20 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63   2 ) FROM tab1 c
2a200 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
2a210 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2a220 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2a230 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2a240 61 62 65 6c 2d 39 31 37 0d 0a 53 45 4c 45 43 54  abel-917..SELECT
2a250 20 43 4f 55 4e 54 20 28 20 2b 20 2d 20 32 20 29   COUNT ( + - 2 )
2a260 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
2a270 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72  .----..3....quer
2a280 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2a290 45 43 54 20 63 6f 6c 31 20 2a 20 28 20 63 6f 6c  ECT col1 * ( col
2a2a0 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  1 ) AS col0 FROM
2a2b0 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
2a2c0 45 52 45 20 4e 4f 54 20 31 37 20 4e 4f 54 20 42  ERE NOT 17 NOT B
2a2d0 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
2a2e0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
2a2f0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
2a300 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
2a310 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
2a320 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
2a330 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
2a340 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28  owsort..SELECT (
2a350 20 2b 20 31 34 20 29 20 63 6f 6c 32 20 46 52 4f   + 14 ) col2 FRO
2a360 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
2a370 2d 2d 2d 2d 0d 0a 31 34 0d 0a 31 34 0d 0a 31 34  ----..14..14..14
2a380 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2a390 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
2a3a0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
2a3b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2a3c0 61 62 65 6c 2d 39 32 30 0d 0a 53 45 4c 45 43 54  abel-920..SELECT
2a3d0 20 2b 20 63 6f 6c 31 20 44 49 56 20 34 38 20 46   + col1 DIV 48 F
2a3e0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2a3f0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d  ..----..0..0..1.
2a400 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2a410 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2a420 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a430 74 20 6c 61 62 65 6c 2d 39 32 30 0d 0a 53 45 4c  t label-920..SEL
2a440 45 43 54 20 2b 20 63 6f 6c 31 20 2f 20 34 38 20  ECT + col1 / 48 
2a450 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2a460 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31  0..----..0..0..1
2a470 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2a480 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2a490 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2a4a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32 31  owsort label-921
2a4b0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2a4c0 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  T + COUNT( * ) *
2a4d0 20 2d 20 36 37 20 41 53 20 63 6f 6c 32 20 46 52   - 67 AS col2 FR
2a4e0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
2a4f0 32 30 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  201....skipif my
2a500 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2a510 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2a520 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32 31 0d  wsort label-921.
2a530 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2a540 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   + COUNT ( * ) *
2a550 20 2d 20 36 37 20 41 53 20 63 6f 6c 32 20 46 52   - 67 AS col2 FR
2a560 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
2a570 32 30 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  201....query I r
2a580 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2a590 4c 4c 20 32 37 20 2a 20 63 6f 6c 31 20 41 53 20  LL 27 * col1 AS 
2a5a0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
2a5b0 2d 2d 2d 2d 0d 0a 32 31 38 37 0d 0a 32 37 0d 0a  ----..2187..27..
2a5c0 35 36 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  567....onlyif my
2a5d0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
2a5e0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
2a5f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a600 74 20 6c 61 62 65 6c 2d 39 32 33 0d 0a 53 45 4c  t label-923..SEL
2a610 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 37  ECT DISTINCT + 7
2a620 33 20 2a 20 2b 20 28 20 43 41 53 54 28 20 4e 55  3 * + ( CAST( NU
2a630 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 29  LL AS SIGNED ) )
2a640 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
2a650 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
2a660 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2a670 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2a680 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2a690 32 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  23..SELECT DISTI
2a6a0 4e 43 54 20 2b 20 37 33 20 2a 20 2b 20 28 20 43  NCT + 73 * + ( C
2a6b0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
2a6c0 54 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20 74  TEGER ) ) FROM t
2a6d0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab2..----..NULL.
2a6e0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
2a6f0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
2a700 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
2a710 4f 54 20 2b 20 36 31 20 2a 20 63 6f 6c 30 20 2a  OT + 61 * col0 *
2a720 20 2b 20 2d 20 38 33 20 2f 20 2b 20 28 20 2b 20   + - 83 / + ( + 
2a730 28 20 37 39 20 29 20 29 20 3c 20 4e 55 4c 4c 0d  ( 79 ) ) < NULL.
2a740 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
2a750 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2a760 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
2a770 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 32  WHERE NOT + col2
2a780 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
2a790 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
2a7a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2a7b0 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
2a7c0 45 20 4e 4f 54 20 2b 20 2b 20 63 6f 6c 32 20 2a  E NOT + + col2 *
2a7d0 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d   col0 IS NULL..-
2a7e0 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
2a7f0 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31  shing to c6c0a41
2a800 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31  11b36d04dbc811a1
2a810 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c  1e4d54cad....onl
2a820 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
2a830 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
2a840 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
2a850 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2a860 32 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  27..SELECT DISTI
2a870 4e 43 54 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2b  NCT + - col1 * +
2a880 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
2a890 49 47 4e 45 44 20 29 2c 20 2d 20 63 6f 6c 30 20  IGNED ), - col0 
2a8a0 2a 20 2d 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  * - - col2 AS co
2a8b0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
2a8c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
2a8d0 0d 0a 2d 34 38 39 36 0d 0a 4e 55 4c 4c 0d 0a 2d  ..-4896..NULL..-
2a8e0 35 30 31 35 0d 0a 4e 55 4c 4c 0d 0a 2d 36 31 38  5015..NULL..-618
2a8f0 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
2a900 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2a910 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  le..query II row
2a920 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32 37 0d 0a  sort label-927..
2a930 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2a940 2b 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 43 41 53  + - col1 * + CAS
2a950 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
2a960 47 45 52 20 29 2c 20 2d 20 63 6f 6c 30 20 2a 20  GER ), - col0 * 
2a970 2d 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  - - col2 AS col0
2a980 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2a990 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
2a9a0 2d 34 38 39 36 0d 0a 4e 55 4c 4c 0d 0a 2d 35 30  -4896..NULL..-50
2a9b0 31 35 0d 0a 4e 55 4c 4c 0d 0a 2d 36 31 38 38 0d  15..NULL..-6188.
2a9c0 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
2a9d0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
2a9e0 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
2a9f0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
2aa00 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
2aa10 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2aa20 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  ECT DISTINCT + +
2aa30 20 37 39 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   79 col2 FROM ta
2aa40 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
2aa50 0d 0a 37 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..79....onlyif m
2aa60 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
2aa70 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
2aa80 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2aa90 2d 39 32 39 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -929..SELECT COU
2aaa0 4e 54 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55 4e  NT( * ) * + COUN
2aab0 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46  T( * ) AS col1 F
2aac0 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 43 52  ROM tab0 cor0 CR
2aad0 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 63 6f  OSS JOIN tab0 co
2aae0 72 31 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 0d 0a  r1..----..81....
2aaf0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2ab00 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2ab10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2ab20 61 62 65 6c 2d 39 32 39 0d 0a 53 45 4c 45 43 54  abel-929..SELECT
2ab30 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b   COUNT ( * ) * +
2ab40 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20   COUNT ( * ) AS 
2ab50 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63  col1 FROM tab0 c
2ab60 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
2ab70 61 62 30 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor1..----..
2ab80 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  81....query I ro
2ab90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2aba0 53 54 49 4e 43 54 20 37 32 20 41 53 20 63 6f 6c  STINCT 72 AS col
2abb0 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
2abc0 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
2abd0 61 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab1 AS cor1..---
2abe0 2d 0d 0a 37 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..72....onlyif 
2abf0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2ac00 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2ac10 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2ac20 6f 72 74 20 6c 61 62 65 6c 2d 39 33 31 0d 0a 53  ort label-931..S
2ac30 45 4c 45 43 54 20 41 4c 4c 20 2d 20 32 39 20 2b  ELECT ALL - 29 +
2ac40 20 43 41 53 54 28 20 63 6f 6c 31 20 41 53 20 53   CAST( col1 AS S
2ac50 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20  IGNED ) AS col0 
2ac60 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2ac70 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 38 0d 0a 2d 38  0..----..-28..-8
2ac80 0d 0a 35 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..52....skipif m
2ac90 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2aca0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2acb0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33 31  owsort label-931
2acc0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 32  ..SELECT ALL - 2
2acd0 39 20 2b 20 43 41 53 54 20 28 20 63 6f 6c 31 20  9 + CAST ( col1 
2ace0 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
2acf0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
2ad00 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
2ad10 38 0d 0a 2d 38 0d 0a 35 32 0d 0a 0d 0a 71 75 65  8..-8..52....que
2ad20 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2ad30 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2b 20 2b 20  LECT + col1 + + 
2ad40 63 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20  col1 * - - col1 
2ad50 2b 20 2d 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  + - + col0 FROM 
2ad60 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
2ad70 2d 2d 0d 0a 2d 35 35 0d 0a 31 35 39 0d 0a 32 31  --..-55..159..21
2ad80 36 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  65....skipif pos
2ad90 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
2ada0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
2adb0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
2adc0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
2add0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2ade0 53 45 4c 45 43 54 20 2d 20 37 33 20 2b 20 2d 20  SELECT - 73 + - 
2adf0 2d 20 33 36 20 63 6f 6c 31 20 46 52 4f 4d 20 74  - 36 col1 FROM t
2ae00 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2ae10 2d 0d 0a 2d 33 37 0d 0a 2d 33 37 0d 0a 2d 33 37  -..-37..-37..-37
2ae20 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2ae30 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2ae40 2b 20 2d 20 36 36 20 2b 20 63 6f 6c 31 20 46 52  + - 66 + col1 FR
2ae50 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
2ae60 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 31 0d 0a 31  .----..-15..1..1
2ae70 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
2ae80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28  sort..SELECT + (
2ae90 20 2b 20 63 6f 6c 30 20 29 20 2b 20 2d 20 63 6f   + col0 ) + - co
2aea0 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 2b 20  l1 * - - col2 + 
2aeb0 33 34 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  34 FROM tab1 AS 
2aec0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 35  cor0..----..-125
2aed0 39 0d 0a 2d 31 37 36 0d 0a 2d 33 30 37 31 0d 0a  9..-176..-3071..
2aee0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
2aef0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
2af00 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
2af10 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
2af20 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
2af30 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2af40 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2d 20 2d 20  CT ALL col1 - - 
2af50 2d 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 31 20  - col1 + - col1 
2af60 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 63  col0 FROM tab0 c
2af70 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  or0..----..-1..-
2af80 32 31 0d 0a 2d 38 31 0d 0a 0d 0a 6f 6e 6c 79 69  21..-81....onlyi
2af90 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2afa0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2afb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2afc0 62 65 6c 2d 39 33 37 0d 0a 53 45 4c 45 43 54 20  bel-937..SELECT 
2afd0 4d 41 58 28 20 63 6f 6c 30 20 29 20 2b 20 2b 20  MAX( col0 ) + + 
2afe0 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
2aff0 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
2b000 0a 39 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .94....skipif my
2b010 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2b020 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2b030 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33 37 0d  wsort label-937.
2b040 0a 53 45 4c 45 43 54 20 4d 41 58 20 28 20 63 6f  .SELECT MAX ( co
2b050 6c 30 20 29 20 2b 20 2b 20 43 4f 55 4e 54 20 28  l0 ) + + COUNT (
2b060 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63   * ) FROM tab1 c
2b070 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a 0d  or0..----..94...
2b080 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2b090 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2b0a0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
2b0b0 63 6f 72 30 20 57 48 45 52 45 20 2d 20 37 36 20  cor0 WHERE - 76 
2b0c0 4e 4f 54 20 42 45 54 57 45 45 4e 20 37 32 20 2a  NOT BETWEEN 72 *
2b0d0 20 2b 20 2b 20 32 36 20 41 4e 44 20 4e 55 4c 4c   + + 26 AND NULL
2b0e0 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
2b0f0 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34   hashing to c4b4
2b100 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30  2765dff94eaaa460
2b110 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a  40e537fb43b7....
2b120 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2b130 0a 53 45 4c 45 43 54 20 2d 20 2d 20 38 36 20 2b  .SELECT - - 86 +
2b140 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
2b150 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
2b160 30 31 0d 0a 31 37 33 0d 0a 31 38 33 0d 0a 0d 0a  01..173..183....
2b170 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2b180 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2b190 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2b1a0 72 74 20 6c 61 62 65 6c 2d 39 34 30 0d 0a 53 45  rt label-940..SE
2b1b0 4c 45 43 54 20 41 4c 4c 20 2d 20 53 55 4d 28 20  LECT ALL - SUM( 
2b1c0 2b 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63 6f  + - col0 ) AS co
2b1d0 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l0 FROM tab2 cor
2b1e0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 35 0d 0a 0d 0a  0..----..185....
2b1f0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2b200 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2b210 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b220 61 62 65 6c 2d 39 34 30 0d 0a 53 45 4c 45 43 54  abel-940..SELECT
2b230 20 41 4c 4c 20 2d 20 53 55 4d 20 28 20 2b 20 2d   ALL - SUM ( + -
2b240 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20   col0 ) AS col0 
2b250 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a  FROM tab2 cor0..
2b260 2d 2d 2d 2d 0d 0a 31 38 35 0d 0a 0d 0a 73 6b 69  ----..185....ski
2b270 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
2b280 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
2b290 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
2b2a0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
2b2b0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
2b2c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
2b2d0 6f 6c 32 20 63 6f 6c 31 2c 20 63 6f 6c 31 20 2a  ol2 col1, col1 *
2b2e0 20 2d 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c   - + col2 AS col
2b2f0 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
2b300 2d 0d 0a 31 30 0d 0a 2d 32 31 30 0d 0a 34 37 0d  -..10..-210..47.
2b310 0a 2d 33 38 30 37 0d 0a 39 39 0d 0a 2d 39 39 0d  .-3807..99..-99.
2b320 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2b330 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20  rt..SELECT col1 
2b340 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
2b350 31 20 57 48 45 52 45 20 2d 20 63 6f 6c 32 20 2f  1 WHERE - col2 /
2b360 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 2b 20 39 38   - col1 * + + 98
2b370 20 2f 20 2d 20 2d 20 63 6f 6c 32 20 49 53 20 4e   / - - col2 IS N
2b380 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31  OT NULL..----..1
2b390 34 0d 0a 34 37 0d 0a 35 0d 0a 0d 0a 6f 6e 6c 79  4..47..5....only
2b3a0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
2b3b0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
2b3c0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
2b3d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34 33  owsort label-943
2b3e0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2b3f0 54 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 43 41 53  T + col0 * - CAS
2b400 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
2b410 44 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  D ) col0 FROM ta
2b420 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b1..----..NULL..
2b430 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2b440 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2b450 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
2b460 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
2b470 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
2b480 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
2b490 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
2b4a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2b4b0 39 34 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  943..SELECT DIST
2b4c0 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20 2d 20  INCT + col0 * - 
2b4d0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
2b4e0 4e 54 45 47 45 52 20 29 20 63 6f 6c 30 20 46 52  NTEGER ) col0 FR
2b4f0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab1..----..N
2b500 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ULL....query III
2b510 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2b520 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31   ALL * FROM tab1
2b530 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20   WHERE NOT col2 
2b540 3e 20 2d 20 2b 20 34 32 20 2a 20 2d 20 63 6f 6c  > - + 42 * - col
2b550 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
2b560 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63  s hashing to c6c
2b570 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38  0a4111b36d04dbc8
2b580 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d  11a11e4d54cad...
2b590 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2b5a0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
2b5b0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
2b5c0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
2b5d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2b5e0 62 65 6c 2d 39 34 35 0d 0a 53 45 4c 45 43 54 20  bel-945..SELECT 
2b5f0 44 49 53 54 49 4e 43 54 20 43 41 53 54 28 20 4e  DISTINCT CAST( N
2b600 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
2b610 2a 20 2b 20 53 55 4d 28 20 2d 20 35 32 20 29 20  * + SUM( - 52 ) 
2b620 2a 20 2b 20 2d 20 4d 49 4e 28 20 41 4c 4c 20 2d  * + - MIN( ALL -
2b630 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62   col0 ) FROM tab
2b640 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
2b650 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2b660 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2b670 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2b680 6c 61 62 65 6c 2d 39 34 35 0d 0a 53 45 4c 45 43  label-945..SELEC
2b690 54 20 44 49 53 54 49 4e 43 54 20 43 41 53 54 20  T DISTINCT CAST 
2b6a0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
2b6b0 52 20 29 20 2a 20 2b 20 53 55 4d 20 28 20 2d 20  R ) * + SUM ( - 
2b6c0 35 32 20 29 20 2a 20 2b 20 2d 20 4d 49 4e 20 28  52 ) * + - MIN (
2b6d0 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 29 20 46 52   ALL - col0 ) FR
2b6e0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab0..----..N
2b6f0 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
2b700 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
2b710 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
2b720 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b730 74 20 6c 61 62 65 6c 2d 39 34 36 0d 0a 53 45 4c  t label-946..SEL
2b740 45 43 54 20 2d 20 63 6f 6c 32 20 44 49 56 20 2d  ECT - col2 DIV -
2b750 20 2b 20 34 39 20 41 53 20 63 6f 6c 32 20 46 52   + 49 AS col2 FR
2b760 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab0..----..0
2b770 0d 0a 30 0d 0a 32 0d 0a 0d 0a 73 6b 69 70 69 66  ..0..2....skipif
2b780 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2b790 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2b7a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2b7b0 34 36 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  46..SELECT - col
2b7c0 32 20 2f 20 2d 20 2b 20 34 39 20 41 53 20 63 6f  2 / - + 49 AS co
2b7d0 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
2b7e0 2d 2d 0d 0a 30 0d 0a 30 0d 0a 32 0d 0a 0d 0a 6f  --..0..0..2....o
2b7f0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2b800 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2b810 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b820 74 20 6c 61 62 65 6c 2d 39 34 37 0d 0a 53 45 4c  t label-947..SEL
2b830 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ECT - COUNT( * )
2b840 20 2a 20 2b 20 2b 20 4d 41 58 28 20 41 4c 4c 20   * + + MAX( ALL 
2b850 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 31  col0 ) FROM tab1
2b860 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 33 0d 0a 0d 0a  ..----..-273....
2b870 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2b880 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2b890 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b8a0 61 62 65 6c 2d 39 34 37 0d 0a 53 45 4c 45 43 54  abel-947..SELECT
2b8b0 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   - COUNT ( * ) *
2b8c0 20 2b 20 2b 20 4d 41 58 20 28 20 41 4c 4c 20 63   + + MAX ( ALL c
2b8d0 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 31 0d  ol0 ) FROM tab1.
2b8e0 0a 2d 2d 2d 2d 0d 0a 2d 32 37 33 0d 0a 0d 0a 6f  .----..-273....o
2b8f0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2b900 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2b910 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b920 74 20 6c 61 62 65 6c 2d 39 34 38 0d 0a 53 45 4c  t label-948..SEL
2b930 45 43 54 20 2d 20 35 20 2d 20 28 20 2b 20 43 4f  ECT - 5 - ( + CO
2b940 55 4e 54 28 20 2a 20 29 20 29 20 46 52 4f 4d 20  UNT( * ) ) FROM 
2b950 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a  tab0..----..-8..
2b960 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2b970 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2b980 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2b990 20 6c 61 62 65 6c 2d 39 34 38 0d 0a 53 45 4c 45   label-948..SELE
2b9a0 43 54 20 2d 20 35 20 2d 20 28 20 2b 20 43 4f 55  CT - 5 - ( + COU
2b9b0 4e 54 20 28 20 2a 20 29 20 29 20 46 52 4f 4d 20  NT ( * ) ) FROM 
2b9c0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a  tab0..----..-8..
2b9d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b9e0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2b9f0 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 38 30  CT - col0 + + 80
2ba00 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2ba10 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d 0a 2d  b1..----..-11..-
2ba20 35 0d 0a 32 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  5..29....onlyif 
2ba30 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2ba40 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2ba50 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2ba60 6f 72 74 20 6c 61 62 65 6c 2d 39 35 30 0d 0a 53  ort label-950..S
2ba70 45 4c 45 43 54 20 2b 20 35 34 20 2d 20 43 41 53  ELECT + 54 - CAS
2ba80 54 28 20 2b 20 2d 20 38 20 41 53 20 53 49 47 4e  T( + - 8 AS SIGN
2ba90 45 44 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  ED ) AS col2 FRO
2baa0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36 32  M tab1..----..62
2bab0 0d 0a 36 32 0d 0a 36 32 0d 0a 0d 0a 73 6b 69 70  ..62..62....skip
2bac0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2bad0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2bae0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2baf0 2d 39 35 30 0d 0a 53 45 4c 45 43 54 20 2b 20 35  -950..SELECT + 5
2bb00 34 20 2d 20 43 41 53 54 20 28 20 2b 20 2d 20 38  4 - CAST ( + - 8
2bb10 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53   AS INTEGER ) AS
2bb20 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
2bb30 0a 2d 2d 2d 2d 0d 0a 36 32 0d 0a 36 32 0d 0a 36  .----..62..62..6
2bb40 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
2bb50 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
2bb60 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 2d 20 63  ol0 * - col1 - c
2bb70 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
2bb80 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33   cor0..----..-23
2bb90 39 32 0d 0a 2d 34 39 39 32 0d 0a 2d 35 31 30 30  92..-4992..-5100
2bba0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
2bbb0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
2bbc0 20 63 6f 6c 32 20 2d 20 2d 20 2b 20 63 6f 6c 30   col2 - - + col0
2bbd0 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 38 36   + - col0 * - 86
2bbe0 20 41 53 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c 31   AS col1, + col1
2bbf0 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 2d 20 2b 20   * - + col2 - + 
2bc00 63 6f 6c 30 20 2a 20 63 6f 6c 31 20 41 53 20 63  col0 * col1 AS c
2bc10 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
2bc20 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 30 32   cor0..----..402
2bc30 35 0d 0a 2d 33 35 31 39 0d 0a 35 36 30 38 0d 0a  5..-3519..5608..
2bc40 2d 38 30 30 38 0d 0a 36 35 38 33 0d 0a 2d 38 39  -8008..6583..-89
2bc50 31 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  11....query I ro
2bc60 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2bc70 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20  STINCT + col0 * 
2bc80 2d 20 63 6f 6c 30 20 2a 20 2b 20 28 20 2b 20 2d  - col0 * + ( + -
2bc90 20 63 6f 6c 31 20 29 20 2b 20 2d 20 33 20 46 52   col1 ) + - 3 FR
2bca0 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
2bcb0 2d 2d 0d 0a 31 35 38 39 34 36 0d 0a 31 38 32 32  --..158946..1822
2bcc0 32 0d 0a 39 34 30 36 0d 0a 0d 0a 6f 6e 6c 79 69  2..9406....onlyi
2bcd0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2bce0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2bcf0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2bd00 62 65 6c 2d 39 35 34 0d 0a 53 45 4c 45 43 54 20  bel-954..SELECT 
2bd10 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2d  + + COUNT( * ) -
2bd20 20 2b 20 4d 49 4e 28 20 41 4c 4c 20 2d 20 63 6f   + MIN( ALL - co
2bd30 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l2 ) AS col2 FRO
2bd40 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
2bd50 2d 0d 0a 36 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..61....skipif 
2bd60 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2bd70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2bd80 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35  rowsort label-95
2bd90 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f  4..SELECT + + CO
2bda0 55 4e 54 20 28 20 2a 20 29 20 2d 20 2b 20 4d 49  UNT ( * ) - + MI
2bdb0 4e 20 28 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 29  N ( ALL - col2 )
2bdc0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2bdd0 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36  b2 cor0..----..6
2bde0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  1....query II ro
2bdf0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39 30  wsort..SELECT 90
2be00 20 41 53 20 63 6f 6c 31 2c 20 63 6f 6c 31 20 2a   AS col1, col1 *
2be10 20 2b 20 2b 20 32 36 20 41 53 20 63 6f 6c 31 20   + + 26 AS col1 
2be20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2be30 30 0d 0a 2d 2d 2d 2d 0d 0a 39 30 0d 0a 32 31 30  0..----..90..210
2be40 36 0d 0a 39 30 0d 0a 32 36 0d 0a 39 30 0d 0a 35  6..90..26..90..5
2be50 34 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  46....onlyif mys
2be60 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
2be70 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  : aggregate synt
2be80 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
2be90 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2bea0 72 74 20 6c 61 62 65 6c 2d 39 35 36 0d 0a 53 45  rt label-956..SE
2beb0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2bec0 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 43 41  MAX( DISTINCT CA
2bed0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
2bee0 45 44 20 29 20 29 20 2a 20 2d 20 39 34 20 2f 20  ED ) ) * - 94 / 
2bef0 2d 20 2b 20 39 35 20 46 52 4f 4d 20 74 61 62 31  - + 95 FROM tab1
2bf00 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2bf10 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
2bf20 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2bf30 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2bf40 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35 36  owsort label-956
2bf50 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2bf60 54 20 2b 20 4d 41 58 20 28 20 44 49 53 54 49 4e  T + MAX ( DISTIN
2bf70 43 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41  CT CAST ( NULL A
2bf80 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 2a 20  S INTEGER ) ) * 
2bf90 2d 20 39 34 20 2f 20 2d 20 2b 20 39 35 20 46 52  - 94 / - + 95 FR
2bfa0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
2bfb0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
2bfc0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2bfd0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2bfe0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2bff0 74 20 6c 61 62 65 6c 2d 39 35 37 0d 0a 53 45 4c  t label-957..SEL
2c000 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ECT + COUNT( * )
2c010 20 2a 20 2d 20 28 20 31 37 20 29 20 46 52 4f 4d   * - ( 17 ) FROM
2c020 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   tab1..----..-51
2c030 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2c040 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2c050 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2c060 72 74 20 6c 61 62 65 6c 2d 39 35 37 0d 0a 53 45  rt label-957..SE
2c070 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a  LECT + COUNT ( *
2c080 20 29 20 2a 20 2d 20 28 20 31 37 20 29 20 46 52   ) * - ( 17 ) FR
2c090 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
2c0a0 35 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  51....onlyif mys
2c0b0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
2c0c0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
2c0d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c0e0 20 6c 61 62 65 6c 2d 39 35 38 0d 0a 53 45 4c 45   label-958..SELE
2c0f0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
2c100 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
2c110 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
2c120 20 63 6f 6c 30 20 4e 4f 54 20 49 4e 20 28 20 2b   col0 NOT IN ( +
2c130 20 28 20 2b 20 63 6f 6c 31 20 29 20 2a 20 2d 20   ( + col1 ) * - 
2c140 63 6f 6c 31 20 2b 20 63 6f 6c 30 20 2d 20 2d 20  col1 + col0 - - 
2c150 2d 20 36 32 20 2a 20 2d 20 63 6f 6c 31 20 2b 20  - 62 * - col1 + 
2c160 2d 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 32 20  - col2 + - col2 
2c170 2f 20 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 2c  / + col0 * col2,
2c180 20 63 6f 6c 32 2c 20 31 37 20 2d 20 43 41 53 54   col2, 17 - CAST
2c190 28 20 2d 20 2d 20 63 6f 6c 30 20 41 53 20 53 49  ( - - col0 AS SI
2c1a0 47 4e 45 44 20 29 2c 20 2d 20 63 6f 6c 31 20 29  GNED ), - col1 )
2c1b0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
2c1c0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2c1d0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2c1e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2c1f0 35 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  58..SELECT DISTI
2c200 4e 43 54 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  NCT + col0 FROM 
2c210 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
2c220 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 4e 4f  RE NOT - col0 NO
2c230 54 20 49 4e 20 28 20 2b 20 28 20 2b 20 63 6f 6c  T IN ( + ( + col
2c240 31 20 29 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 63  1 ) * - col1 + c
2c250 6f 6c 30 20 2d 20 2d 20 2d 20 36 32 20 2a 20 2d  ol0 - - - 62 * -
2c260 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 32 20 2b   col1 + - col2 +
2c270 20 2d 20 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 30   - col2 / + col0
2c280 20 2a 20 63 6f 6c 32 2c 20 63 6f 6c 32 2c 20 31   * col2, col2, 1
2c290 37 20 2d 20 43 41 53 54 20 28 20 2d 20 2d 20 63  7 - CAST ( - - c
2c2a0 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol0 AS INTEGER )
2c2b0 2c 20 2d 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d  , - col1 )..----
2c2c0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2c2d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2c2e0 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30 20 2a 20  col1 * - col0 * 
2c2f0 33 36 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  36 FROM tab1 AS 
2c300 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 33  cor0..----..-153
2c310 30 30 0d 0a 2d 31 35 33 39 37 32 0d 0a 2d 32 35  00..-153972..-25
2c320 37 30 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  704....skipif po
2c330 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
2c340 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
2c350 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
2c360 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
2c370 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2c380 0a 53 45 4c 45 43 54 20 2b 20 2b 20 28 20 2d 20  .SELECT + + ( - 
2c390 63 6f 6c 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d  col2 ) col1 FROM
2c3a0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
2c3b0 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d 36 38 0d 0a 2d  ---..-59..-68..-
2c3c0 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  96....onlyif mys
2c3d0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
2c3e0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
2c3f0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2c400 72 74 20 6c 61 62 65 6c 2d 39 36 31 0d 0a 53 45  rt label-961..SE
2c410 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
2c420 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2c430 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31  0 WHERE NOT col1
2c440 20 2b 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c   + + + CAST( NUL
2c450 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  L AS SIGNED ) * 
2c460 2d 20 36 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  - 61 IS NULL..--
2c470 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
2c480 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2c490 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
2c4a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 31  owsort label-961
2c4b0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2c4c0 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
2c4d0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
2c4e0 63 6f 6c 31 20 2b 20 2b 20 2b 20 43 41 53 54 20  col1 + + + CAST 
2c4f0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
2c500 52 20 29 20 2a 20 2d 20 36 31 20 49 53 20 4e 55  R ) * - 61 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 61 67 67 72 65  if mysql # aggre
2c530 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2c540 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2c550 61 62 65 6c 2d 39 36 32 0d 0a 53 45 4c 45 43 54  abel-962..SELECT
2c560 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e   DISTINCT + COUN
2c570 54 28 20 2b 20 2b 20 28 20 2d 20 2b 20 63 6f 6c  T( + + ( - + col
2c580 32 20 29 20 29 20 2a 20 32 20 63 6f 6c 30 20 46  2 ) ) * 2 col0 F
2c590 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2c5a0 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 73 6b 69  ..----..6....ski
2c5b0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2c5c0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
2c5d0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2c5e0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2c5f0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2c600 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2c610 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
2c620 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 32 0d 0a  sort label-962..
2c630 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2c640 2b 20 43 4f 55 4e 54 20 28 20 2b 20 2b 20 28 20  + COUNT ( + + ( 
2c650 2d 20 2b 20 63 6f 6c 32 20 29 20 29 20 2a 20 32  - + col2 ) ) * 2
2c660 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
2c670 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36  AS cor0..----..6
2c680 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2c690 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2c6a0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2c6b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2c6c0 61 62 65 6c 2d 39 36 33 0d 0a 53 45 4c 45 43 54  abel-963..SELECT
2c6d0 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f   DISTINCT - + co
2c6e0 6c 32 20 2a 20 2b 20 43 41 53 54 28 20 4e 55 4c  l2 * + CAST( NUL
2c6f0 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  L AS SIGNED ) * 
2c700 2d 20 63 6f 6c 32 20 2b 20 2d 20 2d 20 38 35 20  - col2 + - - 85 
2c710 2b 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63  + + + col0 + - c
2c720 6f 6c 32 20 2a 20 39 31 20 2b 20 2d 20 63 6f 6c  ol2 * 91 + - col
2c730 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
2c740 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2c750 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  -..NULL....skipi
2c760 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2c770 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2c780 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2c790 39 36 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  963..SELECT DIST
2c7a0 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 32 20 2a 20  INCT - + col2 * 
2c7b0 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
2c7c0 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 63   INTEGER ) * - c
2c7d0 6f 6c 32 20 2b 20 2d 20 2d 20 38 35 20 2b 20 2b  ol2 + - - 85 + +
2c7e0 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 32   + col0 + - col2
2c7f0 20 2a 20 39 31 20 2b 20 2d 20 63 6f 6c 32 20 41   * 91 + - col2 A
2c800 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
2c810 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2c820 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
2c830 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
2c840 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65  ax: DECIMAL type
2c850 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
2c860 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 34 0d  wsort label-964.
2c870 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
2c880 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
2c890 57 48 45 52 45 20 2b 20 63 6f 6c 32 20 2b 20 2d  WHERE + col2 + -
2c8a0 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 32   + col2 + + col2
2c8b0 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   + - CAST( NULL 
2c8c0 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2a 20 2b  AS DECIMAL ) * +
2c8d0 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45   col2 NOT BETWEE
2c8e0 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 2b 20 63  N NULL AND + + c
2c8f0 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ol1..----....ski
2c900 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2c910 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2c920 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
2c930 62 65 6c 2d 39 36 34 0d 0a 53 45 4c 45 43 54 20  bel-964..SELECT 
2c940 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ALL * FROM tab1 
2c950 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20  AS cor0 WHERE + 
2c960 63 6f 6c 32 20 2b 20 2d 20 2b 20 63 6f 6c 32 20  col2 + - + col2 
2c970 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 43 41 53  + + col2 + - CAS
2c980 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c  T ( NULL AS REAL
2c990 20 29 20 2a 20 2b 20 63 6f 6c 32 20 4e 4f 54 20   ) * + col2 NOT 
2c9a0 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44  BETWEEN NULL AND
2c9b0 20 2b 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d   + + col1..----.
2c9c0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2c9d0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28  rt..SELECT ALL (
2c9e0 20 2d 20 63 6f 6c 32 20 29 20 2a 20 2d 20 63 6f   - col2 ) * - co
2c9f0 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
2ca00 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
2ca10 0a 31 30 35 38 0d 0a 32 35 36 30 0d 0a 34 33 35  .1058..2560..435
2ca20 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
2ca30 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
2ca40 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
2ca50 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ca60 6c 61 62 65 6c 2d 39 36 36 0d 0a 53 45 4c 45 43  label-966..SELEC
2ca70 54 20 2d 20 43 41 53 54 28 20 2d 20 2b 20 36 35  T - CAST( - + 65
2ca80 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d   AS SIGNED ) * -
2ca90 20 38 39 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   89 AS col1 FROM
2caa0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 37   tab2..----..-57
2cab0 38 35 0d 0a 2d 35 37 38 35 0d 0a 2d 35 37 38 35  85..-5785..-5785
2cac0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2cad0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2cae0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2caf0 72 74 20 6c 61 62 65 6c 2d 39 36 36 0d 0a 53 45  rt label-966..SE
2cb00 4c 45 43 54 20 2d 20 43 41 53 54 20 28 20 2d 20  LECT - CAST ( - 
2cb10 2b 20 36 35 20 41 53 20 49 4e 54 45 47 45 52 20  + 65 AS INTEGER 
2cb20 29 20 2a 20 2d 20 38 39 20 41 53 20 63 6f 6c 31  ) * - 89 AS col1
2cb30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
2cb40 0d 0a 2d 35 37 38 35 0d 0a 2d 35 37 38 35 0d 0a  ..-5785..-5785..
2cb50 2d 35 37 38 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -5785....onlyif 
2cb60 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2cb70 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2cb80 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2cb90 6c 2d 39 36 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-967..SELECT DI
2cba0 53 54 49 4e 43 54 20 2b 20 28 20 2d 20 43 4f 55  STINCT + ( - COU
2cbb0 4e 54 28 20 63 6f 6c 30 20 29 20 29 20 41 53 20  NT( col0 ) ) AS 
2cbc0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57  col2 FROM tab0 W
2cbd0 48 45 52 45 20 2b 20 63 6f 6c 32 20 2b 20 63 6f  HERE + col2 + co
2cbe0 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l2 IS NULL..----
2cbf0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
2cc00 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2cc10 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2cc20 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 37 0d  wsort label-967.
2cc30 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2cc40 20 2b 20 28 20 2d 20 43 4f 55 4e 54 20 28 20 63   + ( - COUNT ( c
2cc50 6f 6c 30 20 29 20 29 20 41 53 20 63 6f 6c 32 20  ol0 ) ) AS col2 
2cc60 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
2cc70 2b 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 20 49 53  + col2 + col2 IS
2cc80 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
2cc90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2cca0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2ccb0 43 54 20 2b 20 63 6f 6c 30 20 2b 20 33 32 20 2d  CT + col0 + 32 -
2ccc0 20 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74   + + col2 FROM t
2ccd0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 39 0d 0a 35  ab2..----..49..5
2cce0 35 0d 0a 35 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  5..56....onlyif 
2ccf0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2cd00 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2cd10 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2cd20 6f 72 74 20 6c 61 62 65 6c 2d 39 36 39 0d 0a 53  ort label-969..S
2cd30 45 4c 45 43 54 20 2d 20 43 41 53 54 28 20 2b 20  ELECT - CAST( + 
2cd40 2b 20 28 20 2d 20 63 6f 6c 32 20 29 20 41 53 20  + ( - col2 ) AS 
2cd50 53 49 47 4e 45 44 20 29 20 63 6f 6c 30 20 46 52  SIGNED ) col0 FR
2cd60 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
2cd70 30 0d 0a 34 37 0d 0a 39 39 0d 0a 0d 0a 73 6b 69  0..47..99....ski
2cd80 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2cd90 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
2cda0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2cdb0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2cdc0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2cdd0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2cde0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
2cdf0 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 39 0d 0a  sort label-969..
2ce00 53 45 4c 45 43 54 20 2d 20 43 41 53 54 20 28 20  SELECT - CAST ( 
2ce10 2b 20 2b 20 28 20 2d 20 63 6f 6c 32 20 29 20 41  + + ( - col2 ) A
2ce20 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f 6c 30  S INTEGER ) col0
2ce30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
2ce40 0d 0a 31 30 0d 0a 34 37 0d 0a 39 39 0d 0a 0d 0a  ..10..47..99....
2ce50 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
2ce60 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2ce70 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57  CT * FROM tab0 W
2ce80 48 45 52 45 20 2b 20 34 38 20 3e 3d 20 2d 20 39  HERE + 48 >= - 9
2ce90 37 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  7..----..9 value
2cea0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62  s hashing to c4b
2ceb0 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36  42765dff94eaaa46
2cec0 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d  040e537fb43b7...
2ced0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2cee0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
2cef0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
2cf00 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2cf10 6c 2d 39 37 31 0d 0a 53 45 4c 45 43 54 20 44 49  l-971..SELECT DI
2cf20 53 54 49 4e 43 54 20 43 41 53 54 28 20 4e 55 4c  STINCT CAST( NUL
2cf30 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20  L AS SIGNED ) + 
2cf40 63 6f 6c 30 20 2f 20 2b 20 63 6f 6c 30 20 2b 20  col0 / + col0 + 
2cf50 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
2cf60 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
2cf70 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2cf80 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2cf90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2cfa0 65 6c 2d 39 37 31 0d 0a 53 45 4c 45 43 54 20 44  el-971..SELECT D
2cfb0 49 53 54 49 4e 43 54 20 43 41 53 54 20 28 20 4e  ISTINCT CAST ( N
2cfc0 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
2cfd0 20 2b 20 63 6f 6c 30 20 2f 20 2b 20 63 6f 6c 30   + col0 / + col0
2cfe0 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
2cff0 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  2..----..NULL...
2d000 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2d010 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34 20 41 53  t..SELECT + 4 AS
2d020 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 31 20 2a 20   col0, - col1 * 
2d030 2b 20 31 34 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 14 AS col0 FRO
2d040 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 0d  M tab2..----..4.
2d050 0a 2d 31 30 37 38 0d 0a 34 0d 0a 2d 37 31 34 0d  .-1078..4..-714.
2d060 0a 34 0d 0a 2d 39 33 38 0d 0a 0d 0a 71 75 65 72  .4..-938....quer
2d070 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
2d080 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
2d090 6c 30 20 41 53 20 63 6f 6c 31 2c 20 2d 20 63 6f  l0 AS col1, - co
2d0a0 6c 30 20 2a 20 2b 20 2b 20 63 6f 6c 30 20 41 53  l0 * + + col0 AS
2d0b0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
2d0c0 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 2d 32 36 30 31  .----..51..-2601
2d0d0 0d 0a 38 35 0d 0a 2d 37 32 32 35 0d 0a 39 31 0d  ..85..-7225..91.
2d0e0 0a 2d 38 32 38 31 0d 0a 0d 0a 71 75 65 72 79 20  .-8281....query 
2d0f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2d100 54 20 44 49 53 54 49 4e 43 54 20 2b 20 31 32 20  T DISTINCT + 12 
2d110 2b 20 36 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  + 6 FROM tab1..-
2d120 2d 2d 2d 0d 0a 31 38 0d 0a 0d 0a 6f 6e 6c 79 69  ---..18....onlyi
2d130 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2d140 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2d150 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2d160 62 65 6c 2d 39 37 35 0d 0a 53 45 4c 45 43 54 20  bel-975..SELECT 
2d170 44 49 53 54 49 4e 43 54 20 2b 20 39 31 20 2b 20  DISTINCT + 91 + 
2d180 4d 41 58 28 20 41 4c 4c 20 2d 20 63 6f 6c 30 20  MAX( ALL - col0 
2d190 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ) + - COUNT( * )
2d1a0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2d1b0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2d1c0 0d 0a 37 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..73....skipif m
2d1d0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2d1e0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2d1f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 35  owsort label-975
2d200 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2d210 54 20 2b 20 39 31 20 2b 20 4d 41 58 20 28 20 41  T + 91 + MAX ( A
2d220 4c 4c 20 2d 20 63 6f 6c 30 20 29 20 2b 20 2d 20  LL - col0 ) + - 
2d230 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
2d240 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
2d250 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 33 0d   cor0..----..73.
2d260 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2d270 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2d280 4e 43 54 20 2b 20 32 38 20 46 52 4f 4d 20 74 61  NCT + 28 FROM ta
2d290 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
2d2a0 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 2d 20 2d 20   NOT + col0 - - 
2d2b0 35 30 20 2f 20 2d 20 35 37 20 49 53 20 4e 55 4c  50 / - 57 IS NUL
2d2c0 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 38 0d 0a 0d 0a 71  L..----..28....q
2d2d0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
2d2e0 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2b 20 63  .SELECT col2 + c
2d2f0 6f 6c 31 20 2b 20 63 6f 6c 32 2c 20 63 6f 6c 31  ol1 + col2, col1
2d300 20 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 2a   - col1 + col1 *
2d310 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   - col2 AS col0 
2d320 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2d330 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 33 0d 0a 2d 32  0..----..123..-2
2d340 39 35 0d 0a 31 38 33 0d 0a 2d 33 31 39 36 0d 0a  95..183..-3196..
2d350 32 30 36 0d 0a 2d 31 33 34 34 0d 0a 0d 0a 71 75  206..-1344....qu
2d360 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2d370 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2d 20 2b  ELECT + col1 - +
2d380 20 38 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   82 AS col0 FROM
2d390 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   tab0..----..-1.
2d3a0 0a 2d 36 31 0d 0a 2d 38 31 0d 0a 0d 0a 71 75 65  .-61..-81....que
2d3b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2d3c0 4c 45 43 54 20 36 39 20 2a 20 2d 20 63 6f 6c 32  LECT 69 * - col2
2d3d0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2d3e0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30 37 31 0d  b1..----..-4071.
2d3f0 0a 2d 34 36 39 32 0d 0a 2d 36 36 32 34 0d 0a 0d  .-4692..-6624...
2d400 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2d410 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2d420 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2d430 6f 72 74 20 6c 61 62 65 6c 2d 39 38 30 0d 0a 53  ort label-980..S
2d440 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d 49 4e 28  ELECT ALL + MIN(
2d450 20 41 4c 4c 20 63 6f 6c 30 20 29 20 2a 20 2b 20   ALL col0 ) * + 
2d460 37 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  7 FROM tab1..---
2d470 2d 0d 0a 33 35 37 0d 0a 0d 0a 73 6b 69 70 69 66  -..357....skipif
2d480 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2d490 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2d4a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2d4b0 38 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  80..SELECT ALL +
2d4c0 20 4d 49 4e 20 28 20 41 4c 4c 20 63 6f 6c 30 20   MIN ( ALL col0 
2d4d0 29 20 2a 20 2b 20 37 20 46 52 4f 4d 20 74 61 62  ) * + 7 FROM tab
2d4e0 31 0d 0a 2d 2d 2d 2d 0d 0a 33 35 37 0d 0a 0d 0a  1..----..357....
2d4f0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2d500 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2d510 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2d520 72 74 20 6c 61 62 65 6c 2d 39 38 31 0d 0a 53 45  rt label-981..SE
2d530 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 63 6f  LECT + COUNT( co
2d540 6c 31 20 29 20 2a 20 43 4f 55 4e 54 28 20 2a 20  l1 ) * COUNT( * 
2d550 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
2d560 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..9....skipif m
2d570 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2d580 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2d590 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 31  owsort label-981
2d5a0 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
2d5b0 20 28 20 63 6f 6c 31 20 29 20 2a 20 43 4f 55 4e   ( col1 ) * COUN
2d5c0 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  T ( * ) FROM tab
2d5d0 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75  1..----..9....qu
2d5e0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
2d5f0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
2d600 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
2d610 54 20 2b 20 31 32 20 49 53 20 4e 55 4c 4c 0d 0a  T + 12 IS NULL..
2d620 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
2d630 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34  ashing to c6c0a4
2d640 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61  111b36d04dbc811a
2d650 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75  11e4d54cad....qu
2d660 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2d670 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32  ELECT ALL - col2
2d680 20 2a 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74   * - col2 FROM t
2d690 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
2d6a0 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col0 IS NOT NULL
2d6b0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
2d6c0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
2d6d0 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
2d6e0 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
2d6f0 28 20 63 6f 6c 31 20 29 20 2a 20 63 6f 6c 32 20  ( col1 ) * col2 
2d700 2b 20 2d 20 63 6f 6c 30 20 42 45 54 57 45 45 4e  + - col0 BETWEEN
2d710 20 4e 55 4c 4c 20 41 4e 44 20 63 6f 6c 30 20 2a   NULL AND col0 *
2d720 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   col2..----....o
2d730 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2d740 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2d750 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2d760 74 20 6c 61 62 65 6c 2d 39 38 35 0d 0a 53 45 4c  t label-985..SEL
2d770 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55  ECT DISTINCT COU
2d780 4e 54 28 20 41 4c 4c 20 39 39 20 29 20 2a 20 2b  NT( ALL 99 ) * +
2d790 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 2b   MAX( DISTINCT +
2d7a0 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62   col2 ) FROM tab
2d7b0 32 0d 0a 2d 2d 2d 2d 0d 0a 31 37 34 0d 0a 0d 0a  2..----..174....
2d7c0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2d7d0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2d7e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2d7f0 61 62 65 6c 2d 39 38 35 0d 0a 53 45 4c 45 43 54  abel-985..SELECT
2d800 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20   DISTINCT COUNT 
2d810 28 20 41 4c 4c 20 39 39 20 29 20 2a 20 2b 20 4d  ( ALL 99 ) * + M
2d820 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  AX ( DISTINCT + 
2d830 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32  col2 ) FROM tab2
2d840 0d 0a 2d 2d 2d 2d 0d 0a 31 37 34 0d 0a 0d 0a 71  ..----..174....q
2d850 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
2d860 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
2d870 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
2d880 4f 54 20 28 20 4e 55 4c 4c 20 29 20 4e 4f 54 20  OT ( NULL ) NOT 
2d890 42 45 54 57 45 45 4e 20 63 6f 6c 32 20 2a 20 36  BETWEEN col2 * 6
2d8a0 20 41 4e 44 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d   AND + col2..---
2d8b0 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
2d8c0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
2d8d0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2d8e0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
2d8f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2d900 74 20 6c 61 62 65 6c 2d 39 38 37 0d 0a 53 45 4c  t label-987..SEL
2d910 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41 53  ECT DISTINCT CAS
2d920 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
2d930 44 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a  D ) * - COUNT( *
2d940 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
2d950 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab1..----..NULL
2d960 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2d970 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2d980 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2d990 72 74 20 6c 61 62 65 6c 2d 39 38 37 0d 0a 53 45  rt label-987..SE
2d9a0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41  LECT DISTINCT CA
2d9b0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
2d9c0 45 47 45 52 20 29 20 2a 20 2d 20 43 4f 55 4e 54  EGER ) * - COUNT
2d9d0 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46   ( * ) AS col1 F
2d9e0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
2d9f0 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49  NULL....query II
2da00 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2da10 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
2da20 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 4e 4f 54  ERE NOT col2 NOT
2da30 20 42 45 54 57 45 45 4e 20 2b 20 35 35 20 2b 20   BETWEEN + 55 + 
2da40 2d 20 63 6f 6c 32 20 41 4e 44 20 28 20 63 6f 6c  - col2 AND ( col
2da50 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  0 )..----....que
2da60 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2da70 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2da80 31 31 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c  11 * col0 AS col
2da90 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
2daa0 2d 0d 0a 31 30 30 31 0d 0a 35 36 31 0d 0a 39 33  -..1001..561..93
2dab0 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
2dac0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28  sort..SELECT - (
2dad0 20 2d 20 32 37 20 29 20 46 52 4f 4d 20 74 61 62   - 27 ) FROM tab
2dae0 31 0d 0a 2d 2d 2d 2d 0d 0a 32 37 0d 0a 32 37 0d  1..----..27..27.
2daf0 0a 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .27....query III
2db00 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2db10 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
2db20 52 45 20 4e 4f 54 20 28 20 2d 20 39 32 20 29 20  RE NOT ( - 92 ) 
2db30 3e 3d 20 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c 30  >= + col2 * col0
2db40 20 2d 20 2d 20 37 33 0d 0a 2d 2d 2d 2d 0d 0a 39   - - 73..----..9
2db50 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
2db60 74 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64  to c6c0a4111b36d
2db70 30 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34  04dbc811a11e4d54
2db80 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  cad....onlyif my
2db90 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
2dba0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
2dbb0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2dbc0 74 20 6c 61 62 65 6c 2d 39 39 32 0d 0a 53 45 4c  t label-992..SEL
2dbd0 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
2dbe0 30 20 2a 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  0 * col1 AS col0
2dbf0 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
2dc00 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
2dc10 49 47 4e 45 44 20 29 20 49 53 20 4e 4f 54 20 4e  IGNED ) IS NOT N
2dc20 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ULL..----....ski
2dc30 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2dc40 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..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 39 39 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-992..SELECT DI
2dc70 53 54 49 4e 43 54 20 63 6f 6c 30 20 2a 20 63 6f  STINCT col0 * co
2dc80 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
2dc90 74 61 62 31 20 57 48 45 52 45 20 43 41 53 54 20  tab1 WHERE CAST 
2dca0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
2dcb0 52 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  R ) IS NOT NULL.
2dcc0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
2dcd0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2dce0 20 41 4c 4c 20 33 35 20 2a 20 39 35 20 46 52 4f   ALL 35 * 95 FRO
2dcf0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 33  M tab2..----..33
2dd00 32 35 0d 0a 33 33 32 35 0d 0a 33 33 32 35 0d 0a  25..3325..3325..
2dd10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2dd20 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31  t..SELECT - col1
2dd30 20 2b 20 28 20 2d 20 31 34 20 2d 20 2b 20 63 6f   + ( - 14 - + co
2dd40 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  l1 ) FROM tab2..
2dd50 2d 2d 2d 2d 0d 0a 2d 31 31 36 0d 0a 2d 31 34 38  ----..-116..-148
2dd60 0d 0a 2d 31 36 38 0d 0a 0d 0a 73 6b 69 70 69 66  ..-168....skipif
2dd70 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
2dd80 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
2dd90 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
2dda0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
2ddb0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
2ddc0 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20  rt..SELECT col2 
2ddd0 2b 20 2b 20 63 6f 6c 31 20 63 6f 6c 32 20 46 52  + + col1 col2 FR
2dde0 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
2ddf0 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  T NULL IS NOT NU
2de00 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 0d 0a 31  LL..----..100..1
2de10 32 38 0d 0a 33 31 0d 0a 0d 0a 71 75 65 72 79 20  28..31....query 
2de20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2de30 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20  T DISTINCT col1 
2de40 2a 20 35 37 20 2b 20 63 6f 6c 30 20 2a 20 63 6f  * 57 + col0 * co
2de50 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
2de60 2d 2d 0d 0a 31 30 39 36 30 0d 0a 33 33 39 39 0d  --..10960..3399.
2de70 0a 37 35 31 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .7510....onlyif 
2de80 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2de90 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2dea0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2deb0 6f 72 74 20 6c 61 62 65 6c 2d 39 39 37 0d 0a 53  ort label-997..S
2dec0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 41 56 47 20  ELECT ALL - AVG 
2ded0 28 20 41 4c 4c 20 28 20 2b 20 63 6f 6c 30 20 29  ( ALL ( + col0 )
2dee0 20 29 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45   ) FROM tab0 WHE
2def0 52 45 20 28 20 28 20 2d 20 37 35 20 29 20 29 20  RE ( ( - 75 ) ) 
2df00 49 4e 20 28 20 2b 20 43 41 53 54 28 20 4e 55 4c  IN ( + CAST( NUL
2df10 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 29 0d  L AS SIGNED ) ).
2df20 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
2df30 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2df40 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2df50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2df60 62 65 6c 2d 39 39 37 0d 0a 53 45 4c 45 43 54 20  bel-997..SELECT 
2df70 41 4c 4c 20 2d 20 41 56 47 20 28 20 41 4c 4c 20  ALL - AVG ( ALL 
2df80 28 20 2b 20 63 6f 6c 30 20 29 20 29 20 46 52 4f  ( + col0 ) ) FRO
2df90 4d 20 74 61 62 30 20 57 48 45 52 45 20 28 20 28  M tab0 WHERE ( (
2dfa0 20 2d 20 37 35 20 29 20 29 20 49 4e 20 28 20 2b   - 75 ) ) IN ( +
2dfb0 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
2dfc0 49 4e 54 45 47 45 52 20 29 20 29 0d 0a 2d 2d 2d  INTEGER ) )..---
2dfd0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
2dfe0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2dff0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2e000 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2e010 62 65 6c 2d 39 39 38 0d 0a 53 45 4c 45 43 54 20  bel-998..SELECT 
2e020 2d 20 34 38 20 2a 20 2d 20 43 4f 55 4e 54 28 20  - 48 * - COUNT( 
2e030 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  * ) AS col0 FROM
2e040 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34   tab1..----..144
2e050 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2e060 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2e070 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2e080 72 74 20 6c 61 62 65 6c 2d 39 39 38 0d 0a 53 45  rt label-998..SE
2e090 4c 45 43 54 20 2d 20 34 38 20 2a 20 2d 20 43 4f  LECT - 48 * - CO
2e0a0 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
2e0b0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
2e0c0 2d 0d 0a 31 34 34 0d 0a 0d 0a 6f 6e 6c 79 69 66  -..144....onlyif
2e0d0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2e0e0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
2e0f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2e100 65 6c 2d 39 39 39 0d 0a 53 45 4c 45 43 54 20 41  el-999..SELECT A
2e110 4c 4c 20 35 39 20 2b 20 53 55 4d 28 20 2d 20 63  LL 59 + SUM( - c
2e120 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31 20 29 20 46  ol2 + - col1 ) F
2e130 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
2e140 2d 32 35 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -257....skipif m
2e150 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2e160 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2e170 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 39 39  owsort label-999
2e180 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 35 39 20  ..SELECT ALL 59 
2e190 2b 20 53 55 4d 20 28 20 2d 20 63 6f 6c 32 20 2b  + SUM ( - col2 +
2e1a0 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74   - col1 ) FROM t
2e1b0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 37 0d  ab2..----..-257.
2e1c0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2e1d0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
2e1e0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
2e1f0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
2e200 6c 61 62 65 6c 2d 31 30 30 30 0d 0a 53 45 4c 45  label-1000..SELE
2e210 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
2e220 62 32 20 57 48 45 52 45 20 43 41 53 54 28 20 4e  b2 WHERE CAST( N
2e230 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
2e240 4e 4f 54 20 49 4e 20 28 20 32 33 20 2b 20 2d 20  NOT IN ( 23 + - 
2e250 28 20 31 37 20 29 20 2a 20 2b 20 63 6f 6c 30 20  ( 17 ) * + col0 
2e260 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  )..----....skipi
2e270 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2e280 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2e290 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
2e2a0 6c 2d 31 30 30 30 0d 0a 53 45 4c 45 43 54 20 41  l-1000..SELECT A
2e2b0 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  LL * FROM tab2 W
2e2c0 48 45 52 45 20 43 41 53 54 20 28 20 4e 55 4c 4c  HERE CAST ( NULL
2e2d0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 4e 4f   AS INTEGER ) NO
2e2e0 54 20 49 4e 20 28 20 32 33 20 2b 20 2d 20 28 20  T IN ( 23 + - ( 
2e2f0 31 37 20 29 20 2a 20 2b 20 63 6f 6c 30 20 29 0d  17 ) * + col0 ).
2e300 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
2e310 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2e320 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2e330 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2e340 6f 72 74 20 6c 61 62 65 6c 2d 31 30 30 31 0d 0a  ort label-1001..
2e350 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2e360 2b 20 28 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  + ( CAST( NULL A
2e370 53 20 53 49 47 4e 45 44 20 29 20 29 20 2b 20 63  S SIGNED ) ) + c
2e380 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
2e390 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab2..----..NUL
2e3a0 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
2e3b0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2e3c0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2e3d0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 30 31 0d 0a  ort label-1001..
2e3e0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2e3f0 2b 20 28 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + ( CAST ( NULL 
2e400 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 2b  AS INTEGER ) ) +
2e410 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
2e420 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
2e430 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ULL....query III
2e440 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2e450 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
2e460 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
2e470 63 6f 6c 32 20 42 45 54 57 45 45 4e 20 39 20 41  col2 BETWEEN 9 A
2e480 4e 44 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d  ND ( NULL )..---
2e490 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
2e4a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
2e4b0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2e4c0 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
2e4d0 4c 20 42 45 54 57 45 45 4e 20 28 20 2b 20 63 6f  L BETWEEN ( + co
2e4e0 6c 32 20 29 20 41 4e 44 20 2d 20 63 6f 6c 31 0d  l2 ) AND - col1.
2e4f0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
2e500 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
2e510 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 63  CT * FROM tab2 c
2e520 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20  or0 WHERE NOT + 
2e530 63 6f 6c 32 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d 2d  col2 >= NULL..--
2e540 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
2e550 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
2e560 6c 30 20 2a 20 28 20 2d 20 35 39 20 2a 20 63 6f  l0 * ( - 59 * co
2e570 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  l0 ) FROM tab0 A
2e580 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
2e590 33 32 37 35 0d 0a 2d 34 34 36 35 37 31 0d 0a 2d  3275..-446571..-
2e5a0 35 35 35 31 33 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  555131....onlyif
2e5b0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2e5c0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
2e5d0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2e5e0 65 6c 2d 31 30 30 36 0d 0a 53 45 4c 45 43 54 20  el-1006..SELECT 
2e5f0 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  + COUNT( * ) FRO
2e600 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
2e610 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f  HERE NOT NULL NO
2e620 54 20 49 4e 20 28 20 2b 20 63 6f 6c 31 20 29 0d  T IN ( + col1 ).
2e630 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
2e640 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2e650 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2e660 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2e670 2d 31 30 30 36 0d 0a 53 45 4c 45 43 54 20 2b 20  -1006..SELECT + 
2e680 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
2e690 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
2e6a0 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54  ERE NOT NULL NOT
2e6b0 20 49 4e 20 28 20 2b 20 63 6f 6c 31 20 29 0d 0a   IN ( + col1 )..
2e6c0 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  ----..0....onlyi
2e6d0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
2e6e0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
2e6f0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
2e700 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 30 37  wsort label-1007
2e710 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20  ..SELECT + col0 
2e720 2b 20 2b 20 43 41 53 54 28 20 2d 20 63 6f 6c 31  + + CAST( - col1
2e730 20 2b 20 35 37 20 41 53 20 53 49 47 4e 45 44 20   + 57 AS SIGNED 
2e740 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
2e750 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
2e760 45 20 4e 4f 54 20 36 20 49 53 20 4e 4f 54 20 4e  E NOT 6 IS NOT N
2e770 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ULL..----....ski
2e780 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2e790 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2e7a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2e7b0 6c 2d 31 30 30 37 0d 0a 53 45 4c 45 43 54 20 2b  l-1007..SELECT +
2e7c0 20 63 6f 6c 30 20 2b 20 2b 20 43 41 53 54 20 28   col0 + + CAST (
2e7d0 20 2d 20 63 6f 6c 31 20 2b 20 35 37 20 41 53 20   - col1 + 57 AS 
2e7e0 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c  INTEGER ) AS col
2e7f0 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
2e800 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 36 20  or0 WHERE NOT 6 
2e810 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
2e820 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
2e830 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
2e840 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2e850 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2e860 6c 61 62 65 6c 2d 31 30 30 38 0d 0a 53 45 4c 45  label-1008..SELE
2e870 43 54 20 41 4c 4c 20 28 20 28 20 2b 20 63 6f 6c  CT ALL ( ( + col
2e880 30 20 29 20 29 20 44 49 56 20 31 32 20 46 52 4f  0 ) ) DIV 12 FRO
2e890 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
2e8a0 2d 2d 2d 2d 0d 0a 33 0d 0a 35 0d 0a 36 0d 0a 0d  ----..3..5..6...
2e8b0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2e8c0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2e8d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2e8e0 6c 61 62 65 6c 2d 31 30 30 38 0d 0a 53 45 4c 45  label-1008..SELE
2e8f0 43 54 20 41 4c 4c 20 28 20 28 20 2b 20 63 6f 6c  CT ALL ( ( + col
2e900 30 20 29 20 29 20 2f 20 31 32 20 46 52 4f 4d 20  0 ) ) / 12 FROM 
2e910 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
2e920 2d 2d 0d 0a 33 0d 0a 35 0d 0a 36 0d 0a 0d 0a 6f  --..3..5..6....o
2e930 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2e940 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2e950 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
2e960 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
2e970 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2e980 6c 2d 31 30 30 39 0d 0a 53 45 4c 45 43 54 20 41  l-1009..SELECT A
2e990 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  LL + COUNT( * ) 
2e9a0 44 49 56 20 31 38 20 41 53 20 63 6f 6c 32 20 46  DIV 18 AS col2 F
2e9b0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
2e9c0 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e   WHERE NULL IS N
2e9d0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
2e9e0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2e9f0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2ea00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2ea10 61 62 65 6c 2d 31 30 30 39 0d 0a 53 45 4c 45 43  abel-1009..SELEC
2ea20 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20  T ALL + COUNT ( 
2ea30 2a 20 29 20 2f 20 31 38 20 41 53 20 63 6f 6c 32  * ) / 18 AS col2
2ea40 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2ea50 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  r0 WHERE NULL IS
2ea60 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
2ea70 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
2ea80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
2ea90 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
2eaa0 54 20 2b 20 33 30 20 2b 20 63 6f 6c 30 20 49 53  T + 30 + col0 IS
2eab0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
2eac0 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
2ead0 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34   c6c0a4111b36d04
2eae0 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61  dbc811a11e4d54ca
2eaf0 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  d....onlyif mysq
2eb00 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2eb10 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2eb20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2eb30 31 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  11..SELECT DISTI
2eb40 4e 43 54 20 2d 20 37 20 2a 20 43 4f 55 4e 54 28  NCT - 7 * COUNT(
2eb50 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a   * ) FROM tab0..
2eb60 2d 2d 2d 2d 0d 0a 2d 32 31 0d 0a 0d 0a 73 6b 69  ----..-21....ski
2eb70 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2eb80 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2eb90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2eba0 6c 2d 31 30 31 31 0d 0a 53 45 4c 45 43 54 20 44  l-1011..SELECT D
2ebb0 49 53 54 49 4e 43 54 20 2d 20 37 20 2a 20 43 4f  ISTINCT - 7 * CO
2ebc0 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
2ebd0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 0d 0a  ab0..----..-21..
2ebe0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
2ebf0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
2ec00 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
2ec10 54 20 2d 20 63 6f 6c 31 20 3d 20 28 20 4e 55 4c  T - col1 = ( NUL
2ec20 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  L )..----....que
2ec30 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2ec40 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 38 20  LECT DISTINCT 8 
2ec50 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 43  FROM tab2 cor0 C
2ec60 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 0d 0a  ROSS JOIN tab0..
2ec70 2d 2d 2d 2d 0d 0a 38 0d 0a 0d 0a 71 75 65 72 79  ----..8....query
2ec80 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
2ec90 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
2eca0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2ecb0 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55  0 WHERE NOT ( NU
2ecc0 4c 4c 20 29 20 49 4e 20 28 20 2d 20 63 6f 6c 30  LL ) IN ( - col0
2ecd0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
2ece0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2ecf0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
2ed00 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
2ed10 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
2ed20 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 3c 3d 20  ERE NOT col0 <= 
2ed30 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a  ( NULL )..----..
2ed40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2ed50 74 0d 0a 53 45 4c 45 43 54 20 2b 20 30 20 2a 20  t..SELECT + 0 * 
2ed60 37 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  71 FROM tab2 AS 
2ed70 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  cor0..----..0..0
2ed80 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
2ed90 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
2eda0 49 53 54 49 4e 43 54 20 2d 20 2b 20 35 20 2a 20  ISTINCT - + 5 * 
2edb0 2d 20 39 38 20 41 53 20 63 6f 6c 30 20 46 52 4f  - 98 AS col0 FRO
2edc0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
2edd0 2d 2d 2d 2d 0d 0a 34 39 30 0d 0a 0d 0a 6f 6e 6c  ----..490....onl
2ede0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2edf0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
2ee00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ee10 6c 61 62 65 6c 2d 31 30 31 38 0d 0a 53 45 4c 45  label-1018..SELE
2ee20 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT - COUNT( * ) 
2ee30 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  * COUNT( * ) FRO
2ee40 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52  M tab2 cor0 WHER
2ee50 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 4e 20 28 20  E NOT NULL IN ( 
2ee60 2b 20 39 35 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  + 95 )..----..0.
2ee70 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2ee80 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2ee90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2eea0 74 20 6c 61 62 65 6c 2d 31 30 31 38 0d 0a 53 45  t label-1018..SE
2eeb0 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a  LECT - COUNT ( *
2eec0 20 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29   ) * COUNT ( * )
2eed0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20   FROM tab2 cor0 
2eee0 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49  WHERE NOT NULL I
2eef0 4e 20 28 20 2b 20 39 35 20 29 0d 0a 2d 2d 2d 2d  N ( + 95 )..----
2ef00 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..0....onlyif my
2ef10 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
2ef20 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
2ef30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2ef40 74 20 6c 61 62 65 6c 2d 31 30 31 39 0d 0a 53 45  t label-1019..SE
2ef50 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 28  LECT ALL + CAST(
2ef60 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
2ef70 29 20 2a 20 38 20 46 52 4f 4d 20 74 61 62 31 20  ) * 8 FROM tab1 
2ef80 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
2ef90 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
2efa0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2efb0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2efc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2efd0 74 20 6c 61 62 65 6c 2d 31 30 31 39 0d 0a 53 45  t label-1019..SE
2efe0 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 20  LECT ALL + CAST 
2eff0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
2f000 52 20 29 20 2a 20 38 20 46 52 4f 4d 20 74 61 62  R ) * 8 FROM tab
2f010 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
2f020 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
2f030 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
2f040 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2f050 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2f060 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2f070 32 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 32  20..SELECT - - 2
2f080 35 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  5 * COUNT( * ) A
2f090 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
2f0a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2f0b0 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  75....skipif mys
2f0c0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2f0d0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2f0e0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 32 30 0d  sort label-1020.
2f0f0 0a 53 45 4c 45 43 54 20 2d 20 2d 20 32 35 20 2a  .SELECT - - 25 *
2f100 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20   COUNT ( * ) AS 
2f110 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
2f120 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 35  S cor0..----..75
2f130 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2f140 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2f150 49 4e 43 54 20 2d 20 63 6f 6c 31 20 2a 20 33 32  INCT - col1 * 32
2f160 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2f170 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 30 34 0d  r0..----..-1504.
2f180 0a 2d 31 36 30 0d 0a 2d 34 34 38 0d 0a 0d 0a 71  .-160..-448....q
2f190 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
2f1a0 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
2f1b0 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
2f1c0 52 45 20 4e 4f 54 20 63 6f 6c 31 20 49 4e 20 28  RE NOT col1 IN (
2f1d0 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 30   + col0 + - col0
2f1e0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75   )..----..9 valu
2f1f0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36  es hashing to c6
2f200 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63  c0a4111b36d04dbc
2f210 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a  811a11e4d54cad..
2f220 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2f230 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2f240 43 54 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74  CT - col2 FROM t
2f250 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
2f260 45 20 4e 4f 54 20 28 20 38 31 20 29 20 3d 20 28  E NOT ( 81 ) = (
2f270 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   NULL )..----...
2f280 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2f290 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2f2a0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
2f2b0 63 6f 72 30 20 57 48 45 52 45 20 28 20 2b 20 32  cor0 WHERE ( + 2
2f2c0 38 20 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  8 ) NOT BETWEEN 
2f2d0 63 6f 6c 31 20 41 4e 44 20 2d 20 32 36 20 2d 20  col1 AND - 26 - 
2f2e0 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20  - col1..----..9 
2f2f0 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
2f300 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33  o 75c998aa53ac83
2f310 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61  218cbf2feb962d0a
2f320 34 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  49....skipif pos
2f330 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
2f340 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
2f350 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
2f360 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
2f370 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2f380 53 45 4c 45 43 54 20 2d 20 2d 20 38 32 20 63 6f  SELECT - - 82 co
2f390 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
2f3a0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 32 0d 0a  cor0..----..82..
2f3b0 38 32 0d 0a 38 32 0d 0a 0d 0a 6f 6e 6c 79 69 66  82..82....onlyif
2f3c0 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2f3d0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2f3e0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
2f3f0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 32 36 0d  sort label-1026.
2f400 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 63 6f  .SELECT ALL ( co
2f410 6c 32 20 29 20 44 49 56 20 2d 20 63 6f 6c 30 20  l2 ) DIV - col0 
2f420 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2f430 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
2f440 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .0..0..0....skip
2f450 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2f460 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2f470 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2f480 2d 31 30 32 36 0d 0a 53 45 4c 45 43 54 20 41 4c  -1026..SELECT AL
2f490 4c 20 28 20 63 6f 6c 32 20 29 20 2f 20 2d 20 63  L ( col2 ) / - c
2f4a0 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
2f4b0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
2f4c0 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
2f4d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2f4e0 0a 53 45 4c 45 43 54 20 2d 20 39 39 20 2b 20 37  .SELECT - 99 + 7
2f4f0 34 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  4 AS col0 FROM t
2f500 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
2f510 2d 0d 0a 2d 32 35 0d 0a 2d 32 35 0d 0a 2d 32 35  -..-25..-25..-25
2f520 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2f530 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
2f540 6c 31 20 2b 20 2b 20 2d 20 37 32 20 41 53 20 63  l1 + + - 72 AS c
2f550 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
2f560 2d 2d 2d 0d 0a 2d 31 32 33 0d 0a 2d 31 33 39 0d  ---..-123..-139.
2f570 0a 2d 31 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49  .-149....query I
2f580 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2f590 20 41 4c 4c 20 32 31 20 2b 20 2d 20 35 31 20 2a   ALL 21 + - 51 *
2f5a0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
2f5b0 0a 2d 2d 2d 2d 0d 0a 2d 32 33 37 36 0d 0a 2d 34  .----..-2376..-4
2f5c0 38 39 0d 0a 2d 35 30 32 38 0d 0a 0d 0a 6f 6e 6c  89..-5028....onl
2f5d0 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
2f5e0 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
2f5f0 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
2f600 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2f610 31 30 33 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1030..SELECT ALL
2f620 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
2f630 52 45 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53  RE CAST( NULL AS
2f640 20 53 49 47 4e 45 44 20 29 20 2a 20 63 6f 6c 31   SIGNED ) * col1
2f650 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
2f660 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
2f670 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2f680 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
2f690 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33  owsort label-103
2f6a0 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  0..SELECT ALL * 
2f6b0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
2f6c0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
2f6d0 4e 54 45 47 45 52 20 29 20 2a 20 63 6f 6c 31 20  NTEGER ) * col1 
2f6e0 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
2f6f0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
2f700 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
2f710 31 20 2b 20 2b 20 37 36 20 41 53 20 63 6f 6c 32  1 + + 76 AS col2
2f720 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
2f730 20 28 20 2d 20 35 30 20 2b 20 2d 20 63 6f 6c 31   ( - 50 + - col1
2f740 20 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 63   ) NOT BETWEEN c
2f750 6f 6c 32 20 41 4e 44 20 36 36 0d 0a 2d 2d 2d 2d  ol2 AND 66..----
2f760 0d 0a 31 32 33 0d 0a 38 31 0d 0a 39 30 0d 0a 0d  ..123..81..90...
2f770 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2f780 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2f790 54 20 2b 20 38 36 20 2b 20 63 6f 6c 32 20 46 52  T + 86 + col2 FR
2f7a0 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20  OM tab1 WHERE ( 
2f7b0 2b 20 28 20 37 31 20 29 20 2a 20 2b 20 63 6f 6c  + ( 71 ) * + col
2f7c0 31 20 29 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63  1 ) NOT IN ( - c
2f7d0 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 34 35  ol0 )..----..145
2f7e0 0d 0a 31 35 34 0d 0a 31 38 32 0d 0a 0d 0a 71 75  ..154..182....qu
2f7f0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
2f800 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
2f810 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 3e  ab1 WHERE NULL >
2f820 3d 20 63 6f 6c 30 20 2a 20 38 33 0d 0a 2d 2d 2d  = col0 * 83..---
2f830 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
2f840 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
2f850 20 63 6f 6c 32 20 2a 20 2b 20 32 20 2b 20 63 6f   col2 * + 2 + co
2f860 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
2f870 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34 0d  tab2..----..144.
2f880 0a 31 39 31 0d 0a 39 32 0d 0a 0d 0a 6f 6e 6c 79  .191..92....only
2f890 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2f8a0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2f8b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2f8c0 61 62 65 6c 2d 31 30 33 35 0d 0a 53 45 4c 45 43  abel-1035..SELEC
2f8d0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55  T DISTINCT - COU
2f8e0 4e 54 28 20 2a 20 29 20 2a 20 2d 20 32 33 20 2b  NT( * ) * - 23 +
2f8f0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   - COUNT( * ) AS
2f900 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
2f910 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
2f920 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a  T NULL IS NULL..
2f930 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  ----..0....skipi
2f940 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2f950 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2f960 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2f970 31 30 33 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  1035..SELECT DIS
2f980 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28 20  TINCT - COUNT ( 
2f990 2a 20 29 20 2a 20 2d 20 32 33 20 2b 20 2d 20 43  * ) * - 23 + - C
2f9a0 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
2f9b0 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
2f9c0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
2f9d0 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL IS NULL..---
2f9e0 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..0....query I 
2f9f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2fa00 41 4c 4c 20 63 6f 6c 30 20 2b 20 33 30 20 2f 20  ALL col0 + 30 / 
2fa10 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  + col2 FROM tab1
2fa20 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
2fa30 4f 54 20 2d 20 63 6f 6c 31 20 2a 20 63 6f 6c 32  OT - col1 * col2
2fa40 20 4e 4f 54 20 49 4e 20 28 20 63 6f 6c 30 20 2a   NOT IN ( col0 *
2fa50 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d   + col0 )..----.
2fa60 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2fa70 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
2fa80 20 2d 20 28 20 33 34 20 29 20 2a 20 2d 20 33 31   - ( 34 ) * - 31
2fa90 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2faa0 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b0 AS cor0 CROSS
2fab0 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f   JOIN tab2 AS co
2fac0 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  r1..----..9 valu
2fad0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 36 62  es hashing to 6b
2fae0 35 39 31 31 62 31 65 66 31 66 63 36 64 61 30 63  5911b1ef1fc6da0c
2faf0 66 37 38 62 66 32 66 34 61 64 39 61 32 34 0d 0a  f78bf2f4ad9a24..
2fb00 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2fb10 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2fb20 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2fb30 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 38 0d  sort label-1038.
2fb40 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
2fb50 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31  T( * ) FROM tab1
2fb60 20 57 48 45 52 45 20 63 6f 6c 31 20 49 53 20 4e   WHERE col1 IS N
2fb70 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
2fb80 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2fb90 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2fba0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2fbb0 61 62 65 6c 2d 31 30 33 38 0d 0a 53 45 4c 45 43  abel-1038..SELEC
2fbc0 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20  T ALL COUNT ( * 
2fbd0 29 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  ) FROM tab1 WHER
2fbe0 45 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a  E col1 IS NULL..
2fbf0 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  ----..0....onlyi
2fc00 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2fc10 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2fc20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2fc30 62 65 6c 2d 31 30 33 39 0d 0a 53 45 4c 45 43 54  bel-1039..SELECT
2fc40 20 44 49 53 54 49 4e 43 54 20 2b 20 53 55 4d 28   DISTINCT + SUM(
2fc50 20 2d 20 37 31 20 29 20 46 52 4f 4d 20 74 61 62   - 71 ) FROM tab
2fc60 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 33 0d 0a 0d  1..----..-213...
2fc70 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2fc80 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2fc90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2fca0 6c 61 62 65 6c 2d 31 30 33 39 0d 0a 53 45 4c 45  label-1039..SELE
2fcb0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 53 55  CT DISTINCT + SU
2fcc0 4d 20 28 20 2d 20 37 31 20 29 20 46 52 4f 4d 20  M ( - 71 ) FROM 
2fcd0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 33  tab1..----..-213
2fce0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2fcf0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2fd00 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2fd10 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34  owsort label-104
2fd20 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32 31  0..SELECT ALL 21
2fd30 20 2b 20 2b 20 35 33 20 2d 20 2b 20 43 4f 55 4e   + + 53 - + COUN
2fd40 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32  T( * ) FROM tab2
2fd50 0d 0a 2d 2d 2d 2d 0d 0a 37 31 0d 0a 0d 0a 73 6b  ..----..71....sk
2fd60 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2fd70 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2fd80 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2fd90 65 6c 2d 31 30 34 30 0d 0a 53 45 4c 45 43 54 20  el-1040..SELECT 
2fda0 41 4c 4c 20 32 31 20 2b 20 2b 20 35 33 20 2d 20  ALL 21 + + 53 - 
2fdb0 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52  + COUNT ( * ) FR
2fdc0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 37  OM tab2..----..7
2fdd0 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
2fde0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
2fdf0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2fe00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2fe10 6c 61 62 65 6c 2d 31 30 34 31 0d 0a 53 45 4c 45  label-1041..SELE
2fe20 43 54 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20  CT DISTINCT ( - 
2fe30 39 30 20 29 20 44 49 56 20 2b 20 2d 20 63 6f 6c  90 ) DIV + - col
2fe40 31 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  1 + - col1 FROM 
2fe50 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
2fe60 2d 2d 0d 0a 2d 35 30 0d 0a 2d 36 36 0d 0a 2d 37  --..-50..-66..-7
2fe70 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
2fe80 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2fe90 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2fea0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34 31 0d 0a  ort label-1041..
2feb0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2fec0 28 20 2d 20 39 30 20 29 20 2f 20 2b 20 2d 20 63  ( - 90 ) / + - c
2fed0 6f 6c 31 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f  ol1 + - col1 FRO
2fee0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
2fef0 2d 2d 2d 2d 0d 0a 2d 35 30 0d 0a 2d 36 36 0d 0a  ----..-50..-66..
2ff00 2d 37 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  -76....query III
2ff10 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2ff20 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
2ff30 63 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c  cor0 WHERE + col
2ff40 31 20 42 45 54 57 45 45 4e 20 28 20 4e 55 4c 4c  1 BETWEEN ( NULL
2ff50 20 29 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d   ) AND NULL..---
2ff60 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
2ff70 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2ff80 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2ff90 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2ffa0 34 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  43..SELECT ALL +
2ffb0 20 32 34 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a   24 + + COUNT( *
2ffc0 20 29 20 2b 20 2d 20 28 20 28 20 34 36 20 29 20   ) + - ( ( 46 ) 
2ffd0 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
2ffe0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
2fff0 2d 0d 0a 2d 31 39 0d 0a 0d 0a 73 6b 69 70 69 66  -..-19....skipif
30000 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
30010 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
30020 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
30030 30 34 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  043..SELECT ALL 
30040 2b 20 32 34 20 2b 20 2b 20 43 4f 55 4e 54 20 28  + 24 + + COUNT (
30050 20 2a 20 29 20 2b 20 2d 20 28 20 28 20 34 36 20   * ) + - ( ( 46 
30060 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ) ) AS col0 FROM
30070 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
30080 2d 2d 2d 0d 0a 2d 31 39 0d 0a 0d 0a 71 75 65 72  ---..-19....quer
30090 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
300a0 45 43 54 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 63  ECT + - col0 + c
300b0 6f 6c 32 20 2d 20 2d 20 63 6f 6c 30 20 2a 20 2b  ol2 - - col0 * +
300c0 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
300d0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
300e0 0a 2d 2d 2d 2d 0d 0a 33 39 39 0d 0a 34 32 35 34  .----..399..4254
300f0 0d 0a 37 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..759....query I
30100 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
30110 20 2b 20 2d 20 28 20 2b 20 34 32 20 29 20 2b 20   + - ( + 42 ) + 
30120 2d 20 33 34 20 46 52 4f 4d 20 74 61 62 32 20 63  - 34 FROM tab2 c
30130 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 36 0d 0a  or0..----..-76..
30140 2d 37 36 0d 0a 2d 37 36 0d 0a 0d 0a 71 75 65 72  -76..-76....quer
30150 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
30160 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
30170 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
30180 72 30 20 57 48 45 52 45 20 2d 20 34 31 20 2a 20  r0 WHERE - 41 * 
30190 2d 20 63 6f 6c 30 20 2a 20 2d 20 31 30 20 49 53  - col0 * - 10 IS
301a0 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
301b0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
301c0 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33  g to c6c0a4111b3
301d0 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64  6d04dbc811a11e4d
301e0 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49  54cad....query I
301f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
30200 20 2d 20 39 20 2b 20 2d 20 63 6f 6c 32 20 41 53   - 9 + - col2 AS
30210 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
30220 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
30230 31 30 38 0d 0a 2d 31 39 0d 0a 2d 35 36 0d 0a 0d  108..-19..-56...
30240 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
30250 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
30260 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
30270 72 30 20 57 48 45 52 45 20 28 20 2b 20 33 36 20  r0 WHERE ( + 36 
30280 2f 20 63 6f 6c 30 20 2f 20 63 6f 6c 31 20 2b 20  / col0 / col1 + 
30290 2b 20 63 6f 6c 31 20 29 20 3c 3e 20 2d 20 63 6f  + col1 ) <> - co
302a0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  l0..----..9 valu
302b0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
302c0 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
302d0 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
302e0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
302f0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
30300 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..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 34 39 0d 0a 53 45 4c 45 43 54 20  el-1049..SELECT 
30330 41 4c 4c 20 2d 20 43 41 53 54 28 20 35 20 41 53  ALL - CAST( 5 AS
30340 20 53 49 47 4e 45 44 20 29 20 2d 20 28 20 2d 20   SIGNED ) - ( - 
30350 38 32 20 29 20 2b 20 2d 20 63 6f 6c 30 20 2a 20  82 ) + - col0 * 
30360 2d 20 32 33 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 23 AS col1 FRO
30370 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
30380 2d 2d 2d 2d 0d 0a 31 31 33 35 0d 0a 31 35 34 39  ----..1135..1549
30390 0d 0a 31 38 30 32 0d 0a 0d 0a 73 6b 69 70 69 66  ..1802....skipif
303a0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
303b0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
303c0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
303d0 30 34 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  049..SELECT ALL 
303e0 2d 20 43 41 53 54 20 28 20 35 20 41 53 20 49 4e  - CAST ( 5 AS IN
303f0 54 45 47 45 52 20 29 20 2d 20 28 20 2d 20 38 32  TEGER ) - ( - 82
30400 20 29 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2d 20   ) + - col0 * - 
30410 32 33 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  23 AS col1 FROM 
30420 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
30430 2d 2d 0d 0a 31 31 33 35 0d 0a 31 35 34 39 0d 0a  --..1135..1549..
30440 31 38 30 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  1802....onlyif m
30450 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
30460 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
30470 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
30480 2d 31 30 35 30 0d 0a 53 45 4c 45 43 54 20 43 4f  -1050..SELECT CO
30490 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  UNT( * ) AS col1
304a0 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
304b0 20 28 20 2b 20 63 6f 6c 32 20 29 20 49 53 20 4e   ( + col2 ) IS N
304c0 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33  OT NULL..----..3
304d0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
304e0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
304f0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
30500 72 74 20 6c 61 62 65 6c 2d 31 30 35 30 0d 0a 53  rt label-1050..S
30510 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  ELECT COUNT ( * 
30520 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
30530 61 62 31 20 57 48 45 52 45 20 28 20 2b 20 63 6f  ab1 WHERE ( + co
30540 6c 32 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  l2 ) IS NOT NULL
30550 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65  ..----..3....que
30560 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
30570 4c 45 43 54 20 41 4c 4c 20 2d 20 37 35 20 2a 20  LECT ALL - 75 * 
30580 2d 20 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 30 20  - - col0 * col0 
30590 2d 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c  - + col2 + + col
305a0 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  1 AS col0 FROM t
305b0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 35 31  ab1..----..-1951
305c0 35 37 0d 0a 2d 35 34 31 39 32 39 0d 0a 2d 36 32  57..-541929..-62
305d0 31 30 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  1096....onlyif m
305e0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
305f0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
30600 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
30610 2d 31 30 35 32 0d 0a 53 45 4c 45 43 54 20 44 49  -1052..SELECT DI
30620 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20  STINCT COUNT( * 
30630 29 20 2d 20 2d 20 36 32 20 41 53 20 63 6f 6c 30  ) - - 62 AS col0
30640 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
30650 0d 0a 36 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..65....skipif m
30660 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
30670 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
30680 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35  owsort label-105
30690 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  2..SELECT DISTIN
306a0 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d  CT COUNT ( * ) -
306b0 20 2d 20 36 32 20 41 53 20 63 6f 6c 30 20 46 52   - 62 AS col0 FR
306c0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36  OM tab1..----..6
306d0 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
306e0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
306f0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
30700 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
30710 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
30720 74 20 6c 61 62 65 6c 2d 31 30 35 33 0d 0a 53 45  t label-1053..SE
30730 4c 45 43 54 20 53 55 4d 28 20 63 6f 6c 31 20 29  LECT SUM( col1 )
30740 20 2a 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c   * + + CAST( NUL
30750 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
30760 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
30770 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
30780 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
30790 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
307a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
307b0 62 65 6c 2d 31 30 35 33 0d 0a 53 45 4c 45 43 54  bel-1053..SELECT
307c0 20 53 55 4d 20 28 20 63 6f 6c 31 20 29 20 2a 20   SUM ( col1 ) * 
307d0 2b 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + + CAST ( NULL 
307e0 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
307f0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col0 FROM tab2..
30800 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ----..NULL....qu
30810 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
30820 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
30830 20 2d 20 38 36 20 41 53 20 63 6f 6c 32 20 46 52   - 86 AS col2 FR
30840 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
30850 54 20 2d 20 33 32 20 49 53 20 4e 55 4c 4c 0d 0a  T - 32 IS NULL..
30860 2d 2d 2d 2d 0d 0a 2d 38 36 0d 0a 0d 0a 6f 6e 6c  ----..-86....onl
30870 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
30880 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
30890 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
308a0 6c 61 62 65 6c 2d 31 30 35 35 0d 0a 53 45 4c 45  label-1055..SELE
308b0 43 54 20 41 4c 4c 20 53 55 4d 28 20 2b 20 28 20  CT ALL SUM( + ( 
308c0 63 6f 6c 32 20 29 20 29 20 2a 20 36 35 20 46 52  col2 ) ) * 65 FR
308d0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
308e0 54 20 2d 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20  T - col2 IS NOT 
308f0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
30900 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
30910 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
30920 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
30930 72 74 20 6c 61 62 65 6c 2d 31 30 35 35 0d 0a 53  rt label-1055..S
30940 45 4c 45 43 54 20 41 4c 4c 20 53 55 4d 20 28 20  ELECT ALL SUM ( 
30950 2b 20 28 20 63 6f 6c 32 20 29 20 29 20 2a 20 36  + ( col2 ) ) * 6
30960 35 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  5 FROM tab2 WHER
30970 45 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 49 53 20  E NOT - col2 IS 
30980 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
30990 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49  NULL....query II
309a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
309b0 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48  T * FROM tab2 WH
309c0 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 49 53 20  ERE ( NULL ) IS 
309d0 4e 4f 54 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 63  NOT NULL AND + c
309e0 6f 6c 30 20 3e 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  ol0 > col2..----
309f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
30a00 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32  ort..SELECT col2
30a10 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
30a20 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 2b  b2 WHERE NOT - +
30a30 20 63 6f 6c 31 20 42 45 54 57 45 45 4e 20 63 6f   col1 BETWEEN co
30a40 6c 32 20 2a 20 2b 20 33 38 20 41 4e 44 20 63 6f  l2 * + 38 AND co
30a50 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34 30  l1..----..23..40
30a60 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..58....onlyif m
30a70 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
30a80 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
30a90 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79  ntax: DECIMAL ty
30aa0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
30ab0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 38  wsort label-1058
30ac0 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
30ad0 28 20 2a 20 29 20 2f 20 2d 20 2b 20 43 41 53 54  ( * ) / - + CAST
30ae0 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41  ( NULL AS DECIMA
30af0 4c 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  L ) AS col0 FROM
30b00 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
30b10 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
30b20 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
30b30 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
30b40 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
30b50 30 35 38 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  058..SELECT + CO
30b60 55 4e 54 20 28 20 2a 20 29 20 2f 20 2d 20 2b 20  UNT ( * ) / - + 
30b70 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52  CAST ( NULL AS R
30b80 45 41 4c 20 29 20 41 53 20 63 6f 6c 30 20 46 52  EAL ) AS col0 FR
30b90 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
30ba0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
30bb0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
30bc0 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
30bd0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
30be0 45 52 45 20 4e 4f 54 20 2d 20 35 37 20 49 53 20  ERE NOT - 57 IS 
30bf0 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
30c00 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
30c10 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
30c20 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
30c30 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
30c40 65 6c 2d 31 30 36 30 0d 0a 53 45 4c 45 43 54 20  el-1060..SELECT 
30c50 63 6f 6c 31 20 2a 20 2b 20 43 41 53 54 28 20 63  col1 * + CAST( c
30c60 6f 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol1 AS SIGNED ) 
30c70 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
30c80 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
30c90 0a 32 36 30 31 0d 0a 34 34 38 39 0d 0a 35 39 32  .2601..4489..592
30ca0 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
30cb0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
30cc0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
30cd0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 30 0d 0a  ort label-1060..
30ce0 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20  SELECT col1 * + 
30cf0 43 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20 49  CAST ( col1 AS I
30d00 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 30  NTEGER ) AS col0
30d10 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
30d20 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 30 31 0d 0a  r0..----..2601..
30d30 34 34 38 39 0d 0a 35 39 32 39 0d 0a 0d 0a 6f 6e  4489..5929....on
30d40 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
30d50 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
30d60 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
30d70 20 6c 61 62 65 6c 2d 31 30 36 31 0d 0a 53 45 4c   label-1061..SEL
30d80 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
30d90 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 43 4f  OUNT( * ) * + CO
30da0 55 4e 54 28 20 2a 20 29 20 2b 20 39 34 20 41 53  UNT( * ) + 94 AS
30db0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
30dc0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
30dd0 30 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  03....skipif mys
30de0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
30df0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
30e00 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 31 0d  sort label-1061.
30e10 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
30e20 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   + COUNT ( * ) *
30e30 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b   + COUNT ( * ) +
30e40 20 39 34 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   94 AS col0 FROM
30e50 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
30e60 2d 2d 2d 0d 0a 31 30 33 0d 0a 0d 0a 6f 6e 6c 79  ---..103....only
30e70 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
30e80 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
30e90 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
30ea0 61 62 65 6c 2d 31 30 36 32 0d 0a 53 45 4c 45 43  abel-1062..SELEC
30eb0 54 20 2d 20 43 4f 55 4e 54 28 20 30 20 29 20 46  T - COUNT( 0 ) F
30ec0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
30ed0 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
30ee0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
30ef0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
30f00 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 32 0d  sort label-1062.
30f10 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20  .SELECT - COUNT 
30f20 28 20 30 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  ( 0 ) FROM tab0.
30f30 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65  .----..-3....que
30f40 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
30f50 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
30f60 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
30f70 45 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 2d  E NULL BETWEEN -
30f80 20 2d 20 63 6f 6c 32 20 41 4e 44 20 4e 55 4c 4c   - col2 AND NULL
30f90 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
30fa0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
30fb0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
30fc0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
30fd0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 34 0d  sort label-1064.
30fe0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41  .SELECT ALL + CA
30ff0 53 54 28 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20  ST( + + col2 AS 
31000 53 49 47 4e 45 44 20 29 20 2a 20 2b 20 63 6f 6c  SIGNED ) * + col
31010 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
31020 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
31030 2d 0d 0a 33 34 38 31 0d 0a 34 36 32 34 0d 0a 39  -..3481..4624..9
31040 32 31 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  216....skipif my
31050 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
31060 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
31070 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 34  wsort label-1064
31080 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
31090 41 53 54 20 28 20 2b 20 2b 20 63 6f 6c 32 20 41  AST ( + + col2 A
310a0 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b 20  S INTEGER ) * + 
310b0 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
310c0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
310d0 2d 2d 2d 2d 0d 0a 33 34 38 31 0d 0a 34 36 32 34  ----..3481..4624
310e0 0d 0a 39 32 31 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..9216....onlyif
310f0 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
31100 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
31110 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
31120 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 35 0d  sort label-1065.
31130 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 44  .SELECT - col0 D
31140 49 56 20 2b 20 33 37 20 46 52 4f 4d 20 74 61 62  IV + 37 FROM tab
31150 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
31160 0a 2d 31 0d 0a 2d 32 0d 0a 2d 32 0d 0a 0d 0a 73  .-1..-2..-2....s
31170 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
31180 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
31190 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
311a0 62 65 6c 2d 31 30 36 35 0d 0a 53 45 4c 45 43 54  bel-1065..SELECT
311b0 20 2d 20 63 6f 6c 30 20 2f 20 2b 20 33 37 20 46   - col0 / + 37 F
311c0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
311d0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32 0d 0a  ..----..-1..-2..
311e0 2d 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -2....query I ro
311f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
31200 53 54 49 4e 43 54 20 2d 20 32 36 20 2b 20 63 6f  STINCT - 26 + co
31210 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
31220 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
31230 2d 2d 0d 0a 2d 31 32 0d 0a 2d 32 31 0d 0a 32 31  --..-12..-21..21
31240 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
31250 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
31260 49 4e 43 54 20 2b 20 31 30 20 2a 20 2b 20 38 38  INCT + 10 * + 88
31270 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
31280 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31  WHERE NOT + col1
31290 20 3c 3e 20 63 6f 6c 32 20 2f 20 63 6f 6c 31 0d   <> col2 / col1.
312a0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
312b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
312c0 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 34 39 20 41   + col2 * + 49 A
312d0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
312e0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
312f0 32 38 39 31 0d 0a 33 33 33 32 0d 0a 34 37 30 34  2891..3332..4704
31300 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
31310 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
31320 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53  L * FROM tab2 AS
31330 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
31340 2b 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 63 6f 6c  + col2 + + - col
31350 32 20 2f 20 39 30 20 3d 20 4e 55 4c 4c 0d 0a 2d  2 / 90 = NULL..-
31360 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
31370 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
31380 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
31390 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
313a0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
313b0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 30 0d 0a  ort label-1070..
313c0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 43  SELECT ALL + - C
313d0 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
313e0 4e 45 44 20 29 20 2a 20 2d 20 2b 20 32 31 20 2a  NED ) * - + 21 *
313f0 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   + COUNT( * ) AS
31400 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
31410 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
31420 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
31430 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
31440 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
31450 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 30  wsort label-1070
31460 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
31470 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
31480 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 2b 20  INTEGER ) * - + 
31490 32 31 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a  21 * + COUNT ( *
314a0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
314b0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
314c0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  --..NULL....only
314d0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
314e0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
314f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
31500 61 62 65 6c 2d 31 30 37 31 0d 0a 53 45 4c 45 43  abel-1071..SELEC
31510 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  T + COUNT( * ) *
31520 20 2d 20 35 30 20 41 53 20 63 6f 6c 30 20 46 52   - 50 AS col0 FR
31530 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
31540 0a 2d 2d 2d 2d 0d 0a 2d 31 35 30 0d 0a 0d 0a 73  .----..-150....s
31550 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
31560 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
31570 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
31580 62 65 6c 2d 31 30 37 31 0d 0a 53 45 4c 45 43 54  bel-1071..SELECT
31590 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   + COUNT ( * ) *
315a0 20 2d 20 35 30 20 41 53 20 63 6f 6c 30 20 46 52   - 50 AS col0 FR
315b0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
315c0 0a 2d 2d 2d 2d 0d 0a 2d 31 35 30 0d 0a 0d 0a 6f  .----..-150....o
315d0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
315e0 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d  ST syntax: DECIM
315f0 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  AL type: ..query
31600 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
31610 6c 2d 31 30 37 32 0d 0a 53 45 4c 45 43 54 20 63  l-1072..SELECT c
31620 6f 6c 32 2c 20 2d 20 43 41 53 54 28 20 4e 55 4c  ol2, - CAST( NUL
31630 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2b  L AS DECIMAL ) +
31640 20 2b 20 34 32 20 2d 20 2b 20 2b 20 63 6f 6c 31   + 42 - + + col1
31650 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
31660 0d 0a 35 39 0d 0a 4e 55 4c 4c 0d 0a 36 38 0d 0a  ..59..NULL..68..
31670 4e 55 4c 4c 0d 0a 39 36 0d 0a 4e 55 4c 4c 0d 0a  NULL..96..NULL..
31680 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
31690 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
316a0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
316b0 74 20 6c 61 62 65 6c 2d 31 30 37 32 0d 0a 53 45  t label-1072..SE
316c0 4c 45 43 54 20 63 6f 6c 32 2c 20 2d 20 43 41 53  LECT col2, - CAS
316d0 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c  T ( NULL AS REAL
316e0 20 29 20 2b 20 2b 20 34 32 20 2d 20 2b 20 2b 20   ) + + 42 - + + 
316f0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
31700 2d 2d 2d 2d 0d 0a 35 39 0d 0a 4e 55 4c 4c 0d 0a  ----..59..NULL..
31710 36 38 0d 0a 4e 55 4c 4c 0d 0a 39 36 0d 0a 4e 55  68..NULL..96..NU
31720 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  LL....skipif pos
31730 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
31740 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
31750 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
31760 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
31770 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
31780 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
31790 2b 20 63 6f 6c 31 20 2a 20 2d 20 31 33 20 63 6f  + col1 * - 13 co
317a0 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
317b0 2d 2d 0d 0a 2d 31 30 30 31 0d 0a 2d 36 36 33 0d  --..-1001..-663.
317c0 0a 2d 38 37 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .-871....onlyif 
317d0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
317e0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
317f0 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
31800 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 34  wsort label-1074
31810 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
31820 74 61 62 31 20 57 48 45 52 45 20 28 20 2d 20 2d  tab1 WHERE ( - -
31830 20 36 37 20 2b 20 2d 20 2b 20 43 41 53 54 28 20   67 + - + CAST( 
31840 2b 20 63 6f 6c 31 20 41 53 20 53 49 47 4e 45 44  + col1 AS SIGNED
31850 20 29 20 29 20 3c 3d 20 2d 20 63 6f 6c 32 0d 0a   ) ) <= - col2..
31860 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ----....skipif m
31870 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
31880 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49  tible..query III
31890 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
318a0 30 37 34 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  074..SELECT * FR
318b0 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20  OM tab1 WHERE ( 
318c0 2d 20 2d 20 36 37 20 2b 20 2d 20 2b 20 43 41 53  - - 67 + - + CAS
318d0 54 20 28 20 2b 20 63 6f 6c 31 20 41 53 20 49 4e  T ( + col1 AS IN
318e0 54 45 47 45 52 20 29 20 29 20 3c 3d 20 2d 20 63  TEGER ) ) <= - c
318f0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ol2..----....onl
31900 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
31910 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
31920 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
31930 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31940 31 30 37 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1075..SELECT ALL
31950 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
31960 52 45 20 28 20 4e 55 4c 4c 20 29 20 49 4e 20 28  RE ( NULL ) IN (
31970 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
31980 20 53 49 47 4e 45 44 20 29 20 29 0d 0a 2d 2d 2d   SIGNED ) )..---
31990 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
319a0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
319b0 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  le..query III ro
319c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 35  wsort label-1075
319d0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
319e0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28  ROM tab1 WHERE (
319f0 20 4e 55 4c 4c 20 29 20 49 4e 20 28 20 2b 20 43   NULL ) IN ( + C
31a00 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
31a10 54 45 47 45 52 20 29 20 29 0d 0a 2d 2d 2d 2d 0d  TEGER ) )..----.
31a20 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
31a30 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 38 34 20  sort..SELECT 84 
31a40 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31  + + col2 AS col1
31a50 2c 20 39 39 20 2b 20 2b 20 2d 20 63 6f 6c 31 2c  , 99 + + - col1,
31a60 20 2d 20 2d 20 31 34 20 41 53 20 63 6f 6c 30 20   - - 14 AS col0 
31a70 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
31a80 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
31a90 67 20 74 6f 20 34 37 34 62 61 33 36 38 66 64 37  g to 474ba368fd7
31aa0 35 35 35 33 61 66 61 39 35 36 66 31 34 36 66 38  5553afa956f146f8
31ab0 61 36 32 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49  a6253....query I
31ac0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
31ad0 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
31ae0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 55  OM tab2 WHERE NU
31af0 4c 4c 20 3d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  LL = col1..----.
31b00 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
31b10 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
31b20 4e 43 54 20 2b 20 39 32 20 2a 20 2b 20 2d 20 63  NCT + 92 * + - c
31b30 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32 20 2b 20 2b  ol2 * + col2 + +
31b40 20 34 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53   49 FROM tab2 AS
31b50 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34   cor0..----..-14
31b60 37 31 35 31 0d 0a 2d 33 30 39 34 33 39 0d 0a 2d  7151..-309439..-
31b70 34 38 36 31 39 0d 0a 0d 0a 71 75 65 72 79 20 49  48619....query I
31b80 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
31b90 20 2b 20 28 20 38 39 20 29 20 2a 20 2b 20 63 6f   + ( 89 ) * + co
31ba0 6c 32 20 2b 20 2d 20 63 6f 6c 30 20 2d 20 2b 20  l2 + - col0 - + 
31bb0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col0 FROM tab2..
31bc0 2d 2d 2d 2d 0d 0a 31 39 35 35 0d 0a 33 34 33 32  ----..1955..3432
31bd0 0d 0a 35 30 31 32 0d 0a 0d 0a 71 75 65 72 79 20  ..5012....query 
31be0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31bf0 54 20 2d 20 31 35 20 2b 20 2b 20 2d 20 33 38 20  T - 15 + + - 38 
31c00 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
31c10 32 20 57 48 45 52 45 20 28 20 33 31 20 29 20 4e  2 WHERE ( 31 ) N
31c20 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20  OT BETWEEN NULL 
31c30 41 4e 44 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  AND + col2..----
31c40 0d 0a 2d 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-53....query I
31c50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31c60 54 20 2b 20 32 31 20 2d 20 63 6f 6c 30 2c 20 2b  T + 21 - col0, +
31c70 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
31c80 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
31c90 57 48 45 52 45 20 2b 20 36 35 20 4e 4f 54 20 49  WHERE + 65 NOT I
31ca0 4e 20 28 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d  N ( + col2 )..--
31cb0 2d 2d 0d 0a 2d 33 30 0d 0a 35 31 0d 0a 2d 36 34  --..-30..51..-64
31cc0 0d 0a 38 35 0d 0a 2d 37 30 0d 0a 39 31 0d 0a 0d  ..85..-70..91...
31cd0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
31ce0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
31cf0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
31d00 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
31d10 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
31d20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31d30 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
31d40 30 20 2d 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 36  0 - - col2 * - 6
31d50 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  0 col0 FROM tab1
31d60 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34   cor0..----..-34
31d70 35 35 0d 0a 2d 33 39 38 39 0d 0a 2d 35 37 30 39  55..-3989..-5709
31d80 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
31d90 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
31da0 28 20 2d 20 63 6f 6c 31 20 29 20 2d 20 2b 20 63  ( - col1 ) - + c
31db0 6f 6c 31 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 2a  ol1 * + + col1 *
31dc0 20 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   - - col1 FROM t
31dd0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
31de0 2d 0d 0a 2d 31 30 33 38 37 30 0d 0a 2d 31 33 30  -..-103870..-130
31df0 0d 0a 2d 32 37 35 38 0d 0a 0d 0a 71 75 65 72 79  ..-2758....query
31e00 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
31e10 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20  CT DISTINCT - ( 
31e20 2b 20 2d 20 32 34 20 29 20 46 52 4f 4d 20 74 61  + - 24 ) FROM ta
31e30 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
31e40 0d 0a 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..24....query II
31e50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31e60 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
31e70 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
31e80 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 28 20  NULL NOT IN ( ( 
31e90 2d 20 63 6f 6c 32 20 29 2c 20 2b 20 63 6f 6c 30  - col2 ), + col0
31ea0 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 31 32   - - col2 + - 12
31eb0 20 2b 20 37 34 20 2a 20 63 6f 6c 32 20 2a 20 2d   + 74 * col2 * -
31ec0 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col0 )..----...
31ed0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
31ee0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
31ef0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
31f00 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 36 0d 0a  ort label-1086..
31f10 53 45 4c 45 43 54 20 2d 20 28 20 2d 20 4d 49 4e  SELECT - ( - MIN
31f20 28 20 2d 20 63 6f 6c 31 20 29 20 29 20 63 6f 6c  ( - col1 ) ) col
31f30 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
31f40 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37 0d 0a  or0..----..-47..
31f50 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
31f60 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
31f70 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
31f80 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
31f90 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
31fa0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
31fb0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
31fc0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31fd0 31 30 38 36 0d 0a 53 45 4c 45 43 54 20 2d 20 28  1086..SELECT - (
31fe0 20 2d 20 4d 49 4e 20 28 20 2d 20 63 6f 6c 31 20   - MIN ( - col1 
31ff0 29 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ) ) col0 FROM ta
32000 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
32010 0d 0a 2d 34 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-47....onlyif 
32020 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
32030 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
32040 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
32050 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 37 0d  sort label-1087.
32060 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2a  .SELECT - col2 *
32070 20 2b 20 63 6f 6c 32 20 63 6f 6c 30 2c 20 63 6f   + col2 col0, co
32080 6c 30 20 2d 20 2b 20 2d 20 63 6f 6c 32 20 44 49  l0 - + - col2 DI
32090 56 20 2d 20 36 38 20 41 53 20 63 6f 6c 31 20 46  V - 68 AS col1 F
320a0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
320b0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 38 31 0d 0a 38  ..----..-3481..8
320c0 35 0d 0a 2d 34 36 32 34 0d 0a 39 30 0d 0a 2d 39  5..-4624..90..-9
320d0 32 31 36 0d 0a 35 30 0d 0a 0d 0a 73 6b 69 70 69  216..50....skipi
320e0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
320f0 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
32100 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
32110 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
32120 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
32130 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
32140 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
32150 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 37 0d 0a  ort label-1087..
32160 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2a 20  SELECT - col2 * 
32170 2b 20 63 6f 6c 32 20 63 6f 6c 30 2c 20 63 6f 6c  + col2 col0, col
32180 30 20 2d 20 2b 20 2d 20 63 6f 6c 32 20 2f 20 2d  0 - + - col2 / -
32190 20 36 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   68 AS col1 FROM
321a0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
321b0 2d 2d 2d 0d 0a 2d 33 34 38 31 0d 0a 38 35 0d 0a  ---..-3481..85..
321c0 2d 34 36 32 34 0d 0a 39 30 0d 0a 2d 39 32 31 36  -4624..90..-9216
321d0 0d 0a 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..50....query I 
321e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
321f0 2d 20 63 6f 6c 31 20 2a 20 2b 20 2d 20 34 30 20  - col1 * + - 40 
32200 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
32210 32 0d 0a 2d 2d 2d 2d 0d 0a 32 30 34 30 0d 0a 32  2..----..2040..2
32220 36 38 30 0d 0a 33 30 38 30 0d 0a 0d 0a 71 75 65  680..3080....que
32230 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32240 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28 20  LECT DISTINCT ( 
32250 2b 20 32 33 20 29 20 2a 20 2d 20 63 6f 6c 31 20  + 23 ) * - col1 
32260 2a 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  * + col0 FROM ta
32270 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 34 32 32  b1..----..-16422
32280 0d 0a 2d 39 37 37 35 0d 0a 2d 39 38 33 37 31 0d  ..-9775..-98371.
32290 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
322a0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 31 37 20  rt..SELECT + 17 
322b0 2a 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31  * + col2 AS col1
322c0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
322d0 0d 0a 33 39 31 0d 0a 36 38 30 0d 0a 39 38 36 0d  ..391..680..986.
322e0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
322f0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
32300 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
32310 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
32320 62 65 6c 2d 31 30 39 31 0d 0a 53 45 4c 45 43 54  bel-1091..SELECT
32330 20 41 4c 4c 20 2b 20 43 41 53 54 28 20 4e 55 4c   ALL + CAST( NUL
32340 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  L AS SIGNED ) * 
32350 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c 30 20 2a 20  + col0 * col0 * 
32360 2b 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32  + - col0 AS col2
32370 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
32380 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
32390 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
323a0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
323b0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
323c0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 31 0d  sort label-1091.
323d0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41  .SELECT ALL + CA
323e0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
323f0 45 47 45 52 20 29 20 2a 20 2b 20 63 6f 6c 30 20  EGER ) * + col0 
32400 2a 20 63 6f 6c 30 20 2a 20 2b 20 2d 20 63 6f 6c  * col0 * + - col
32410 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
32420 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
32430 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .NULL..NULL....o
32440 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
32450 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
32460 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
32470 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
32480 31 30 39 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1092..SELECT ALL
32490 20 2b 20 39 36 20 44 49 56 20 2d 20 63 6f 6c 30   + 96 DIV - col0
324a0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
324b0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 36  b0..----..-1..-6
324c0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
324d0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
324e0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
324f0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 32  wsort label-1092
32500 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 39  ..SELECT ALL + 9
32510 36 20 2f 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f  6 / - col0 AS co
32520 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
32530 2d 2d 0d 0a 2d 31 0d 0a 2d 36 0d 0a 30 0d 0a 0d  --..-1..-6..0...
32540 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32550 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20  ..SELECT col0 * 
32560 2b 20 28 20 36 37 20 29 20 41 53 20 63 6f 6c 30  + ( 67 ) AS col0
32570 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
32580 0d 0a 33 30 38 32 0d 0a 34 32 38 38 0d 0a 35 30  ..3082..4288..50
32590 32 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  25....onlyif mys
325a0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
325b0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
325c0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
325d0 31 30 39 34 0d 0a 53 45 4c 45 43 54 20 39 39 20  1094..SELECT 99 
325e0 41 53 20 63 6f 6c 31 2c 20 31 39 20 2a 20 2b 20  AS col1, 19 * + 
325f0 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c  - COUNT( * ) col
32600 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
32610 2d 0d 0a 39 39 0d 0a 2d 35 37 0d 0a 0d 0a 73 6b  -..99..-57....sk
32620 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
32630 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
32640 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
32650 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
32660 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
32670 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
32680 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
32690 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39  owsort label-109
326a0 34 0d 0a 53 45 4c 45 43 54 20 39 39 20 41 53 20  4..SELECT 99 AS 
326b0 63 6f 6c 31 2c 20 31 39 20 2a 20 2b 20 2d 20 43  col1, 19 * + - C
326c0 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 30 20  OUNT ( * ) col0 
326d0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
326e0 0a 39 39 0d 0a 2d 35 37 0d 0a 0d 0a 71 75 65 72  .99..-57....quer
326f0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
32700 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20  LECT ALL + col2 
32710 41 53 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 30 20  AS col0, - col0 
32720 2d 20 28 20 63 6f 6c 30 20 29 20 41 53 20 63 6f  - ( col0 ) AS co
32730 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
32740 2d 2d 0d 0a 31 30 0d 0a 2d 31 37 34 0d 0a 34 37  --..10..-174..47
32750 0d 0a 2d 33 30 0d 0a 39 39 0d 0a 2d 31 39 34 0d  ..-30..99..-194.
32760 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
32770 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
32780 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
32790 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
327a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
327b0 6c 61 62 65 6c 2d 31 30 39 36 0d 0a 53 45 4c 45  label-1096..SELE
327c0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 53 55  CT DISTINCT - SU
327d0 4d 28 20 41 4c 4c 20 43 41 53 54 28 20 2b 20 2b  M( ALL CAST( + +
327e0 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20   col2 AS SIGNED 
327f0 29 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ) ) FROM tab1..-
32800 2d 2d 2d 0d 0a 2d 32 32 33 0d 0a 0d 0a 73 6b 69  ---..-223....ski
32810 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
32820 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
32830 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
32840 6c 2d 31 30 39 36 0d 0a 53 45 4c 45 43 54 20 44  l-1096..SELECT D
32850 49 53 54 49 4e 43 54 20 2d 20 53 55 4d 20 28 20  ISTINCT - SUM ( 
32860 41 4c 4c 20 43 41 53 54 20 28 20 2b 20 2b 20 63  ALL CAST ( + + c
32870 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol2 AS INTEGER )
32880 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d   ) FROM tab1..--
32890 2d 2d 0d 0a 2d 32 32 33 0d 0a 0d 0a 71 75 65 72  --..-223....quer
328a0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
328b0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
328c0 31 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32  1 WHERE NOT col2
328d0 20 49 4e 20 28 20 2d 20 63 6f 6c 32 20 2b 20 2d   IN ( - col2 + -
328e0 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 37 33   + col1 + + - 73
328f0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75   )..----..9 valu
32900 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36  es hashing to c6
32910 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63  c0a4111b36d04dbc
32920 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a  811a11e4d54cad..
32930 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
32940 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
32950 20 2b 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c 32 20   + col2, + col2 
32960 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
32970 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 31 30 0d 0a 2d  ----..-10..10..-
32980 34 37 0d 0a 34 37 0d 0a 2d 39 39 0d 0a 39 39 0d  47..47..-99..99.
32990 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
329a0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
329b0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
329c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 39  wsort label-1099
329d0 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f 55  ..SELECT + + COU
329e0 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2d 20 39 39  NT( * ) * + - 99
329f0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
32a00 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
32a10 0d 0a 2d 32 39 37 0d 0a 0d 0a 73 6b 69 70 69 66  ..-297....skipif
32a20 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
32a30 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
32a40 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
32a50 30 39 39 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  099..SELECT + + 
32a60 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20  COUNT ( * ) * + 
32a70 2d 20 39 39 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 99 AS col1 FRO
32a80 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
32a90 2d 2d 2d 2d 0d 0a 2d 32 39 37 0d 0a 0d 0a 6f 6e  ----..-297....on
32aa0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
32ab0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
32ac0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32ad0 20 6c 61 62 65 6c 2d 31 31 30 30 0d 0a 53 45 4c   label-1100..SEL
32ae0 45 43 54 20 2d 20 2d 20 53 55 4d 28 20 44 49 53  ECT - - SUM( DIS
32af0 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 32 20 29  TINCT - - col2 )
32b00 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
32b10 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
32b20 0d 0a 31 32 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..121....skipif 
32b30 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
32b40 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
32b50 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
32b60 30 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 53  00..SELECT - - S
32b70 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20  UM ( DISTINCT - 
32b80 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32  - col2 ) AS col2
32b90 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
32ba0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 31 0d 0a 0d  r0..----..121...
32bb0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
32bc0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
32bd0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44  regate syntax: D
32be0 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71  ECIMAL type: ..q
32bf0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
32c00 61 62 65 6c 2d 31 31 30 31 0d 0a 53 45 4c 45 43  abel-1101..SELEC
32c10 54 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20  T MIN( DISTINCT 
32c20 2d 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  - + CAST( NULL A
32c30 53 20 44 45 43 49 4d 41 4c 20 29 20 29 20 41 53  S DECIMAL ) ) AS
32c40 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
32c50 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
32c60 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
32c70 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
32c80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
32c90 62 65 6c 2d 31 31 30 31 0d 0a 53 45 4c 45 43 54  bel-1101..SELECT
32ca0 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20   MIN ( DISTINCT 
32cb0 2d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  - + CAST ( NULL 
32cc0 41 53 20 52 45 41 4c 20 29 20 29 20 41 53 20 63  AS REAL ) ) AS c
32cd0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
32ce0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ---..NULL....que
32cf0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
32d00 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
32d10 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 2b  b0 WHERE NOT + +
32d20 20 37 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   70 IS NOT NULL.
32d30 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
32d40 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
32d50 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31   DISTINCT + col1
32d60 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 2d 20   + - col2 * - - 
32d70 63 6f 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 30 20  col1 * + - col0 
32d80 2a 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 36 37 20  * + col2 + - 67 
32d90 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
32da0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 37 39 33 36 33  0..----..1479363
32db0 0d 0a 31 39 37 37 36 38 32 38 0d 0a 36 35 38 30  ..19776828..6580
32dc0 31 37 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  171....onlyif my
32dd0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
32de0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
32df0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
32e00 74 20 6c 61 62 65 6c 2d 31 31 30 34 0d 0a 53 45  t label-1104..SE
32e10 4c 45 43 54 20 2d 20 2b 20 43 41 53 54 28 20 4e  LECT - + CAST( N
32e20 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
32e30 2b 20 41 56 47 20 28 20 63 6f 6c 32 20 29 20 46  + AVG ( col2 ) F
32e40 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
32e50 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
32e60 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
32e70 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
32e80 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
32e90 61 62 65 6c 2d 31 31 30 34 0d 0a 53 45 4c 45 43  abel-1104..SELEC
32ea0 54 20 2d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  T - + CAST ( NUL
32eb0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b  L AS INTEGER ) +
32ec0 20 41 56 47 20 28 20 63 6f 6c 32 20 29 20 46 52   AVG ( col2 ) FR
32ed0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
32ee0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
32ef0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
32f00 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
32f10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
32f20 74 20 6c 61 62 65 6c 2d 31 31 30 35 0d 0a 53 45  t label-1105..SE
32f30 4c 45 43 54 20 2b 20 2d 20 43 4f 55 4e 54 28 20  LECT + - COUNT( 
32f40 2a 20 29 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a  * ) + + COUNT( *
32f50 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
32f60 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
32f70 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
32f80 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
32f90 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
32fa0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
32fb0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
32fc0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
32fd0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
32fe0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
32ff0 62 65 6c 2d 31 31 30 35 0d 0a 53 45 4c 45 43 54  bel-1105..SELECT
33000 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   + - COUNT ( * )
33010 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
33020 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
33030 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor0..----..0
33040 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
33050 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
33060 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  L * FROM tab2 co
33070 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
33080 4c 20 49 4e 20 28 20 63 6f 6c 30 20 2d 20 63 6f  L IN ( col0 - co
33090 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  l2 )..----....on
330a0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
330b0 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
330c0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
330d0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
330e0 31 31 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  1107..SELECT DIS
330f0 54 49 4e 43 54 20 2d 20 43 41 53 54 28 20 4e 55  TINCT - CAST( NU
33100 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 2c 20  LL AS SIGNED ), 
33110 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  + col2 FROM tab1
33120 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 35 39  ..----..NULL..59
33130 0d 0a 4e 55 4c 4c 0d 0a 36 38 0d 0a 4e 55 4c 4c  ..NULL..68..NULL
33140 0d 0a 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..96....skipif m
33150 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
33160 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
33170 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
33180 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  07..SELECT DISTI
33190 4e 43 54 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  NCT - CAST ( NUL
331a0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 2c 20  L AS INTEGER ), 
331b0 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  + col2 FROM tab1
331c0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 35 39  ..----..NULL..59
331d0 0d 0a 4e 55 4c 4c 0d 0a 36 38 0d 0a 4e 55 4c 4c  ..NULL..68..NULL
331e0 0d 0a 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..96....onlyif m
331f0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
33200 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
33210 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
33220 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
33230 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
33240 65 6c 2d 31 31 30 38 0d 0a 53 45 4c 45 43 54 20  el-1108..SELECT 
33250 41 4c 4c 20 2d 20 63 6f 6c 30 20 44 49 56 20 2d  ALL - col0 DIV -
33260 20 43 41 53 54 28 20 31 32 20 41 53 20 53 49 47   CAST( 12 AS SIG
33270 4e 45 44 20 29 20 2b 20 2b 20 63 6f 6c 30 20 46  NED ) + + col0 F
33280 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
33290 31 30 35 0d 0a 31 36 0d 0a 39 34 0d 0a 0d 0a 73  105..16..94....s
332a0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
332b0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
332c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
332d0 62 65 6c 2d 31 31 30 38 0d 0a 53 45 4c 45 43 54  bel-1108..SELECT
332e0 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 2f 20 2d 20   ALL - col0 / - 
332f0 43 41 53 54 20 28 20 31 32 20 41 53 20 49 4e 54  CAST ( 12 AS INT
33300 45 47 45 52 20 29 20 2b 20 2b 20 63 6f 6c 30 20  EGER ) + + col0 
33310 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
33320 0a 31 30 35 0d 0a 31 36 0d 0a 39 34 0d 0a 0d 0a  .105..16..94....
33330 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
33340 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
33350 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
33360 72 74 20 6c 61 62 65 6c 2d 31 31 30 39 0d 0a 53  rt label-1109..S
33370 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28  ELECT ALL COUNT(
33380 20 44 49 53 54 49 4e 43 54 20 31 39 20 29 20 41   DISTINCT 19 ) A
33390 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
333a0 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69  ..----..1....ski
333b0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
333c0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
333d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
333e0 6c 2d 31 31 30 39 0d 0a 53 45 4c 45 43 54 20 41  l-1109..SELECT A
333f0 4c 4c 20 43 4f 55 4e 54 20 28 20 44 49 53 54 49  LL COUNT ( DISTI
33400 4e 43 54 20 31 39 20 29 20 41 53 20 63 6f 6c 32  NCT 19 ) AS col2
33410 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
33420 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..1....query I r
33430 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
33440 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2a 20 63  ISTINCT col2 * c
33450 6f 6c 30 20 2a 20 33 20 2a 20 2d 20 2b 20 63 6f  ol0 * 3 * - + co
33460 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
33470 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 31  tab0..----..-261
33480 30 30 0d 0a 2d 32 38 35 32 30 39 31 0d 0a 2d 39  00..-2852091..-9
33490 39 34 30 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  9405....query I 
334a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
334b0 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 2a 20  DISTINCT col1 * 
334c0 2b 20 32 34 20 2b 20 2d 20 63 6f 6c 32 20 41 53  + 24 + - col2 AS
334d0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
334e0 0a 2d 2d 2d 2d 0d 0a 31 32 30 31 0d 0a 31 35 35  .----..1201..155
334f0 30 0d 0a 31 38 30 38 0d 0a 0d 0a 71 75 65 72 79  0..1808....query
33500 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
33510 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32  CT DISTINCT col2
33520 20 2a 20 33 37 20 46 52 4f 4d 20 74 61 62 32 0d   * 37 FROM tab2.
33530 0a 2d 2d 2d 2d 0d 0a 31 34 38 30 0d 0a 32 31 34  .----..1480..214
33540 36 0d 0a 38 35 31 0d 0a 0d 0a 73 6b 69 70 69 66  6..851....skipif
33550 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
33560 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
33570 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
33580 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
33590 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
335a0 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20  rt..SELECT col2 
335b0 2a 20 2b 20 2d 20 39 36 20 63 6f 6c 30 20 46 52  * + - 96 col0 FR
335c0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
335d0 0a 2d 2d 2d 2d 0d 0a 2d 32 32 30 38 0d 0a 2d 33  .----..-2208..-3
335e0 38 34 30 0d 0a 2d 35 35 36 38 0d 0a 0d 0a 71 75  840..-5568....qu
335f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
33600 45 4c 45 43 54 20 2b 20 35 32 20 41 53 20 63 6f  ELECT + 52 AS co
33610 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
33620 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
33630 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
33640 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
33650 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
33660 20 2b 20 37 37 20 46 52 4f 4d 20 74 61 62 32 20   + 77 FROM tab2 
33670 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
33680 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
33690 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
336a0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
336b0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
336c0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
336d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
336e0 74 20 6c 61 62 65 6c 2d 31 31 31 36 0d 0a 53 45  t label-1116..SE
336f0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
33700 4d 49 4e 28 20 2b 20 43 41 53 54 28 20 4e 55 4c  MIN( + CAST( NUL
33710 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 29 20  L AS SIGNED ) ) 
33720 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
33730 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
33740 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
33750 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
33760 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
33770 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
33780 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  16..SELECT DISTI
33790 4e 43 54 20 2d 20 4d 49 4e 20 28 20 2b 20 43 41  NCT - MIN ( + CA
337a0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
337b0 45 47 45 52 20 29 20 29 20 41 53 20 63 6f 6c 30  EGER ) ) AS col0
337c0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
337d0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
337e0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
337f0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
33800 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
33810 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 37 0d  sort label-1117.
33820 0a 53 45 4c 45 43 54 20 41 4c 4c 20 53 55 4d 28  .SELECT ALL SUM(
33830 20 2d 20 63 6f 6c 30 20 29 20 2f 20 2b 20 2d 20   - col0 ) / + - 
33840 32 36 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  26 FROM tab1 AS 
33850 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
33860 55 4c 4c 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL >= NULL..---
33870 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  -..NULL....skipi
33880 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
33890 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
338a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
338b0 31 31 31 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1117..SELECT ALL
338c0 20 53 55 4d 20 28 20 2d 20 63 6f 6c 30 20 29 20   SUM ( - col0 ) 
338d0 2f 20 2b 20 2d 20 32 36 20 46 52 4f 4d 20 74 61  / + - 26 FROM ta
338e0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
338f0 20 4e 4f 54 20 4e 55 4c 4c 20 3e 3d 20 4e 55 4c   NOT NULL >= NUL
33900 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  L..----..NULL...
33910 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
33920 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
33930 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
33940 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 38 0d 0a  ort label-1118..
33950 53 45 4c 45 43 54 20 2b 20 2d 20 53 55 4d 28 20  SELECT + - SUM( 
33960 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30  + col2 ) AS col0
33970 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
33980 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 36 0d 0a  r0..----..-156..
33990 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
339a0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
339b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
339c0 20 6c 61 62 65 6c 2d 31 31 31 38 0d 0a 53 45 4c   label-1118..SEL
339d0 45 43 54 20 2b 20 2d 20 53 55 4d 20 28 20 2b 20  ECT + - SUM ( + 
339e0 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46  col2 ) AS col0 F
339f0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
33a00 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 36 0d 0a 0d 0a  ..----..-156....
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 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
33a30 20 2d 20 28 20 2b 20 63 6f 6c 30 20 29 20 2d 20   - ( + col0 ) - 
33a40 2b 20 38 33 20 2b 20 2d 20 63 6f 6c 32 20 2b 20  + 83 + - col2 + 
33a50 32 36 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  26 FROM tab1 AS 
33a60 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 31  cor0..----..-201
33a70 0d 0a 2d 32 30 34 0d 0a 2d 32 31 36 0d 0a 0d 0a  ..-204..-216....
33a80 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
33a90 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
33aa0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
33ab0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
33ac0 20 4e 55 4c 4c 20 3e 3d 20 2d 20 63 6f 6c 30 20   NULL >= - col0 
33ad0 2a 20 2b 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d  * + - col2..----
33ae0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
33af0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
33b00 2d 20 63 6f 6c 32 20 2a 20 2d 20 37 38 20 41 53  - col2 * - 78 AS
33b10 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
33b20 0a 2d 2d 2d 2d 0d 0a 33 36 36 36 0d 0a 37 37 32  .----..3666..772
33b30 32 0d 0a 37 38 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  2..780....onlyif
33b40 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
33b50 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66  te syntax: DIV f
33b60 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
33b70 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
33b80 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32  owsort label-112
33b90 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  2..SELECT ALL - 
33ba0 2d 20 35 20 44 49 56 20 2b 20 53 55 4d 28 20 44  - 5 DIV + SUM( D
33bb0 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 29  ISTINCT + col0 )
33bc0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
33bd0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  r0..----..0....s
33be0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
33bf0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
33c00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
33c10 62 65 6c 2d 31 31 32 32 0d 0a 53 45 4c 45 43 54  bel-1122..SELECT
33c20 20 41 4c 4c 20 2d 20 2d 20 35 20 2f 20 2b 20 53   ALL - - 5 / + S
33c30 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  UM ( DISTINCT + 
33c40 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
33c50 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
33c60 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
33c70 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 34  sort..SELECT - 4
33c80 31 20 2a 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31  1 * col1 AS col1
33c90 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
33ca0 0a 2d 2d 2d 2d 0d 0a 2d 32 30 39 31 0d 0a 2d 32  .----..-2091..-2
33cb0 37 34 37 0d 0a 2d 33 31 35 37 0d 0a 0d 0a 6f 6e  747..-3157....on
33cc0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
33cd0 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
33ce0 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
33cf0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
33d00 31 32 34 0d 0a 53 45 4c 45 43 54 20 2d 20 34 35  124..SELECT - 45
33d10 20 44 49 56 20 2d 20 2d 20 63 6f 6c 30 20 63 6f   DIV - - col0 co
33d20 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l1 FROM tab1 cor
33d30 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  0..----..0..0..0
33d40 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
33d50 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
33d60 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
33d70 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
33d80 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
33d90 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
33da0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
33db0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
33dc0 6c 2d 31 31 32 34 0d 0a 53 45 4c 45 43 54 20 2d  l-1124..SELECT -
33dd0 20 34 35 20 2f 20 2d 20 2d 20 63 6f 6c 30 20 63   45 / - - col0 c
33de0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol1 FROM tab1 co
33df0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  r0..----..0..0..
33e00 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
33e10 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
33e20 54 49 4e 43 54 20 2d 20 35 33 20 2a 20 2d 20 63  TINCT - 53 * - c
33e30 6f 6c 30 20 2a 20 2d 20 36 30 20 46 52 4f 4d 20  ol0 * - 60 FROM 
33e40 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
33e50 2d 2d 0d 0a 2d 31 36 32 31 38 30 0d 0a 2d 32 37  --..-162180..-27
33e60 30 33 30 30 0d 0a 2d 32 38 39 33 38 30 0d 0a 0d  0300..-289380...
33e70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33e80 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36  ..SELECT ALL + 6
33e90 38 20 2a 20 2b 20 28 20 2b 20 2d 20 63 6f 6c 31  8 * + ( + - col1
33ea0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
33eb0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 32  tab0..----..-142
33ec0 38 0d 0a 2d 35 35 30 38 0d 0a 2d 36 38 0d 0a 0d  8..-5508..-68...
33ed0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
33ee0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
33ef0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
33f00 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
33f10 65 6c 2d 31 31 32 37 0d 0a 53 45 4c 45 43 54 20  el-1127..SELECT 
33f20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20  DISTINCT - col1 
33f30 44 49 56 20 2d 20 38 39 2c 20 2d 20 33 34 20 2b  DIV - 89, - 34 +
33f40 20 2d 20 63 6f 6c 31 20 44 49 56 20 63 6f 6c 32   - col1 DIV col2
33f50 20 2a 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c   * + col1 AS col
33f60 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
33f70 2d 0d 0a 30 0d 0a 2d 31 30 31 0d 0a 30 0d 0a 2d  -..0..-101..0..-
33f80 31 31 31 0d 0a 30 0d 0a 2d 31 33 36 0d 0a 0d 0a  111..0..-136....
33f90 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
33fa0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
33fb0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
33fc0 6c 61 62 65 6c 2d 31 31 32 37 0d 0a 53 45 4c 45  label-1127..SELE
33fd0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
33fe0 6c 31 20 2f 20 2d 20 38 39 2c 20 2d 20 33 34 20  l1 / - 89, - 34 
33ff0 2b 20 2d 20 63 6f 6c 31 20 2f 20 63 6f 6c 32 20  + - col1 / col2 
34000 2a 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31  * + col1 AS col1
34010 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
34020 0d 0a 30 0d 0a 2d 31 30 31 0d 0a 30 0d 0a 2d 31  ..0..-101..0..-1
34030 31 31 0d 0a 30 0d 0a 2d 31 33 36 0d 0a 0d 0a 6f  11..0..-136....o
34040 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
34050 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
34060 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
34070 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
34080 31 31 32 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1128..SELECT ALL
34090 20 63 6f 6c 32 20 44 49 56 20 63 6f 6c 31 20 2a   col2 DIV col1 *
340a0 20 2d 20 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a   - 0 FROM tab2..
340b0 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d  ----..0..0..0...
340c0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
340d0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
340e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
340f0 6c 61 62 65 6c 2d 31 31 32 38 0d 0a 53 45 4c 45  label-1128..SELE
34100 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2f 20 63 6f  CT ALL col2 / co
34110 6c 31 20 2a 20 2d 20 30 20 46 52 4f 4d 20 74 61  l1 * - 0 FROM ta
34120 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  b2..----..0..0..
34130 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
34140 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
34150 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
34160 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
34170 32 39 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 53  29..SELECT - - S
34180 55 4d 28 20 2b 20 63 6f 6c 31 20 29 20 41 53 20  UM( + col1 ) AS 
34190 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57  col2 FROM tab1 W
341a0 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53  HERE NOT NULL IS
341b0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   NULL..----..NUL
341c0 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
341d0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
341e0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
341f0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 39 0d 0a  ort label-1129..
34200 53 45 4c 45 43 54 20 2d 20 2d 20 53 55 4d 20 28  SELECT - - SUM (
34210 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   + col1 ) AS col
34220 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  2 FROM tab1 WHER
34230 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55  E NOT NULL IS NU
34240 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  LL..----..NULL..
34250 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
34260 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
34270 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
34280 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
34290 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
342a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
342b0 43 54 20 2d 20 63 6f 6c 31 20 2a 20 36 37 20 63  CT - col1 * 67 c
342c0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
342d0 2d 2d 2d 0d 0a 2d 33 31 34 39 0d 0a 2d 33 33 35  ---..-3149..-335
342e0 0d 0a 2d 39 33 38 0d 0a 0d 0a 71 75 65 72 79 20  ..-938....query 
342f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
34300 54 20 2b 20 28 20 2b 20 63 6f 6c 31 20 29 20 2a  T + ( + col1 ) *
34310 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
34320 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 34 36 0d 0a 34  2..----..2346..4
34330 39 32 38 0d 0a 35 30 32 35 0d 0a 0d 0a 71 75 65  928..5025....que
34340 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
34350 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
34360 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
34370 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
34380 31 37 20 2a 20 2b 20 2d 20 36 20 4e 4f 54 20 49  17 * + - 6 NOT I
34390 4e 20 28 20 2d 20 63 6f 6c 30 2c 20 2b 20 37 34  N ( - col0, + 74
343a0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
343b0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
343c0 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
343d0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
343e0 45 52 45 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 63  ERE col2 + + - c
343f0 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ol2 NOT BETWEEN 
34400 2d 20 34 32 20 41 4e 44 20 28 20 2b 20 2b 20 63  - 42 AND ( + + c
34410 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ol2 )..----....q
34420 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
34430 53 45 4c 45 43 54 20 2d 20 2d 20 28 20 2d 20 34  SELECT - - ( - 4
34440 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
34450 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f  tab1 AS cor0 CRO
34460 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20  SS JOIN tab2 AS 
34470 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  cor1..----..9 va
34480 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
34490 35 37 38 34 35 34 30 61 35 61 66 36 63 61 32 62  5784540a5af6ca2b
344a0 65 38 34 33 39 39 64 33 31 34 61 63 64 32 66 64  e84399d314acd2fd
344b0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
344c0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
344d0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
344e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
344f0 61 62 65 6c 2d 31 31 33 35 0d 0a 53 45 4c 45 43  abel-1135..SELEC
34500 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20  T DISTINCT col1 
34510 44 49 56 20 31 30 20 46 52 4f 4d 20 74 61 62 30  DIV 10 FROM tab0
34520 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 32 0d 0a 38 0d  ..----..0..2..8.
34530 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
34540 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
34550 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34560 74 20 6c 61 62 65 6c 2d 31 31 33 35 0d 0a 53 45  t label-1135..SE
34570 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
34580 6c 31 20 2f 20 31 30 20 46 52 4f 4d 20 74 61 62  l1 / 10 FROM tab
34590 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 32 0d 0a 38  0..----..0..2..8
345a0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
345b0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
345c0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
345d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33  owsort label-113
345e0 36 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 28  6..SELECT - MAX(
345f0 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 38 30   DISTINCT + - 80
34600 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
34610 2d 2d 0d 0a 38 30 0d 0a 0d 0a 73 6b 69 70 69 66  --..80....skipif
34620 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
34630 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
34640 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
34650 31 33 36 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41  136..SELECT - MA
34660 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2d  X ( DISTINCT + -
34670 20 38 30 20 29 20 46 52 4f 4d 20 74 61 62 30 0d   80 ) FROM tab0.
34680 0a 2d 2d 2d 2d 0d 0a 38 30 0d 0a 0d 0a 6f 6e 6c  .----..80....onl
34690 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
346a0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
346b0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
346c0 20 6c 61 62 65 6c 2d 31 31 33 37 0d 0a 53 45 4c   label-1137..SEL
346d0 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55  ECT DISTINCT COU
346e0 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 2c  NT( * ) AS col1,
346f0 20 2b 20 32 38 20 46 52 4f 4d 20 74 61 62 30 20   + 28 FROM tab0 
34700 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
34710 0d 0a 32 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..28....skipif m
34720 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
34730 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
34740 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
34750 33 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  37..SELECT DISTI
34760 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  NCT COUNT ( * ) 
34770 41 53 20 63 6f 6c 31 2c 20 2b 20 32 38 20 46 52  AS col1, + 28 FR
34780 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
34790 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 32 38 0d 0a 0d 0a  .----..3..28....
347a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
347b0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
347c0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
347d0 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
347e0 65 6c 2d 31 31 33 38 0d 0a 53 45 4c 45 43 54 20  el-1138..SELECT 
347f0 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
34800 6f 72 30 20 57 48 45 52 45 20 39 32 20 3e 20 2d  or0 WHERE 92 > -
34810 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
34820 49 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d  IGNED )..----...
34830 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
34840 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
34850 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
34860 74 20 6c 61 62 65 6c 2d 31 31 33 38 0d 0a 53 45  t label-1138..SE
34870 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
34880 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 39   AS cor0 WHERE 9
34890 32 20 3e 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  2 > - CAST ( NUL
348a0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 0d 0a  L AS INTEGER )..
348b0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
348c0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
348d0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
348e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
348f0 2d 31 31 33 39 0d 0a 53 45 4c 45 43 54 20 2d 20  -1139..SELECT - 
34900 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d  + COUNT( * ) * -
34910 20 2d 20 39 31 20 2b 20 2b 20 39 31 20 2b 20 2d   - 91 + + 91 + -
34920 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
34930 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
34940 2d 2d 2d 0d 0a 2d 31 38 35 0d 0a 0d 0a 73 6b 69  ---..-185....ski
34950 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
34960 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
34970 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
34980 6c 2d 31 31 33 39 0d 0a 53 45 4c 45 43 54 20 2d  l-1139..SELECT -
34990 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   + COUNT ( * ) *
349a0 20 2d 20 2d 20 39 31 20 2b 20 2b 20 39 31 20 2b   - - 91 + + 91 +
349b0 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46   - COUNT ( * ) F
349c0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
349d0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 35 0d 0a 0d 0a  ..----..-185....
349e0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
349f0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
34a00 20 74 61 62 32 20 57 48 45 52 45 20 4e 55 4c 4c   tab2 WHERE NULL
34a10 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 63   NOT BETWEEN - c
34a20 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20 2a 20 2b  ol1 * - col2 * +
34a30 20 2d 20 63 6f 6c 30 20 41 4e 44 20 2b 20 63 6f   - col0 AND + co
34a40 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  l0..----....quer
34a50 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
34a60 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
34a70 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol1 FROM tab1 WH
34a80 45 52 45 20 63 6f 6c 32 20 49 4e 20 28 20 2d 20  ERE col2 IN ( - 
34a90 35 33 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  53 )..----....on
34aa0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
34ab0 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41  T syntax: DECIMA
34ac0 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  L type: ..query 
34ad0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
34ae0 31 31 34 32 0d 0a 53 45 4c 45 43 54 20 44 49 53  1142..SELECT DIS
34af0 54 49 4e 43 54 20 2b 20 28 20 2d 20 2b 20 28 20  TINCT + ( - + ( 
34b00 2d 20 35 34 20 29 20 29 20 2f 20 2b 20 2d 20 63  - 54 ) ) / + - c
34b10 6f 6c 31 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  ol1 + CAST( NULL
34b20 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2b 20   AS DECIMAL ) + 
34b30 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57  col1 FROM tab2 W
34b40 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 49 53  HERE NOT col0 IS
34b50 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   NULL..----..NUL
34b60 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
34b70 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
34b80 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
34b90 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34 32 0d 0a  ort label-1142..
34ba0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
34bb0 2b 20 28 20 2d 20 2b 20 28 20 2d 20 35 34 20 29  + ( - + ( - 54 )
34bc0 20 29 20 2f 20 2b 20 2d 20 63 6f 6c 31 20 2b 20   ) / + - col1 + 
34bd0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52  CAST ( NULL AS R
34be0 45 41 4c 20 29 20 2b 20 63 6f 6c 31 20 46 52 4f  EAL ) + col1 FRO
34bf0 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
34c00 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d   col0 IS NULL..-
34c10 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ---..NULL....que
34c20 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
34c30 4c 45 43 54 20 2b 20 39 30 20 2a 20 2d 20 37 30  LECT + 90 * - 70
34c40 20 2b 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c   + + col1 AS col
34c50 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
34c60 2d 0d 0a 2d 36 32 32 33 0d 0a 2d 36 32 33 33 0d  -..-6223..-6233.
34c70 0a 2d 36 32 34 39 0d 0a 0d 0a 71 75 65 72 79 20  .-6249....query 
34c80 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
34c90 54 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c  T + col2 + - col
34ca0 30 20 2b 20 2b 20 30 20 2b 20 2d 20 2b 20 63 6f  0 + + 0 + - + co
34cb0 6c 32 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c  l2 * col0 AS col
34cc0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
34cd0 2d 0d 0a 2d 34 38 35 31 0d 0a 2d 35 30 34 31 0d  -..-4851..-5041.
34ce0 0a 2d 36 32 31 31 0d 0a 0d 0a 71 75 65 72 79 20  .-6211....query 
34cf0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
34d00 54 20 63 6f 6c 32 20 2b 20 2b 20 36 37 20 46 52  T col2 + + 67 FR
34d10 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab1..----..1
34d20 32 36 0d 0a 31 33 35 0d 0a 31 36 33 0d 0a 0d 0a  26..135..163....
34d30 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
34d40 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
34d50 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
34d60 72 74 20 6c 61 62 65 6c 2d 31 31 34 36 0d 0a 53  rt label-1146..S
34d70 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
34d80 20 2b 20 2b 20 53 55 4d 28 20 2b 20 63 6f 6c 30   + + SUM( + col0
34d90 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
34da0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 38 38 0d  tab2..----..188.
34db0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
34dc0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
34dd0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34de0 74 20 6c 61 62 65 6c 2d 31 31 34 36 0d 0a 53 45  t label-1146..SE
34df0 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29  LECT COUNT ( * )
34e00 20 2b 20 2b 20 53 55 4d 20 28 20 2b 20 63 6f 6c   + + SUM ( + col
34e10 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  0 ) AS col2 FROM
34e20 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 38 38   tab2..----..188
34e30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
34e40 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 33 36  ort..SELECT - 36
34e50 20 2b 20 2d 20 38 38 20 46 52 4f 4d 20 74 61 62   + - 88 FROM tab
34e60 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 34 0d 0a 2d  1..----..-124..-
34e70 31 32 34 0d 0a 2d 31 32 34 0d 0a 0d 0a 6f 6e 6c  124..-124....onl
34e80 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
34e90 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
34ea0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
34eb0 6c 61 62 65 6c 2d 31 31 34 38 0d 0a 53 45 4c 45  label-1148..SELE
34ec0 43 54 20 53 55 4d 28 20 2d 20 2d 20 31 34 20 29  CT SUM( - - 14 )
34ed0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
34ee0 20 2b 20 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 31   + col2 / + col1
34ef0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
34f00 2d 2d 0d 0a 34 32 0d 0a 0d 0a 73 6b 69 70 69 66  --..42....skipif
34f10 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
34f20 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
34f30 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
34f40 31 34 38 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20  148..SELECT SUM 
34f50 28 20 2d 20 2d 20 31 34 20 29 20 46 52 4f 4d 20  ( - - 14 ) FROM 
34f60 74 61 62 32 20 57 48 45 52 45 20 2b 20 63 6f 6c  tab2 WHERE + col
34f70 32 20 2f 20 2b 20 63 6f 6c 31 20 49 53 20 4e 4f  2 / + col1 IS NO
34f80 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 34 32  T NULL..----..42
34f90 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
34fa0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
34fb0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
34fc0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34  owsort label-114
34fd0 39 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 44  9..SELECT MAX( D
34fe0 49 53 54 49 4e 43 54 20 2b 20 2b 20 35 35 20 29  ISTINCT + + 55 )
34ff0 20 2a 20 43 4f 55 4e 54 28 20 63 6f 6c 31 20 29   * COUNT( col1 )
35000 20 2b 20 2b 20 32 35 20 2a 20 2b 20 43 4f 55 4e   + + 25 * + COUN
35010 54 28 20 2a 20 29 20 2b 20 2b 20 43 4f 55 4e 54  T( * ) + + COUNT
35020 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  ( * ) FROM tab2.
35030 0a 2d 2d 2d 2d 0d 0a 32 34 33 0d 0a 0d 0a 73 6b  .----..243....sk
35040 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
35050 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
35060 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
35070 65 6c 2d 31 31 34 39 0d 0a 53 45 4c 45 43 54 20  el-1149..SELECT 
35080 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b  MAX ( DISTINCT +
35090 20 2b 20 35 35 20 29 20 2a 20 43 4f 55 4e 54 20   + 55 ) * COUNT 
350a0 28 20 63 6f 6c 31 20 29 20 2b 20 2b 20 32 35 20  ( col1 ) + + 25 
350b0 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  * + COUNT ( * ) 
350c0 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  + + COUNT ( * ) 
350d0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
350e0 0a 32 34 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .243....query I 
350f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
35100 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
35110 2a 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2b 20 63  * + col1 + + + c
35120 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol2 AS col0 FROM
35130 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
35140 0d 0a 2d 31 31 35 30 0d 0a 2d 33 30 34 30 0d 0a  ..-1150..-3040..
35150 2d 33 38 32 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -3828....onlyif 
35160 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
35170 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
35180 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
35190 6c 2d 31 31 35 31 0d 0a 53 45 4c 45 43 54 20 2d  l-1151..SELECT -
351a0 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
351b0 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
351c0 2b 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55  + col1 IS NOT NU
351d0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  LL..----..0....s
351e0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
351f0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
35200 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
35210 62 65 6c 2d 31 31 35 31 0d 0a 53 45 4c 45 43 54  bel-1151..SELECT
35220 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46   - COUNT ( * ) F
35230 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
35240 4f 54 20 2b 20 63 6f 6c 31 20 49 53 20 4e 4f 54  OT + col1 IS NOT
35250 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
35260 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
35270 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
35280 33 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  32 AS col2 FROM 
35290 74 61 62 30 20 63 6f 72 30 20 43 52 4f 53 53 20  tab0 cor0 CROSS 
352a0 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72  JOIN tab0 AS cor
352b0 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
352c0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 65 66 38  s hashing to ef8
352d0 66 39 33 31 31 39 39 38 33 62 39 36 32 66 34 63  f93119983b962f4c
352e0 38 31 33 38 31 65 62 66 34 62 31 65 36 0d 0a 0d  81381ebf4b1e6...
352f0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
35300 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
35310 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
35320 48 45 52 45 20 4e 4f 54 20 28 20 63 6f 6c 31 20  HERE NOT ( col1 
35330 29 20 3c 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  ) < - col0..----
35340 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
35350 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
35360 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
35370 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20  d54cad....query 
35380 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
35390 54 20 44 49 53 54 49 4e 43 54 20 2d 20 32 39 20  T DISTINCT - 29 
353a0 2a 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * - col2 FROM ta
353b0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
353c0 0d 0a 31 37 31 31 0d 0a 31 39 37 32 0d 0a 32 37  ..1711..1972..27
353d0 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  84....onlyif mys
353e0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
353f0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
35400 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35410 20 6c 61 62 65 6c 2d 31 31 35 35 0d 0a 53 45 4c   label-1155..SEL
35420 45 43 54 20 43 41 53 54 28 20 2d 20 31 30 20 41  ECT CAST( - 10 A
35430 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
35440 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
35450 2d 2d 0d 0a 2d 31 30 0d 0a 2d 31 30 0d 0a 2d 31  --..-10..-10..-1
35460 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
35470 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
35480 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
35490 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35 35 0d 0a  ort label-1155..
354a0 53 45 4c 45 43 54 20 43 41 53 54 20 28 20 2d 20  SELECT CAST ( - 
354b0 31 30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  10 AS INTEGER ) 
354c0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
354d0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d 31  0..----..-10..-1
354e0 30 0d 0a 2d 31 30 0d 0a 0d 0a 73 6b 69 70 69 66  0..-10....skipif
354f0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
35500 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
35510 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
35520 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
35530 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
35540 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
35550 6c 32 20 63 6f 6c 31 2c 20 2b 20 28 20 2d 20 2b  l2 col1, + ( - +
35560 20 35 31 20 29 20 2a 20 2b 20 63 6f 6c 30 20 46   51 ) * + col0 F
35570 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
35580 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d 34 34  ..----..-10..-44
35590 33 37 0d 0a 2d 34 37 0d 0a 2d 37 36 35 0d 0a 2d  37..-47..-765..-
355a0 39 39 0d 0a 2d 34 39 34 37 0d 0a 0d 0a 6f 6e 6c  99..-4947....onl
355b0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
355c0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
355d0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
355e0 20 6c 61 62 65 6c 2d 31 31 35 37 0d 0a 53 45 4c   label-1157..SEL
355f0 45 43 54 20 34 31 20 63 6f 6c 31 2c 20 43 4f 55  ECT 41 col1, COU
35600 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
35610 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
35620 0a 34 31 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66  .41..3....skipif
35630 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
35640 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
35650 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
35660 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
35670 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
35680 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
35690 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
356a0 72 74 20 6c 61 62 65 6c 2d 31 31 35 37 0d 0a 53  rt label-1157..S
356b0 45 4c 45 43 54 20 34 31 20 63 6f 6c 31 2c 20 43  ELECT 41 col1, C
356c0 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
356d0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
356e0 2d 2d 0d 0a 34 31 0d 0a 33 0d 0a 0d 0a 6f 6e 6c  --..41..3....onl
356f0 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
35700 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
35710 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
35720 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
35730 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
35740 31 31 35 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  1158..SELECT DIS
35750 54 49 4e 43 54 20 2b 20 2d 20 4d 41 58 28 20 2d  TINCT + - MAX( -
35760 20 43 41 53 54 28 20 2d 20 37 32 20 41 53 20 53   CAST( - 72 AS S
35770 49 47 4e 45 44 20 29 20 29 20 41 53 20 63 6f 6c  IGNED ) ) AS col
35780 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
35790 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 32 0d 0a  or0..----..-72..
357a0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
357b0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
357c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
357d0 20 6c 61 62 65 6c 2d 31 31 35 38 0d 0a 53 45 4c   label-1158..SEL
357e0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d  ECT DISTINCT + -
357f0 20 4d 41 58 20 28 20 2d 20 43 41 53 54 20 28 20   MAX ( - CAST ( 
35800 2d 20 37 32 20 41 53 20 49 4e 54 45 47 45 52 20  - 72 AS INTEGER 
35810 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ) ) AS col2 FROM
35820 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
35830 2d 2d 2d 0d 0a 2d 37 32 0d 0a 0d 0a 6f 6e 6c 79  ---..-72....only
35840 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
35850 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
35860 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
35870 6c 61 62 65 6c 2d 31 31 35 39 0d 0a 53 45 4c 45  label-1159..SELE
35880 43 54 20 41 4c 4c 20 38 31 20 2a 20 2b 20 53 55  CT ALL 81 * + SU
35890 4d 28 20 28 20 2b 20 63 6f 6c 32 20 29 20 29 20  M( ( + col2 ) ) 
358a0 63 6f 6c 32 2c 20 34 38 20 41 53 20 63 6f 6c 32  col2, 48 AS col2
358b0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
358c0 0d 0a 39 38 30 31 0d 0a 34 38 0d 0a 0d 0a 73 6b  ..9801..48....sk
358d0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
358e0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
358f0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
35900 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
35910 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
35920 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
35930 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
35940 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35  owsort label-115
35950 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 31  9..SELECT ALL 81
35960 20 2a 20 2b 20 53 55 4d 20 28 20 28 20 2b 20 63   * + SUM ( ( + c
35970 6f 6c 32 20 29 20 29 20 63 6f 6c 32 2c 20 34 38  ol2 ) ) col2, 48
35980 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
35990 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 38 30 31 0d 0a  b2..----..9801..
359a0 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  48....query I ro
359b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
359c0 4c 20 2b 20 28 20 2b 20 33 33 20 29 20 41 53 20  L + ( + 33 ) AS 
359d0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57  col1 FROM tab2 W
359e0 48 45 52 45 20 2d 20 31 39 20 2b 20 2b 20 2d 20  HERE - 19 + + - 
359f0 63 6f 6c 30 20 42 45 54 57 45 45 4e 20 2b 20 2b  col0 BETWEEN + +
35a00 20 63 6f 6c 32 20 41 4e 44 20 4e 55 4c 4c 0d 0a   col2 AND NULL..
35a10 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
35a20 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
35a30 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
35a40 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
35a50 2d 31 31 36 31 0d 0a 53 45 4c 45 43 54 20 2d 20  -1161..SELECT - 
35a60 4d 41 58 28 20 41 4c 4c 20 2d 20 2b 20 38 34 20  MAX( ALL - + 84 
35a70 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  ) col2 FROM tab0
35a80 0d 0a 2d 2d 2d 2d 0d 0a 38 34 0d 0a 0d 0a 73 6b  ..----..84....sk
35a90 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
35aa0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
35ab0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
35ac0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
35ad0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
35ae0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
35af0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
35b00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 31  wsort label-1161
35b10 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 20 28  ..SELECT - MAX (
35b20 20 41 4c 4c 20 2d 20 2b 20 38 34 20 29 20 63 6f   ALL - + 84 ) co
35b30 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
35b40 2d 2d 0d 0a 38 34 0d 0a 0d 0a 71 75 65 72 79 20  --..84....query 
35b50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
35b60 54 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c 30 20 2a  T ALL - - col0 *
35b70 20 2b 20 2b 20 39 31 20 41 53 20 63 6f 6c 31 20   + + 91 AS col1 
35b80 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
35b90 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col1 IS NULL..--
35ba0 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
35bb0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
35bc0 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20  : DECIMAL type: 
35bd0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
35be0 74 20 6c 61 62 65 6c 2d 31 31 36 33 0d 0a 53 45  t label-1163..SE
35bf0 4c 45 43 54 20 2d 20 63 6f 6c 30 20 41 53 20 63  LECT - col0 AS c
35c00 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol0 FROM tab1 WH
35c10 45 52 45 20 4e 4f 54 20 43 41 53 54 28 20 4e 55  ERE NOT CAST( NU
35c20 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20  LL AS DECIMAL ) 
35c30 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
35c40 2d 0d 0a 2d 35 31 0d 0a 2d 38 35 0d 0a 2d 39 31  -..-51..-85..-91
35c50 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
35c60 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
35c70 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
35c80 72 74 20 6c 61 62 65 6c 2d 31 31 36 33 0d 0a 53  rt label-1163..S
35c90 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 41 53 20  ELECT - col0 AS 
35ca0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57  col0 FROM tab1 W
35cb0 48 45 52 45 20 4e 4f 54 20 43 41 53 54 20 28 20  HERE NOT CAST ( 
35cc0 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29 20 49  NULL AS REAL ) I
35cd0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
35ce0 0d 0a 2d 35 31 0d 0a 2d 38 35 0d 0a 2d 39 31 0d  ..-51..-85..-91.
35cf0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
35d00 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
35d10 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  ax: DIV for inte
35d20 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
35d30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
35d40 6c 61 62 65 6c 2d 31 31 36 34 0d 0a 53 45 4c 45  label-1164..SELE
35d50 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20  CT ALL - COUNT( 
35d60 2a 20 29 20 44 49 56 20 2d 20 31 34 20 41 53 20  * ) DIV - 14 AS 
35d70 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col1 FROM tab0..
35d80 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  ----..0....skipi
35d90 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
35da0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
35db0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
35dc0 31 31 36 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1164..SELECT ALL
35dd0 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f   - COUNT ( * ) /
35de0 20 2d 20 31 34 20 41 53 20 63 6f 6c 31 20 46 52   - 14 AS col1 FR
35df0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab0..----..0
35e00 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
35e10 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
35e20 20 2b 20 63 6f 6c 30 2c 20 63 6f 6c 30 20 2a 20   + col0, col0 * 
35e30 2b 20 38 36 20 46 52 4f 4d 20 74 61 62 31 0d 0a  + 86 FROM tab1..
35e40 2d 2d 2d 2d 0d 0a 35 31 0d 0a 34 33 38 36 0d 0a  ----..51..4386..
35e50 38 35 0d 0a 37 33 31 30 0d 0a 39 31 0d 0a 37 38  85..7310..91..78
35e60 32 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  26....query I ro
35e70 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
35e80 4c 20 38 34 20 2a 20 2b 20 2b 20 31 33 20 2a 20  L 84 * + + 13 * 
35e90 2b 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31  + - col0 AS col1
35ea0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
35eb0 0a 2d 2d 2d 2d 0d 0a 2d 35 30 32 33 32 0d 0a 2d  .----..-50232..-
35ec0 36 39 38 38 38 0d 0a 2d 38 31 39 30 30 0d 0a 0d  69888..-81900...
35ed0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
35ee0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
35ef0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
35f00 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 37 0d 0a  ort label-1167..
35f10 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20  SELECT + COUNT( 
35f20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 32 20 29 20 2a  ALL + - col2 ) *
35f30 20 2b 20 36 31 20 63 6f 6c 32 20 46 52 4f 4d 20   + 61 col2 FROM 
35f40 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
35f50 2d 2d 0d 0a 31 38 33 0d 0a 0d 0a 73 6b 69 70 69  --..183....skipi
35f60 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
35f70 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
35f80 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
35f90 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
35fa0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
35fb0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
35fc0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
35fd0 72 74 20 6c 61 62 65 6c 2d 31 31 36 37 0d 0a 53  rt label-1167..S
35fe0 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  ELECT + COUNT ( 
35ff0 41 4c 4c 20 2b 20 2d 20 63 6f 6c 32 20 29 20 2a  ALL + - col2 ) *
36000 20 2b 20 36 31 20 63 6f 6c 32 20 46 52 4f 4d 20   + 61 col2 FROM 
36010 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
36020 2d 2d 0d 0a 31 38 33 0d 0a 0d 0a 6f 6e 6c 79 69  --..183....onlyi
36030 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
36040 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
36050 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
36060 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 38  wsort label-1168
36070 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
36080 54 20 2b 20 37 35 20 44 49 56 20 36 31 20 2a 20  T + 75 DIV 61 * 
36090 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  + col2 FROM tab1
360a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
360b0 35 39 0d 0a 36 38 0d 0a 39 36 0d 0a 0d 0a 73 6b  59..68..96....sk
360c0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
360d0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
360e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
360f0 65 6c 2d 31 31 36 38 0d 0a 53 45 4c 45 43 54 20  el-1168..SELECT 
36100 44 49 53 54 49 4e 43 54 20 2b 20 37 35 20 2f 20  DISTINCT + 75 / 
36110 36 31 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  61 * + col2 FROM
36120 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
36130 2d 2d 2d 0d 0a 35 39 0d 0a 36 38 0d 0a 39 36 0d  ---..59..68..96.
36140 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
36150 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34 39 20  rt..SELECT + 49 
36160 2a 20 2d 20 63 6f 6c 31 20 2a 20 32 37 20 46 52  * - col1 * 27 FR
36170 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
36180 31 30 37 31 36 33 0d 0a 2d 31 33 32 33 0d 0a 2d  107163..-1323..-
36190 32 37 37 38 33 0d 0a 0d 0a 71 75 65 72 79 20 49  27783....query I
361a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
361b0 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 2d 20 2d 20   ALL col2 * - - 
361c0 36 38 20 2b 20 2b 20 2d 20 63 6f 6c 31 20 46 52  68 + + - col1 FR
361d0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab0..----..3
361e0 31 31 35 0d 0a 36 35 39 0d 0a 36 37 33 31 0d 0a  115..659..6731..
361f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36200 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
36210 43 54 20 2b 20 28 20 2b 20 63 6f 6c 31 20 29 20  CT + ( + col1 ) 
36220 2b 20 2d 20 36 37 20 46 52 4f 4d 20 74 61 62 31  + - 67 FROM tab1
36230 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 2d 35 33  ..----..-20..-53
36240 0d 0a 2d 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-62....query I
36250 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
36260 20 35 31 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f   51 + col0 AS co
36270 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
36280 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 38 0d  cor0..----..138.
36290 0a 31 34 38 0d 0a 36 36 0d 0a 0d 0a 6f 6e 6c 79  .148..66....only
362a0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
362b0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
362c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
362d0 61 62 65 6c 2d 31 31 37 33 0d 0a 53 45 4c 45 43  abel-1173..SELEC
362e0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 53  T DISTINCT - - S
362f0 55 4d 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  UM( DISTINCT col
36300 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  0 ) FROM tab2 AS
36310 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 35   cor0..----..185
36320 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
36330 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
36340 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
36350 72 74 20 6c 61 62 65 6c 2d 31 31 37 33 0d 0a 53  rt label-1173..S
36360 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
36370 20 2d 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43   - SUM ( DISTINC
36380 54 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  T col0 ) FROM ta
36390 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
363a0 0d 0a 31 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49  ..185....query I
363b0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
363c0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 63  CT * FROM tab2 c
363d0 6f 72 30 20 57 48 45 52 45 20 31 37 20 49 53 20  or0 WHERE 17 IS 
363e0 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
363f0 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
36400 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63   to 75c998aa53ac
36410 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64  83218cbf2feb962d
36420 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  0a49....query I 
36430 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
36440 41 4c 4c 20 2b 20 37 33 20 46 52 4f 4d 20 74 61  ALL + 73 FROM ta
36450 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
36460 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 49 53 20 4e   NOT - col0 IS N
36470 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 37 33 0d 0a 37  ULL..----..73..7
36480 33 0d 0a 37 33 0d 0a 0d 0a 71 75 65 72 79 20 49  3..73....query I
36490 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
364a0 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
364b0 62 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e  b2 WHERE NOT ( N
364c0 55 4c 4c 20 29 20 42 45 54 57 45 45 4e 20 2b 20  ULL ) BETWEEN + 
364d0 31 36 20 41 4e 44 20 39 20 2d 20 63 6f 6c 32 0d  16 AND 9 - col2.
364e0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
364f0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
36500 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
36510 48 45 52 45 20 2d 20 63 6f 6c 31 20 2b 20 2d 20  HERE - col1 + - 
36520 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col2 IS NOT NULL
36530 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
36540 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30   hashing to c6c0
36550 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31  a4111b36d04dbc81
36560 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a  1a11e4d54cad....
36570 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
36580 0a 53 45 4c 45 43 54 20 33 36 20 46 52 4f 4d 20  .SELECT 36 FROM 
36590 74 61 62 31 20 57 48 45 52 45 20 28 20 4e 4f 54  tab1 WHERE ( NOT
365a0 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
365b0 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 33 36 0d 0a 33  L )..----..36..3
365c0 36 0d 0a 33 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  6..36....onlyif 
365d0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
365e0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
365f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
36600 6c 2d 31 31 37 39 0d 0a 53 45 4c 45 43 54 20 43  l-1179..SELECT C
36610 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 31 33  OUNT( * ) * - 13
36620 20 2b 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20   + + + COUNT( * 
36630 29 20 2a 20 28 20 43 4f 55 4e 54 28 20 2a 20 29  ) * ( COUNT( * )
36640 20 29 20 2b 20 37 32 20 46 52 4f 4d 20 74 61 62   ) + 72 FROM tab
36650 31 2c 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  1, tab0 AS cor0.
36660 0a 2d 2d 2d 2d 0d 0a 33 36 0d 0a 0d 0a 73 6b 69  .----..36....ski
36670 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
36680 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
36690 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
366a0 6c 2d 31 31 37 39 0d 0a 53 45 4c 45 43 54 20 43  l-1179..SELECT C
366b0 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 31  OUNT ( * ) * - 1
366c0 33 20 2b 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20  3 + + + COUNT ( 
366d0 2a 20 29 20 2a 20 28 20 43 4f 55 4e 54 20 28 20  * ) * ( COUNT ( 
366e0 2a 20 29 20 29 20 2b 20 37 32 20 46 52 4f 4d 20  * ) ) + 72 FROM 
366f0 74 61 62 31 2c 20 74 61 62 30 20 41 53 20 63 6f  tab1, tab0 AS co
36700 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 36 0d 0a 0d 0a  r0..----..36....
36710 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
36720 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
36730 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
36740 72 74 20 6c 61 62 65 6c 2d 31 31 38 30 0d 0a 53  rt label-1180..S
36750 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34 33 20 2b  ELECT ALL - 43 +
36760 20 2d 20 31 30 20 2b 20 2b 20 2d 20 43 4f 55 4e   - 10 + + - COUN
36770 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31  T( * ) FROM tab1
36780 2c 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  , tab0 AS cor0..
36790 2d 2d 2d 2d 0d 0a 2d 36 32 0d 0a 0d 0a 73 6b 69  ----..-62....ski
367a0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
367b0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
367c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
367d0 6c 2d 31 31 38 30 0d 0a 53 45 4c 45 43 54 20 41  l-1180..SELECT A
367e0 4c 4c 20 2d 20 34 33 20 2b 20 2d 20 31 30 20 2b  LL - 43 + - 10 +
367f0 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   + - COUNT ( * )
36800 20 46 52 4f 4d 20 74 61 62 31 2c 20 74 61 62 30   FROM tab1, tab0
36810 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
36820 2d 36 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -62....onlyif my
36830 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
36840 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
36850 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
36860 31 31 38 31 0d 0a 53 45 4c 45 43 54 20 44 49 53  1181..SELECT DIS
36870 54 49 4e 43 54 20 2d 20 2b 20 43 4f 55 4e 54 28  TINCT - + COUNT(
36880 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   * ) AS col1 FRO
36890 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43  M tab2 AS cor0 C
368a0 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41  ROSS JOIN tab0 A
368b0 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  S cor1..----..-9
368c0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
368d0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
368e0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
368f0 72 74 20 6c 61 62 65 6c 2d 31 31 38 31 0d 0a 53  rt label-1181..S
36900 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
36910 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
36920 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
36930 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
36940 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31  OIN tab0 AS cor1
36950 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 6f 6e  ..----..-9....on
36960 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
36970 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
36980 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36990 20 6c 61 62 65 6c 2d 31 31 38 32 0d 0a 53 45 4c   label-1182..SEL
369a0 45 43 54 20 41 4c 4c 20 4d 41 58 28 20 44 49 53  ECT ALL MAX( DIS
369b0 54 49 4e 43 54 20 38 37 20 29 20 41 53 20 63 6f  TINCT 87 ) AS co
369c0 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
369d0 2d 2d 0d 0a 38 37 0d 0a 0d 0a 73 6b 69 70 69 66  --..87....skipif
369e0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
369f0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
36a00 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
36a10 31 38 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  182..SELECT ALL 
36a20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 38  MAX ( DISTINCT 8
36a30 37 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  7 ) AS col2 FROM
36a40 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 38 37 0d   tab0..----..87.
36a50 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
36a60 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
36a70 4e 43 54 20 2d 20 28 20 2b 20 2d 20 63 6f 6c 32  NCT - ( + - col2
36a80 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
36a90 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a  tab1..----..59..
36aa0 36 38 0d 0a 39 36 0d 0a 0d 0a 71 75 65 72 79 20  68..96....query 
36ab0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
36ac0 54 20 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20  T + col0 * col2 
36ad0 2b 20 2b 20 39 34 20 46 52 4f 4d 20 74 61 62 31  + + 94 FROM tab1
36ae0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
36af0 34 39 39 30 0d 0a 35 31 30 39 0d 0a 36 32 38 32  4990..5109..6282
36b00 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
36b10 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 33  ort..SELECT + 93
36b20 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   * col1 FROM tab
36b30 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39  0 cor0..----..19
36b40 35 33 0d 0a 37 35 33 33 0d 0a 39 33 0d 0a 0d 0a  53..7533..93....
36b50 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
36b60 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
36b70 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
36b80 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
36b90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
36ba0 65 6c 2d 31 31 38 36 0d 0a 53 45 4c 45 43 54 20  el-1186..SELECT 
36bb0 2d 20 28 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  - ( + COUNT( * )
36bc0 20 29 20 44 49 56 20 2b 20 31 31 20 46 52 4f 4d   ) DIV + 11 FROM
36bd0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
36be0 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
36bf0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
36c00 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
36c10 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
36c20 31 38 36 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20  186..SELECT - ( 
36c30 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20  + COUNT ( * ) ) 
36c40 2f 20 2b 20 31 31 20 46 52 4f 4d 20 74 61 62 31  / + 11 FROM tab1
36c50 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
36c60 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
36c70 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
36c80 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
36c90 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
36ca0 38 37 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55  87..SELECT + COU
36cb0 4e 54 28 20 63 6f 6c 31 20 29 20 2a 20 2d 20 2d  NT( col1 ) * - -
36cc0 20 34 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   42 AS col2 FROM
36cd0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
36ce0 2d 2d 2d 0d 0a 31 32 36 0d 0a 0d 0a 73 6b 69 70  ---..126....skip
36cf0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
36d00 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
36d10 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
36d20 2d 31 31 38 37 0d 0a 53 45 4c 45 43 54 20 2b 20  -1187..SELECT + 
36d30 43 4f 55 4e 54 20 28 20 63 6f 6c 31 20 29 20 2a  COUNT ( col1 ) *
36d40 20 2d 20 2d 20 34 32 20 41 53 20 63 6f 6c 32 20   - - 42 AS col2 
36d50 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
36d60 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 36 0d 0a 0d 0a  0..----..126....
36d70 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
36d80 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
36d90 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45   tab0 cor0 WHERE
36da0 20 4e 4f 54 20 2d 20 36 34 20 2a 20 38 35 20 2b   NOT - 64 * 85 +
36db0 20 2b 20 2d 20 63 6f 6c 31 20 49 53 20 4e 4f 54   + - col1 IS NOT
36dc0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
36dd0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
36de0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
36df0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
36e00 72 74 20 6c 61 62 65 6c 2d 31 31 38 39 0d 0a 53  rt label-1189..S
36e10 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a  ELECT - COUNT( *
36e20 20 29 20 41 53 20 63 6f 6c 30 2c 20 2d 20 34 20   ) AS col0, - 4 
36e30 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
36e40 0a 2d 33 0d 0a 2d 34 0d 0a 0d 0a 73 6b 69 70 69  .-3..-4....skipi
36e50 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
36e60 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
36e70 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
36e80 2d 31 31 38 39 0d 0a 53 45 4c 45 43 54 20 2d 20  -1189..SELECT - 
36e90 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
36ea0 6f 6c 30 2c 20 2d 20 34 20 46 52 4f 4d 20 74 61  ol0, - 4 FROM ta
36eb0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 34  b0..----..-3..-4
36ec0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
36ed0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
36ee0 6c 30 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63  l0 + + col2 AS c
36ef0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol0 FROM tab2 WH
36f00 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 49  ERE NOT - col2 I
36f10 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S NULL..----..10
36f20 34 0d 0a 31 33 33 0d 0a 36 39 0d 0a 0d 0a 71 75  4..133..69....qu
36f30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
36f40 45 4c 45 43 54 20 37 37 20 2a 20 63 6f 6c 31 20  ELECT 77 * col1 
36f50 2a 20 2b 20 2b 20 31 32 20 46 52 4f 4d 20 74 61  * + + 12 FROM ta
36f60 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 34 30 34 0d  b0..----..19404.
36f70 0a 37 34 38 34 34 0d 0a 39 32 34 0d 0a 0d 0a 71  .74844..924....q
36f80 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
36f90 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 35 33 20  SELECT ALL ( 53 
36fa0 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
36fb0 2d 0d 0a 35 33 0d 0a 35 33 0d 0a 35 33 0d 0a 0d  -..53..53..53...
36fc0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36fd0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 46 52  ..SELECT col0 FR
36fe0 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
36ff0 54 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 2d  T + + col2 + - -
37000 20 36 32 20 2a 20 2b 20 2d 20 63 6f 6c 32 20 2b   62 * + - col2 +
37010 20 2d 20 2b 20 63 6f 6c 30 20 3c 3d 20 4e 55 4c   - + col0 <= NUL
37020 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
37030 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
37040 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 31 36  CT DISTINCT + 16
37050 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
37060 30 20 57 48 45 52 45 20 28 20 2d 20 2d 20 63 6f  0 WHERE ( - - co
37070 6c 31 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  l1 ) IS NOT NULL
37080 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d 0a 31 31 33  ..----..103..113
37090 0d 0a 33 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ..31....skipif p
370a0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
370b0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
370c0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
370d0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
370e0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
370f0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 34 38  t..SELECT ALL 48
37100 2c 20 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f 4d  , col2 col0 FROM
37110 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 34 38 0d   tab0..----..48.
37120 0a 31 30 0d 0a 34 38 0d 0a 34 37 0d 0a 34 38 0d  .10..48..47..48.
37130 0a 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  .99....skipif po
37140 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
37150 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
37160 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
37170 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
37180 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
37190 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
371a0 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 2b 20 63 6f   - col1 + - + co
371b0 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  l0 col0 FROM tab
371c0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 31 0d 0a 2d  2..----..-141..-
371d0 31 34 32 0d 0a 2d 39 37 0d 0a 0d 0a 6f 6e 6c 79  142..-97....only
371e0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
371f0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
37200 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
37210 61 62 65 6c 2d 31 31 39 37 0d 0a 53 45 4c 45 43  abel-1197..SELEC
37220 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  T + COUNT( * ) *
37230 20 36 33 20 46 52 4f 4d 20 74 61 62 31 20 41 53   63 FROM tab1 AS
37240 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 39   cor0..----..189
37250 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
37260 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
37270 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
37280 72 74 20 6c 61 62 65 6c 2d 31 31 39 37 0d 0a 53  rt label-1197..S
37290 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  ELECT + COUNT ( 
372a0 2a 20 29 20 2a 20 36 33 20 46 52 4f 4d 20 74 61  * ) * 63 FROM ta
372b0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
372c0 0d 0a 31 38 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..189....query I
372d0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
372e0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
372f0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
37300 20 28 20 2b 20 37 38 20 2b 20 2d 20 2b 20 63 6f   ( + 78 + - + co
37310 6c 30 20 29 20 3e 20 2d 20 63 6f 6c 31 20 2b 20  l0 ) > - col1 + 
37320 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a  col0..----..75..
37330 36 37 0d 0a 35 38 0d 0a 0d 0a 71 75 65 72 79 20  67..58....query 
37340 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
37350 54 20 2d 20 28 20 2b 20 2b 20 31 32 20 29 20 2b  T - ( + + 12 ) +
37360 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   + col2 AS col0 
37370 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
37380 30 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 35 36 0d  0..----..47..56.
37390 0a 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .84....onlyif my
373a0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
373b0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
373c0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
373d0 31 32 30 30 0d 0a 53 45 4c 45 43 54 20 32 32 20  1200..SELECT 22 
373e0 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  * COUNT( * ) AS 
373f0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
37400 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 34  S cor0 WHERE + 4
37410 31 20 4e 4f 54 20 49 4e 20 28 20 28 20 2b 20 2d  1 NOT IN ( ( + -
37420 20 28 20 32 37 20 29 20 29 20 29 0d 0a 2d 2d 2d   ( 27 ) ) )..---
37430 2d 0d 0a 36 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..66....skipif 
37440 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
37450 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
37460 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
37470 30 30 0d 0a 53 45 4c 45 43 54 20 32 32 20 2a 20  00..SELECT 22 * 
37480 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
37490 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
374a0 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 34 31   cor0 WHERE + 41
374b0 20 4e 4f 54 20 49 4e 20 28 20 28 20 2b 20 2d 20   NOT IN ( ( + - 
374c0 28 20 32 37 20 29 20 29 20 29 0d 0a 2d 2d 2d 2d  ( 27 ) ) )..----
374d0 0d 0a 36 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ..66....skipif p
374e0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
374f0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
37500 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
37510 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
37520 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
37530 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20  ..SELECT - col1 
37540 2b 20 2d 20 2b 20 63 6f 6c 30 20 63 6f 6c 30 20  + - + col0 col0 
37550 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
37560 0a 2d 31 33 38 0d 0a 2d 36 35 0d 0a 2d 39 30 0d  .-138..-65..-90.
37570 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
37580 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
37590 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
375a0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
375b0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
375c0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
375d0 4c 45 43 54 20 2b 20 35 39 2c 20 63 6f 6c 31 20  LECT + 59, col1 
375e0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
375f0 2d 2d 2d 2d 0d 0a 35 39 0d 0a 31 0d 0a 35 39 0d  ----..59..1..59.
37600 0a 32 31 0d 0a 35 39 0d 0a 38 31 0d 0a 0d 0a 71  .21..59..81....q
37610 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
37620 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20  SELECT ALL col1 
37630 2b 20 2b 20 28 20 2b 20 2d 20 33 37 20 29 20 46  + + ( + - 37 ) F
37640 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
37650 2d 32 33 0d 0a 2d 33 32 0d 0a 31 30 0d 0a 0d 0a  -23..-32..10....
37660 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
37670 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
37680 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
37690 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
376a0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
376b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
376c0 20 28 20 2b 20 2d 20 63 6f 6c 30 20 29 20 63 6f   ( + - col0 ) co
376d0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l2 FROM tab2 cor
376e0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d 36  0..----..-46..-6
376f0 34 0d 0a 2d 37 35 0d 0a 0d 0a 73 6b 69 70 69 66  4..-75....skipif
37700 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
37710 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
37720 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
37730 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
37740 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
37750 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
37760 4e 43 54 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 2d  NCT - col2 + - -
37770 20 63 6f 6c 30 20 63 6f 6c 32 20 46 52 4f 4d 20   col0 col2 FROM 
37780 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
37790 2d 2d 0d 0a 2d 32 0d 0a 2d 33 32 0d 0a 37 37 0d  --..-2..-32..77.
377a0 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
377b0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
377c0 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
377d0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
377e0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
377f0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
37800 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 37 35  LECT DISTINCT 75
37810 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 63 6f   * - col1 + + co
37820 6c 31 20 2b 20 2d 20 2b 20 36 39 20 63 6f 6c 30  l1 + - + 69 col0
37830 2c 20 63 6f 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c  , col1 * + - col
37840 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
37850 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
37860 2d 0d 0a 2d 33 38 34 33 0d 0a 2d 32 33 34 36 0d  -..-3843..-2346.
37870 0a 2d 35 30 32 37 0d 0a 2d 35 30 32 35 0d 0a 2d  .-5027..-5025..-
37880 35 37 36 37 0d 0a 2d 34 39 32 38 0d 0a 0d 0a 71  5767..-4928....q
37890 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
378a0 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
378b0 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
378c0 52 45 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20  RE NULL BETWEEN 
378d0 63 6f 6c 31 20 41 4e 44 20 2d 20 2b 20 63 6f 6c  col1 AND - + col
378e0 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  0..----....onlyi
378f0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
37900 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
37910 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
37920 62 65 6c 2d 31 32 30 38 0d 0a 53 45 4c 45 43 54  bel-1208..SELECT
37930 20 2d 20 4d 41 58 28 20 2d 20 2d 20 32 35 20 29   - MAX( - - 25 )
37940 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
37950 72 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 30 20  r0 WHERE - col0 
37960 2a 20 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c  * - col2 IS NULL
37970 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
37980 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
37990 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
379a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
379b0 61 62 65 6c 2d 31 32 30 38 0d 0a 53 45 4c 45 43  abel-1208..SELEC
379c0 54 20 2d 20 4d 41 58 20 28 20 2d 20 2d 20 32 35  T - MAX ( - - 25
379d0 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
379e0 63 6f 72 30 20 57 48 45 52 45 20 2d 20 63 6f 6c  cor0 WHERE - col
379f0 30 20 2a 20 2d 20 63 6f 6c 32 20 49 53 20 4e 55  0 * - col2 IS NU
37a00 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  LL..----..NULL..
37a10 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
37a20 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
37a30 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
37a40 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 30 39 0d  sort label-1209.
37a50 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 33 32  .SELECT ALL - 32
37a60 20 2a 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20   * - - COUNT( * 
37a70 29 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ) - + COUNT( * )
37a80 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
37a90 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
37aa0 0d 0a 2d 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-99....skipif 
37ab0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
37ac0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
37ad0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
37ae0 30 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  09..SELECT ALL -
37af0 20 33 32 20 2a 20 2d 20 2d 20 43 4f 55 4e 54 20   32 * - - COUNT 
37b00 28 20 2a 20 29 20 2d 20 2b 20 43 4f 55 4e 54 20  ( * ) - + COUNT 
37b10 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
37b20 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
37b30 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d 0a 0d 0a 71 75  .----..-99....qu
37b40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
37b50 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
37b60 6f 6c 30 20 2d 20 2d 20 2d 20 28 20 63 6f 6c 31  ol0 - - - ( col1
37b70 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
37b80 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 0d  cor0..----..-13.
37b90 0a 2d 35 0d 0a 38 0d 0a 0d 0a 71 75 65 72 79 20  .-5..8....query 
37ba0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
37bb0 54 20 31 30 20 2a 20 2b 20 38 31 20 2b 20 2b 20  T 10 * + 81 + + 
37bc0 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  col0 AS col2 FRO
37bd0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 38 32  M tab0..----..82
37be0 35 0d 0a 38 39 37 0d 0a 39 30 37 0d 0a 0d 0a 6f  5..897..907....o
37bf0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
37c00 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
37c10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
37c20 74 20 6c 61 62 65 6c 2d 31 32 31 32 0d 0a 53 45  t label-1212..SE
37c30 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20  LECT + COUNT( * 
37c40 29 20 2b 20 4d 49 4e 28 20 63 6f 6c 31 20 29 20  ) + MIN( col1 ) 
37c50 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
37c60 0a 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .8....skipif mys
37c70 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
37c80 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
37c90 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 32 0d  sort label-1212.
37ca0 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20  .SELECT + COUNT 
37cb0 28 20 2a 20 29 20 2b 20 4d 49 4e 20 28 20 63 6f  ( * ) + MIN ( co
37cc0 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a  l1 ) FROM tab1..
37cd0 2d 2d 2d 2d 0d 0a 38 0d 0a 0d 0a 6f 6e 6c 79 69  ----..8....onlyi
37ce0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
37cf0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
37d00 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
37d10 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 33  wsort label-1213
37d20 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 44 49  ..SELECT col2 DI
37d30 56 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 41 53  V col1 + col1 AS
37d40 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
37d50 0a 2d 2d 2d 2d 0d 0a 31 30 30 0d 0a 32 31 0d 0a  .----..100..21..
37d60 38 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  81....skipif mys
37d70 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
37d80 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
37d90 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 33 0d  sort label-1213.
37da0 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2f 20 63  .SELECT col2 / c
37db0 6f 6c 31 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  ol1 + col1 AS co
37dc0 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
37dd0 2d 2d 0d 0a 31 30 30 0d 0a 32 31 0d 0a 38 31 0d  --..100..21..81.
37de0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
37df0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
37e00 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
37e10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
37e20 62 65 6c 2d 31 32 31 34 0d 0a 53 45 4c 45 43 54  bel-1214..SELECT
37e30 20 41 4c 4c 20 43 41 53 54 28 20 4e 55 4c 4c 20   ALL CAST( NULL 
37e40 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 28 20  AS SIGNED ) * ( 
37e50 2b 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2d 20 63  + - col1 ) * - c
37e60 6f 6c 30 20 2a 20 2d 20 38 37 20 2a 20 2d 20 63  ol0 * - 87 * - c
37e70 6f 6c 31 20 2d 20 2b 20 2d 20 63 6f 6c 32 20 2b  ol1 - + - col2 +
37e80 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74   + - col2 FROM t
37e90 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab0..----..NULL.
37ea0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
37eb0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
37ec0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
37ed0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
37ee0 62 65 6c 2d 31 32 31 34 0d 0a 53 45 4c 45 43 54  bel-1214..SELECT
37ef0 20 41 4c 4c 20 43 41 53 54 20 28 20 4e 55 4c 4c   ALL CAST ( NULL
37f00 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20   AS INTEGER ) * 
37f10 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2d  ( + - col1 ) * -
37f20 20 63 6f 6c 30 20 2a 20 2d 20 38 37 20 2a 20 2d   col0 * - 87 * -
37f30 20 63 6f 6c 31 20 2d 20 2b 20 2d 20 63 6f 6c 32   col1 - + - col2
37f40 20 2b 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d   + + - col2 FROM
37f50 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab0..----..NUL
37f60 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
37f70 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
37f80 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
37f90 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
37fa0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
37fb0 6c 2d 31 32 31 35 0d 0a 53 45 4c 45 43 54 20 41  l-1215..SELECT A
37fc0 4c 4c 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c  LL + col0 AS col
37fd0 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  0 FROM tab2 WHER
37fe0 45 20 4e 4f 54 20 2d 20 43 41 53 54 28 20 2b 20  E NOT - CAST( + 
37ff0 34 31 20 41 53 20 53 49 47 4e 45 44 20 29 20 49  41 AS SIGNED ) I
38000 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
38010 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
38020 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
38030 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
38040 72 74 20 6c 61 62 65 6c 2d 31 32 31 35 0d 0a 53  rt label-1215..S
38050 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30  ELECT ALL + col0
38060 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
38070 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 43  b2 WHERE NOT - C
38080 41 53 54 20 28 20 2b 20 34 31 20 41 53 20 49 4e  AST ( + 41 AS IN
38090 54 45 47 45 52 20 29 20 49 53 20 4e 4f 54 20 4e  TEGER ) IS NOT N
380a0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
380b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
380c0 4c 45 43 54 20 41 4c 4c 20 2d 20 33 30 20 2b 20  LECT ALL - 30 + 
380d0 2d 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32  - - col2 AS col2
380e0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
380f0 0d 0a 32 39 0d 0a 33 38 0d 0a 36 36 0d 0a 0d 0a  ..29..38..66....
38100 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
38110 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2b 20 2d  .SELECT col2 + -
38120 20 32 38 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   28 AS col0 FROM
38130 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 31 0d   tab1..----..31.
38140 0a 34 30 0d 0a 36 38 0d 0a 0d 0a 6f 6e 6c 79 69  .40..68....onlyi
38150 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
38160 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
38170 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
38180 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
38190 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
381a0 31 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  18..SELECT ALL -
381b0 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
381c0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
381d0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
381e0 2d 20 43 41 53 54 28 20 63 6f 6c 30 20 41 53 20  - CAST( col0 AS 
381f0 53 49 47 4e 45 44 20 29 20 49 53 20 4e 55 4c 4c  SIGNED ) IS NULL
38200 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b  ..----..-3....sk
38210 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
38220 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
38230 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
38240 65 6c 2d 31 32 31 38 0d 0a 53 45 4c 45 43 54 20  el-1218..SELECT 
38250 41 4c 4c 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  ALL - COUNT ( * 
38260 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
38270 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
38280 45 20 4e 4f 54 20 2d 20 43 41 53 54 20 28 20 63  E NOT - CAST ( c
38290 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol0 AS INTEGER )
382a0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
382b0 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -3....query I ro
382c0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
382d0 4c 20 35 33 20 2b 20 2b 20 63 6f 6c 30 20 2b 20  L 53 + + col0 + 
382e0 63 6f 6c 31 20 2b 20 2b 20 2d 20 63 6f 6c 30 20  col1 + + - col0 
382f0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
38300 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
38310 0a 31 33 34 0d 0a 35 34 0d 0a 37 34 0d 0a 0d 0a  .134..54..74....
38320 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
38330 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
38340 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
38350 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
38360 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
38370 65 6c 2d 31 32 32 30 0d 0a 53 45 4c 45 43 54 20  el-1220..SELECT 
38380 41 4c 4c 20 2d 20 33 30 20 44 49 56 20 2b 20 53  ALL - 30 DIV + S
38390 55 4d 28 20 63 6f 6c 32 20 29 20 2a 20 2d 20 43  UM( col2 ) * - C
383a0 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
383b0 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  1 FROM tab2 cor0
383c0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
383d0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
383e0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
383f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
38400 6c 2d 31 32 32 30 0d 0a 53 45 4c 45 43 54 20 41  l-1220..SELECT A
38410 4c 4c 20 2d 20 33 30 20 2f 20 2b 20 53 55 4d 20  LL - 30 / + SUM 
38420 28 20 63 6f 6c 32 20 29 20 2a 20 2d 20 43 4f 55  ( col2 ) * - COU
38430 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  NT ( * ) AS col1
38440 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
38450 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .----..0....quer
38460 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
38470 4c 45 43 54 20 36 39 20 41 53 20 63 6f 6c 31 2c  LECT 69 AS col1,
38480 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20   - col1 AS col0 
38490 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
384a0 0a 36 39 0d 0a 2d 31 0d 0a 36 39 0d 0a 2d 32 31  .69..-1..69..-21
384b0 0d 0a 36 39 0d 0a 2d 38 31 0d 0a 0d 0a 6f 6e 6c  ..69..-81....onl
384c0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
384d0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
384e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
384f0 6c 61 62 65 6c 2d 31 32 32 32 0d 0a 53 45 4c 45  label-1222..SELE
38500 43 54 20 2d 20 36 33 20 2a 20 43 4f 55 4e 54 28  CT - 63 * COUNT(
38510 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
38520 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
38530 38 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  89....skipif mys
38540 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
38550 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
38560 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32 32 0d  sort label-1222.
38570 0a 53 45 4c 45 43 54 20 2d 20 36 33 20 2a 20 43  .SELECT - 63 * C
38580 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
38590 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
385a0 2d 2d 0d 0a 2d 31 38 39 0d 0a 0d 0a 71 75 65 72  --..-189....quer
385b0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
385c0 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 41  ECT ALL + col2 A
385d0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
385e0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
385f0 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3e 20 4e 55  OT ( NULL ) > NU
38600 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
38610 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
38620 4c 45 43 54 20 2d 20 31 32 2c 20 2b 20 63 6f 6c  LECT - 12, + col
38630 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
38640 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
38650 2d 31 32 0d 0a 31 0d 0a 2d 31 32 0d 0a 32 31 0d  -12..1..-12..21.
38660 0a 2d 31 32 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72  .-12..81....quer
38670 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
38680 45 43 54 20 2d 20 41 56 47 20 28 20 44 49 53 54  ECT - AVG ( DIST
38690 49 4e 43 54 20 34 20 29 20 41 53 20 63 6f 6c 31  INCT 4 ) AS col1
386a0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
386b0 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  r0 WHERE NOT col
386c0 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55  2 NOT BETWEEN NU
386d0 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d  LL AND NULL..---
386e0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
386f0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
38700 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
38710 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
38720 61 62 65 6c 2d 31 32 32 36 0d 0a 53 45 4c 45 43  abel-1226..SELEC
38730 54 20 2b 20 4d 41 58 28 20 44 49 53 54 49 4e 43  T + MAX( DISTINC
38740 54 20 2d 20 2b 20 28 20 63 6f 6c 32 20 29 20 29  T - + ( col2 ) )
38750 20 41 53 20 63 6f 6c 32 2c 20 34 32 20 2d 20 2b   AS col2, 42 - +
38760 20 38 39 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   89 AS col0 FROM
38770 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
38780 2d 2d 2d 0d 0a 2d 32 33 0d 0a 2d 34 37 0d 0a 0d  ---..-23..-47...
38790 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
387a0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
387b0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
387c0 20 6c 61 62 65 6c 2d 31 32 32 36 0d 0a 53 45 4c   label-1226..SEL
387d0 45 43 54 20 2b 20 4d 41 58 20 28 20 44 49 53 54  ECT + MAX ( DIST
387e0 49 4e 43 54 20 2d 20 2b 20 28 20 63 6f 6c 32 20  INCT - + ( col2 
387f0 29 20 29 20 41 53 20 63 6f 6c 32 2c 20 34 32 20  ) ) AS col2, 42 
38800 2d 20 2b 20 38 39 20 41 53 20 63 6f 6c 30 20 46  - + 89 AS col0 F
38810 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
38820 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 2d 34 37  ..----..-23..-47
38830 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
38840 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
38850 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
38860 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
38870 61 62 65 6c 2d 31 32 32 37 0d 0a 53 45 4c 45 43  abel-1227..SELEC
38880 54 20 41 4c 4c 20 37 38 20 2a 20 43 41 53 54 28  T ALL 78 * CAST(
38890 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
388a0 29 20 2b 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2b  ) + + - col0 * +
388b0 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 30 20 2f   col2 * + col0 /
388c0 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   - col2 FROM tab
388d0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
388e0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
388f0 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
38900 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
38910 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
38920 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32 37 0d 0a  ort label-1227..
38930 53 45 4c 45 43 54 20 41 4c 4c 20 37 38 20 2a 20  SELECT ALL 78 * 
38940 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
38950 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 2d 20 63  NTEGER ) + + - c
38960 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32 20 2a 20 2b  ol0 * + col2 * +
38970 20 63 6f 6c 30 20 2f 20 2d 20 63 6f 6c 32 20 46   col0 / - col2 F
38980 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
38990 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
389a0 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  LL..NULL....skip
389b0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
389c0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
389d0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
389e0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
389f0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
38a00 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  sort..SELECT - -
38a10 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 31 20 63   col2 * + col1 c
38a20 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol1 FROM tab2 co
38a30 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 37 33 0d 0a  r0..----..1173..
38a40 33 30 38 30 0d 0a 33 38 38 36 0d 0a 0d 0a 71 75  3080..3886....qu
38a50 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
38a60 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
38a70 2b 20 28 20 2b 20 63 6f 6c 30 20 29 20 2a 20 63  + ( + col0 ) * c
38a80 6f 6c 30 2c 20 32 39 20 2a 20 2b 20 2d 20 30 20  ol0, 29 * + - 0 
38a90 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
38aa0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
38ab0 0a 32 32 35 0d 0a 30 0d 0a 37 35 36 39 0d 0a 30  .225..0..7569..0
38ac0 0d 0a 39 34 30 39 0d 0a 30 0d 0a 0d 0a 6f 6e 6c  ..9409..0....onl
38ad0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
38ae0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
38af0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
38b00 6c 61 62 65 6c 2d 31 32 33 30 0d 0a 53 45 4c 45  label-1230..SELE
38b10 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20  CT DISTINCT + - 
38b20 4d 41 58 28 20 63 6f 6c 30 20 29 20 46 52 4f 4d  MAX( col0 ) FROM
38b30 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
38b40 2d 2d 2d 0d 0a 2d 37 35 0d 0a 0d 0a 73 6b 69 70  ---..-75....skip
38b50 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
38b60 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
38b70 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
38b80 2d 31 32 33 30 0d 0a 53 45 4c 45 43 54 20 44 49  -1230..SELECT DI
38b90 53 54 49 4e 43 54 20 2b 20 2d 20 4d 41 58 20 28  STINCT + - MAX (
38ba0 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62   col0 ) FROM tab
38bb0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
38bc0 0a 2d 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-75....onlyif m
38bd0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
38be0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
38bf0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
38c00 6c 2d 31 32 33 31 0d