sqllogictest
Hex Artifact Content
Not logged in

Artifact 59a67b382dfd82dee38ca703764bbd7b59f67931:


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 2a 20  wsort..SELECT * 
02e0: 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
02f0: 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 30 20 3c 3e  col2 / + col0 <>
0300: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
0310: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
0320: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
0330: 74 61 62 30 20 57 48 45 52 45 20 28 20 31 31 20  tab0 WHERE ( 11 
0340: 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20  ) NOT BETWEEN - 
0350: 63 6f 6c 30 20 2b 20 2b 20 38 31 20 41 4e 44 20  col0 + + 81 AND 
0360: 63 6f 6c 31 20 2b 20 28 20 63 6f 6c 30 20 29 0d  col1 + ( col0 ).
0370: 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 31 0d 0a 34  .----..15..81..4
0380: 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
0390: 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
03a0: 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
03b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
03c0: 6c 61 62 65 6c 2d 32 0d 0a 53 45 4c 45 43 54 20  label-2..SELECT 
03d0: 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 2d 20  DISTINCT col0 - 
03e0: 63 6f 6c 32 20 44 49 56 20 2b 20 63 6f 6c 31 20  col2 DIV + col1 
03f0: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
0400: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d 0a 31 35 0d  0..----..-2..15.
0410: 0a 38 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .87....skipif my
0420: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
0430: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
0440: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 0d 0a 53  wsort label-2..S
0450: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
0460: 6f 6c 30 20 2d 20 63 6f 6c 32 20 2f 20 2b 20 63  ol0 - col2 / + c
0470: 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol1 AS col1 FROM
0480: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d   tab0..----..-2.
0490: 0a 31 35 0d 0a 38 37 0d 0a 0d 0a 6f 6e 6c 79 69  .15..87....onlyi
04a0: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
04b0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
04c0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
04d0: 62 65 6c 2d 33 0d 0a 53 45 4c 45 43 54 20 2b 20  bel-3..SELECT + 
04e0: 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
04f0: 74 61 62 31 20 57 48 45 52 45 20 28 20 4e 55 4c  tab1 WHERE ( NUL
0500: 4c 20 29 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  L ) = NULL..----
0510: 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
0520: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
0530: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
0540: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 0d 0a 53  wsort label-3..S
0550: 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  ELECT + COUNT ( 
0560: 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 57 48  * ) FROM tab1 WH
0570: 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 3d 20 4e  ERE ( NULL ) = N
0580: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
0590: 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
05a0: 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
05b0: 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
05c0: 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
05d0: 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
05e0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
05f0: 20 63 6f 6c 32 20 2a 20 35 33 20 2b 20 34 35 20   col2 * 53 + 45 
0600: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
0610: 2d 2d 2d 2d 0d 0a 31 32 36 34 0d 0a 32 31 36 35  ----..1264..2165
0620: 0d 0a 33 31 31 39 0d 0a 0d 0a 71 75 65 72 79 20  ..3119....query 
0630: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
0640: 54 20 63 6f 6c 31 20 2a 20 2d 20 32 33 20 41 53  T col1 * - 23 AS
0650: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
0660: 0a 2d 2d 2d 2d 0d 0a 2d 31 38 36 33 0d 0a 2d 32  .----..-1863..-2
0670: 33 0d 0a 2d 34 38 33 0d 0a 0d 0a 6f 6e 6c 79 69  3..-483....onlyi
0680: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
0690: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
06a0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
06b0: 62 65 6c 2d 36 0d 0a 53 45 4c 45 43 54 20 44 49  bel-6..SELECT DI
06c0: 53 54 49 4e 43 54 20 2b 20 53 55 4d 28 20 44 49  STINCT + SUM( DI
06d0: 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 29 20  STINCT + col2 ) 
06e0: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
06f0: 28 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c  ( + col0 * - col
0700: 31 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  1 ) IS NOT NULL.
0710: 0a 2d 2d 2d 2d 0d 0a 31 32 31 0d 0a 0d 0a 73 6b  .----..121....sk
0720: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
0730: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
0740: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
0750: 65 6c 2d 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  el-6..SELECT DIS
0760: 54 49 4e 43 54 20 2b 20 53 55 4d 20 28 20 44 49  TINCT + SUM ( DI
0770: 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 29 20  STINCT + col2 ) 
0780: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
0790: 28 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c  ( + col0 * - col
07a0: 31 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  1 ) IS NOT NULL.
07b0: 0a 2d 2d 2d 2d 0d 0a 31 32 31 0d 0a 0d 0a 6f 6e  .----..121....on
07c0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
07d0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
07e0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
07f0: 20 6c 61 62 65 6c 2d 37 0d 0a 53 45 4c 45 43 54   label-7..SELECT
0800: 20 44 49 53 54 49 4e 43 54 20 2d 20 4d 41 58 28   DISTINCT - MAX(
0810: 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 29 20 2a 20   ALL - col0 ) * 
0820: 2b 20 33 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  + 32 FROM tab2..
0830: 2d 2d 2d 2d 0d 0a 31 34 37 32 0d 0a 0d 0a 73 6b  ----..1472....sk
0840: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
0850: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
0860: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
0870: 65 6c 2d 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  el-7..SELECT DIS
0880: 54 49 4e 43 54 20 2d 20 4d 41 58 20 28 20 41 4c  TINCT - MAX ( AL
0890: 4c 20 2d 20 63 6f 6c 30 20 29 20 2a 20 2b 20 33  L - col0 ) * + 3
08a0: 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
08b0: 2d 0d 0a 31 34 37 32 0d 0a 0d 0a 6f 6e 6c 79 69  -..1472....onlyi
08c0: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
08d0: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
08e0: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
08f0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 0d 0a 53  wsort label-8..S
0900: 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 44  ELECT ALL col2 D
0910: 49 56 20 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  IV 2 FROM tab1..
0920: 2d 2d 2d 2d 0d 0a 32 39 0d 0a 33 34 0d 0a 34 38  ----..29..34..48
0930: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
0940: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
0950: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
0960: 72 74 20 6c 61 62 65 6c 2d 38 0d 0a 53 45 4c 45  rt label-8..SELE
0970: 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2f 20 32 20  CT ALL col2 / 2 
0980: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
0990: 0a 32 39 0d 0a 33 34 0d 0a 34 38 0d 0a 0d 0a 6f  .29..34..48....o
09a0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
09b0: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
09c0: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
09d0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
09e0: 39 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30  9..SELECT - col0
09f0: 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
0a00: 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c   SIGNED ) AS col
0a10: 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
0a20: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
0a30: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
0a40: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
0a50: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
0a60: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 0d 0a 53  wsort label-9..S
0a70: 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2b 20 43  ELECT - col0 + C
0a80: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
0a90: 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20  TEGER ) AS col2 
0aa0: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
0ab0: 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
0ac0: 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
0ad0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
0ae0: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
0af0: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 63 6f  OM tab2 WHERE co
0b00: 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  l2 IS NOT NULL..
0b10: 2d 2d 2d 2d 0d 0a 34 36 0d 0a 36 34 0d 0a 37 35  ----..46..64..75
0b20: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
0b30: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
0b40: 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  - col0 FROM tab1
0b50: 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e   WHERE NULL IS N
0b60: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a  ULL..----..-51..
0b70: 2d 38 35 0d 0a 2d 39 31 0d 0a 0d 0a 71 75 65 72  -85..-91....quer
0b80: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
0b90: 45 43 54 20 35 38 20 2a 20 63 6f 6c 30 20 41 53  ECT 58 * col0 AS
0ba0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
0bb0: 0a 2d 2d 2d 2d 0d 0a 32 36 36 38 0d 0a 33 37 31  .----..2668..371
0bc0: 32 0d 0a 34 33 35 30 0d 0a 0d 0a 6f 6e 6c 79 69  2..4350....onlyi
0bd0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
0be0: 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
0bf0: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
0c00: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
0c10: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33  rowsort label-13
0c20: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
0c30: 4f 55 4e 54 28 20 2b 20 35 20 29 20 2b 20 2d 20  OUNT( + 5 ) + - 
0c40: 41 56 47 20 28 20 41 4c 4c 20 43 41 53 54 28 20  AVG ( ALL CAST( 
0c50: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
0c60: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
0c70: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab2..----..NULL
0c80: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
0c90: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
0ca0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
0cb0: 72 74 20 6c 61 62 65 6c 2d 31 33 0d 0a 53 45 4c  rt label-13..SEL
0cc0: 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20  ECT ALL + COUNT 
0cd0: 28 20 2b 20 35 20 29 20 2b 20 2d 20 41 56 47 20  ( + 5 ) + - AVG 
0ce0: 28 20 41 4c 4c 20 43 41 53 54 20 28 20 4e 55 4c  ( ALL CAST ( NUL
0cf0: 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29  L AS INTEGER ) )
0d00: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
0d10: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b2..----..NULL..
0d20: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0d30: 74 0d 0a 53 45 4c 45 43 54 20 37 20 2a 20 33 32  t..SELECT 7 * 32
0d40: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
0d50: 20 4e 4f 54 20 37 39 20 49 53 20 4e 55 4c 4c 0d   NOT 79 IS NULL.
0d60: 0a 2d 2d 2d 2d 0d 0a 32 32 34 0d 0a 32 32 34 0d  .----..224..224.
0d70: 0a 32 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .224....query I 
0d80: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
0d90: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57  col2 FROM tab0 W
0da0: 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 31 20  HERE NOT - col1 
0db0: 2b 20 2b 20 63 6f 6c 31 20 4e 4f 54 20 49 4e 20  + + col1 NOT IN 
0dc0: 28 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a  ( col0 )..----..
0dd0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
0de0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
0df0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
0e00: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 0d 0a 53  sort label-16..S
0e10: 45 4c 45 43 54 20 2d 20 39 30 20 2a 20 43 4f 55  ELECT - 90 * COU
0e20: 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  NT( * ) AS col2 
0e30: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
0e40: 0a 2d 32 37 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-270....skipif 
0e50: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
0e60: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
0e70: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36  rowsort label-16
0e80: 0d 0a 53 45 4c 45 43 54 20 2d 20 39 30 20 2a 20  ..SELECT - 90 * 
0e90: 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
0ea0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
0eb0: 2d 2d 2d 0d 0a 2d 32 37 30 0d 0a 0d 0a 73 6b 69  ---..-270....ski
0ec0: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
0ed0: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
0ee0: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
0ef0: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
0f00: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
0f10: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
0f20: 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 63 6f  col0 * + col0 co
0f30: 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
0f40: 2d 2d 0d 0a 2d 32 32 35 0d 0a 2d 37 35 36 39 0d  --..-225..-7569.
0f50: 0a 2d 39 34 30 39 0d 0a 0d 0a 71 75 65 72 79 20  .-9409....query 
0f60: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
0f70: 54 20 38 38 20 2a 20 2b 20 63 6f 6c 31 20 46 52  T 88 * + col1 FR
0f80: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab1..----..1
0f90: 32 33 32 0d 0a 34 31 33 36 0d 0a 34 34 30 0d 0a  232..4136..440..
0fa0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0fb0: 74 0d 0a 53 45 4c 45 43 54 20 32 36 20 2a 20 63  t..SELECT 26 * c
0fc0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
0fd0: 2d 2d 2d 0d 0a 31 30 34 30 0d 0a 31 35 30 38 0d  ---..1040..1508.
0fe0: 0a 35 39 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .598....onlyif m
0ff0: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
1000: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
1010: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1020: 72 74 20 6c 61 62 65 6c 2d 32 30 0d 0a 53 45 4c  rt label-20..SEL
1030: 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 44  ECT ALL + col1 D
1040: 49 56 20 39 34 20 41 53 20 63 6f 6c 31 20 46 52  IV 94 AS col1 FR
1050: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab2..----..0
1060: 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ..0..0....skipif
1070: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1080: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1090: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
10a0: 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  0..SELECT ALL + 
10b0: 63 6f 6c 31 20 2f 20 39 34 20 41 53 20 63 6f 6c  col1 / 94 AS col
10c0: 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
10d0: 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e  -..0..0..0....on
10e0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
10f0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1100: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1110: 20 6c 61 62 65 6c 2d 32 31 0d 0a 53 45 4c 45 43   label-21..SELEC
1120: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55  T DISTINCT + COU
1130: 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
1140: 31 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32  1 WHERE NOT col2
1150: 20 2a 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d   * col1 IS NULL.
1160: 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70  .----..3....skip
1170: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1180: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1190: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
11a0: 2d 32 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -21..SELECT DIST
11b0: 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a  INCT + COUNT ( *
11c0: 20 29 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   ) FROM tab1 WHE
11d0: 52 45 20 4e 4f 54 20 63 6f 6c 32 20 2a 20 63 6f  RE NOT col2 * co
11e0: 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l1 IS NULL..----
11f0: 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..3....onlyif my
1200: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
1210: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1220: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1230: 74 20 6c 61 62 65 6c 2d 32 32 0d 0a 53 45 4c 45  t label-22..SELE
1240: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41  CT DISTINCT - CA
1250: 53 54 28 20 2d 20 31 33 20 41 53 20 53 49 47 4e  ST( - 13 AS SIGN
1260: 45 44 20 29 20 46 52 4f 4d 20 74 61 62 30 20 57  ED ) FROM tab0 W
1270: 48 45 52 45 20 4e 4f 54 20 31 38 20 2a 20 2b 20  HERE NOT 18 * + 
1280: 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 20 3c 20  col0 + + col1 < 
1290: 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 0d 0a  col0..----..13..
12a0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
12b0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
12c0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12d0: 20 6c 61 62 65 6c 2d 32 32 0d 0a 53 45 4c 45 43   label-22..SELEC
12e0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53  T DISTINCT - CAS
12f0: 54 20 28 20 2d 20 31 33 20 41 53 20 49 4e 54 45  T ( - 13 AS INTE
1300: 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20  GER ) FROM tab0 
1310: 57 48 45 52 45 20 4e 4f 54 20 31 38 20 2a 20 2b  WHERE NOT 18 * +
1320: 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 20 3c   col0 + + col1 <
1330: 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 0d   col0..----..13.
1340: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
1350: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1360: 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
1370: 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 38 39  0 WHERE NOT ( 89
1380: 20 29 20 2a 20 34 38 20 49 53 20 4e 4f 54 20 4e   ) * 48 IS NOT N
1390: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
13a0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
13b0: 4c 45 43 54 20 2d 20 28 20 2b 20 63 6f 6c 31 20  LECT - ( + col1 
13c0: 29 20 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f  ) * - col0 AS co
13d0: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l2 FROM tab0 WHE
13e0: 52 45 20 2b 20 63 6f 6c 32 20 2a 20 34 38 20 49  RE + col2 * 48 I
13f0: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
1400: 0d 0a 31 32 31 35 0d 0a 31 38 32 37 0d 0a 39 37  ..1215..1827..97
1410: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1420: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
1430: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
1440: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1450: 61 62 65 6c 2d 32 35 0d 0a 53 45 4c 45 43 54 20  abel-25..SELECT 
1460: 2b 20 43 41 53 54 28 20 2b 20 33 39 20 41 53 20  + CAST( + 39 AS 
1470: 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30  SIGNED ) AS col0
1480: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1490: 0d 0a 33 39 0d 0a 33 39 0d 0a 33 39 0d 0a 0d 0a  ..39..39..39....
14a0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
14b0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
14c0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
14d0: 61 62 65 6c 2d 32 35 0d 0a 53 45 4c 45 43 54 20  abel-25..SELECT 
14e0: 2b 20 43 41 53 54 20 28 20 2b 20 33 39 20 41 53  + CAST ( + 39 AS
14f0: 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
1500: 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
1510: 2d 2d 0d 0a 33 39 0d 0a 33 39 0d 0a 33 39 0d 0a  --..39..39..39..
1520: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1530: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
1540: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
1550: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
1560: 61 62 65 6c 2d 32 36 0d 0a 53 45 4c 45 43 54 20  abel-26..SELECT 
1570: 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
1580: 6f 72 30 20 57 48 45 52 45 20 43 41 53 54 28 20  or0 WHERE CAST( 
1590: 2b 20 33 34 20 41 53 20 53 49 47 4e 45 44 20 29  + 34 AS SIGNED )
15a0: 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
15b0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
15c0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
15d0: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
15e0: 72 74 20 6c 61 62 65 6c 2d 32 36 0d 0a 53 45 4c  rt label-26..SEL
15f0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
1600: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 43 41  AS cor0 WHERE CA
1610: 53 54 20 28 20 2b 20 33 34 20 41 53 20 49 4e 54  ST ( + 34 AS INT
1620: 45 47 45 52 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  EGER ) IS NULL..
1630: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1640: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
1650: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
1660: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1670: 72 74 20 6c 61 62 65 6c 2d 32 37 0d 0a 53 45 4c  rt label-27..SEL
1680: 45 43 54 20 41 4c 4c 20 2d 20 32 33 20 2b 20 63  ECT ALL - 23 + c
1690: 6f 6c 30 20 44 49 56 20 2b 20 33 34 20 46 52 4f  ol0 DIV + 34 FRO
16a0: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
16b0: 2d 2d 2d 2d 0d 0a 2d 32 31 0d 0a 2d 32 31 0d 0a  ----..-21..-21..
16c0: 2d 32 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -22....skipif my
16d0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
16e0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
16f0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 0d 0a  wsort label-27..
1700: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 32 33 20  SELECT ALL - 23 
1710: 2b 20 63 6f 6c 30 20 2f 20 2b 20 33 34 20 46 52  + col0 / + 34 FR
1720: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1730: 0a 2d 2d 2d 2d 0d 0a 2d 32 31 0d 0a 2d 32 31 0d  .----..-21..-21.
1740: 0a 2d 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-22....query II
1750: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1760: 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
1770: 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f   cor0 WHERE + co
1780: 6c 32 20 2b 20 35 33 20 4e 4f 54 20 42 45 54 57  l2 + 53 NOT BETW
1790: 45 45 4e 20 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c  EEN - col0 * col
17a0: 32 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  2 AND NULL..----
17b0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
17c0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
17d0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
17e0: 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
17f0: 20 3c 3e 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d   <> + col0..----
1800: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1810: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1820: 49 4e 43 54 20 2b 20 32 20 2a 20 63 6f 6c 30 20  INCT + 2 * col0 
1830: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
1840: 0a 31 30 32 0d 0a 31 37 30 0d 0a 31 38 32 0d 0a  .102..170..182..
1850: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1860: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 38 20 41  t..SELECT + 98 A
1870: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
1880: 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
1890: 4f 49 4e 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  OIN tab2..----..
18a0: 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
18b0: 20 74 6f 20 66 39 64 65 65 38 63 32 31 31 31 36   to f9dee8c21116
18c0: 66 31 61 65 64 36 34 61 63 35 31 36 30 65 31 39  f1aed64ac5160e19
18d0: 30 38 30 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  0809....onlyif m
18e0: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
18f0: 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65  ax: DECIMAL type
1900: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1910: 6f 72 74 20 6c 61 62 65 6c 2d 33 32 0d 0a 53 45  ort label-32..SE
1920: 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20  LECT ALL + col0 
1930: 2f 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  / - CAST( NULL A
1940: 53 20 44 45 43 49 4d 41 4c 20 29 20 46 52 4f 4d  S DECIMAL ) FROM
1950: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab0..----..NUL
1960: 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
1970: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1980: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1990: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
19a0: 6c 61 62 65 6c 2d 33 32 0d 0a 53 45 4c 45 43 54  label-32..SELECT
19b0: 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 2f 20 2d 20   ALL + col0 / - 
19c0: 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52  CAST ( NULL AS R
19d0: 45 41 4c 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  EAL ) FROM tab0.
19e0: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
19f0: 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  L..NULL....onlyi
1a00: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
1a10: 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
1a20: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1a30: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1a40: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33  rowsort label-33
1a50: 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20  ..SELECT COUNT( 
1a60: 41 4c 4c 20 43 41 53 54 28 20 2b 20 63 6f 6c 32  ALL CAST( + col2
1a70: 20 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 41   AS SIGNED ) ) A
1a80: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
1a90: 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..----..3....ski
1aa0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1ab0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1ac0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1ad0: 6c 2d 33 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55  l-33..SELECT COU
1ae0: 4e 54 20 28 20 41 4c 4c 20 43 41 53 54 20 28 20  NT ( ALL CAST ( 
1af0: 2b 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45  + col2 AS INTEGE
1b00: 52 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52  R ) ) AS col2 FR
1b10: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab2..----..3
1b20: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1b30: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1b40: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1b50: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 0d  owsort label-34.
1b60: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1b70: 20 2d 20 53 55 4d 28 20 31 33 20 29 20 46 52 4f   - SUM( 13 ) FRO
1b80: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab1..----..-3
1b90: 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
1ba0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1bb0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1bc0: 6f 72 74 20 6c 61 62 65 6c 2d 33 34 0d 0a 53 45  ort label-34..SE
1bd0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
1be0: 53 55 4d 20 28 20 31 33 20 29 20 46 52 4f 4d 20  SUM ( 13 ) FROM 
1bf0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 39 0d  tab1..----..-39.
1c00: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1c10: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
1c20: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
1c30: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35 0d 0a  wsort label-35..
1c40: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1c50: 31 38 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  18 + COUNT( * ) 
1c60: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
1c70: 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 28 20 2d  NULL BETWEEN ( -
1c80: 20 63 6f 6c 32 20 2a 20 2b 20 37 36 20 29 20 41   col2 * + 76 ) A
1c90: 4e 44 20 28 20 63 6f 6c 32 20 2d 20 34 34 20 2a  ND ( col2 - 44 *
1ca0: 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31   col0 )..----..1
1cb0: 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
1cc0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1cd0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1ce0: 6f 72 74 20 6c 61 62 65 6c 2d 33 35 0d 0a 53 45  ort label-35..SE
1cf0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 31 38  LECT DISTINCT 18
1d00: 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46   + COUNT ( * ) F
1d10: 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
1d20: 55 4c 4c 20 42 45 54 57 45 45 4e 20 28 20 2d 20  ULL BETWEEN ( - 
1d30: 63 6f 6c 32 20 2a 20 2b 20 37 36 20 29 20 41 4e  col2 * + 76 ) AN
1d40: 44 20 28 20 63 6f 6c 32 20 2d 20 34 34 20 2a 20  D ( col2 - 44 * 
1d50: 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 38  col0 )..----..18
1d60: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1d70: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
1d80: 28 20 63 6f 6c 30 20 29 20 2a 20 2b 20 63 6f 6c  ( col0 ) * + col
1d90: 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
1da0: 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
1db0: 32 31 31 36 0d 0a 34 30 39 36 0d 0a 35 36 32 35  2116..4096..5625
1dc0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1dd0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1de0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1df0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 0d  owsort label-37.
1e00: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1e10: 20 43 4f 55 4e 54 28 20 2d 20 38 39 20 29 20 63   COUNT( - 89 ) c
1e20: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol2 FROM tab1 co
1e30: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  r0..----..3....s
1e40: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1e50: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
1e60: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1e70: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
1e80: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
1e90: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
1ea0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
1eb0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 0d  owsort label-37.
1ec0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1ed0: 20 43 4f 55 4e 54 20 28 20 2d 20 38 39 20 29 20   COUNT ( - 89 ) 
1ee0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63  col2 FROM tab1 c
1ef0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
1f00: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1f10: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1f20: 20 2d 20 63 6f 6c 30 20 2a 20 33 33 20 41 53 20   - col0 * 33 AS 
1f30: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
1f40: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
1f50: 38 37 31 0d 0a 2d 33 32 30 31 0d 0a 2d 34 39 35  871..-3201..-495
1f60: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1f70: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1f80: 49 4e 43 54 20 2b 20 2b 20 34 33 20 2a 20 2b 20  INCT + + 43 * + 
1f90: 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f  col1 AS col0 FRO
1fa0: 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
1fb0: 2d 0d 0a 32 31 39 33 0d 0a 32 38 38 31 0d 0a 33  -..2193..2881..3
1fc0: 33 31 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  311....onlyif my
1fd0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1fe0: 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
1ff0: 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
2000: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2010: 6f 72 74 20 6c 61 62 65 6c 2d 34 30 0d 0a 53 45  ort label-40..SE
2020: 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  LECT COUNT( * ) 
2030: 44 49 56 20 2b 20 35 33 20 46 52 4f 4d 20 74 61  DIV + 53 FROM ta
2040: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2050: 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
2060: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2070: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2080: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 0d 0a  wsort label-40..
2090: 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a  SELECT COUNT ( *
20a0: 20 29 20 2f 20 2b 20 35 33 20 46 52 4f 4d 20 74   ) / + 53 FROM t
20b0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
20c0: 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..0....onlyif m
20d0: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
20e0: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
20f0: 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77   ..query III row
2100: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31 0d 0a 53  sort label-41..S
2110: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
2120: 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
2130: 4e 4f 54 20 63 6f 6c 32 20 2d 20 2b 20 43 41 53  NOT col2 - + CAS
2140: 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
2150: 44 20 29 20 3c 20 28 20 63 6f 6c 31 20 29 0d 0a  D ) < ( col1 )..
2160: 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ----....skipif m
2170: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2180: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49  tible..query III
2190: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
21a0: 31 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  1..SELECT * FROM
21b0: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
21c0: 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 2d 20 2b  ERE NOT col2 - +
21d0: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
21e0: 49 4e 54 45 47 45 52 20 29 20 3c 20 28 20 63 6f  INTEGER ) < ( co
21f0: 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  l1 )..----....qu
2200: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
2210: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
2220: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
2230: 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 20 2d 20 28  E NOT NULL > - (
2240: 20 2d 20 34 38 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   - 48 )..----...
2250: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2260: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
2270: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
2280: 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 3c 3e  HERE NOT col1 <>
2290: 20 28 20 63 6f 6c 30 20 2a 20 2b 20 33 32 20 29   ( col0 * + 32 )
22a0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
22b0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
22c0: 54 20 41 4c 4c 20 2b 20 31 36 20 2b 20 2d 20 63  T ALL + 16 + - c
22d0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
22e0: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
22f0: 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col1 IS NOT NULL
2300: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
2310: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
2320: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
2330: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
2340: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35 0d 0a 53  sort label-45..S
2350: 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20 2b  ELECT col1 * + +
2360: 20 63 6f 6c 30 20 2f 20 2b 20 43 41 53 54 28 20   col0 / + CAST( 
2370: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
2380: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
2390: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
23a0: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
23b0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
23c0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
23d0: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35 0d 0a 53  sort label-45..S
23e0: 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20 2b  ELECT col1 * + +
23f0: 20 63 6f 6c 30 20 2f 20 2b 20 43 41 53 54 20 28   col0 / + CAST (
2400: 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
2410: 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
2420: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
2430: 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
2440: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
2450: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
2460: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2470: 72 74 20 6c 61 62 65 6c 2d 34 36 0d 0a 53 45 4c  rt label-46..SEL
2480: 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
2490: 30 20 2a 20 2d 20 43 41 53 54 28 20 63 6f 6c 30  0 * - CAST( col0
24a0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
24b0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
24c0: 2d 2d 2d 2d 0d 0a 2d 32 31 31 36 0d 0a 2d 34 30  ----..-2116..-40
24d0: 39 36 0d 0a 2d 35 36 32 35 0d 0a 0d 0a 73 6b 69  96..-5625....ski
24e0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
24f0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2500: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2510: 6c 2d 34 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  l-46..SELECT DIS
2520: 54 49 4e 43 54 20 63 6f 6c 30 20 2a 20 2d 20 43  TINCT col0 * - C
2530: 41 53 54 20 28 20 63 6f 6c 30 20 41 53 20 49 4e  AST ( col0 AS IN
2540: 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20  TEGER ) AS col2 
2550: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
2560: 0a 2d 32 31 31 36 0d 0a 2d 34 30 39 36 0d 0a 2d  .-2116..-4096..-
2570: 35 36 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  5625....query I 
2580: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2590: 2b 20 38 35 20 2d 20 2b 20 63 6f 6c 31 20 41 53  + 85 - + col1 AS
25a0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
25b0: 57 48 45 52 45 20 4e 4f 54 20 34 38 20 2a 20 2b  WHERE NOT 48 * +
25c0: 20 28 20 2d 20 63 6f 6c 30 20 2a 20 28 20 35 30   ( - col0 * ( 50
25d0: 20 29 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d   ) ) IS NULL..--
25e0: 2d 2d 0d 0a 31 38 0d 0a 33 34 0d 0a 38 0d 0a 0d  --..18..34..8...
25f0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2600: 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
2610: 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
2620: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2630: 6c 2d 34 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  l-48..SELECT ALL
2640: 20 2b 20 32 34 20 44 49 56 20 2d 20 2b 20 63 6f   + 24 DIV - + co
2650: 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
2660: 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73  --..0..0..0....s
2670: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2680: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2690: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
26a0: 62 65 6c 2d 34 38 0d 0a 53 45 4c 45 43 54 20 41  bel-48..SELECT A
26b0: 4c 4c 20 2b 20 32 34 20 2f 20 2d 20 2b 20 63 6f  LL + 24 / - + co
26c0: 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
26d0: 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f  --..0..0..0....o
26e0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
26f0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2700: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2710: 74 20 6c 61 62 65 6c 2d 34 39 0d 0a 53 45 4c 45  t label-49..SELE
2720: 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20  CT ALL + COUNT( 
2730: 2a 20 29 20 2a 20 35 30 20 46 52 4f 4d 20 74 61  * ) * 50 FROM ta
2740: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35 30 0d 0a 0d  b2..----..150...
2750: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2760: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2770: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2780: 6c 61 62 65 6c 2d 34 39 0d 0a 53 45 4c 45 43 54  label-49..SELECT
2790: 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2a   ALL + COUNT ( *
27a0: 20 29 20 2a 20 35 30 20 46 52 4f 4d 20 74 61 62   ) * 50 FROM tab
27b0: 32 0d 0a 2d 2d 2d 2d 0d 0a 31 35 30 0d 0a 0d 0a  2..----..150....
27c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
27d0: 0a 53 45 4c 45 43 54 20 31 32 20 41 53 20 63 6f  .SELECT 12 AS co
27e0: 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l1 FROM tab0 WHE
27f0: 52 45 20 4e 4f 54 20 2b 20 31 20 4e 4f 54 20 49  RE NOT + 1 NOT I
2800: 4e 20 28 20 63 6f 6c 32 20 2d 20 63 6f 6c 32 20  N ( col2 - col2 
2810: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
2820: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
2830: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
2840: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
2850: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 0d 0a  wsort label-51..
2860: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2870: 2b 20 63 6f 6c 30 20 2f 20 2d 20 43 41 53 54 28  + col0 / - CAST(
2880: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
2890: 29 20 2a 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  ) * + col0 FROM 
28a0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab1..----..NULL
28b0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
28c0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
28d0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
28e0: 72 74 20 6c 61 62 65 6c 2d 35 31 0d 0a 53 45 4c  rt label-51..SEL
28f0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
2900: 6f 6c 30 20 2f 20 2d 20 43 41 53 54 20 28 20 4e  ol0 / - CAST ( N
2910: 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
2920: 20 2a 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74   * + col0 FROM t
2930: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
2940: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2950: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
2960: 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  ax: DIV for inte
2970: 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2980: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2990: 6c 61 62 65 6c 2d 35 32 0d 0a 53 45 4c 45 43 54  label-52..SELECT
29a0: 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56 20   COUNT( * ) DIV 
29b0: 2d 20 31 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  - 12 FROM tab2..
29c0: 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  ----..0....skipi
29d0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
29e0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
29f0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2a00: 35 32 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  52..SELECT COUNT
2a10: 20 28 20 2a 20 29 20 2f 20 2d 20 31 32 20 46 52   ( * ) / - 12 FR
2a20: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab2..----..0
2a30: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2a40: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
2a50: 6c 30 20 2a 20 2d 20 2d 20 39 30 20 41 53 20 63  l0 * - - 90 AS c
2a60: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
2a70: 2d 2d 2d 0d 0a 34 35 39 30 0d 0a 37 36 35 30 0d  ---..4590..7650.
2a80: 0a 38 31 39 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .8190....onlyif 
2a90: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2aa0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2ab0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2ac0: 6f 72 74 20 6c 61 62 65 6c 2d 35 34 0d 0a 53 45  ort label-54..SE
2ad0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2ae0: 2b 20 43 41 53 54 28 20 2d 20 2b 20 63 6f 6c 31  + CAST( - + col1
2af0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d   AS SIGNED ) * -
2b00: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
2b10: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 36 0d  cor0..----..196.
2b20: 0a 32 32 30 39 0d 0a 32 35 0d 0a 0d 0a 73 6b 69  .2209..25....ski
2b30: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2b40: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2b50: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2b60: 6c 2d 35 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  l-54..SELECT DIS
2b70: 54 49 4e 43 54 20 2b 20 2b 20 43 41 53 54 20 28  TINCT + + CAST (
2b80: 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 49 4e 54   - + col1 AS INT
2b90: 45 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 31 20  EGER ) * - col1 
2ba0: 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
2bb0: 2d 2d 2d 2d 0d 0a 31 39 36 0d 0a 32 32 30 39 0d  ----..196..2209.
2bc0: 0a 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .25....query I r
2bd0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2be0: 4c 4c 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2d 20  LL + - col0 * - 
2bf0: 32 33 20 2a 20 2d 20 63 6f 6c 32 20 46 52 4f 4d  23 * - col2 FROM
2c00: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
2c10: 2d 2d 2d 0d 0a 2d 31 36 32 31 35 0d 0a 2d 32 30  ---..-16215..-20
2c20: 30 31 30 0d 0a 2d 32 32 30 38 36 39 0d 0a 0d 0a  010..-220869....
2c30: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
2c40: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
2c50: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
2c60: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2c70: 2d 35 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  -56..SELECT ALL 
2c80: 2b 20 63 6f 6c 31 20 44 49 56 20 63 6f 6c 32 20  + col1 DIV col2 
2c90: 2a 20 36 32 20 2b 20 2b 20 63 6f 6c 32 20 2b 20  * 62 + + col2 + 
2ca0: 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  5 AS col0 FROM t
2cb0: 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
2cc0: 31 30 37 0d 0a 31 32 35 0d 0a 31 35 32 0d 0a 0d  107..125..152...
2cd0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2ce0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2cf0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2d00: 6c 61 62 65 6c 2d 35 36 0d 0a 53 45 4c 45 43 54  label-56..SELECT
2d10: 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2f 20 63 6f   ALL + col1 / co
2d20: 6c 32 20 2a 20 36 32 20 2b 20 2b 20 63 6f 6c 32  l2 * 62 + + col2
2d30: 20 2b 20 35 20 41 53 20 63 6f 6c 30 20 46 52 4f   + 5 AS col0 FRO
2d40: 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
2d50: 2d 0d 0a 31 30 37 0d 0a 31 32 35 0d 0a 31 35 32  -..107..125..152
2d60: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
2d70: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
2d80: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2d90: 30 20 57 48 45 52 45 20 63 6f 6c 31 20 4e 4f 54  0 WHERE col1 NOT
2da0: 20 42 45 54 57 45 45 4e 20 63 6f 6c 31 20 41 4e   BETWEEN col1 AN
2db0: 44 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D col2..----....
2dc0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
2dd0: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
2de0: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
2df0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2e00: 2d 35 38 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41  -58..SELECT + CA
2e10: 53 54 28 20 2d 20 39 38 20 41 53 20 53 49 47 4e  ST( - 98 AS SIGN
2e20: 45 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  ED ) FROM tab1 A
2e30: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  S cor0..----..-9
2e40: 38 0d 0a 2d 39 38 0d 0a 2d 39 38 0d 0a 0d 0a 73  8..-98..-98....s
2e50: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2e60: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2e70: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2e80: 62 65 6c 2d 35 38 0d 0a 53 45 4c 45 43 54 20 2b  bel-58..SELECT +
2e90: 20 43 41 53 54 20 28 20 2d 20 39 38 20 41 53 20   CAST ( - 98 AS 
2ea0: 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74  INTEGER ) FROM t
2eb0: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2ec0: 2d 0d 0a 2d 39 38 0d 0a 2d 39 38 0d 0a 2d 39 38  -..-98..-98..-98
2ed0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
2ee0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2ef0: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
2f00: 62 31 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  b1 cor0 WHERE - 
2f10: 63 6f 6c 30 20 2f 20 31 20 49 4e 20 28 20 63 6f  col0 / 1 IN ( co
2f20: 6c 31 20 2a 20 63 6f 6c 32 20 2d 20 31 36 20 29  l1 * col2 - 16 )
2f30: 20 41 4e 44 20 4e 4f 54 20 2b 20 63 6f 6c 31 20   AND NOT + col1 
2f40: 4e 4f 54 20 49 4e 20 28 20 2d 20 63 6f 6c 32 20  NOT IN ( - col2 
2f50: 2a 20 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d  * - col2 )..----
2f60: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
2f70: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
2f80: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2f90: 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 30 20 42  0 WHERE + col0 B
2fa0: 45 54 57 45 45 4e 20 2d 20 63 6f 6c 31 20 2a 20  ETWEEN - col1 * 
2fb0: 63 6f 6c 32 20 41 4e 44 20 28 20 36 20 29 0d 0a  col2 AND ( 6 )..
2fc0: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
2fd0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
2fe0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
2ff0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
3000: 2d 36 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -61..SELECT DIST
3010: 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20  INCT + COUNT( * 
3020: 29 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  ) - COUNT( * ) F
3030: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
3040: 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
3050: 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
3060: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
3070: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
3080: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
3090: 6f 72 74 20 6c 61 62 65 6c 2d 36 31 0d 0a 53 45  ort label-61..SE
30a0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
30b0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20 43 4f  COUNT ( * ) - CO
30c0: 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
30d0: 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab1 AS cor0 CROS
30e0: 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63  S JOIN tab1 AS c
30f0: 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  or1..----..0....
3100: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
3110: 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
3120: 20 74 61 62 32 20 57 48 45 52 45 20 28 20 2b 20   tab2 WHERE ( + 
3130: 35 31 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  51 ) IS NULL..--
3140: 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
3150: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
3160: 4c 20 36 35 20 46 52 4f 4d 20 74 61 62 31 20 41  L 65 FROM tab1 A
3170: 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
3180: 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 0d 0a  N tab1 AS cor1..
3190: 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
31a0: 61 73 68 69 6e 67 20 74 6f 20 38 62 65 66 32 65  ashing to 8bef2e
31b0: 61 31 66 30 35 66 33 35 31 34 36 33 33 66 38 35  a1f05f3514633f85
31c0: 31 33 31 32 62 64 64 38 30 35 0d 0a 0d 0a 71 75  1312bdd805....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 41 4c 4c 20 2d 20 32 37 20 2a  ELECT ALL - 27 *
31f0: 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   + col1 FROM tab
3200: 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31  0 WHERE NOT col1
3210: 20 2f 20 2d 20 31 39 20 4e 4f 54 20 49 4e 20 28   / - 19 NOT IN (
3220: 20 34 36 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 63   46 + col0 * + c
3230: 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ol2 )..----....o
3240: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
3250: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
3260: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
3270: 74 20 6c 61 62 65 6c 2d 36 35 0d 0a 53 45 4c 45  t label-65..SELE
3280: 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e  CT DISTINCT COUN
3290: 54 28 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 29 20  T( ALL + col1 ) 
32a0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
32b0: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b  0..----..3....sk
32c0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
32d0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
32e0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
32f0: 65 6c 2d 36 35 0d 0a 53 45 4c 45 43 54 20 44 49  el-65..SELECT DI
3300: 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 41  STINCT COUNT ( A
3310: 4c 4c 20 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d  LL + col1 ) FROM
3320: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
3330: 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..3....onlyif
3340: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
3350: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
3360: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
3370: 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 0d 0a 53  sort label-66..S
3380: 45 4c 45 43 54 20 43 41 53 54 28 20 2d 20 2d 20  ELECT CAST( - - 
3390: 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20 29  col2 AS SIGNED )
33a0: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
33b0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
33c0: 0d 0a 31 30 0d 0a 34 37 0d 0a 39 39 0d 0a 0d 0a  ..10..47..99....
33d0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
33e0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
33f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
3400: 61 62 65 6c 2d 36 36 0d 0a 53 45 4c 45 43 54 20  abel-66..SELECT 
3410: 43 41 53 54 20 28 20 2d 20 2d 20 63 6f 6c 32 20  CAST ( - - col2 
3420: 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
3430: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
3440: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S cor0..----..10
3450: 0d 0a 34 37 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72  ..47..99....quer
3460: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
3470: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  ECT DISTINCT + +
3480: 20 63 6f 6c 30 20 2b 20 39 30 20 2a 20 2b 20 63   col0 + 90 * + c
3490: 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
34a0: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
34b0: 2d 2d 2d 0d 0a 31 33 36 35 0d 0a 37 39 31 37 0d  ---..1365..7917.
34c0: 0a 38 38 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49  .8827....query I
34d0: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
34e0: 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
34f0: 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
3500: 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32 20 49   col1 * + col2 I
3510: 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
3520: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
3530: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
3540: 6c 31 20 2d 20 28 20 63 6f 6c 32 20 29 20 46 52  l1 - ( col2 ) FR
3550: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
3560: 0a 2d 2d 2d 2d 0d 0a 2d 39 38 0d 0a 31 31 0d 0a  .----..-98..11..
3570: 33 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  34....onlyif mys
3580: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
3590: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
35a0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
35b0: 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  0..SELECT + COUN
35c0: 54 28 20 44 49 53 54 49 4e 43 54 20 35 34 20 29  T( DISTINCT 54 )
35d0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
35e0: 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b0 cor0..----..1
35f0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
3600: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
3610: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
3620: 72 74 20 6c 61 62 65 6c 2d 37 30 0d 0a 53 45 4c  rt label-70..SEL
3630: 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 44 49  ECT + COUNT ( DI
3640: 53 54 49 4e 43 54 20 35 34 20 29 20 41 53 20 63  STINCT 54 ) AS c
3650: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol1 FROM tab0 co
3660: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 6f  r0..----..1....o
3670: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
3680: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
3690: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
36a0: 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
36b0: 6c 2d 37 31 0d 0a 53 45 4c 45 43 54 20 2a 20 46  l-71..SELECT * F
36c0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
36d0: 20 57 48 45 52 45 20 43 41 53 54 28 20 4e 55 4c   WHERE CAST( NUL
36e0: 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  L AS SIGNED ) * 
36f0: 32 32 20 2b 20 2d 20 63 6f 6c 32 20 42 45 54 57  22 + - col2 BETW
3700: 45 45 4e 20 28 20 63 6f 6c 31 20 29 20 41 4e 44  EEN ( col1 ) AND
3710: 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d   + col0..----...
3720: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
3730: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
3740: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
3750: 74 20 6c 61 62 65 6c 2d 37 31 0d 0a 53 45 4c 45  t label-71..SELE
3760: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
3770: 53 20 63 6f 72 30 20 57 48 45 52 45 20 43 41 53  S cor0 WHERE CAS
3780: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
3790: 47 45 52 20 29 20 2a 20 32 32 20 2b 20 2d 20 63  GER ) * 22 + - c
37a0: 6f 6c 32 20 42 45 54 57 45 45 4e 20 28 20 63 6f  ol2 BETWEEN ( co
37b0: 6c 31 20 29 20 41 4e 44 20 2b 20 63 6f 6c 30 0d  l1 ) AND + col0.
37c0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
37d0: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
37e0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
37f0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
3800: 6f 72 74 20 6c 61 62 65 6c 2d 37 32 0d 0a 53 45  ort label-72..SE
3810: 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20 63 6f  LECT col1 * + co
3820: 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
3830: 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
3840: 52 45 20 28 20 2d 20 32 32 20 29 20 3e 20 43 41  RE ( - 22 ) > CA
3850: 53 54 28 20 2d 20 33 33 20 41 53 20 53 49 47 4e  ST( - 33 AS SIGN
3860: 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 39 36 0d  ED )..----..196.
3870: 0a 32 32 30 39 0d 0a 32 35 0d 0a 0d 0a 73 6b 69  .2209..25....ski
3880: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
3890: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
38a0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
38b0: 6c 2d 37 32 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  l-72..SELECT col
38c0: 31 20 2a 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  1 * + col1 AS co
38d0: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
38e0: 63 6f 72 30 20 57 48 45 52 45 20 28 20 2d 20 32  cor0 WHERE ( - 2
38f0: 32 20 29 20 3e 20 43 41 53 54 20 28 20 2d 20 33  2 ) > CAST ( - 3
3900: 33 20 41 53 20 49 4e 54 45 47 45 52 20 29 0d 0a  3 AS INTEGER )..
3910: 2d 2d 2d 2d 0d 0a 31 39 36 0d 0a 32 32 30 39 0d  ----..196..2209.
3920: 0a 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .25....query I r
3930: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
3940: 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2d  ISTINCT + col0 -
3950: 20 2d 20 38 20 2b 20 2b 20 63 6f 6c 30 20 2b 20   - 8 + + col0 + 
3960: 32 33 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63  23 + - col1 AS c
3970: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
3980: 2d 2d 2d 0d 0a 31 31 39 0d 0a 31 36 36 0d 0a 31  ---..119..166..1
3990: 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  96....onlyif mys
39a0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
39b0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
39c0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
39d0: 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  4..SELECT ALL - 
39e0: 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20  MAX( DISTINCT + 
39f0: 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46  col1 ) AS col2 F
3a00: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
3a10: 2d 34 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -47....skipif my
3a20: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
3a30: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
3a40: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 0d 0a  wsort label-74..
3a50: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58  SELECT ALL - MAX
3a60: 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f   ( DISTINCT + co
3a70: 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l1 ) AS col2 FRO
3a80: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  M tab1..----..-4
3a90: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
3aa0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
3ab0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
3ac0: 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 49  WHERE NOT col2 I
3ad0: 53 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 20  S NULL AND NULL 
3ae0: 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 63 6f  NOT BETWEEN - co
3af0: 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 41 4e 44 20  l0 * - col2 AND 
3b00: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
3b10: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
3b20: 45 4c 45 43 54 20 63 6f 6c 31 20 2d 20 2b 20 28  ELECT col1 - + (
3b30: 20 63 6f 6c 32 20 29 20 2d 20 63 6f 6c 30 20 2a   col2 ) - col0 *
3b40: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52   col0 AS col0 FR
3b50: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
3b60: 31 39 31 0d 0a 2d 37 35 35 38 0d 0a 2d 39 35 30  191..-7558..-950
3b70: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
3b80: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
3b90: 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  2 FROM tab0 WHER
3ba0: 45 20 2b 20 2d 20 28 20 28 20 2b 20 28 20 2b 20  E + - ( ( + ( + 
3bb0: 63 6f 6c 30 20 29 20 29 20 29 20 49 53 20 4e 55  col0 ) ) ) IS NU
3bc0: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
3bd0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
3be0: 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
3bf0: 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
3c00: 28 20 2d 20 63 6f 6c 30 20 29 20 2a 20 63 6f 6c  ( - col0 ) * col
3c10: 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 41 4e  2 IS NOT NULL AN
3c20: 44 20 4e 55 4c 4c 20 49 4e 20 28 20 2d 20 63 6f  D NULL IN ( - co
3c30: 6c 30 20 2d 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d  l0 - + col1 )..-
3c40: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
3c50: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
3c60: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
3c70: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
3c80: 37 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  79..SELECT ALL +
3c90: 20 43 4f 55 4e 54 28 20 2d 20 28 20 2d 20 63 6f   COUNT( - ( - co
3ca0: 6c 32 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46  l2 ) ) AS col2 F
3cb0: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
3cc0: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
3cd0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
3ce0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
3cf0: 6f 72 74 20 6c 61 62 65 6c 2d 37 39 0d 0a 53 45  ort label-79..SE
3d00: 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54  LECT ALL + COUNT
3d10: 20 28 20 2d 20 28 20 2d 20 63 6f 6c 32 20 29 20   ( - ( - col2 ) 
3d20: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
3d30: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  ab2..----..3....
3d40: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
3d50: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
3d60: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
3d70: 72 74 20 6c 61 62 65 6c 2d 38 30 0d 0a 53 45 4c  rt label-80..SEL
3d80: 45 43 54 20 41 4c 4c 20 28 20 53 55 4d 28 20 44  ECT ALL ( SUM( D
3d90: 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 29  ISTINCT + col1 )
3da0: 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
3db0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
3dc0: 2d 2d 0d 0a 31 30 33 0d 0a 0d 0a 73 6b 69 70 69  --..103....skipi
3dd0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
3de0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
3df0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
3e00: 38 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28  80..SELECT ALL (
3e10: 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20   SUM ( DISTINCT 
3e20: 2b 20 63 6f 6c 31 20 29 20 29 20 41 53 20 63 6f  + col1 ) ) AS co
3e30: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
3e40: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d  cor0..----..103.
3e50: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
3e60: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
3e70: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
3e80: 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2b 20 63   WHERE NOT ( + c
3e90: 6f 6c 31 20 29 20 3d 20 2b 20 2d 20 63 6f 6c 31  ol1 ) = + - col1
3ea0: 20 2f 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d   / - col2..----.
3eb0: 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
3ec0: 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61  g to 75c998aa53a
3ed0: 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32  c83218cbf2feb962
3ee0: 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49  d0a49....query I
3ef0: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
3f00: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
3f10: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
3f20: 20 37 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d   72 IS NULL..---
3f30: 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
3f40: 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35  ing to 75c998aa5
3f50: 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39  3ac83218cbf2feb9
3f60: 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69  62d0a49....onlyi
3f70: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
3f80: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
3f90: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20  pe: ..query III 
3fa0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33  rowsort label-83
3fb0: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
3fc0: 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2d  tab1 WHERE NOT -
3fd0: 20 37 36 20 2b 20 2b 20 43 41 53 54 28 20 4e 55   76 + + CAST( NU
3fe0: 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 49  LL AS SIGNED ) I
3ff0: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
4000: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
4010: 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
4020: 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
4030: 64 35 34 63 61 64 0d 0a 0d 0a 73 6b 69 70 69 66  d54cad....skipif
4040: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
4050: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
4060: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
4070: 2d 38 33 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  -83..SELECT * FR
4080: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
4090: 54 20 2d 20 37 36 20 2b 20 2b 20 43 41 53 54 20  T - 76 + + CAST 
40a0: 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
40b0: 52 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  R ) IS NOT NULL.
40c0: 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
40d0: 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61  hashing to c6c0a
40e0: 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31  4111b36d04dbc811
40f0: 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71  a11e4d54cad....q
4100: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
4110: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
4120: 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28  tab0 WHERE NOT (
4130: 20 2b 20 2b 20 63 6f 6c 31 20 29 20 49 53 20 4e   + + col1 ) IS N
4140: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
4150: 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
4160: 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61  4b42765dff94eaaa
4170: 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d  46040e537fb43b7.
4180: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
4190: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
41a0: 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31   + col0 + + col1
41b0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
41c0: 62 31 20 57 48 45 52 45 20 63 6f 6c 32 20 3c 3d  b1 WHERE col2 <=
41d0: 20 2b 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d   + + col1..----.
41e0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
41f0: 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20  rt..SELECT col0 
4200: 2a 20 2d 20 2b 20 39 35 20 46 52 4f 4d 20 74 61  * - + 95 FROM ta
4210: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 32 35 0d  b0..----..-1425.
4220: 0a 2d 38 32 36 35 0d 0a 2d 39 32 31 35 0d 0a 0d  .-8265..-9215...
4230: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
4240: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
4250: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
4260: 6f 72 74 20 6c 61 62 65 6c 2d 38 37 0d 0a 53 45  ort label-87..SE
4270: 4c 45 43 54 20 2b 20 4d 41 58 28 20 44 49 53 54  LECT + MAX( DIST
4280: 49 4e 43 54 20 2d 20 32 39 20 29 20 46 52 4f 4d  INCT - 29 ) FROM
4290: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
42a0: 2d 2d 2d 0d 0a 2d 32 39 0d 0a 0d 0a 73 6b 69 70  ---..-29....skip
42b0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
42c0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
42d0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
42e0: 2d 38 37 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 41  -87..SELECT + MA
42f0: 58 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 32  X ( DISTINCT - 2
4300: 39 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  9 ) FROM tab2 AS
4310: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 39   cor0..----..-29
4320: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
4330: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
4340: 63 6f 6c 32 20 2a 20 2b 20 2b 20 63 6f 6c 30 20  col2 * + + col0 
4350: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
4360: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
4370: 0a 34 38 39 36 0d 0a 35 30 31 35 0d 0a 36 31 38  .4896..5015..618
4380: 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
4390: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
43a0: 20 2b 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f   + + col2 * + co
43b0: 6c 30 20 2b 20 39 33 20 41 53 20 63 6f 6c 30 20  l0 + 93 AS col0 
43c0: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
43d0: 30 0d 0a 2d 2d 2d 2d 0d 0a 34 39 38 39 0d 0a 35  0..----..4989..5
43e0: 31 30 38 0d 0a 36 32 38 31 0d 0a 0d 0a 6f 6e 6c  108..6281....onl
43f0: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
4400: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
4410: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
4420: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30  rowsort label-90
4430: 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 39 20 2a  ..SELECT + + 9 *
4440: 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   - CAST( NULL AS
4450: 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74   SIGNED ) FROM t
4460: 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
4470: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
4480: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
4490: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
44a0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
44b0: 72 74 20 6c 61 62 65 6c 2d 39 30 0d 0a 53 45 4c  rt label-90..SEL
44c0: 45 43 54 20 2b 20 2b 20 39 20 2a 20 2d 20 43 41  ECT + + 9 * - CA
44d0: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
44e0: 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30  EGER ) FROM tab0
44f0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
4500: 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
4510: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
4520: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
4530: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
4540: 48 45 52 45 20 4e 4f 54 20 28 20 33 33 20 2d 20  HERE NOT ( 33 - 
4550: 2b 20 37 30 20 2b 20 2b 20 2b 20 63 6f 6c 31 20  + 70 + + + col1 
4560: 29 20 4e 4f 54 20 49 4e 20 28 20 28 20 2d 20 63  ) NOT IN ( ( - c
4570: 6f 6c 31 20 29 20 2a 20 2d 20 32 32 20 29 0d 0a  ol1 ) * - 22 )..
4580: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
4590: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
45a0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
45b0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
45c0: 2d 39 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -92..SELECT DIST
45d0: 49 4e 43 54 20 2d 20 35 34 20 2a 20 2d 20 43 4f  INCT - 54 * - CO
45e0: 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
45f0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
4600: 0d 0a 31 36 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..162....skipif 
4610: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
4620: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
4630: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32  rowsort label-92
4640: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
4650: 54 20 2d 20 35 34 20 2a 20 2d 20 43 4f 55 4e 54  T - 54 * - COUNT
4660: 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32   ( * ) FROM tab2
4670: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
4680: 31 36 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  162....onlyif my
4690: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
46a0: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
46b0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
46c0: 74 20 6c 61 62 65 6c 2d 39 33 0d 0a 53 45 4c 45  t label-93..SELE
46d0: 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20  CT + CAST( NULL 
46e0: 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 2d 20  AS SIGNED ) + - 
46f0: 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  col0 AS col0 FRO
4700: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
4710: 48 45 52 45 20 4e 4f 54 20 2b 20 37 20 4e 4f 54  HERE NOT + 7 NOT
4720: 20 42 45 54 57 45 45 4e 20 2b 20 63 6f 6c 31 20   BETWEEN + col1 
4730: 41 4e 44 20 28 20 2b 20 34 32 20 29 0d 0a 2d 2d  AND ( + 42 )..--
4740: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
4750: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
4760: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
4770: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
4780: 2d 39 33 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41  -93..SELECT + CA
4790: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
47a0: 45 47 45 52 20 29 20 2b 20 2d 20 63 6f 6c 30 20  EGER ) + - col0 
47b0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
47c0: 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
47d0: 4e 4f 54 20 2b 20 37 20 4e 4f 54 20 42 45 54 57  NOT + 7 NOT BETW
47e0: 45 45 4e 20 2b 20 63 6f 6c 31 20 41 4e 44 20 28  EEN + col1 AND (
47f0: 20 2b 20 34 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e   + 42 )..----..N
4800: 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
4810: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
4820: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
4830: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
4840: 72 74 20 6c 61 62 65 6c 2d 39 34 0d 0a 53 45 4c  rt label-94..SEL
4850: 45 43 54 20 31 33 2c 20 63 6f 6c 31 20 2b 20 2b  ECT 13, col1 + +
4860: 20 63 6f 6c 32 20 44 49 56 20 2d 20 63 6f 6c 31   col2 DIV - col1
4870: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
4880: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
4890: 0d 0a 31 33 0d 0a 2d 36 0d 0a 31 33 0d 0a 34 36  ..13..-6..13..46
48a0: 0d 0a 31 33 0d 0a 38 0d 0a 0d 0a 73 6b 69 70 69  ..13..8....skipi
48b0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
48c0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
48d0: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
48e0: 2d 39 34 0d 0a 53 45 4c 45 43 54 20 31 33 2c 20  -94..SELECT 13, 
48f0: 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20 2f 20  col1 + + col2 / 
4900: 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46  - col1 AS col0 F
4910: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
4920: 0d 0a 2d 2d 2d 2d 0d 0a 31 33 0d 0a 2d 36 0d 0a  ..----..13..-6..
4930: 31 33 0d 0a 34 36 0d 0a 31 33 0d 0a 38 0d 0a 0d  13..46..13..8...
4940: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
4950: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
4960: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
4970: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
4980: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
4990: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
49a0: 54 20 2b 20 39 38 20 63 6f 6c 32 20 46 52 4f 4d  T + 98 col2 FROM
49b0: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
49c0: 2d 2d 2d 0d 0a 39 38 0d 0a 39 38 0d 0a 39 38 0d  ---..98..98..98.
49d0: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
49e0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
49f0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
4a00: 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c   WHERE NOT - col
4a10: 30 20 2a 20 2d 20 38 31 20 4e 4f 54 20 49 4e 20  0 * - 81 NOT IN 
4a20: 28 20 2d 20 34 32 20 2a 20 36 30 20 2b 20 2b 20  ( - 42 * 60 + + 
4a30: 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col1 )..----....
4a40: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
4a50: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
4a60: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
4a70: 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 32 20 2a  0 WHERE + col2 *
4a80: 20 2d 20 31 34 20 2d 20 63 6f 6c 31 20 49 53 20   - 14 - col1 IS 
4a90: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
4aa0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
4ab0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
4ac0: 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
4ad0: 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
4ae0: 28 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 20 29  ( NULL IS NULL )
4af0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
4b00: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
4b10: 43 54 20 2d 20 33 32 20 41 53 20 63 6f 6c 30 2c  CT - 32 AS col0,
4b20: 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20   + col0 AS col0 
4b30: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
4b40: 0a 2d 33 32 0d 0a 34 36 0d 0a 2d 33 32 0d 0a 36  .-32..46..-32..6
4b50: 34 0d 0a 2d 33 32 0d 0a 37 35 0d 0a 0d 0a 6f 6e  4..-32..75....on
4b60: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
4b70: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44  regate syntax: D
4b80: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
4b90: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
4ba0: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
4bb0: 6c 2d 31 30 30 0d 0a 53 45 4c 45 43 54 20 53 55  l-100..SELECT SU
4bc0: 4d 28 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 29 20  M( ALL - col1 ) 
4bd0: 44 49 56 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2d  DIV - + COUNT( -
4be0: 20 63 6f 6c 31 20 29 2c 20 2b 20 37 33 20 41 53   col1 ), + 73 AS
4bf0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
4c00: 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a 37 33 0d 0a 0d  .----..34..73...
4c10: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
4c20: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
4c30: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
4c40: 20 6c 61 62 65 6c 2d 31 30 30 0d 0a 53 45 4c 45   label-100..SELE
4c50: 43 54 20 53 55 4d 20 28 20 41 4c 4c 20 2d 20 63  CT SUM ( ALL - c
4c60: 6f 6c 31 20 29 20 2f 20 2d 20 2b 20 43 4f 55 4e  ol1 ) / - + COUN
4c70: 54 20 28 20 2d 20 63 6f 6c 31 20 29 2c 20 2b 20  T ( - col1 ), + 
4c80: 37 33 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  73 AS col2 FROM 
4c90: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a  tab0..----..34..
4ca0: 37 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  73....onlyif mys
4cb0: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
4cc0: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
4cd0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
4ce0: 20 6c 61 62 65 6c 2d 31 30 31 0d 0a 53 45 4c 45   label-101..SELE
4cf0: 43 54 20 2b 20 63 6f 6c 32 20 44 49 56 20 2d 20  CT + col2 DIV - 
4d00: 38 39 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d  89 + - col1 FROM
4d10: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   tab1..----..-15
4d20: 0d 0a 2d 34 37 0d 0a 2d 35 0d 0a 0d 0a 73 6b 69  ..-47..-5....ski
4d30: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
4d40: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
4d50: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
4d60: 6c 2d 31 30 31 0d 0a 53 45 4c 45 43 54 20 2b 20  l-101..SELECT + 
4d70: 63 6f 6c 32 20 2f 20 2d 20 38 39 20 2b 20 2d 20  col2 / - 89 + - 
4d80: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
4d90: 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 34 37 0d 0a  ----..-15..-47..
4da0: 2d 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -5....query I ro
4db0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
4dc0: 4c 20 2d 20 28 20 38 20 29 20 2a 20 2d 20 2d 20  L - ( 8 ) * - - 
4dd0: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57  col0 FROM tab1 W
4de0: 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 30 20  HERE NOT + col0 
4df0: 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d  IS NULL..----..-
4e00: 34 30 38 0d 0a 2d 36 38 30 0d 0a 2d 37 32 38 0d  408..-680..-728.
4e10: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
4e20: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
4e30: 4e 43 54 20 2d 20 28 20 2b 20 39 37 20 29 20 2a  NCT - ( + 97 ) *
4e40: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
4e50: 0a 2d 2d 2d 2d 0d 0a 2d 35 37 32 33 0d 0a 2d 36  .----..-5723..-6
4e60: 35 39 36 0d 0a 2d 39 33 31 32 0d 0a 0d 0a 71 75  596..-9312....qu
4e70: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
4e80: 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2d 20 2d  ELECT col1 * - -
4e90: 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 32 20 2b   col1 + - col2 +
4ea0: 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 28 20   + col1 + + - ( 
4eb0: 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
4ec0: 0d 0a 2d 2d 2d 2d 0d 0a 32 35 38 33 0d 0a 34 34  ..----..2583..44
4ed0: 32 33 0d 0a 35 39 30 32 0d 0a 0d 0a 6f 6e 6c 79  23..5902....only
4ee0: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
4ef0: 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74  syntax: aggregat
4f00: 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  e syntax: SIGNED
4f10: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
4f20: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
4f30: 30 35 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53  05..SELECT - CAS
4f40: 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
4f50: 44 20 29 20 2b 20 2b 20 4d 49 4e 28 20 41 4c 4c  D ) + + MIN( ALL
4f60: 20 39 36 20 29 20 41 53 20 63 6f 6c 31 20 46 52   96 ) AS col1 FR
4f70: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
4f80: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
4f90: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
4fa0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
4fb0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 0d  wsort label-105.
4fc0: 0a 53 45 4c 45 43 54 20 2d 20 43 41 53 54 20 28  .SELECT - CAST (
4fd0: 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
4fe0: 20 29 20 2b 20 2b 20 4d 49 4e 20 28 20 41 4c 4c   ) + + MIN ( ALL
4ff0: 20 39 36 20 29 20 41 53 20 63 6f 6c 31 20 46 52   96 ) AS col1 FR
5000: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
5010: 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
5020: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
5030: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
5040: 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
5050: 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
5060: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
5070: 6c 2d 31 30 36 0d 0a 53 45 4c 45 43 54 20 41 4c  l-106..SELECT AL
5080: 4c 20 2d 20 63 6f 6c 30 20 44 49 56 20 2d 20 43  L - col0 DIV - C
5090: 41 53 54 28 20 2b 20 63 6f 6c 30 20 41 53 20 53  AST( + col0 AS S
50a0: 49 47 4e 45 44 20 29 20 2b 20 2d 20 63 6f 6c 31  IGNED ) + - col1
50b0: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
50c0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
50d0: 0d 0a 2d 32 30 0d 0a 2d 38 30 0d 0a 30 0d 0a 0d  ..-20..-80..0...
50e0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
50f0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
5100: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
5110: 6c 61 62 65 6c 2d 31 30 36 0d 0a 53 45 4c 45 43  label-106..SELEC
5120: 54 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 2f 20 2d  T ALL - col0 / -
5130: 20 43 41 53 54 20 28 20 2b 20 63 6f 6c 30 20 41   CAST ( + col0 A
5140: 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d 20  S INTEGER ) + - 
5150: 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  col1 AS col2 FRO
5160: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
5170: 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 2d 38 30 0d 0a  ----..-20..-80..
5180: 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
5190: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
51a0: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
51b0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
51c0: 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  7..SELECT DISTIN
51d0: 43 54 20 2d 20 4d 49 4e 28 20 2b 20 35 33 20 29  CT - MIN( + 53 )
51e0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
51f0: 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
5200: 20 4e 55 4c 4c 20 3d 20 63 6f 6c 31 0d 0a 2d 2d   NULL = col1..--
5210: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
5220: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
5230: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
5240: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
5250: 2d 31 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -107..SELECT DIS
5260: 54 49 4e 43 54 20 2d 20 4d 49 4e 20 28 20 2b 20  TINCT - MIN ( + 
5270: 35 33 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  53 ) AS col1 FRO
5280: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
5290: 48 45 52 45 20 4e 55 4c 4c 20 3d 20 63 6f 6c 31  HERE NULL = col1
52a0: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
52b0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
52c0: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
52d0: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
52e0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
52f0: 2d 31 30 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -108..SELECT ALL
5300: 20 2d 20 35 35 20 2b 20 63 6f 6c 30 20 2b 20 2d   - 55 + col0 + -
5310: 20 2d 20 37 30 20 2d 20 2d 20 2d 20 63 6f 6c 32   - 70 - - - col2
5320: 20 2b 20 2d 20 43 41 53 54 28 20 2d 20 63 6f 6c   + - CAST( - col
5330: 31 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  1 AS SIGNED ) * 
5340: 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20 63 6f  - col0 * col2 co
5350: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l2 FROM tab0 cor
5360: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 31 37 38 0d  0..----..-18178.
5370: 0a 2d 35 37 31 32 32 0d 0a 2d 39 35 39 30 0d 0a  .-57122..-9590..
5380: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
5390: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
53a0: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
53b0: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
53c0: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
53d0: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
53e0: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
53f0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
5400: 31 30 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  108..SELECT ALL 
5410: 2d 20 35 35 20 2b 20 63 6f 6c 30 20 2b 20 2d 20  - 55 + col0 + - 
5420: 2d 20 37 30 20 2d 20 2d 20 2d 20 63 6f 6c 32 20  - 70 - - - col2 
5430: 2b 20 2d 20 43 41 53 54 20 28 20 2d 20 63 6f 6c  + - CAST ( - col
5440: 31 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  1 AS INTEGER ) *
5450: 20 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20 63   - col0 * col2 c
5460: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol2 FROM tab0 co
5470: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 31 37 38  r0..----..-18178
5480: 0d 0a 2d 35 37 31 32 32 0d 0a 2d 39 35 39 30 0d  ..-57122..-9590.
5490: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
54a0: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
54b0: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
54c0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
54d0: 62 65 6c 2d 31 30 39 0d 0a 53 45 4c 45 43 54 20  bel-109..SELECT 
54e0: 41 4c 4c 20 43 41 53 54 28 20 2d 20 37 33 20 41  ALL CAST( - 73 A
54f0: 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20 2d  S SIGNED ) * - -
5500: 20 31 34 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   14 col0 FROM ta
5510: 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b0 AS cor0 CROSS
5520: 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f   JOIN tab2 AS co
5530: 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  r1..----..9 valu
5540: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 64 62  es hashing to db
5550: 39 63 32 62 33 36 63 31 66 37 34 38 61 61 31 34  9c2b36c1f748aa14
5560: 39 36 61 31 61 61 35 61 30 33 34 39 32 64 0d 0a  96a1aa5a03492d..
5570: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
5580: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
5590: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
55a0: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
55b0: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
55c0: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
55d0: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
55e0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
55f0: 31 30 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  109..SELECT ALL 
5600: 43 41 53 54 20 28 20 2d 20 37 33 20 41 53 20 49  CAST ( - 73 AS I
5610: 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 2d 20 31  NTEGER ) * - - 1
5620: 34 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  4 col0 FROM tab0
5630: 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
5640: 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72 31  OIN tab2 AS cor1
5650: 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
5660: 20 68 61 73 68 69 6e 67 20 74 6f 20 64 62 39 63   hashing to db9c
5670: 32 62 33 36 63 31 66 37 34 38 61 61 31 34 39 36  2b36c1f748aa1496
5680: 61 31 61 61 35 61 30 33 34 39 32 64 0d 0a 0d 0a  a1aa5a03492d....
5690: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
56a0: 0a 53 45 4c 45 43 54 20 2b 20 38 30 20 2d 20 2d  .SELECT + 80 - -
56b0: 20 2d 20 33 30 20 41 53 20 63 6f 6c 30 20 46 52   - 30 AS col0 FR
56c0: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
56d0: 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20  CROSS JOIN tab2 
56e0: 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  cor1..----..9 va
56f0: 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
5700: 64 65 61 32 64 31 62 37 34 65 30 63 64 66 36 37  dea2d1b74e0cdf67
5710: 38 30 36 61 66 38 63 34 31 37 33 32 34 66 35 32  806af8c417324f52
5720: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
5730: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
5740: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
5750: 30 20 57 48 45 52 45 20 63 6f 6c 31 20 2b 20 2b  0 WHERE col1 + +
5760: 20 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d   - col2 IS NULL.
5770: 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
5780: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
5790: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
57a0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
57b0: 6c 2d 31 31 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-112..SELECT DI
57c0: 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20  STINCT + COUNT( 
57d0: 2a 20 29 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  * ) + COUNT( * )
57e0: 20 2a 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20   * - + COUNT( * 
57f0: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
5800: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
5810: 2d 0d 0a 2d 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-6....skipif 
5820: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
5830: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
5840: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
5850: 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  2..SELECT DISTIN
5860: 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  CT + COUNT ( * )
5870: 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   + COUNT ( * ) *
5880: 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   - + COUNT ( * )
5890: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
58a0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
58b0: 0d 0a 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..-6....query II
58c0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
58d0: 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
58e0: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
58f0: 48 45 52 45 20 2d 20 36 20 49 53 20 4e 55 4c 4c  HERE - 6 IS NULL
5900: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
5910: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
5920: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
5930: 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  e: ..query II ro
5940: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34 0d  wsort label-114.
5950: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
5960: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20 63   col0 AS col1, c
5970: 6f 6c 32 20 2a 20 2d 20 43 41 53 54 28 20 4e 55  ol2 * - CAST( NU
5980: 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 46  LL AS SIGNED ) F
5990: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
59a0: 20 57 48 45 52 45 20 36 38 20 49 53 20 4e 55 4c   WHERE 68 IS NUL
59b0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  L..----....skipi
59c0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
59d0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
59e0: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
59f0: 2d 31 31 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -114..SELECT DIS
5a00: 54 49 4e 43 54 20 63 6f 6c 30 20 41 53 20 63 6f  TINCT col0 AS co
5a10: 6c 31 2c 20 63 6f 6c 32 20 2a 20 2d 20 43 41 53  l1, col2 * - CAS
5a20: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
5a30: 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20  GER ) FROM tab0 
5a40: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 36 38  AS cor0 WHERE 68
5a50: 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
5a60: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
5a70: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
5a80: 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  INCT * FROM tab2
5a90: 20 57 48 45 52 45 20 28 20 2d 20 35 30 20 2f 20   WHERE ( - 50 / 
5aa0: 63 6f 6c 32 20 2a 20 31 36 20 2a 20 2b 20 63 6f  col2 * 16 * + co
5ab0: 6c 30 20 2d 20 2d 20 35 38 20 2a 20 2b 20 63 6f  l0 - - 58 * + co
5ac0: 6c 30 20 29 20 4e 4f 54 20 42 45 54 57 45 45 4e  l0 ) NOT BETWEEN
5ad0: 20 4e 55 4c 4c 20 41 4e 44 20 2d 20 30 20 2a 20   NULL AND - 0 * 
5ae0: 2b 20 28 20 32 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + ( 20 )..----..
5af0: 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
5b00: 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63   to 75c998aa53ac
5b10: 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64  83218cbf2feb962d
5b20: 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  0a49....query I 
5b30: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
5b40: 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46  - col0 AS col2 F
5b50: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
5b60: 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
5b70: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
5b80: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
5b90: 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2a   DISTINCT col2 *
5ba0: 20 2b 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2d 20   + + col1 + + - 
5bb0: 36 33 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  63 FROM tab0..--
5bc0: 2d 2d 0d 0a 31 34 37 0d 0a 33 36 0d 0a 33 37 34  --..147..36..374
5bd0: 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
5be0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
5bf0: 20 2d 20 2d 20 37 33 20 46 52 4f 4d 20 74 61 62   - - 73 FROM tab
5c00: 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  1 WHERE NOT NULL
5c10: 20 49 4e 20 28 20 2d 20 2d 20 36 2c 20 63 6f 6c   IN ( - - 6, col
5c20: 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  0 )..----....onl
5c30: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
5c40: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
5c50: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
5c60: 6c 61 62 65 6c 2d 31 31 39 0d 0a 53 45 4c 45 43  label-119..SELEC
5c70: 54 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 2d  T DISTINCT ( - -
5c80: 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 2d 20   COUNT( * ) ) - 
5c90: 2b 20 28 20 37 39 20 29 20 46 52 4f 4d 20 74 61  + ( 79 ) FROM ta
5ca0: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 36 0d 0a 0d  b2..----..-76...
5cb0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
5cc0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
5cd0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
5ce0: 6c 61 62 65 6c 2d 31 31 39 0d 0a 53 45 4c 45 43  label-119..SELEC
5cf0: 54 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 2d  T DISTINCT ( - -
5d00: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 2d   COUNT ( * ) ) -
5d10: 20 2b 20 28 20 37 39 20 29 20 46 52 4f 4d 20 74   + ( 79 ) FROM t
5d20: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 36 0d 0a  ab2..----..-76..
5d30: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
5d40: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
5d50: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
5d60: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
5d70: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
5d80: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
5d90: 43 54 20 39 33 20 63 6f 6c 32 20 46 52 4f 4d 20  CT 93 col2 FROM 
5da0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 33 0d 0a  tab2..----..93..
5db0: 39 33 0d 0a 39 33 0d 0a 0d 0a 71 75 65 72 79 20  93..93....query 
5dc0: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
5dd0: 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ECT * FROM tab0 
5de0: 57 48 45 52 45 20 28 20 2d 20 2d 20 36 35 20 29  WHERE ( - - 65 )
5df0: 20 3c 3d 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d   <= + col2..----
5e00: 0d 0a 39 37 0d 0a 31 0d 0a 39 39 0d 0a 0d 0a 71  ..97..1..99....q
5e10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
5e20: 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20 2b 20  SELECT col0 * + 
5e30: 35 39 20 2a 20 2d 20 63 6f 6c 32 20 46 52 4f 4d  59 * - col2 FROM
5e40: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 38   tab1..----..-28
5e50: 38 38 36 34 0d 0a 2d 32 39 35 38 38 35 0d 0a 2d  8864..-295885..-
5e60: 33 36 35 30 39 32 0d 0a 0d 0a 6f 6e 6c 79 69 66  365092....onlyif
5e70: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
5e80: 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
5e90: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
5ea0: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
5eb0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
5ec0: 32 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  23..SELECT DISTI
5ed0: 4e 43 54 20 43 41 53 54 28 20 2b 20 53 55 4d 28  NCT CAST( + SUM(
5ee0: 20 41 4c 4c 20 2d 20 32 20 29 20 41 53 20 53 49   ALL - 2 ) AS SI
5ef0: 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 32 2c 20  GNED ) AS col2, 
5f00: 2d 20 28 20 2d 20 2b 20 43 41 53 54 28 20 2b 20  - ( - + CAST( + 
5f10: 2d 20 39 39 20 41 53 20 53 49 47 4e 45 44 20 29  - 99 AS SIGNED )
5f20: 20 29 2c 20 2b 20 36 34 20 41 53 20 63 6f 6c 31   ), + 64 AS col1
5f30: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
5f40: 0d 0a 2d 36 0d 0a 2d 39 39 0d 0a 36 34 0d 0a 0d  ..-6..-99..64...
5f50: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
5f60: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
5f70: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
5f80: 74 20 6c 61 62 65 6c 2d 31 32 33 0d 0a 53 45 4c  t label-123..SEL
5f90: 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41 53  ECT DISTINCT CAS
5fa0: 54 20 28 20 2b 20 53 55 4d 20 28 20 41 4c 4c 20  T ( + SUM ( ALL 
5fb0: 2d 20 32 20 29 20 41 53 20 49 4e 54 45 47 45 52  - 2 ) AS INTEGER
5fc0: 20 29 20 41 53 20 63 6f 6c 32 2c 20 2d 20 28 20   ) AS col2, - ( 
5fd0: 2d 20 2b 20 43 41 53 54 20 28 20 2b 20 2d 20 39  - + CAST ( + - 9
5fe0: 39 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29  9 AS INTEGER ) )
5ff0: 2c 20 2b 20 36 34 20 41 53 20 63 6f 6c 31 20 46  , + 64 AS col1 F
6000: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
6010: 2d 36 0d 0a 2d 39 39 0d 0a 36 34 0d 0a 0d 0a 6f  -6..-99..64....o
6020: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
6030: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
6040: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
6050: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
6060: 31 32 34 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  124..SELECT - co
6070: 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
6080: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
6090: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
60a0: 49 47 4e 45 44 20 29 20 29 20 49 53 20 4e 4f 54  IGNED ) ) IS NOT
60b0: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   NULL..----..-15
60c0: 0d 0a 2d 38 37 0d 0a 2d 39 37 0d 0a 0d 0a 73 6b  ..-87..-97....sk
60d0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
60e0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
60f0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
6100: 65 6c 2d 31 32 34 0d 0a 53 45 4c 45 43 54 20 2d  el-124..SELECT -
6110: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
6120: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
6130: 54 20 28 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  T ( CAST ( NULL 
6140: 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 49  AS INTEGER ) ) I
6150: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
6160: 0d 0a 2d 31 35 0d 0a 2d 38 37 0d 0a 2d 39 37 0d  ..-15..-87..-97.
6170: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
6180: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
6190: 2d 20 63 6f 6c 32 2c 20 31 37 20 41 53 20 63 6f  - col2, 17 AS co
61a0: 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
61b0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d  cor0..----..-10.
61c0: 0a 31 37 0d 0a 2d 34 37 0d 0a 31 37 0d 0a 2d 39  .17..-47..17..-9
61d0: 39 0d 0a 31 37 0d 0a 0d 0a 71 75 65 72 79 20 49  9..17....query I
61e0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
61f0: 20 41 4c 4c 20 63 6f 6c 30 20 46 52 4f 4d 20 74   ALL col0 FROM t
6200: 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
6210: 45 20 2b 20 39 37 20 4e 4f 54 20 49 4e 20 28 20  E + 97 NOT IN ( 
6220: 63 6f 6c 31 2c 20 2d 20 63 6f 6c 31 20 29 0d 0a  col1, - col1 )..
6230: 2d 2d 2d 2d 0d 0a 34 36 0d 0a 36 34 0d 0a 37 35  ----..46..64..75
6240: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
6250: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
6260: 28 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61  ( col2 ) FROM ta
6270: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
6280: 20 4e 4f 54 20 39 36 20 2f 20 32 38 20 3e 20 4e   NOT 96 / 28 > N
6290: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
62a0: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
62b0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
62c0: 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  * FROM tab1 cor0
62d0: 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 4e 20 28   WHERE NULL IN (
62e0: 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d   + col2 )..----.
62f0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
6300: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
6310: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
6320: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 39 0d  wsort label-129.
6330: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f  .SELECT ALL - CO
6340: 55 4e 54 28 20 41 4c 4c 20 2b 20 2b 20 35 20 29  UNT( ALL + + 5 )
6350: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
6360: 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
6370: 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b0 AS cor1..----
6380: 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-9....skipif m
6390: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
63a0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
63b0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 39  owsort label-129
63c0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43  ..SELECT ALL - C
63d0: 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20 2b 20 35  OUNT ( ALL + + 5
63e0: 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
63f0: 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
6400: 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab0 AS cor1..--
6410: 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 71 75 65 72 79 20  --..-9....query 
6420: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
6430: 54 20 41 4c 4c 20 2d 20 36 36 20 41 53 20 63 6f  T ALL - 66 AS co
6440: 6c 30 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61  l0 FROM tab0, ta
6450: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
6460: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
6470: 6e 67 20 74 6f 20 61 34 30 38 31 30 38 64 34 32  ng to a408108d42
6480: 33 64 37 37 38 34 62 37 64 36 31 30 63 62 37 37  3d7784b7d610cb77
6490: 39 65 35 31 35 61 0d 0a 0d 0a 6f 6e 6c 79 69 66  9e515a....onlyif
64a0: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
64b0: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
64c0: 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72  e: ..query III r
64d0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 31  owsort label-131
64e0: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
64f0: 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  tab0 WHERE NOT -
6500: 20 43 41 53 54 28 20 2b 20 38 33 20 41 53 20 53   CAST( + 83 AS S
6510: 49 47 4e 45 44 20 29 20 3e 20 2d 20 33 31 0d 0a  IGNED ) > - 31..
6520: 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
6530: 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37  ashing to c4b427
6540: 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30  65dff94eaaa46040
6550: 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 73 6b  e537fb43b7....sk
6560: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
6570: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
6580: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
6590: 61 62 65 6c 2d 31 33 31 0d 0a 53 45 4c 45 43 54  abel-131..SELECT
65a0: 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45   * FROM tab0 WHE
65b0: 52 45 20 4e 4f 54 20 2d 20 43 41 53 54 20 28 20  RE NOT - CAST ( 
65c0: 2b 20 38 33 20 41 53 20 49 4e 54 45 47 45 52 20  + 83 AS INTEGER 
65d0: 29 20 3e 20 2d 20 33 31 0d 0a 2d 2d 2d 2d 0d 0a  ) > - 31..----..
65e0: 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
65f0: 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
6600: 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
6610: 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49  43b7....query II
6620: 49 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  IIII rowsort..SE
6630: 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
6640: 74 61 62 30 20 63 6f 72 30 20 43 52 4f 53 53 20  tab0 cor0 CROSS 
6650: 4a 4f 49 4e 20 74 61 62 30 20 63 6f 72 31 20 57  JOIN tab0 cor1 W
6660: 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55 4c  HERE NULL IS NUL
6670: 4c 0d 0a 2d 2d 2d 2d 0d 0a 35 34 20 76 61 6c 75  L..----..54 valu
6680: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 34 32  es hashing to 42
6690: 64 61 61 30 33 65 34 38 61 61 36 37 35 35 64 65  daa03e48aa6755de
66a0: 66 64 30 61 33 32 30 36 65 35 31 64 38 65 0d 0a  fd0a3206e51d8e..
66b0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
66c0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
66d0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
66e0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 33 0d 0a  sort label-133..
66f0: 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 28 20  SELECT ALL MIN( 
6700: 2b 20 2d 20 31 20 29 20 46 52 4f 4d 20 74 61 62  + - 1 ) FROM tab
6710: 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
6720: 39 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  9 = NULL..----..
6730: 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
6740: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
6750: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
6760: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 33  owsort label-133
6770: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e  ..SELECT ALL MIN
6780: 20 28 20 2b 20 2d 20 31 20 29 20 46 52 4f 4d 20   ( + - 1 ) FROM 
6790: 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
67a0: 52 45 20 39 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d  RE 9 = NULL..---
67b0: 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  -..NULL....query
67c0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
67d0: 43 54 20 41 4c 4c 20 63 6f 6c 31 20 41 53 20 63  CT ALL col1 AS c
67e0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
67f0: 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20 33 30   cor0 WHERE - 30
6800: 20 49 4e 20 28 20 36 37 20 29 0d 0a 2d 2d 2d 2d   IN ( 67 )..----
6810: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
6820: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  ort..SELECT + + 
6830: 35 36 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  56 AS col0 FROM 
6840: 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45 20  tab1 cor0 WHERE 
6850: 4e 4f 54 20 34 35 20 49 53 20 4e 4f 54 20 4e 55  NOT 45 IS NOT NU
6860: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
6870: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
6880: 4c 45 43 54 20 2b 20 32 34 20 2a 20 2b 20 63 6f  LECT + 24 * + co
6890: 6c 32 20 41 53 20 63 6f 6c 32 2c 20 2d 20 63 6f  l2 AS col2, - co
68a0: 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
68b0: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
68c0: 2d 2d 0d 0a 31 34 31 36 0d 0a 2d 35 0d 0a 31 36  --..1416..-5..16
68d0: 33 32 0d 0a 2d 34 37 0d 0a 32 33 30 34 0d 0a 2d  32..-47..2304..-
68e0: 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  14....query I ro
68f0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
6900: 53 54 49 4e 43 54 20 63 6f 6c 31 20 2a 20 2d 20  STINCT col1 * - 
6910: 2d 20 63 6f 6c 30 20 2b 20 31 35 20 2a 20 2d 20  - col0 + 15 * - 
6920: 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  + col1 FROM tab0
6930: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
6940: 31 35 31 32 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72  1512..82....quer
6950: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
6960: 4c 45 43 54 20 2d 20 28 20 2b 20 28 20 2d 20 2b  LECT - ( + ( - +
6970: 20 63 6f 6c 32 20 29 20 29 20 2a 20 28 20 63 6f   col2 ) ) * ( co
6980: 6c 30 20 29 2c 20 2b 20 63 6f 6c 31 20 46 52 4f  l0 ), + col1 FRO
6990: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 37 30  M tab0..----..70
69a0: 35 0d 0a 38 31 0d 0a 38 37 30 0d 0a 32 31 0d 0a  5..81..870..21..
69b0: 39 36 30 33 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79  9603..1....query
69c0: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
69d0: 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
69e0: 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  tab0 WHERE NOT -
69f0: 20 2b 20 35 38 20 2b 20 2b 20 28 20 2b 20 2d 20   + 58 + + ( + - 
6a00: 63 6f 6c 32 20 29 20 2a 20 2d 20 63 6f 6c 32 20  col2 ) * - col2 
6a10: 2a 20 2b 20 2b 20 63 6f 6c 30 20 4e 4f 54 20 42  * + + col0 NOT B
6a20: 45 54 57 45 45 4e 20 63 6f 6c 32 20 41 4e 44 20  ETWEEN col2 AND 
6a30: 63 6f 6c 30 20 2b 20 37 32 20 2a 20 63 6f 6c 30  col0 + 72 * col0
6a40: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
6a50: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
6a60: 54 20 2b 20 31 35 20 2a 20 2b 20 63 6f 6c 32 20  T + 15 * + col2 
6a70: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
6a80: 0a 33 34 35 0d 0a 36 30 30 0d 0a 38 37 30 0d 0a  .345..600..870..
6a90: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
6aa0: 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 2c  rt..SELECT col2,
6ab0: 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20   - col2 AS col2 
6ac0: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
6ad0: 0a 35 39 0d 0a 2d 35 39 0d 0a 36 38 0d 0a 2d 36  .59..-59..68..-6
6ae0: 38 0d 0a 39 36 0d 0a 2d 39 36 0d 0a 0d 0a 6f 6e  8..96..-96....on
6af0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
6b00: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
6b10: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
6b20: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
6b30: 34 32 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  42..SELECT + col
6b40: 31 20 44 49 56 20 2b 20 39 36 20 46 52 4f 4d 20  1 DIV + 96 FROM 
6b50: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  tab2..----..0..0
6b60: 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
6b70: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
6b80: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
6b90: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 32 0d  wsort label-142.
6ba0: 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2f  .SELECT + col1 /
6bb0: 20 2b 20 39 36 20 46 52 4f 4d 20 74 61 62 32 0d   + 96 FROM tab2.
6bc0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
6bd0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
6be0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
6bf0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
6c00: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 33 0d 0a  sort label-143..
6c10: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55  SELECT ALL + COU
6c20: 4e 54 28 20 2a 20 29 20 2b 20 2d 20 4d 49 4e 28  NT( * ) + - MIN(
6c30: 20 44 49 53 54 49 4e 43 54 20 2d 20 38 30 20 29   DISTINCT - 80 )
6c40: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
6c50: 0d 0a 38 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..83....skipif m
6c60: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
6c70: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
6c80: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 33  owsort label-143
6c90: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
6ca0: 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20 4d  OUNT ( * ) + - M
6cb0: 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20  IN ( DISTINCT - 
6cc0: 38 30 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  80 ) FROM tab2..
6cd0: 2d 2d 2d 2d 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72  ----..83....quer
6ce0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
6cf0: 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
6d00: 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
6d10: 2d 20 36 36 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  - 66 IS NOT NULL
6d20: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
6d30: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
6d40: 54 20 41 4c 4c 20 35 32 20 2a 20 2d 20 63 6f 6c  T ALL 52 * - col
6d50: 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
6d60: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 39 32  ab2..----..-2392
6d70: 0d 0a 2d 33 33 32 38 0d 0a 2d 33 39 30 30 0d 0a  ..-3328..-3900..
6d80: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
6d90: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
6da0: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
6db0: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
6dc0: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
6dd0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
6de0: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20  CT DISTINCT + ( 
6df0: 63 6f 6c 32 20 29 20 2b 20 2d 20 39 30 20 63 6f  col2 ) + - 90 co
6e00: 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
6e10: 2d 2d 0d 0a 2d 32 32 0d 0a 2d 33 31 0d 0a 36 0d  --..-22..-31..6.
6e20: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
6e30: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
6e40: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
6e50: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 37 0d  wsort label-147.
6e60: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
6e70: 20 2d 20 34 36 20 2a 20 4d 49 4e 28 20 2d 20 39   - 46 * MIN( - 9
6e80: 34 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  4 ) AS col1 FROM
6e90: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
6ea0: 2d 2d 2d 0d 0a 34 33 32 34 0d 0a 0d 0a 73 6b 69  ---..4324....ski
6eb0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
6ec0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
6ed0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
6ee0: 6c 2d 31 34 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-147..SELECT DI
6ef0: 53 54 49 4e 43 54 20 2d 20 34 36 20 2a 20 4d 49  STINCT - 46 * MI
6f00: 4e 20 28 20 2d 20 39 34 20 29 20 41 53 20 63 6f  N ( - 94 ) AS co
6f10: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
6f20: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 33 32 34  cor0..----..4324
6f30: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
6f40: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
6f50: 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20  + col0 * - col2 
6f60: 2b 20 31 35 20 2a 20 36 20 41 53 20 63 6f 6c 30  + 15 * 6 AS col0
6f70: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
6f80: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 31 35 0d 0a  r0..----..-615..
6f90: 2d 37 38 30 0d 0a 2d 39 35 31 33 0d 0a 0d 0a 71  -780..-9513....q
6fa0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
6fb0: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
6fc0: 32 20 2d 20 2d 20 2d 20 63 6f 6c 30 20 41 53 20  2 - - - col0 AS 
6fd0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
6fe0: 2d 2d 2d 2d 0d 0a 2d 37 37 0d 0a 32 0d 0a 33 32  ----..-77..2..32
6ff0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
7000: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
7010: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
7020: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 30  owsort label-150
7030: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55  ..SELECT ALL COU
7040: 4e 54 28 20 2a 20 29 20 2a 20 2b 20 28 20 43 4f  NT( * ) * + ( CO
7050: 55 4e 54 28 20 2a 20 29 20 29 20 46 52 4f 4d 20  UNT( * ) ) FROM 
7060: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d  tab0..----..9...
7070: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
7080: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
7090: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
70a0: 6c 61 62 65 6c 2d 31 35 30 0d 0a 53 45 4c 45 43  label-150..SELEC
70b0: 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20  T ALL COUNT ( * 
70c0: 29 20 2a 20 2b 20 28 20 43 4f 55 4e 54 20 28 20  ) * + ( COUNT ( 
70d0: 2a 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  * ) ) FROM tab0.
70e0: 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79  .----..9....only
70f0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
7100: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
7110: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
7120: 6c 61 62 65 6c 2d 31 35 31 0d 0a 53 45 4c 45 43  label-151..SELEC
7130: 54 20 44 49 53 54 49 4e 43 54 20 32 32 20 41 53  T DISTINCT 22 AS
7140: 20 63 6f 6c 31 2c 20 43 4f 55 4e 54 28 20 2a 20   col1, COUNT( * 
7150: 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  ) col1 FROM tab2
7160: 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 33 0d 0a 0d  ..----..22..3...
7170: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
7180: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
7190: 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
71a0: 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
71b0: 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
71c0: 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
71d0: 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
71e0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
71f0: 31 35 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  151..SELECT DIST
7200: 49 4e 43 54 20 32 32 20 41 53 20 63 6f 6c 31 2c  INCT 22 AS col1,
7210: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c   COUNT ( * ) col
7220: 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
7230: 2d 0d 0a 32 32 0d 0a 33 0d 0a 0d 0a 71 75 65 72  -..22..3....quer
7240: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
7250: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
7260: 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
7270: 2b 20 63 6f 6c 31 20 4e 4f 54 20 42 45 54 57 45  + col1 NOT BETWE
7280: 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 2d 20  EN NULL AND + - 
7290: 34 37 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  47..----..9 valu
72a0: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
72b0: 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
72c0: 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
72d0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
72e0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
72f0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
7300: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 33 0d 0a  sort label-153..
7310: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
7320: 2b 20 32 32 20 2a 20 2b 20 43 4f 55 4e 54 28 20  + 22 * + COUNT( 
7330: 41 4c 4c 20 63 6f 6c 32 20 29 20 63 6f 6c 32 20  ALL col2 ) col2 
7340: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
7350: 30 0d 0a 2d 2d 2d 2d 0d 0a 36 36 0d 0a 0d 0a 73  0..----..66....s
7360: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
7370: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
7380: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
7390: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
73a0: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
73b0: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
73c0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
73d0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 33  owsort label-153
73e0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
73f0: 54 20 2b 20 32 32 20 2a 20 2b 20 43 4f 55 4e 54  T + 22 * + COUNT
7400: 20 28 20 41 4c 4c 20 63 6f 6c 32 20 29 20 63 6f   ( ALL col2 ) co
7410: 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
7420: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 36 0d 0a  cor0..----..66..
7430: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
7440: 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
7450: 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
7460: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
7470: 65 6c 2d 31 35 34 0d 0a 53 45 4c 45 43 54 20 63  el-154..SELECT c
7480: 6f 6c 30 20 44 49 56 20 2b 20 2d 20 63 6f 6c 31  ol0 DIV + - col1
7490: 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
74a0: 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d 0a 30 0d  .----..-1..0..0.
74b0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
74c0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
74d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
74e0: 74 20 6c 61 62 65 6c 2d 31 35 34 0d 0a 53 45 4c  t label-154..SEL
74f0: 45 43 54 20 63 6f 6c 30 20 2f 20 2b 20 2d 20 63  ECT col0 / + - c
7500: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol1 FROM tab2 co
7510: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d  r0..----..-1..0.
7520: 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .0....query I ro
7530: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
7540: 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20  STINCT + + col1 
7550: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
7560: 30 20 57 48 45 52 45 20 63 6f 6c 31 20 3e 20 4e  0 WHERE col1 > N
7570: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
7580: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
7590: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
75a0: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
75b0: 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45   NULL NOT BETWEE
75c0: 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 63 6f 6c  N NULL AND + col
75d0: 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  1..----....onlyi
75e0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
75f0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
7600: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
7610: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 37 0d  wsort label-157.
7620: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
7630: 6c 30 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d  l0 + + col1 FROM
7640: 20 74 61 62 30 20 57 48 45 52 45 20 43 41 53 54   tab0 WHERE CAST
7650: 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
7660: 20 29 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20   ) BETWEEN NULL 
7670: 41 4e 44 20 2b 20 31 32 0d 0a 2d 2d 2d 2d 0d 0a  AND + 12..----..
7680: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
7690: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
76a0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
76b0: 20 6c 61 62 65 6c 2d 31 35 37 0d 0a 53 45 4c 45   label-157..SELE
76c0: 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 2b 20  CT ALL + col0 + 
76d0: 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  + col1 FROM tab0
76e0: 20 57 48 45 52 45 20 43 41 53 54 20 28 20 4e 55   WHERE CAST ( NU
76f0: 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
7700: 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44  BETWEEN NULL AND
7710: 20 2b 20 31 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   + 12..----....q
7720: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
7730: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
7740: 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
7750: 61 62 30 20 57 48 45 52 45 20 2d 20 2b 20 63 6f  ab0 WHERE - + co
7760: 6c 31 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 2d 20  l1 + - col0 + - 
7770: 63 6f 6c 32 20 2f 20 2b 20 2d 20 63 6f 6c 31 20  col2 / + - col1 
7780: 2b 20 2d 20 32 30 20 49 53 20 4e 55 4c 4c 0d 0a  + - 20 IS NULL..
7790: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
77a0: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
77b0: 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
77c0: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
77d0: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
77e0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 39 0d 0a  sort label-159..
77f0: 53 45 4c 45 43 54 20 43 41 53 54 28 20 2d 20 53  SELECT CAST( - S
7800: 55 4d 28 20 2b 20 2b 20 63 6f 6c 32 20 29 20 41  UM( + + col2 ) A
7810: 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
7820: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 36  tab0..----..-156
7830: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
7840: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
7850: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
7860: 72 74 20 6c 61 62 65 6c 2d 31 35 39 0d 0a 53 45  rt label-159..SE
7870: 4c 45 43 54 20 43 41 53 54 20 28 20 2d 20 53 55  LECT CAST ( - SU
7880: 4d 20 28 20 2b 20 2b 20 63 6f 6c 32 20 29 20 41  M ( + + col2 ) A
7890: 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d  S INTEGER ) FROM
78a0: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   tab0..----..-15
78b0: 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
78c0: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
78d0: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
78e0: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
78f0: 74 20 6c 61 62 65 6c 2d 31 36 30 0d 0a 53 45 4c  t label-160..SEL
7900: 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
7910: 57 48 45 52 45 20 4e 4f 54 20 28 20 28 20 4e 4f  WHERE NOT ( ( NO
7920: 54 20 28 20 4e 4f 54 20 28 20 43 41 53 54 28 20  T ( NOT ( CAST( 
7930: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
7940: 20 2d 20 2d 20 35 34 20 2a 20 2b 20 2b 20 37 34   - - 54 * + + 74
7950: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 29 20 29   IS NOT NULL ) )
7960: 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61   ) )..----..9 va
7970: 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
7980: 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64  c6c0a4111b36d04d
7990: 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64  bc811a11e4d54cad
79a0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
79b0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
79c0: 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  e..query III row
79d0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 30 0d 0a  sort label-160..
79e0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
79f0: 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28 20 28  b1 WHERE NOT ( (
7a00: 20 4e 4f 54 20 28 20 4e 4f 54 20 28 20 43 41 53   NOT ( NOT ( CAS
7a10: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
7a20: 47 45 52 20 29 20 2d 20 2d 20 35 34 20 2a 20 2b  GER ) - - 54 * +
7a30: 20 2b 20 37 34 20 49 53 20 4e 4f 54 20 4e 55 4c   + 74 IS NOT NUL
7a40: 4c 20 29 20 29 20 29 20 29 0d 0a 2d 2d 2d 2d 0d  L ) ) ) )..----.
7a50: 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
7a60: 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33  g to c6c0a4111b3
7a70: 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64  6d04dbc811a11e4d
7a80: 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49  54cad....query I
7a90: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
7aa0: 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
7ab0: 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 2d  b1 WHERE NOT - -
7ac0: 20 32 32 20 2a 20 2b 20 63 6f 6c 31 20 2a 20 63   22 * + col1 * c
7ad0: 6f 6c 31 20 2a 20 2d 20 38 38 20 2b 20 37 33 20  ol1 * - 88 + 73 
7ae0: 2b 20 2d 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f  + - - col0 IS NO
7af0: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
7b00: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
7b10: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
7b20: 20 28 20 2d 20 39 20 29 20 41 53 20 63 6f 6c 32   ( - 9 ) AS col2
7b30: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
7b40: 0d 0a 2d 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-9....query I 
7b50: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
7b60: 2d 20 2d 20 38 35 20 41 53 20 63 6f 6c 31 20 46  - - 85 AS col1 F
7b70: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
7b80: 0d 0a 2d 2d 2d 2d 0d 0a 38 35 0d 0a 38 35 0d 0a  ..----..85..85..
7b90: 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  85....query II r
7ba0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 38  owsort..SELECT 8
7bb0: 36 20 2a 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  6 * - col2 AS co
7bc0: 6c 32 2c 20 2d 20 36 36 20 2a 20 63 6f 6c 31 20  l2, - 66 * col1 
7bd0: 2a 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c  * + col1 * - col
7be0: 31 20 2a 20 2b 20 2b 20 32 37 20 46 52 4f 4d 20  1 * + + 27 FROM 
7bf0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
7c00: 2d 2d 0d 0a 2d 34 30 34 32 0d 0a 39 34 37 30 32  --..-4042..94702
7c10: 37 38 36 32 0d 0a 2d 38 35 31 34 0d 0a 31 37 38  7862..-8514..178
7c20: 32 0d 0a 2d 38 36 30 0d 0a 31 36 35 30 33 31 30  2..-860..1650310
7c30: 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  2....query III r
7c40: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
7c50: 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 63  LL * FROM tab0 c
7c60: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 32 30  or0 WHERE NOT 20
7c70: 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 2b 20   * - col1 + - + 
7c80: 36 38 20 3e 20 63 6f 6c 31 20 2b 20 2d 20 2b 20  68 > col1 + - + 
7c90: 63 6f 6c 32 20 2b 20 2b 20 2b 20 63 6f 6c 31 20  col2 + + + col1 
7ca0: 2b 20 33 36 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  + 36..----..9 va
7cb0: 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
7cc0: 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
7cd0: 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
7ce0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
7cf0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
7d00: 2d 20 28 20 28 20 2b 20 63 6f 6c 30 20 29 20 29  - ( ( + col0 ) )
7d10: 20 2b 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d   + + - col1 FROM
7d20: 20 74 61 62 32 20 57 48 45 52 45 20 2b 20 63 6f   tab2 WHERE + co
7d30: 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l2 IS NULL..----
7d40: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
7d50: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
7d60: 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 2c   - col1 AS col1,
7d70: 20 2d 20 63 6f 6c 31 20 2d 20 2b 20 36 35 20 2d   - col1 - + 65 -
7d80: 20 2b 20 2b 20 32 20 2f 20 2b 20 63 6f 6c 32 20   + + 2 / + col2 
7d90: 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  + + col1 FROM ta
7da0: 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  b1 WHERE NULL IS
7db0: 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
7dc0: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
7dd0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
7de0: 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 2c 20  + col0 AS col2, 
7df0: 2d 20 31 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 12 AS col1 FRO
7e00: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
7e10: 2d 2d 2d 2d 0d 0a 31 35 0d 0a 2d 31 32 0d 0a 38  ----..15..-12..8
7e20: 37 0d 0a 2d 31 32 0d 0a 39 37 0d 0a 2d 31 32 0d  7..-12..97..-12.
7e30: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
7e40: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
7e50: 4e 43 54 20 39 33 20 2b 20 2b 20 2d 20 63 6f 6c  NCT 93 + + - col
7e60: 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
7e70: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
7e80: 45 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a  E NULL IS NULL..
7e90: 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 32 35 0d 0a 33 34  ----..-3..25..34
7ea0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
7eb0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
7ec0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  tax: ..query II 
7ed0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37  rowsort label-17
7ee0: 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
7ef0: 43 54 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20  CT + + COUNT( * 
7f00: 29 20 41 53 20 63 6f 6c 30 2c 20 39 39 20 2b 20  ) AS col0, 99 + 
7f10: 2b 20 2b 20 34 38 20 46 52 4f 4d 20 74 61 62 31  + + 48 FROM tab1
7f20: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
7f30: 33 0d 0a 31 34 37 0d 0a 0d 0a 73 6b 69 70 69 66  3..147....skipif
7f40: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
7f50: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
7f60: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
7f70: 31 37 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  170..SELECT DIST
7f80: 49 4e 43 54 20 2b 20 2b 20 43 4f 55 4e 54 20 28  INCT + + COUNT (
7f90: 20 2a 20 29 20 41 53 20 63 6f 6c 30 2c 20 39 39   * ) AS col0, 99
7fa0: 20 2b 20 2b 20 2b 20 34 38 20 46 52 4f 4d 20 74   + + + 48 FROM t
7fb0: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
7fc0: 2d 0d 0a 33 0d 0a 31 34 37 0d 0a 0d 0a 6f 6e 6c  -..3..147....onl
7fd0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
7fe0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
7ff0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
8000: 6c 61 62 65 6c 2d 31 37 31 0d 0a 53 45 4c 45 43  label-171..SELEC
8010: 54 20 41 4c 4c 20 2b 20 4d 49 4e 28 20 2d 20 34  T ALL + MIN( - 4
8020: 34 20 29 20 2a 20 2d 20 32 34 20 46 52 4f 4d 20  4 ) * - 24 FROM 
8030: 74 61 62 32 20 63 6f 72 30 20 57 48 45 52 45 20  tab2 cor0 WHERE 
8040: 4e 4f 54 20 39 31 20 49 53 20 4e 4f 54 20 4e 55  NOT 91 IS NOT NU
8050: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  LL..----..NULL..
8060: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
8070: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
8080: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
8090: 20 6c 61 62 65 6c 2d 31 37 31 0d 0a 53 45 4c 45   label-171..SELE
80a0: 43 54 20 41 4c 4c 20 2b 20 4d 49 4e 20 28 20 2d  CT ALL + MIN ( -
80b0: 20 34 34 20 29 20 2a 20 2d 20 32 34 20 46 52 4f   44 ) * - 24 FRO
80c0: 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52  M tab2 cor0 WHER
80d0: 45 20 4e 4f 54 20 39 31 20 49 53 20 4e 4f 54 20  E NOT 91 IS NOT 
80e0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
80f0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
8100: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
8110: 2d 20 28 20 2b 20 39 31 20 29 20 2a 20 2b 20 37  - ( + 91 ) * + 7
8120: 32 20 2b 20 31 33 20 2d 20 2d 20 28 20 2d 20 63  2 + 13 - - ( - c
8130: 6f 6c 32 20 29 20 2a 20 2d 20 33 31 20 46 52 4f  ol2 ) * - 31 FRO
8140: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
8150: 2d 2d 2d 2d 0d 0a 2d 33 34 37 30 0d 0a 2d 35 30  ----..-3470..-50
8160: 38 32 0d 0a 2d 36 32 32 39 0d 0a 0d 0a 71 75 65  82..-6229....que
8170: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
8180: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 31 36  ELECT ALL - - 16
8190: 2c 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  , col2 FROM tab2
81a0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
81b0: 31 36 0d 0a 32 33 0d 0a 31 36 0d 0a 34 30 0d 0a  16..23..16..40..
81c0: 31 36 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  16..58....onlyif
81d0: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
81e0: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
81f0: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
8200: 62 65 6c 2d 31 37 34 0d 0a 53 45 4c 45 43 54 20  bel-174..SELECT 
8210: 2d 20 2d 20 35 39 20 41 53 20 63 6f 6c 32 2c 20  - - 59 AS col2, 
8220: 2b 20 32 36 20 2b 20 2b 20 2d 20 36 35 20 2b 20  + 26 + + - 65 + 
8230: 2d 20 4d 49 4e 28 20 2b 20 37 33 20 29 20 41 53  - MIN( + 73 ) AS
8240: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
8250: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35  AS cor0..----..5
8260: 39 0d 0a 2d 31 31 32 0d 0a 0d 0a 73 6b 69 70 69  9..-112....skipi
8270: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
8280: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
8290: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
82a0: 2d 31 37 34 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  -174..SELECT - -
82b0: 20 35 39 20 41 53 20 63 6f 6c 32 2c 20 2b 20 32   59 AS col2, + 2
82c0: 36 20 2b 20 2b 20 2d 20 36 35 20 2b 20 2d 20 4d  6 + + - 65 + - M
82d0: 49 4e 20 28 20 2b 20 37 33 20 29 20 41 53 20 63  IN ( + 73 ) AS c
82e0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
82f0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d   cor0..----..59.
8300: 0a 2d 31 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49  .-112....query I
8310: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
8320: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
8330: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
8340: 20 28 20 37 36 20 29 20 49 53 20 4e 4f 54 20 4e   ( 76 ) IS NOT N
8350: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
8360: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
8370: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 38 30  LECT DISTINCT 80
8380: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
8390: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
83a0: 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  L IS NOT NULL..-
83b0: 2d 2d 2d 0d 0a 38 30 0d 0a 0d 0a 6f 6e 6c 79 69  ---..80....onlyi
83c0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
83d0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
83e0: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  pe: ..query II r
83f0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37 37  owsort label-177
8400: 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 41 53  ..SELECT col0 AS
8410: 20 63 6f 6c 31 2c 20 2d 20 33 37 20 2a 20 63 6f   col1, - 37 * co
8420: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l1 FROM tab1 WHE
8430: 52 45 20 2b 20 28 20 2b 20 43 41 53 54 28 20 2b  RE + ( + CAST( +
8440: 20 2d 20 28 20 2b 20 63 6f 6c 31 20 29 20 41 53   - ( + col1 ) AS
8450: 20 53 49 47 4e 45 44 20 29 20 29 20 3e 3d 20 4e   SIGNED ) ) >= N
8460: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ULL..----....ski
8470: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
8480: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
8490: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
84a0: 65 6c 2d 31 37 37 0d 0a 53 45 4c 45 43 54 20 63  el-177..SELECT c
84b0: 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20 2d 20 33  ol0 AS col1, - 3
84c0: 37 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  7 * col1 FROM ta
84d0: 62 31 20 57 48 45 52 45 20 2b 20 28 20 2b 20 43  b1 WHERE + ( + C
84e0: 41 53 54 20 28 20 2b 20 2d 20 28 20 2b 20 63 6f  AST ( + - ( + co
84f0: 6c 31 20 29 20 41 53 20 49 4e 54 45 47 45 52 20  l1 ) AS INTEGER 
8500: 29 20 29 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ) ) >= NULL..---
8510: 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
8520: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
8530: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
8540: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
8550: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8560: 74 20 6c 61 62 65 6c 2d 31 37 38 0d 0a 53 45 4c  t label-178..SEL
8570: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
8580: 41 53 54 28 20 2b 20 43 4f 55 4e 54 28 20 2a 20  AST( + COUNT( * 
8590: 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52  ) AS SIGNED ) FR
85a0: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
85b0: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
85c0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
85d0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
85e0: 6f 72 74 20 6c 61 62 65 6c 2d 31 37 38 0d 0a 53  ort label-178..S
85f0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
8600: 20 43 41 53 54 20 28 20 2b 20 43 4f 55 4e 54 20   CAST ( + COUNT 
8610: 28 20 2a 20 29 20 41 53 20 49 4e 54 45 47 45 52  ( * ) AS INTEGER
8620: 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
8630: 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20  --..-3....query 
8640: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
8650: 54 20 44 49 53 54 49 4e 43 54 20 28 20 2b 20 38  T DISTINCT ( + 8
8660: 37 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  7 ) FROM tab1..-
8670: 2d 2d 2d 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72 79  ---..87....query
8680: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
8690: 43 54 20 63 6f 6c 31 20 2b 20 2d 20 2b 20 28 20  CT col1 + - + ( 
86a0: 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32  + col2 ) AS col2
86b0: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
86c0: 0d 0a 2d 32 31 0d 0a 2d 35 34 0d 0a 2d 38 32 0d  ..-21..-54..-82.
86d0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
86e0: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 63  rt..SELECT + ( c
86f0: 6f 6c 30 20 29 20 2b 20 2b 20 2b 20 31 20 41 53  ol0 ) + + + 1 AS
8700: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
8710: 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 36 35 0d 0a 37  .----..47..65..7
8720: 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  6....skipif post
8730: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
8740: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
8750: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
8760: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
8770: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
8780: 45 4c 45 43 54 20 41 4c 4c 20 39 35 20 63 6f 6c  ELECT ALL 95 col
8790: 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  1 FROM tab1 WHER
87a0: 45 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 2b 20 2b  E NOT + col2 + +
87b0: 20 2d 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e   - col1 IS NOT N
87c0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
87d0: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
87e0: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
87f0: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
8800: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38  rowsort label-18
8810: 33 0d 0a 53 45 4c 45 43 54 20 32 37 20 2b 20 43  3..SELECT 27 + C
8820: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
8830: 4e 45 44 20 29 20 2d 20 2d 20 63 6f 6c 30 20 2b  NED ) - - col0 +
8840: 20 32 37 20 2b 20 2d 20 2b 20 63 6f 6c 31 20 2a   27 + - + col1 *
8850: 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 30   + col1 + + col0
8860: 20 2a 20 2d 20 63 6f 6c 30 20 2b 20 63 6f 6c 31   * - col0 + col1
8870: 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20   * - + col2 * + 
8880: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
8890: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
88a0: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
88b0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
88c0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
88d0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
88e0: 38 33 0d 0a 53 45 4c 45 43 54 20 32 37 20 2b 20  83..SELECT 27 + 
88f0: 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
8900: 4e 54 45 47 45 52 20 29 20 2d 20 2d 20 63 6f 6c  NTEGER ) - - col
8910: 30 20 2b 20 32 37 20 2b 20 2d 20 2b 20 63 6f 6c  0 + 27 + - + col
8920: 31 20 2a 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63  1 * + col1 + + c
8930: 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 2b 20 63  ol0 * - col0 + c
8940: 6f 6c 31 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 2a  ol1 * - + col2 *
8950: 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   + col1 FROM tab
8960: 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  1..----..NULL..N
8970: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ULL..NULL....que
8980: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
8990: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
89a0: 62 30 20 57 48 45 52 45 20 63 6f 6c 30 20 4e 4f  b0 WHERE col0 NO
89b0: 54 20 42 45 54 57 45 45 4e 20 31 32 20 41 4e 44  T BETWEEN 12 AND
89c0: 20 28 20 63 6f 6c 30 20 2a 20 2d 20 39 34 20 2d   ( col0 * - 94 -
89d0: 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 34 39 20 2b   + col2 + - 49 +
89e0: 20 2b 20 37 36 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39   + 76 )..----..9
89f0: 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
8a00: 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34  to c4b42765dff94
8a10: 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34  eaaa46040e537fb4
8a20: 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  3b7....query II 
8a30: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8a40: 2b 20 2d 20 36 31 20 2a 20 28 20 2d 20 63 6f 6c  + - 61 * ( - col
8a50: 32 20 29 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20  2 ) + + col2 AS 
8a60: 63 6f 6c 31 2c 20 2b 20 63 6f 6c 30 20 46 52 4f  col1, + col0 FRO
8a70: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
8a80: 2d 2d 2d 2d 0d 0a 32 39 31 34 0d 0a 31 35 0d 0a  ----..2914..15..
8a90: 36 31 33 38 0d 0a 39 37 0d 0a 36 32 30 0d 0a 38  6138..97..620..8
8aa0: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  7....query III r
8ab0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
8ac0: 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
8ad0: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
8ae0: 45 20 28 20 4e 55 4c 4c 20 29 20 3c 3d 20 2b 20  E ( NULL ) <= + 
8af0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  col2..----....on
8b00: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
8b10: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
8b20: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
8b30: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
8b40: 38 37 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  87..SELECT + col
8b50: 31 20 44 49 56 20 37 32 20 2d 20 63 6f 6c 32 20  1 DIV 72 - col2 
8b60: 2d 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c  - - col1 * - col
8b70: 31 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 46 52 4f  1 * - - col0 FRO
8b80: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
8b90: 30 30 39 32 0d 0a 2d 32 30 31 30 38 37 0d 0a 2d  0092..-201087..-
8ba0: 32 31 38 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  2184....skipif m
8bb0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
8bc0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
8bd0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38 37  owsort label-187
8be0: 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20  ..SELECT + col1 
8bf0: 2f 20 37 32 20 2d 20 63 6f 6c 32 20 2d 20 2d 20  / 72 - col2 - - 
8c00: 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 31 20 2a 20  col1 * - col1 * 
8c10: 2d 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  - - col0 FROM ta
8c20: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 30 39 32  b1..----..-10092
8c30: 0d 0a 2d 32 30 31 30 38 37 0d 0a 2d 32 31 38 34  ..-201087..-2184
8c40: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
8c50: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32  ort..SELECT col2
8c60: 20 2d 20 33 35 20 41 53 20 63 6f 6c 31 20 46 52   - 35 AS col1 FR
8c70: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab1..----..2
8c80: 34 0d 0a 33 33 0d 0a 36 31 0d 0a 0d 0a 6f 6e 6c  4..33..61....onl
8c90: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
8ca0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
8cb0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
8cc0: 6c 61 62 65 6c 2d 31 38 39 0d 0a 53 45 4c 45 43  label-189..SELEC
8cd0: 54 20 2b 20 2b 20 33 35 20 2b 20 43 4f 55 4e 54  T + + 35 + COUNT
8ce0: 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ( * ) FROM tab2 
8cf0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
8d00: 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
8d10: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
8d20: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
8d30: 6f 72 74 20 6c 61 62 65 6c 2d 31 38 39 0d 0a 53  ort label-189..S
8d40: 45 4c 45 43 54 20 2b 20 2b 20 33 35 20 2b 20 43  ELECT + + 35 + C
8d50: 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
8d60: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
8d70: 2d 2d 0d 0a 33 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..38....onlyif
8d80: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
8d90: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
8da0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
8db0: 65 6c 2d 31 39 30 0d 0a 53 45 4c 45 43 54 20 41  el-190..SELECT A
8dc0: 4c 4c 20 2d 20 4d 41 58 28 20 44 49 53 54 49 4e  LL - MAX( DISTIN
8dd0: 43 54 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c  CT col2 ) AS col
8de0: 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
8df0: 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c  or0 WHERE ( NULL
8e00: 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
8e10: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
8e20: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
8e30: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
8e40: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
8e50: 65 6c 2d 31 39 30 0d 0a 53 45 4c 45 43 54 20 41  el-190..SELECT A
8e60: 4c 4c 20 2d 20 4d 41 58 20 28 20 44 49 53 54 49  LL - MAX ( DISTI
8e70: 4e 43 54 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  NCT col2 ) AS co
8e80: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
8e90: 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55 4c  cor0 WHERE ( NUL
8ea0: 4c 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  L ) IS NOT NULL.
8eb0: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .----..NULL....q
8ec0: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
8ed0: 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2a  .SELECT - col0 *
8ee0: 20 32 33 20 2b 20 2d 20 37 34 20 41 53 20 63 6f   23 + - 74 AS co
8ef0: 6c 32 2c 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  l2, + col0 AS co
8f00: 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
8f10: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 34  cor0..----..-124
8f20: 37 0d 0a 35 31 0d 0a 2d 32 30 32 39 0d 0a 38 35  7..51..-2029..85
8f30: 0d 0a 2d 32 31 36 37 0d 0a 39 31 0d 0a 0d 0a 6f  ..-2167..91....o
8f40: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
8f50: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
8f60: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
8f70: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
8f80: 31 39 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  192..SELECT DIST
8f90: 49 4e 43 54 20 2b 20 2b 20 39 36 20 44 49 56 20  INCT + + 96 DIV 
8fa0: 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20  + col1 + + col2 
8fb0: 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46  - col2 AS col0 F
8fc0: 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
8fd0: 2d 2d 2d 0d 0a 31 39 0d 0a 32 0d 0a 36 0d 0a 0d  ---..19..2..6...
8fe0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
8ff0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
9000: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
9010: 6c 61 62 65 6c 2d 31 39 32 0d 0a 53 45 4c 45 43  label-192..SELEC
9020: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 39  T DISTINCT + + 9
9030: 36 20 2f 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63  6 / + col1 + + c
9040: 6f 6c 32 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  ol2 - col2 AS co
9050: 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l0 FROM tab1 cor
9060: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 0d 0a 32 0d 0a  0..----..19..2..
9070: 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
9080: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
9090: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
90a0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39  rowsort label-19
90b0: 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 41  3..SELECT ALL MA
90c0: 58 28 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c  X( col0 ) AS col
90d0: 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  2 FROM tab1 cor0
90e0: 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a 73 6b  ..----..91....sk
90f0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
9100: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
9110: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
9120: 65 6c 2d 31 39 33 0d 0a 53 45 4c 45 43 54 20 41  el-193..SELECT A
9130: 4c 4c 20 4d 41 58 20 28 20 63 6f 6c 30 20 29 20  LL MAX ( col0 ) 
9140: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
9150: 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 31  1 cor0..----..91
9160: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
9170: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
9180: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
9190: 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
91a0: 20 4e 4f 54 20 35 35 20 49 53 20 4e 55 4c 4c 0d   NOT 55 IS NULL.
91b0: 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
91c0: 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61  hashing to c6c0a
91d0: 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31  4111b36d04dbc811
91e0: 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71  a11e4d54cad....q
91f0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
9200: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
9210: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
9220: 52 45 20 4e 4f 54 20 2b 20 36 38 20 3c 20 4e 55  RE NOT + 68 < NU
9230: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  LL..----....skip
9240: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
9250: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
9260: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
9270: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
9280: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
9290: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
92a0: 4c 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 2c 20  L col1 AS col1, 
92b0: 39 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  91 col0 FROM tab
92c0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
92d0: 0a 31 0d 0a 39 31 0d 0a 32 31 0d 0a 39 31 0d 0a  .1..91..21..91..
92e0: 38 31 0d 0a 39 31 0d 0a 0d 0a 71 75 65 72 79 20  81..91....query 
92f0: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
9300: 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
9310: 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
9320: 45 20 63 6f 6c 30 20 2a 20 34 36 20 4e 4f 54 20  E col0 * 46 NOT 
9330: 49 4e 20 28 20 2b 20 39 30 20 29 0d 0a 2d 2d 2d  IN ( + 90 )..---
9340: 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
9350: 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35  ing to 75c998aa5
9360: 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39  3ac83218cbf2feb9
9370: 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79  62d0a49....query
9380: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
9390: 45 43 54 20 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c  ECT + col0 * col
93a0: 31 20 41 53 20 63 6f 6c 32 2c 20 2d 20 35 20 41  1 AS col2, - 5 A
93b0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
93c0: 0d 0a 2d 2d 2d 2d 0d 0a 32 33 34 36 0d 0a 2d 35  ..----..2346..-5
93d0: 0d 0a 34 39 32 38 0d 0a 2d 35 0d 0a 35 30 32 35  ..4928..-5..5025
93e0: 0d 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..-5....onlyif m
93f0: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
9400: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
9410: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
9420: 72 74 20 6c 61 62 65 6c 2d 31 39 39 0d 0a 53 45  rt label-199..SE
9430: 4c 45 43 54 20 41 4c 4c 20 28 20 2d 20 2b 20 32  LECT ALL ( - + 2
9440: 20 29 20 44 49 56 20 2d 20 63 6f 6c 30 20 2b 20   ) DIV - col0 + 
9450: 37 36 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  76 col2 FROM tab
9460: 30 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 37 36 0d  0..----..76..76.
9470: 0a 37 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .76....skipif my
9480: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
9490: 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
94a0: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
94b0: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
94c0: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
94d0: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
94e0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
94f0: 61 62 65 6c 2d 31 39 39 0d 0a 53 45 4c 45 43 54  abel-199..SELECT
9500: 20 41 4c 4c 20 28 20 2d 20 2b 20 32 20 29 20 2f   ALL ( - + 2 ) /
9510: 20 2d 20 63 6f 6c 30 20 2b 20 37 36 20 63 6f 6c   - col0 + 76 col
9520: 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
9530: 2d 0d 0a 37 36 0d 0a 37 36 0d 0a 37 36 0d 0a 0d  -..76..76..76...
9540: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
9550: 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
9560: 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
9570: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
9580: 6c 2d 32 30 30 0d 0a 53 45 4c 45 43 54 20 44 49  l-200..SELECT DI
9590: 53 54 49 4e 43 54 20 35 36 20 44 49 56 20 2b 20  STINCT 56 DIV + 
95a0: 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
95b0: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab0..----..0.
95c0: 0a 31 0d 0a 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  .1..5....skipif 
95d0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
95e0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
95f0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30  rowsort label-20
9600: 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
9610: 43 54 20 35 36 20 2f 20 2b 20 63 6f 6c 32 20 41  CT 56 / + col2 A
9620: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
9630: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 35 0d  ..----..0..1..5.
9640: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
9650: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  ort..SELECT col1
9660: 2c 20 36 39 20 46 52 4f 4d 20 74 61 62 32 0d 0a  , 69 FROM tab2..
9670: 2d 2d 2d 2d 0d 0a 35 31 0d 0a 36 39 0d 0a 36 37  ----..51..69..67
9680: 0d 0a 36 39 0d 0a 37 37 0d 0a 36 39 0d 0a 0d 0a  ..69..77..69....
9690: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
96a0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
96b0: 20 28 20 38 38 20 29 20 2a 20 2b 20 33 35 20 2b   ( 88 ) * + 35 +
96c0: 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
96d0: 32 20 57 48 45 52 45 20 36 36 20 49 53 20 4e 55  2 WHERE 66 IS NU
96e0: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
96f0: 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
9700: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
9710: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
9720: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30 33  owsort label-203
9730: 0d 0a 53 45 4c 45 43 54 20 2d 20 33 34 20 44 49  ..SELECT - 34 DI
9740: 56 20 2b 20 37 38 20 41 53 20 63 6f 6c 32 20 46  V + 78 AS col2 F
9750: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
9760: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
9770: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
9780: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
9790: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
97a0: 74 20 6c 61 62 65 6c 2d 32 30 33 0d 0a 53 45 4c  t label-203..SEL
97b0: 45 43 54 20 2d 20 33 34 20 2f 20 2b 20 37 38 20  ECT - 34 / + 78 
97c0: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
97d0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
97e0: 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .0..0..0....skip
97f0: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
9800: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
9810: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
9820: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
9830: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
9840: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
9850: 4c 20 2d 20 2b 20 38 35 20 2b 20 63 6f 6c 31 20  L - + 85 + col1 
9860: 41 53 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 30 20  AS col0, - col0 
9870: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
9880: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
9890: 38 0d 0a 2d 37 35 0d 0a 2d 33 34 0d 0a 2d 34 36  8..-75..-34..-46
98a0: 0d 0a 2d 38 0d 0a 2d 36 34 0d 0a 0d 0a 6f 6e 6c  ..-8..-64....onl
98b0: 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
98c0: 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
98d0: 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
98e0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30  rowsort label-20
98f0: 35 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 35 31  5..SELECT - + 51
9900: 20 2b 20 34 34 20 44 49 56 20 2b 20 39 38 20 46   + 44 DIV + 98 F
9910: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
9920: 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d 35 31  ..----..-51..-51
9930: 0d 0a 2d 35 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-51....skipif 
9940: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
9950: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
9960: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30  rowsort label-20
9970: 35 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 35 31  5..SELECT - + 51
9980: 20 2b 20 34 34 20 2f 20 2b 20 39 38 20 46 52 4f   + 44 / + 98 FRO
9990: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
99a0: 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d 35 31 0d 0a  ----..-51..-51..
99b0: 2d 35 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -51....query I r
99c0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
99d0: 6f 6c 31 20 2a 20 2b 20 37 20 41 53 20 63 6f 6c  ol1 * + 7 AS col
99e0: 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
99f0: 6f 72 30 20 57 48 45 52 45 20 38 37 20 49 53 20  or0 WHERE 87 IS 
9a00: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
9a10: 33 35 37 0d 0a 34 36 39 0d 0a 35 33 39 0d 0a 0d  357..469..539...
9a20: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
9a30: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
9a40: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
9a50: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
9a60: 6c 2d 32 30 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-207..SELECT DI
9a70: 53 54 49 4e 43 54 20 2b 20 2d 20 43 41 53 54 28  STINCT + - CAST(
9a80: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
9a90: 29 20 2a 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c  ) * col0 + + col
9aa0: 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  1 AS col0 FROM t
9ab0: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
9ac0: 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  -..NULL....skipi
9ad0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
9ae0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
9af0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9b00: 32 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  207..SELECT DIST
9b10: 49 4e 43 54 20 2b 20 2d 20 43 41 53 54 20 28 20  INCT + - CAST ( 
9b20: 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
9b30: 29 20 2a 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c  ) * col0 + + col
9b40: 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  1 AS col0 FROM t
9b50: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
9b60: 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  -..NULL....query
9b70: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
9b80: 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
9b90: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
9ba0: 52 45 20 2b 20 35 33 20 49 53 20 4e 4f 54 20 4e  RE + 53 IS NOT N
9bb0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
9bc0: 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
9bd0: 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61  4b42765dff94eaaa
9be0: 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d  46040e537fb43b7.
9bf0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
9c00: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
9c10: 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol2 AS col1 FROM
9c20: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
9c30: 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 3e  ERE NOT - col0 >
9c40: 3d 20 28 20 2d 20 39 33 20 29 0d 0a 2d 2d 2d 2d  = ( - 93 )..----
9c50: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
9c60: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  ort..SELECT + - 
9c70: 34 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  47 AS col0 FROM 
9c80: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
9c90: 2d 2d 0d 0a 2d 34 37 0d 0a 2d 34 37 0d 0a 2d 34  --..-47..-47..-4
9ca0: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
9cb0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  sort..SELECT + +
9cc0: 20 32 34 20 2a 20 37 34 20 2a 20 2b 20 2d 20 63   24 * 74 * + - c
9cd0: 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
9ce0: 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
9cf0: 0d 0a 2d 31 30 34 37 38 34 0d 0a 2d 31 32 30 37  ..-104784..-1207
9d00: 36 38 0d 0a 2d 31 37 30 34 39 36 0d 0a 0d 0a 6f  68..-170496....o
9d10: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
9d20: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
9d30: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
9d40: 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
9d50: 6c 2d 32 31 32 0d 0a 53 45 4c 45 43 54 20 2a 20  l-212..SELECT * 
9d60: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
9d70: 28 20 4e 4f 54 20 34 31 20 2a 20 2b 20 2d 20 63  ( NOT 41 * + - c
9d80: 6f 6c 30 20 2f 20 2b 20 2b 20 63 6f 6c 30 20 2a  ol0 / + + col0 *
9d90: 20 37 31 20 2a 20 63 6f 6c 32 20 2a 20 2d 20 2d   71 * col2 * - -
9da0: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
9db0: 49 47 4e 45 44 20 29 20 49 53 20 4e 55 4c 4c 20  IGNED ) IS NULL 
9dc0: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  )..----....skipi
9dd0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
9de0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
9df0: 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
9e00: 6c 2d 32 31 32 0d 0a 53 45 4c 45 43 54 20 2a 20  l-212..SELECT * 
9e10: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
9e20: 28 20 4e 4f 54 20 34 31 20 2a 20 2b 20 2d 20 63  ( NOT 41 * + - c
9e30: 6f 6c 30 20 2f 20 2b 20 2b 20 63 6f 6c 30 20 2a  ol0 / + + col0 *
9e40: 20 37 31 20 2a 20 63 6f 6c 32 20 2a 20 2d 20 2d   71 * col2 * - -
9e50: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
9e60: 49 4e 54 45 47 45 52 20 29 20 49 53 20 4e 55 4c  INTEGER ) IS NUL
9e70: 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  L )..----....onl
9e80: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
9e90: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
9ea0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
9eb0: 6c 61 62 65 6c 2d 32 31 33 0d 0a 53 45 4c 45 43  label-213..SELEC
9ec0: 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d  T COUNT( * ) * -
9ed0: 20 33 39 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   39 FROM tab2..-
9ee0: 2d 2d 2d 0d 0a 2d 31 31 37 0d 0a 0d 0a 73 6b 69  ---..-117....ski
9ef0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
9f00: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
9f10: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
9f20: 6c 2d 32 31 33 0d 0a 53 45 4c 45 43 54 20 43 4f  l-213..SELECT CO
9f30: 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 33 39  UNT ( * ) * - 39
9f40: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
9f50: 0d 0a 2d 31 31 37 0d 0a 0d 0a 71 75 65 72 79 20  ..-117....query 
9f60: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
9f70: 54 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 36 39 20  T + col2 + + 69 
9f80: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
9f90: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
9fa0: 0a 31 30 39 0d 0a 31 32 37 0d 0a 39 32 0d 0a 0d  .109..127..92...
9fb0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
9fc0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
9fd0: 54 20 32 30 20 2d 20 2b 20 28 20 2d 20 63 6f 6c  T 20 - + ( - col
9fe0: 31 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  1 ) FROM tab2 AS
9ff0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 31 0d   cor0..----..71.
a000: 0a 38 37 0d 0a 39 37 0d 0a 0d 0a 71 75 65 72 79  .87..97....query
a010: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
a020: 45 43 54 20 41 4c 4c 20 2d 20 32 39 20 2d 20 63  ECT ALL - 29 - c
a030: 6f 6c 31 20 2a 20 2b 20 2b 20 63 6f 6c 30 20 2a  ol1 * + + col0 *
a040: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 2c 20 2d   col0 AS col2, -
a050: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
a060: 0a 2d 2d 2d 2d 0d 0a 2d 33 36 31 35 34 0d 0a 2d  .----..-36154..-
a070: 38 35 0d 0a 2d 33 36 34 34 33 0d 0a 2d 35 31 0d  85..-36443..-51.
a080: 0a 2d 33 38 39 32 33 36 0d 0a 2d 39 31 0d 0a 0d  .-389236..-91...
a090: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
a0a0: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
a0b0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
a0c0: 6f 72 74 20 6c 61 62 65 6c 2d 32 31 37 0d 0a 53  ort label-217..S
a0d0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
a0e0: 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
a0f0: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48  ol0 FROM tab0 WH
a100: 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c 20 38  ERE NOT NULL < 8
a110: 39 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b  9..----..0....sk
a120: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
a130: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
a140: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
a150: 65 6c 2d 32 31 37 0d 0a 53 45 4c 45 43 54 20 44  el-217..SELECT D
a160: 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 20  ISTINCT - COUNT 
a170: 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
a180: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
a190: 54 20 4e 55 4c 4c 20 3c 20 38 39 0d 0a 2d 2d 2d  T NULL < 89..---
a1a0: 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  -..0....skipif p
a1b0: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
a1c0: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
a1d0: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
a1e0: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
a1f0: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
a200: 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2a  t..SELECT col2 *
a210: 20 2d 20 33 32 2c 20 2b 20 63 6f 6c 30 20 2b 20   - 32, + col0 + 
a220: 2b 20 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d  + col2 col1 FROM
a230: 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
a240: 0d 0a 2d 31 32 38 30 0d 0a 31 30 34 0d 0a 2d 31  ..-1280..104..-1
a250: 38 35 36 0d 0a 31 33 33 0d 0a 2d 37 33 36 0d 0a  856..133..-736..
a260: 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  69....query III 
a270: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
a280: 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  * FROM tab1 cor0
a290: 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c   WHERE NOT ( NUL
a2a0: 4c 20 29 20 3c 3e 20 2d 20 2d 20 39 0d 0a 2d 2d  L ) <> - - 9..--
a2b0: 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  --....skipif pos
a2c0: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
a2d0: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
a2e0: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
a2f0: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
a300: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
a310: 53 45 4c 45 43 54 20 2b 20 2b 20 32 38 20 2a 20  SELECT + + 28 * 
a320: 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74  col2 col2 FROM t
a330: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
a340: 2d 0d 0a 31 31 32 30 0d 0a 31 36 32 34 0d 0a 36  -..1120..1624..6
a350: 34 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  44....query I ro
a360: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
a370: 4c 20 63 6f 6c 31 20 2a 20 2b 20 28 20 2b 20 63  L col1 * + ( + c
a380: 6f 6c 30 20 29 20 2b 20 2b 20 63 6f 6c 32 20 46  ol0 ) + + col2 F
a390: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
a3a0: 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c   WHERE NOT ( NUL
a3b0: 4c 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  L ) IS NOT NULL.
a3c0: 0a 2d 2d 2d 2d 0d 0a 31 32 36 32 0d 0a 31 38 33  .----..1262..183
a3d0: 37 0d 0a 31 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  7..196....onlyif
a3e0: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
a3f0: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
a400: 65 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a  e: DECIMAL type:
a410: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
a420: 72 74 20 6c 61 62 65 6c 2d 32 32 32 0d 0a 53 45  rt label-222..SE
a430: 4c 45 43 54 20 2d 20 43 41 53 54 28 20 4e 55 4c  LECT - CAST( NUL
a440: 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  L AS SIGNED ) * 
a450: 63 6f 6c 31 20 2a 20 2d 20 43 41 53 54 28 20 28  col1 * - CAST( (
a460: 20 2b 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 44   + - col1 ) AS D
a470: 45 43 49 4d 41 4c 20 29 20 41 53 20 63 6f 6c 32  ECIMAL ) AS col2
a480: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
a490: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
a4a0: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
a4b0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
a4c0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
a4d0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
a4e0: 65 6c 2d 32 32 32 0d 0a 53 45 4c 45 43 54 20 2d  el-222..SELECT -
a4f0: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
a500: 49 4e 54 45 47 45 52 20 29 20 2a 20 63 6f 6c 31  INTEGER ) * col1
a510: 20 2a 20 2d 20 43 41 53 54 20 28 20 28 20 2b 20   * - CAST ( ( + 
a520: 2d 20 63 6f 6c 31 20 29 20 41 53 20 52 45 41 4c  - col1 ) AS REAL
a530: 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
a540: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
a550: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
a560: 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
a570: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
a580: 2b 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 28 20 2d  + + col1 * + ( -
a590: 20 35 39 20 29 20 41 53 20 63 6f 6c 31 20 46 52   59 ) AS col1 FR
a5a0: 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
a5b0: 2d 2d 0d 0a 2d 33 30 30 39 0d 0a 2d 33 39 35 33  --..-3009..-3953
a5c0: 0d 0a 2d 34 35 34 33 0d 0a 0d 0a 6f 6e 6c 79 69  ..-4543....onlyi
a5d0: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
a5e0: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
a5f0: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  on: ..query II r
a600: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 32 34  owsort label-224
a610: 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20  ..SELECT + col0 
a620: 44 49 56 20 2b 20 33 36 20 63 6f 6c 30 2c 20 63  DIV + 36 col0, c
a630: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
a640: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   cor0..----..1..
a650: 34 36 0d 0a 31 0d 0a 36 34 0d 0a 32 0d 0a 37 35  46..1..64..2..75
a660: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
a670: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
a680: 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
a690: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
a6a0: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
a6b0: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
a6c0: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
a6d0: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
a6e0: 65 6c 2d 32 32 34 0d 0a 53 45 4c 45 43 54 20 2b  el-224..SELECT +
a6f0: 20 63 6f 6c 30 20 2f 20 2b 20 33 36 20 63 6f 6c   col0 / + 36 col
a700: 30 2c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  0, col0 FROM tab
a710: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
a720: 0a 31 0d 0a 34 36 0d 0a 31 0d 0a 36 34 0d 0a 32  .1..46..1..64..2
a730: 0d 0a 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..75....query I 
a740: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
a750: 44 49 53 54 49 4e 43 54 20 2b 20 38 20 2b 20 2d  DISTINCT + 8 + -
a760: 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
a770: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
a780: 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 32  WHERE NOT + col2
a790: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
a7a0: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
a7b0: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
a7c0: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
a7d0: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
a7e0: 74 20 6c 61 62 65 6c 2d 32 32 36 0d 0a 53 45 4c  t label-226..SEL
a7f0: 45 43 54 20 2d 20 36 31 20 44 49 56 20 2b 20 63  ECT - 61 DIV + c
a800: 6f 6c 31 2c 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  ol1, + col2 FROM
a810: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
a820: 2d 2d 2d 0d 0a 2d 31 0d 0a 32 33 0d 0a 30 0d 0a  ---..-1..23..0..
a830: 34 30 0d 0a 30 0d 0a 35 38 0d 0a 0d 0a 73 6b 69  40..0..58....ski
a840: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
a850: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
a860: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
a870: 65 6c 2d 32 32 36 0d 0a 53 45 4c 45 43 54 20 2d  el-226..SELECT -
a880: 20 36 31 20 2f 20 2b 20 63 6f 6c 31 2c 20 2b 20   61 / + col1, + 
a890: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
a8a0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
a8b0: 0d 0a 32 33 0d 0a 30 0d 0a 34 30 0d 0a 30 0d 0a  ..23..0..40..0..
a8c0: 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  58....onlyif mys
a8d0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
a8e0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
a8f0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
a900: 32 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  27..SELECT ALL -
a910: 20 4d 41 58 28 20 41 4c 4c 20 38 39 20 29 20 41   MAX( ALL 89 ) A
a920: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
a930: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39   cor0..----..-89
a940: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
a950: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
a960: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
a970: 72 74 20 6c 61 62 65 6c 2d 32 32 37 0d 0a 53 45  rt label-227..SE
a980: 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58 20 28  LECT ALL - MAX (
a990: 20 41 4c 4c 20 38 39 20 29 20 41 53 20 63 6f 6c   ALL 89 ) AS col
a9a0: 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  2 FROM tab1 cor0
a9b0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39 0d 0a 0d 0a 71  ..----..-89....q
a9c0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
a9d0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
a9e0: 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48  T * FROM tab2 WH
a9f0: 45 52 45 20 32 36 20 49 53 20 4e 55 4c 4c 0d 0a  ERE 26 IS NULL..
aa00: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
aa10: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
aa20: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
aa30: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
aa40: 72 74 20 6c 61 62 65 6c 2d 32 32 39 0d 0a 53 45  rt label-229..SE
aa50: 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20  LECT ALL + col1 
aa60: 44 49 56 20 34 30 20 46 52 4f 4d 20 74 61 62 31  DIV 40 FROM tab1
aa70: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d  ..----..0..0..1.
aa80: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
aa90: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
aaa0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
aab0: 74 20 6c 61 62 65 6c 2d 32 32 39 0d 0a 53 45 4c  t label-229..SEL
aac0: 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2f  ECT ALL + col1 /
aad0: 20 34 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d   40 FROM tab1..-
aae0: 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d 0a  ---..0..0..1....
aaf0: 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
ab00: 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
ab10: 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
ab20: 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
ab30: 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
ab40: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
ab50: 54 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32  T + col0 AS col2
ab60: 2c 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 63  , - col0 * - - c
ab70: 6f 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ol0 col0 FROM ta
ab80: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 2d 32  b2..----..46..-2
ab90: 31 31 36 0d 0a 36 34 0d 0a 2d 34 30 39 36 0d 0a  116..64..-4096..
aba0: 37 35 0d 0a 2d 35 36 32 35 0d 0a 0d 0a 71 75 65  75..-5625....que
abb0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
abc0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
abd0: 31 34 20 2a 20 2d 20 63 6f 6c 31 20 2a 20 2d 20  14 * - col1 * - 
abe0: 28 20 2d 20 35 38 20 29 20 41 53 20 63 6f 6c 30  ( - 58 ) AS col0
abf0: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
ac00: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 33 36 38 0d  r0..----..11368.
ac10: 0a 33 38 31 36 34 0d 0a 34 30 36 30 0d 0a 0d 0a  .38164..4060....
ac20: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
ac30: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
ac40: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
ac50: 72 74 20 6c 61 62 65 6c 2d 32 33 32 0d 0a 53 45  rt label-232..SE
ac60: 4c 45 43 54 20 41 4c 4c 20 2d 20 28 20 2d 20 31  LECT ALL - ( - 1
ac70: 36 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a  6 ) * - COUNT( *
ac80: 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
ac90: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
aca0: 0a 2d 34 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-48....skipif m
acb0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
acc0: 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
acd0: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
ace0: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
acf0: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
ad00: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
ad10: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
ad20: 6c 61 62 65 6c 2d 32 33 32 0d 0a 53 45 4c 45 43  label-232..SELEC
ad30: 54 20 41 4c 4c 20 2d 20 28 20 2d 20 31 36 20 29  T ALL - ( - 16 )
ad40: 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   * - COUNT ( * )
ad50: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
ad60: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
ad70: 34 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  48....skipif pos
ad80: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
ad90: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
ada0: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
adb0: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
adc0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
add0: 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20  SELECT + col2 * 
ade0: 2d 20 2b 20 31 35 20 63 6f 6c 31 20 46 52 4f 4d  - + 15 col1 FROM
adf0: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34   tab0..----..-14
ae00: 38 35 0d 0a 2d 31 35 30 0d 0a 2d 37 30 35 0d 0a  85..-150..-705..
ae10: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
ae20: 74 0d 0a 53 45 4c 45 43 54 20 34 32 20 41 53 20  t..SELECT 42 AS 
ae30: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63  col1 FROM tab1 c
ae40: 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
ae50: 61 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab1 AS cor1..---
ae60: 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
ae70: 69 6e 67 20 74 6f 20 36 34 63 32 39 64 62 39 66  ing to 64c29db9f
ae80: 31 63 64 37 65 64 34 64 64 65 62 31 37 33 35 65  1cd7ed4ddeb1735e
ae90: 33 65 30 64 34 34 32 0d 0a 0d 0a 71 75 65 72 79  3e0d442....query
aea0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
aeb0: 43 54 20 2b 20 38 35 20 2a 20 63 6f 6c 32 20 2a  CT + 85 * col2 *
aec0: 20 2d 20 36 20 46 52 4f 4d 20 74 61 62 31 0d 0a   - 6 FROM tab1..
aed0: 2d 2d 2d 2d 0d 0a 2d 33 30 30 39 30 0d 0a 2d 33  ----..-30090..-3
aee0: 34 36 38 30 0d 0a 2d 34 38 39 36 30 0d 0a 0d 0a  4680..-48960....
aef0: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
af00: 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20  ..SELECT - col2 
af10: 41 53 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c 32 20  AS col1, + col2 
af20: 2b 20 37 38 20 46 52 4f 4d 20 74 61 62 30 0d 0a  + 78 FROM tab0..
af30: 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 38 38 0d 0a 2d  ----..-10..88..-
af40: 34 37 0d 0a 31 32 35 0d 0a 2d 39 39 0d 0a 31 37  47..125..-99..17
af50: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  7....query II ro
af60: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
af70: 63 6f 6c 30 2c 20 2d 20 63 6f 6c 31 20 41 53 20  col0, - col1 AS 
af80: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
af90: 2d 2d 2d 2d 0d 0a 34 36 0d 0a 2d 35 31 0d 0a 36  ----..46..-51..6
afa0: 34 0d 0a 2d 37 37 0d 0a 37 35 0d 0a 2d 36 37 0d  4..-77..75..-67.
afb0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
afc0: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
afd0: 20 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20 2d 20   ( + col1 ) + - 
afe0: 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
aff0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
b000: 2d 2d 2d 2d 0d 0a 2d 31 30 30 0d 0a 2d 31 32 38  ----..-100..-128
b010: 0d 0a 2d 33 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-31....onlyif 
b020: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
b030: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
b040: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
b050: 6c 2d 32 33 39 0d 0a 53 45 4c 45 43 54 20 2d 20  l-239..SELECT - 
b060: 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20 2b 20  MIN( DISTINCT + 
b070: 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32  + col0 ) AS col2
b080: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
b090: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 0d  r0..----..-46...
b0a0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
b0b0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
b0c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
b0d0: 6c 61 62 65 6c 2d 32 33 39 0d 0a 53 45 4c 45 43  label-239..SELEC
b0e0: 54 20 2d 20 4d 49 4e 20 28 20 44 49 53 54 49 4e  T - MIN ( DISTIN
b0f0: 43 54 20 2b 20 2b 20 63 6f 6c 30 20 29 20 41 53  CT + + col0 ) AS
b100: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
b110: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
b120: 34 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  46....onlyif mys
b130: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
b140: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
b150: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
b160: 34 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d  40..SELECT ALL M
b170: 49 4e 28 20 2b 20 2b 20 63 6f 6c 30 20 29 20 46  IN( + + col0 ) F
b180: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
b190: 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 0d 0a 73 6b  ..----..15....sk
b1a0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
b1b0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
b1c0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
b1d0: 65 6c 2d 32 34 30 0d 0a 53 45 4c 45 43 54 20 41  el-240..SELECT A
b1e0: 4c 4c 20 4d 49 4e 20 28 20 2b 20 2b 20 63 6f 6c  LL MIN ( + + col
b1f0: 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  0 ) FROM tab0 AS
b200: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d   cor0..----..15.
b210: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
b220: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
b230: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
b240: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 31 0d  wsort label-241.
b250: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
b260: 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46  T( * ) AS col1 F
b270: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
b280: 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e   WHERE NULL IS N
b290: 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30  OT NULL..----..0
b2a0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
b2b0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
b2c0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
b2d0: 72 74 20 6c 61 62 65 6c 2d 32 34 31 0d 0a 53 45  rt label-241..SE
b2e0: 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28  LECT ALL COUNT (
b2f0: 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   * ) AS col1 FRO
b300: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
b310: 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54  HERE NULL IS NOT
b320: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
b330: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
b340: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
b350: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
b360: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 32 0d 0a  sort label-242..
b370: 53 45 4c 45 43 54 20 2b 20 2d 20 43 4f 55 4e 54  SELECT + - COUNT
b380: 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ( * ) AS col1 FR
b390: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
b3a0: 57 48 45 52 45 20 28 20 63 6f 6c 32 20 2a 20 2b  WHERE ( col2 * +
b3b0: 20 63 6f 6c 31 20 29 20 3e 3d 20 63 6f 6c 30 20   col1 ) >= col0 
b3c0: 2b 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  + - col0..----..
b3d0: 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
b3e0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
b3f0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
b400: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 32 0d 0a  sort label-242..
b410: 53 45 4c 45 43 54 20 2b 20 2d 20 43 4f 55 4e 54  SELECT + - COUNT
b420: 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46   ( * ) AS col1 F
b430: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
b440: 20 57 48 45 52 45 20 28 20 63 6f 6c 32 20 2a 20   WHERE ( col2 * 
b450: 2b 20 63 6f 6c 31 20 29 20 3e 3d 20 63 6f 6c 30  + col1 ) >= col0
b460: 20 2b 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d   + - col0..----.
b470: 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .-3....query I r
b480: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
b490: 4c 4c 20 2b 20 2d 20 31 33 20 2b 20 2d 20 63 6f  LL + - 13 + - co
b4a0: 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l0 AS col0 FROM 
b4b0: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
b4c0: 2d 2d 0d 0a 2d 35 39 0d 0a 2d 37 37 0d 0a 2d 38  --..-59..-77..-8
b4d0: 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  8....onlyif mysq
b4e0: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
b4f0: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
b500: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34  rowsort label-24
b510: 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
b520: 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20  CT COUNT( * ) + 
b530: 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
b540: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
b550: 2d 2d 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..6....skipif 
b560: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
b570: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
b580: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34  rowsort label-24
b590: 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
b5a0: 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b  CT COUNT ( * ) +
b5b0: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
b5c0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
b5d0: 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79  ----..6....query
b5e0: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
b5f0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
b600: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
b610: 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3e 20 2b  0 WHERE NULL > +
b620: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   col1..----....q
b630: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
b640: 53 45 4c 45 43 54 20 37 32 20 2b 20 2d 20 2b 20  SELECT 72 + - + 
b650: 38 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  80 AS col1 FROM 
b660: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
b670: 2d 2d 0d 0a 2d 38 0d 0a 2d 38 0d 0a 2d 38 0d 0a  --..-8..-8..-8..
b680: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
b690: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
b6a0: 43 54 20 2d 20 2b 20 63 6f 6c 32 20 2b 20 2b 20  CT - + col2 + + 
b6b0: 34 30 20 2a 20 2d 20 63 6f 6c 31 20 46 52 4f 4d  40 * - col1 FROM
b6c0: 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
b6d0: 0d 0a 2d 31 39 34 38 0d 0a 2d 32 35 39 0d 0a 2d  ..-1948..-259..-
b6e0: 36 35 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  656....onlyif my
b6f0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
b700: 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
b710: 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
b720: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
b730: 6f 72 74 20 6c 61 62 65 6c 2d 32 34 38 0d 0a 53  ort label-248..S
b740: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
b750: 20 53 55 4d 28 20 2d 20 2b 20 63 6f 6c 32 20 29   SUM( - + col2 )
b760: 20 44 49 56 20 2b 20 2b 20 39 37 20 46 52 4f 4d   DIV + + 97 FROM
b770: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
b780: 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66  ---..1....skipif
b790: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
b7a0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
b7b0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
b7c0: 34 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  48..SELECT DISTI
b7d0: 4e 43 54 20 2d 20 53 55 4d 20 28 20 2d 20 2b 20  NCT - SUM ( - + 
b7e0: 63 6f 6c 32 20 29 20 2f 20 2b 20 2b 20 39 37 20  col2 ) / + + 97 
b7f0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
b800: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b  0..----..1....sk
b810: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
b820: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
b830: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
b840: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
b850: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
b860: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
b870: 20 63 6f 6c 32 20 63 6f 6c 30 20 46 52 4f 4d 20   col2 col0 FROM 
b880: 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
b890: 52 45 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 2d 20  RE + col1 * - - 
b8a0: 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col0 IS NOT NULL
b8b0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 2d 34 30  ..----..-23..-40
b8c0: 0d 0a 2d 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-58....onlyif 
b8d0: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
b8e0: 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
b8f0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
b900: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
b910: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35 30 0d  wsort label-250.
b920: 0a 53 45 4c 45 43 54 20 34 37 20 2a 20 2b 20 2b  .SELECT 47 * + +
b930: 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20   COUNT( * ) * + 
b940: 28 20 2d 20 43 41 53 54 28 20 2d 20 33 37 20 41  ( - CAST( - 37 A
b950: 53 20 53 49 47 4e 45 44 20 29 20 29 20 2b 20 2d  S SIGNED ) ) + -
b960: 20 53 55 4d 28 20 41 4c 4c 20 2b 20 35 30 20 29   SUM( ALL + 50 )
b970: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
b980: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 30 36 37 0d 0a  b1..----..5067..
b990: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
b9a0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
b9b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b9c0: 20 6c 61 62 65 6c 2d 32 35 30 0d 0a 53 45 4c 45   label-250..SELE
b9d0: 43 54 20 34 37 20 2a 20 2b 20 2b 20 43 4f 55 4e  CT 47 * + + COUN
b9e0: 54 20 28 20 2a 20 29 20 2a 20 2b 20 28 20 2d 20  T ( * ) * + ( - 
b9f0: 43 41 53 54 20 28 20 2d 20 33 37 20 41 53 20 49  CAST ( - 37 AS I
ba00: 4e 54 45 47 45 52 20 29 20 29 20 2b 20 2d 20 53  NTEGER ) ) + - S
ba10: 55 4d 20 28 20 41 4c 4c 20 2b 20 35 30 20 29 20  UM ( ALL + 50 ) 
ba20: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
ba30: 31 0d 0a 2d 2d 2d 2d 0d 0a 35 30 36 37 0d 0a 0d  1..----..5067...
ba40: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
ba50: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
ba60: 4d 20 74 61 62 30 20 57 48 45 52 45 20 2d 20 35  M tab0 WHERE - 5
ba70: 34 20 2f 20 2b 20 2b 20 39 39 20 2d 20 2b 20 63  4 / + + 99 - + c
ba80: 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol2 IS NULL..---
ba90: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  -....query II ro
baa0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
bab0: 6c 31 20 2b 20 2d 20 63 6f 6c 30 2c 20 63 6f 6c  l1 + - col0, col
bac0: 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
bad0: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a 37  ab2..----..-8..7
bae0: 35 0d 0a 31 33 0d 0a 36 34 0d 0a 35 0d 0a 34 36  5..13..64..5..46
baf0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
bb00: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  ort..SELECT col1
bb10: 20 2b 20 2d 20 28 20 2b 20 34 36 20 29 20 46 52   + - ( + 46 ) FR
bb20: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab2..----..2
bb30: 31 0d 0a 33 31 0d 0a 35 0d 0a 0d 0a 71 75 65 72  1..31..5....quer
bb40: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
bb50: 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
bb60: 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
bb70: 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  ab2 WHERE NOT co
bb80: 6c 32 20 2b 20 2d 20 63 6f 6c 32 20 3c 3d 20 4e  l2 + - col2 <= N
bb90: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
bba0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
bbb0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
bbc0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
bbd0: 6c 61 62 65 6c 2d 32 35 35 0d 0a 53 45 4c 45 43  label-255..SELEC
bbe0: 54 20 41 4c 4c 20 2d 20 4d 41 58 28 20 44 49 53  T ALL - MAX( DIS
bbf0: 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 29 20 2a  TINCT - col1 ) *
bc00: 20 2d 20 2d 20 4d 49 4e 28 20 41 4c 4c 20 2b 20   - - MIN( ALL + 
bc10: 28 20 2d 20 63 6f 6c 31 20 29 20 29 20 2a 20 28  ( - col1 ) ) * (
bc20: 20 2d 20 2d 20 34 33 20 29 20 41 53 20 63 6f 6c   - - 43 ) AS col
bc30: 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
bc40: 2d 0d 0a 2d 31 36 38 38 36 31 0d 0a 0d 0a 73 6b  -..-168861....sk
bc50: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
bc60: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
bc70: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
bc80: 65 6c 2d 32 35 35 0d 0a 53 45 4c 45 43 54 20 41  el-255..SELECT A
bc90: 4c 4c 20 2d 20 4d 41 58 20 28 20 44 49 53 54 49  LL - MAX ( DISTI
bca0: 4e 43 54 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2d  NCT - col1 ) * -
bcb0: 20 2d 20 4d 49 4e 20 28 20 41 4c 4c 20 2b 20 28   - MIN ( ALL + (
bcc0: 20 2d 20 63 6f 6c 31 20 29 20 29 20 2a 20 28 20   - col1 ) ) * ( 
bcd0: 2d 20 2d 20 34 33 20 29 20 41 53 20 63 6f 6c 32  - - 43 ) AS col2
bce0: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
bcf0: 0d 0a 2d 31 36 38 38 36 31 0d 0a 0d 0a 6f 6e 6c  ..-168861....onl
bd00: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
bd10: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49  egate syntax: DI
bd20: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
bd30: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
bd40: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
bd50: 32 35 36 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  256..SELECT COUN
bd60: 54 28 20 2a 20 29 20 44 49 56 20 43 4f 55 4e 54  T( * ) DIV COUNT
bd70: 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
bd80: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
bd90: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
bda0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
bdb0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
bdc0: 72 74 20 6c 61 62 65 6c 2d 32 35 36 0d 0a 53 45  rt label-256..SE
bdd0: 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29  LECT COUNT ( * )
bde0: 20 2f 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   / COUNT ( * ) A
bdf0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
be00: 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 6f 6e 6c  ..----..1....onl
be10: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
be20: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
be30: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
be40: 20 6c 61 62 65 6c 2d 32 35 37 0d 0a 53 45 4c 45   label-257..SELE
be50: 43 54 20 2d 20 53 55 4d 28 20 2b 20 2d 20 63 6f  CT - SUM( + - co
be60: 6c 31 20 29 20 2a 20 2b 20 28 20 2d 20 2d 20 43  l1 ) * + ( - - C
be70: 4f 55 4e 54 28 20 2a 20 29 20 29 20 2a 20 2b 20  OUNT( * ) ) * + 
be80: 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
be90: 6c 30 2c 20 4d 41 58 28 20 44 49 53 54 49 4e 43  l0, MAX( DISTINC
bea0: 54 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32  T col0 ) AS col2
beb0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
bec0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 35 35 0d 0a  r0..----..1755..
bed0: 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  75....skipif mys
bee0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
bef0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  ble..query II ro
bf00: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35 37 0d  wsort label-257.
bf10: 0a 53 45 4c 45 43 54 20 2d 20 53 55 4d 20 28 20  .SELECT - SUM ( 
bf20: 2b 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2b 20 28  + - col1 ) * + (
bf30: 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   - - COUNT ( * )
bf40: 20 29 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a   ) * + COUNT ( *
bf50: 20 29 20 41 53 20 63 6f 6c 30 2c 20 4d 41 58 20   ) AS col0, MAX 
bf60: 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20  ( DISTINCT col0 
bf70: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
bf80: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
bf90: 2d 0d 0a 31 37 35 35 0d 0a 37 35 0d 0a 0d 0a 6f  -..1755..75....o
bfa0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
bfb0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
bfc0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
bfd0: 74 20 6c 61 62 65 6c 2d 32 35 38 0d 0a 53 45 4c  t label-258..SEL
bfe0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 31  ECT DISTINCT - 1
bff0: 20 2b 20 2b 20 53 55 4d 28 20 41 4c 4c 20 2b 20   + + SUM( ALL + 
c000: 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
c010: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
c020: 31 38 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  184....skipif my
c030: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
c040: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
c050: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35 38 0d  wsort label-258.
c060: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
c070: 20 2d 20 31 20 2b 20 2b 20 53 55 4d 20 28 20 41   - 1 + + SUM ( A
c080: 4c 4c 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d  LL + col0 ) FROM
c090: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
c0a0: 2d 2d 2d 0d 0a 31 38 34 0d 0a 0d 0a 71 75 65 72  ---..184....quer
c0b0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
c0c0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 35 37 20  ECT DISTINCT 57 
c0d0: 2b 20 28 20 2d 20 63 6f 6c 32 20 29 20 41 53 20  + ( - col2 ) AS 
c0e0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
c0f0: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
c100: 20 4e 55 4c 4c 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d   NULL = NULL..--
c110: 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  --....skipif pos
c120: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
c130: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
c140: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
c150: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
c160: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
c170: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
c180: 2b 20 2b 20 36 37 20 63 6f 6c 32 20 46 52 4f 4d  + + 67 col2 FROM
c190: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
c1a0: 45 52 45 20 32 30 20 2a 20 2b 20 2d 20 63 6f 6c  ERE 20 * + - col
c1b0: 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
c1c0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
c1d0: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37  rt..SELECT ALL 7
c1e0: 39 20 2b 20 2b 20 31 20 2b 20 2d 20 63 6f 6c 31  9 + + 1 + - col1
c1f0: 20 2a 20 2b 20 37 31 20 46 52 4f 4d 20 74 61 62   * + 71 FROM tab
c200: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
c210: 0a 2d 33 35 34 31 0d 0a 2d 34 36 37 37 0d 0a 2d  .-3541..-4677..-
c220: 35 33 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  5387....query I 
c230: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
c240: 36 32 20 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63  62 * - col0 AS c
c250: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
c260: 2d 2d 2d 0d 0a 2d 35 33 39 34 0d 0a 2d 36 30 31  ---..-5394..-601
c270: 34 0d 0a 2d 39 33 30 0d 0a 0d 0a 71 75 65 72 79  4..-930....query
c280: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
c290: 43 54 20 2d 20 28 20 2b 20 2b 20 37 39 20 29 20  CT - ( + + 79 ) 
c2a0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
c2b0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 39 0d 0a 2d 37  0..----..-79..-7
c2c0: 39 0d 0a 2d 37 39 0d 0a 0d 0a 71 75 65 72 79 20  9..-79....query 
c2d0: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
c2e0: 43 54 20 2b 20 2d 20 63 6f 6c 30 2c 20 2d 20 63  CT + - col0, - c
c2f0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
c300: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
c310: 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 28 20 4e  NULL BETWEEN ( N
c320: 55 4c 4c 20 29 20 41 4e 44 20 4e 55 4c 4c 0d 0a  ULL ) AND NULL..
c330: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
c340: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
c350: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
c360: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
c370: 2d 32 36 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  -265..SELECT DIS
c380: 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a  TINCT + COUNT( *
c390: 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
c3a0: 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55 4c  cor0 WHERE ( NUL
c3b0: 4c 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  L ) IS NOT NULL.
c3c0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
c3d0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
c3e0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
c3f0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
c400: 2d 32 36 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  -265..SELECT DIS
c410: 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  TINCT + COUNT ( 
c420: 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  * ) FROM tab2 AS
c430: 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55   cor0 WHERE ( NU
c440: 4c 4c 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  LL ) IS NOT NULL
c450: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65  ..----..0....que
c460: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
c470: 4c 45 43 54 20 63 6f 6c 32 20 2a 20 2b 20 28 20  LECT col2 * + ( 
c480: 63 6f 6c 32 20 29 20 2b 20 2d 20 63 6f 6c 31 20  col2 ) + - col1 
c490: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
c4a0: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 37 36 0d 0a 34  0..----..3476..4
c4b0: 35 37 37 0d 0a 39 32 30 32 0d 0a 0d 0a 6f 6e 6c  577..9202....onl
c4c0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
c4d0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
c4e0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
c4f0: 6c 61 62 65 6c 2d 32 36 37 0d 0a 53 45 4c 45 43  label-267..SELEC
c500: 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54  T DISTINCT COUNT
c510: 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  ( DISTINCT + col
c520: 32 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  2 ) FROM tab1..-
c530: 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66  ---..3....skipif
c540: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
c550: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
c560: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
c570: 36 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  67..SELECT DISTI
c580: 4e 43 54 20 43 4f 55 4e 54 20 28 20 44 49 53 54  NCT COUNT ( DIST
c590: 49 4e 43 54 20 2b 20 63 6f 6c 32 20 29 20 46 52  INCT + col2 ) FR
c5a0: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab1..----..3
c5b0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
c5c0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
c5d0: 49 4e 43 54 20 2d 20 36 36 20 41 53 20 63 6f 6c  INCT - 66 AS col
c5e0: 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  0 FROM tab0..---
c5f0: 2d 0d 0a 2d 36 36 0d 0a 0d 0a 71 75 65 72 79 20  -..-66....query 
c600: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
c610: 43 54 20 37 30 20 2a 20 2b 20 2b 20 38 36 20 2b  CT 70 * + + 86 +
c620: 20 2d 20 2d 20 34 31 2c 20 2d 20 63 6f 6c 31 20   - - 41, - col1 
c630: 2b 20 2d 20 2b 20 35 35 20 2a 20 2b 20 63 6f 6c  + - + 55 * + col
c640: 30 20 2b 20 2b 20 31 31 20 41 53 20 63 6f 6c 31  0 + + 11 AS col1
c650: 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
c660: 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54   NOT NULL IS NOT
c670: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 36 30 36   NULL..----..606
c680: 31 0d 0a 2d 32 38 30 38 0d 0a 36 30 36 31 0d 0a  1..-2808..6061..
c690: 2d 34 36 36 39 0d 0a 36 30 36 31 0d 0a 2d 35 30  -4669..6061..-50
c6a0: 34 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  41....query I ro
c6b0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
c6c0: 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  col0 AS col2 FRO
c6d0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
c6e0: 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45  HERE NOT NULL BE
c6f0: 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 63  TWEEN NULL AND c
c700: 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 0d 0a 2d 2d  ol1 + + col2..--
c710: 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
c720: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
c730: 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20  STINCT + col0 * 
c740: 63 6f 6c 31 20 2b 20 2d 20 2b 20 37 38 20 2d 20  col1 + - + 78 - 
c750: 2b 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 2d 20 63  + - col2 + - - c
c760: 6f 6c 30 20 2b 20 2d 20 32 33 20 2a 20 63 6f 6c  ol0 + - 23 * col
c770: 31 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  1 * col0 AS col0
c780: 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
c790: 0a 2d 2d 2d 2d 0d 0a 2d 31 30 38 33 39 30 0d 0a  .----..-108390..
c7a0: 2d 31 31 30 34 39 35 0d 0a 2d 35 31 36 32 31 0d  -110495..-51621.
c7b0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
c7c0: 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
c7d0: 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
c7e0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
c7f0: 62 65 6c 2d 32 37 32 0d 0a 53 45 4c 45 43 54 20  bel-272..SELECT 
c800: 2b 20 37 39 20 44 49 56 20 35 32 20 41 53 20 63  + 79 DIV 52 AS c
c810: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
c820: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   cor0..----..1..
c830: 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  1..1....skipif m
c840: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
c850: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
c860: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 32  owsort label-272
c870: 0d 0a 53 45 4c 45 43 54 20 2b 20 37 39 20 2f 20  ..SELECT + 79 / 
c880: 35 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  52 AS col1 FROM 
c890: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
c8a0: 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 6f  --..1..1..1....o
c8b0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
c8c0: 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
c8d0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
c8e0: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
c8f0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
c900: 6c 2d 32 37 33 0d 0a 53 45 4c 45 43 54 20 2d 20  l-273..SELECT - 
c910: 32 37 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20  27 * COUNT( * ) 
c920: 2b 20 2b 20 43 41 53 54 28 20 43 4f 55 4e 54 28  + + CAST( COUNT(
c930: 20 28 20 28 20 2d 20 63 6f 6c 32 20 29 20 29 20   ( ( - col2 ) ) 
c940: 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  ) AS SIGNED ) AS
c950: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
c960: 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d 0a 0d 0a 73 6b  .----..-78....sk
c970: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
c980: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
c990: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
c9a0: 65 6c 2d 32 37 33 0d 0a 53 45 4c 45 43 54 20 2d  el-273..SELECT -
c9b0: 20 32 37 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20   27 * COUNT ( * 
c9c0: 29 20 2b 20 2b 20 43 41 53 54 20 28 20 43 4f 55  ) + + CAST ( COU
c9d0: 4e 54 20 28 20 28 20 28 20 2d 20 63 6f 6c 32 20  NT ( ( ( - col2 
c9e0: 29 20 29 20 29 20 41 53 20 49 4e 54 45 47 45 52  ) ) ) AS INTEGER
c9f0: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
ca00: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d  tab2..----..-78.
ca10: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
ca20: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
ca30: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
ca40: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 34 0d  wsort label-274.
ca50: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
ca60: 20 2d 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20   - ( - COUNT( * 
ca70: 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ) ) AS col0 FROM
ca80: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52   tab0 AS cor0 CR
ca90: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
caa0: 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a   cor1..----..9..
cab0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
cac0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
cad0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
cae0: 20 6c 61 62 65 6c 2d 32 37 34 0d 0a 53 45 4c 45   label-274..SELE
caf0: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20  CT DISTINCT - ( 
cb00: 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20  - COUNT ( * ) ) 
cb10: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
cb20: 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
cb30: 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72  JOIN tab1 AS cor
cb40: 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75  1..----..9....qu
cb50: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
cb60: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
cb70: 20 2b 20 38 35 20 46 52 4f 4d 20 74 61 62 31 20   + 85 FROM tab1 
cb80: 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
cb90: 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 0d  IN tab1 AS cor1.
cba0: 0a 2d 2d 2d 2d 0d 0a 2d 38 35 0d 0a 0d 0a 6f 6e  .----..-85....on
cbb0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
cbc0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
cbd0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
cbe0: 20 6c 61 62 65 6c 2d 32 37 36 0d 0a 53 45 4c 45   label-276..SELE
cbf0: 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT + COUNT( * ) 
cc00: 2b 20 2d 20 2d 20 35 32 20 46 52 4f 4d 20 74 61  + - - 52 FROM ta
cc10: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
cc20: 0d 0a 35 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..55....skipif m
cc30: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
cc40: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
cc50: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 36  owsort label-276
cc60: 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
cc70: 20 28 20 2a 20 29 20 2b 20 2d 20 2d 20 35 32 20   ( * ) + - - 52 
cc80: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
cc90: 30 0d 0a 2d 2d 2d 2d 0d 0a 35 35 0d 0a 0d 0a 71  0..----..55....q
cca0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
ccb0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
ccc0: 2d 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c  - + col2 * - col
ccd0: 30 20 2a 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  0 * - col1 FROM 
cce0: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
ccf0: 2d 2d 0d 0a 2d 32 35 30 37 35 0d 0a 2d 32 39 30  --..-25075..-290
cd00: 38 33 36 0d 0a 2d 36 38 35 34 34 0d 0a 0d 0a 71  836..-68544....q
cd10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
cd20: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
cd30: 32 20 2b 20 28 20 2b 20 63 6f 6c 30 20 29 20 2a  2 + ( + col0 ) *
cd40: 20 34 30 20 2a 20 2b 20 32 35 20 41 53 20 63 6f   40 * + 25 AS co
cd50: 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
cd60: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 30 34  cor0..----..1504
cd70: 37 0d 0a 38 37 30 31 30 0d 0a 39 37 30 39 39 0d  7..87010..97099.
cd80: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
cd90: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
cda0: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
cdb0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 39 0d  wsort label-279.
cdc0: 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28  .SELECT + COUNT(
cdd0: 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 29   DISTINCT col2 )
cde0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
cdf0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
ce00: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
ce10: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
ce20: 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
ce30: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
ce40: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
ce50: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
ce60: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
ce70: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
ce80: 6c 2d 32 37 39 0d 0a 53 45 4c 45 43 54 20 2b 20  l-279..SELECT + 
ce90: 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54  COUNT ( DISTINCT
cea0: 20 63 6f 6c 32 20 29 20 63 6f 6c 32 20 46 52 4f   col2 ) col2 FRO
ceb0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
cec0: 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69  ----..3....onlyi
ced0: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
cee0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
cef0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
cf00: 62 65 6c 2d 32 38 30 0d 0a 53 45 4c 45 43 54 20  bel-280..SELECT 
cf10: 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  - - COUNT( * ) *
cf20: 20 2d 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e   - COUNT( DISTIN
cf30: 43 54 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d  CT - col1 ) FROM
cf40: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
cf50: 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69  ---..-9....skipi
cf60: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
cf70: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
cf80: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
cf90: 32 38 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  280..SELECT - - 
cfa0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20  COUNT ( * ) * - 
cfb0: 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54  COUNT ( DISTINCT
cfc0: 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74   - col1 ) FROM t
cfd0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
cfe0: 2d 0d 0a 2d 39 0d 0a 0d 0a 71 75 65 72 79 20 49  -..-9....query I
cff0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
d000: 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 63 6f   DISTINCT + - co
d010: 6c 32 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 2b 20  l2 + + + col2 + 
d020: 2b 20 2d 20 32 38 20 2a 20 2b 20 2d 20 63 6f 6c  + - 28 * + - col
d030: 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
d040: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
d050: 2d 0d 0a 31 34 32 38 0d 0a 31 38 37 36 0d 0a 32  -..1428..1876..2
d060: 31 35 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  156....query II 
d070: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
d080: 2d 20 63 6f 6c 30 2c 20 63 6f 6c 30 20 2a 20 2b  - col0, col0 * +
d090: 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
d0a0: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
d0b0: 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 34 38 39 36  .----..-51..4896
d0c0: 0d 0a 2d 38 35 0d 0a 35 30 31 35 0d 0a 2d 39 31  ..-85..5015..-91
d0d0: 0d 0a 36 31 38 38 0d 0a 0d 0a 71 75 65 72 79 20  ..6188....query 
d0e0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
d0f0: 54 20 41 4c 4c 20 2d 20 32 34 20 2d 20 2d 20 2b  T ALL - 24 - - +
d100: 20 31 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53   12 FROM tab1 AS
d110: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32   cor0..----..-12
d120: 0d 0a 2d 31 32 0d 0a 2d 31 32 0d 0a 0d 0a 71 75  ..-12..-12....qu
d130: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
d140: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
d150: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
d160: 45 20 2b 20 36 20 49 53 20 4e 4f 54 20 4e 55 4c  E + 6 IS NOT NUL
d170: 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
d180: 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63  s hashing to c6c
d190: 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38  0a4111b36d04dbc8
d1a0: 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d  11a11e4d54cad...
d1b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
d1c0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
d1d0: 54 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 63  T + + col0 * + c
d1e0: 6f 6c 32 20 2b 20 2b 20 35 39 20 46 52 4f 4d 20  ol2 + + 59 FROM 
d1f0: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
d200: 2d 2d 0d 0a 34 39 35 35 0d 0a 35 30 37 34 0d 0a  --..4955..5074..
d210: 36 32 34 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  6247....skipif p
d220: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
d230: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
d240: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
d250: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
d260: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
d270: 0d 0a 53 45 4c 45 43 54 20 37 36 20 2a 20 63 6f  ..SELECT 76 * co
d280: 6c 30 20 2d 20 2b 20 63 6f 6c 32 20 63 6f 6c 32  l0 - + col2 col2
d290: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
d2a0: 0d 0a 33 37 38 30 0d 0a 36 34 30 31 0d 0a 36 38  ..3780..6401..68
d2b0: 34 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  48....onlyif mys
d2c0: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
d2d0: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
d2e0: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
d2f0: 74 20 6c 61 62 65 6c 2d 32 38 37 0d 0a 53 45 4c  t label-287..SEL
d300: 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41 53  ECT DISTINCT CAS
d310: 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
d320: 44 20 29 20 41 53 20 63 6f 6c 31 2c 20 37 31 20  D ) AS col1, 71 
d330: 2a 20 2b 20 37 34 20 41 53 20 63 6f 6c 30 20 46  * + 74 AS col0 F
d340: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
d350: 4e 55 4c 4c 0d 0a 35 32 35 34 0d 0a 0d 0a 73 6b  NULL..5254....sk
d360: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
d370: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
d380: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
d390: 62 65 6c 2d 32 38 37 0d 0a 53 45 4c 45 43 54 20  bel-287..SELECT 
d3a0: 44 49 53 54 49 4e 43 54 20 43 41 53 54 20 28 20  DISTINCT CAST ( 
d3b0: 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
d3c0: 29 20 41 53 20 63 6f 6c 31 2c 20 37 31 20 2a 20  ) AS col1, 71 * 
d3d0: 2b 20 37 34 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 74 AS col0 FRO
d3e0: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab2..----..NU
d3f0: 4c 4c 0d 0a 35 32 35 34 0d 0a 0d 0a 71 75 65 72  LL..5254....quer
d400: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
d410: 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2a  ECT ALL + col1 *
d420: 20 2d 20 31 36 20 2a 20 2d 20 63 6f 6c 30 20 41   - 16 * - col0 A
d430: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
d440: 0d 0a 2d 2d 2d 2d 0d 0a 31 31 34 32 34 0d 0a 36  ..----..11424..6
d450: 38 30 30 0d 0a 36 38 34 33 32 0d 0a 0d 0a 71 75  800..68432....qu
d460: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
d470: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
d480: 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
d490: 52 45 20 2d 20 36 35 20 49 53 20 4e 55 4c 4c 0d  RE - 65 IS NULL.
d4a0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
d4b0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
d4c0: 20 2d 20 2d 20 38 38 20 46 52 4f 4d 20 74 61 62   - - 88 FROM tab
d4d0: 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  2 AS cor0 CROSS 
d4e0: 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72  JOIN tab2 AS cor
d4f0: 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
d500: 73 20 68 61 73 68 69 6e 67 20 74 6f 20 36 62 65  s hashing to 6be
d510: 31 37 62 38 32 65 63 62 33 65 38 62 32 36 38 66  17b82ecb3e8b268f
d520: 63 62 34 62 61 36 31 30 64 64 62 33 37 0d 0a 0d  cb4ba610ddb37...
d530: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
d540: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
d550: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
d560: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
d570: 62 65 6c 2d 32 39 31 0d 0a 53 45 4c 45 43 54 20  bel-291..SELECT 
d580: 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
d590: 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
d5a0: 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20  RE NOT ( NULL ) 
d5b0: 3c 3d 20 43 41 53 54 28 20 2b 20 63 6f 6c 30 20  <= CAST( + col0 
d5c0: 41 53 20 53 49 47 4e 45 44 20 29 0d 0a 2d 2d 2d  AS SIGNED )..---
d5d0: 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
d5e0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
d5f0: 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  le..query III ro
d600: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 39 31 0d  wsort label-291.
d610: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
d620: 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
d630: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
d640: 20 4e 55 4c 4c 20 29 20 3c 3d 20 43 41 53 54 20   NULL ) <= CAST 
d650: 28 20 2b 20 63 6f 6c 30 20 41 53 20 49 4e 54 45  ( + col0 AS INTE
d660: 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  GER )..----....o
d670: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
d680: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
d690: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d6a0: 74 20 6c 61 62 65 6c 2d 32 39 32 0d 0a 53 45 4c  t label-292..SEL
d6b0: 45 43 54 20 43 4f 55 4e 54 28 20 44 49 53 54 49  ECT COUNT( DISTI
d6c0: 4e 43 54 20 2b 20 31 20 29 20 41 53 20 63 6f 6c  NCT + 1 ) AS col
d6d0: 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
d6e0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a  or0..----..1....
d6f0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
d700: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
d710: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
d720: 61 62 65 6c 2d 32 39 32 0d 0a 53 45 4c 45 43 54  abel-292..SELECT
d730: 20 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43   COUNT ( DISTINC
d740: 54 20 2b 20 31 20 29 20 41 53 20 63 6f 6c 32 20  T + 1 ) AS col2 
d750: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
d760: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 71 75  0..----..1....qu
d770: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
d780: 45 4c 45 43 54 20 63 6f 6c 32 20 41 53 20 63 6f  ELECT col2 AS co
d790: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
d7a0: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
d7b0: 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
d7c0: 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a 39  .----..10..47..9
d7d0: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
d7e0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
d7f0: 20 2d 20 32 39 20 41 53 20 63 6f 6c 31 20 46 52   - 29 AS col1 FR
d800: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
d810: 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c  WHERE NOT NULL <
d820: 3e 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 30 0d  > col0 + + col0.
d830: 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
d840: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
d850: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
d860: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
d870: 6c 2d 32 39 35 0d 0a 53 45 4c 45 43 54 20 2b 20  l-295..SELECT + 
d880: 2d 20 4d 41 58 28 20 2b 20 63 6f 6c 30 20 29 20  - MAX( + col0 ) 
d890: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
d8a0: 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31  0 WHERE NOT col1
d8b0: 20 2f 20 2b 20 39 34 20 49 53 20 4e 55 4c 4c 0d   / + 94 IS NULL.
d8c0: 0a 2d 2d 2d 2d 0d 0a 2d 39 37 0d 0a 0d 0a 73 6b  .----..-97....sk
d8d0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
d8e0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
d8f0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
d900: 65 6c 2d 32 39 35 0d 0a 53 45 4c 45 43 54 20 2b  el-295..SELECT +
d910: 20 2d 20 4d 41 58 20 28 20 2b 20 63 6f 6c 30 20   - MAX ( + col0 
d920: 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
d930: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  or0 WHERE NOT co
d940: 6c 31 20 2f 20 2b 20 39 34 20 49 53 20 4e 55 4c  l1 / + 94 IS NUL
d950: 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 37 0d 0a 0d 0a  L..----..-97....
d960: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
d970: 0a 53 45 4c 45 43 54 20 2d 20 2b 20 63 6f 6c 30  .SELECT - + col0
d980: 20 2a 20 2b 20 2d 20 28 20 2b 20 63 6f 6c 31 20   * + - ( + col1 
d990: 29 20 2d 20 2d 20 31 32 20 46 52 4f 4d 20 74 61  ) - - 12 FROM ta
d9a0: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
d9b0: 0d 0a 34 32 38 39 0d 0a 34 33 37 0d 0a 37 32 36  ..4289..437..726
d9c0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
d9d0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
d9e0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  tax: ..query II 
d9f0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 39  rowsort label-29
da00: 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  7..SELECT DISTIN
da10: 43 54 20 2b 20 31 32 20 41 53 20 63 6f 6c 31 2c  CT + 12 AS col1,
da20: 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   + COUNT( * ) AS
da30: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
da40: 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a 33 0d 0a 0d 0a  .----..12..3....
da50: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
da60: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
da70: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
da80: 6c 61 62 65 6c 2d 32 39 37 0d 0a 53 45 4c 45 43  label-297..SELEC
da90: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 31 32 20  T DISTINCT + 12 
daa0: 41 53 20 63 6f 6c 31 2c 20 2b 20 43 4f 55 4e 54  AS col1, + COUNT
dab0: 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46   ( * ) AS col0 F
dac0: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
dad0: 31 32 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49  12..3....query I
dae0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
daf0: 20 63 6f 6c 32 20 2b 20 2d 20 38 35 20 41 53 20   col2 + - 85 AS 
db00: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
db10: 2d 2d 2d 2d 0d 0a 2d 31 37 0d 0a 2d 32 36 0d 0a  ----..-17..-26..
db20: 31 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  11....query I ro
db30: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
db40: 38 36 20 2b 20 2d 20 2b 20 28 20 2d 20 38 30 20  86 + - + ( - 80 
db50: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
db60: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
db70: 2d 0d 0a 31 36 36 0d 0a 31 36 36 0d 0a 31 36 36  -..166..166..166
db80: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
db90: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31 34 20 2a  ort..SELECT 14 *
dba0: 20 63 6f 6c 32 20 2a 20 2d 20 28 20 63 6f 6c 32   col2 * - ( col2
dbb0: 20 29 20 2a 20 2d 20 63 6f 6c 30 20 46 52 4f 4d   ) * - col0 FROM
dbc0: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 31   tab0..----..121
dbd0: 38 30 30 0d 0a 31 33 33 30 39 37 35 38 0d 0a 34  800..13309758..4
dbe0: 36 33 38 39 30 0d 0a 0d 0a 71 75 65 72 79 20 49  63890....query I
dbf0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
dc00: 20 28 20 2b 20 2d 20 31 32 20 29 20 46 52 4f 4d   ( + - 12 ) FROM
dc10: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52   tab2 AS cor0 CR
dc20: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 63 6f  OSS JOIN tab0 co
dc30: 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  r1..----..9 valu
dc40: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 65 36  es hashing to e6
dc50: 39 38 64 64 35 37 64 33 61 61 63 33 30 61 66 31  98dd57d3aac30af1
dc60: 34 63 65 33 35 64 61 34 33 34 62 62 34 35 0d 0a  4ce35da434bb45..
dc70: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
dc80: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
dc90: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
dca0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
dcb0: 65 6c 2d 33 30 32 0d 0a 53 45 4c 45 43 54 20 36  el-302..SELECT 6
dcc0: 33 20 2a 20 2d 20 43 41 53 54 28 20 2d 20 35 37  3 * - CAST( - 57
dcd0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
dce0: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 35  M tab1..----..35
dcf0: 39 31 0d 0a 33 35 39 31 0d 0a 33 35 39 31 0d 0a  91..3591..3591..
dd00: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
dd10: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
dd20: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
dd30: 20 6c 61 62 65 6c 2d 33 30 32 0d 0a 53 45 4c 45   label-302..SELE
dd40: 43 54 20 36 33 20 2a 20 2d 20 43 41 53 54 20 28  CT 63 * - CAST (
dd50: 20 2d 20 35 37 20 41 53 20 49 4e 54 45 47 45 52   - 57 AS INTEGER
dd60: 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d   ) FROM tab1..--
dd70: 2d 2d 0d 0a 33 35 39 31 0d 0a 33 35 39 31 0d 0a  --..3591..3591..
dd80: 33 35 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  3591....query I 
dd90: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
dda0: 63 6f 6c 30 20 2d 20 2b 20 39 38 20 2b 20 2d 20  col0 - + 98 + - 
ddb0: 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 30 20 41 53  col2 * - col0 AS
ddc0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
ddd0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34  AS cor0..----..4
dde0: 38 34 39 0d 0a 35 30 30 32 0d 0a 36 31 38 31 0d  849..5002..6181.
ddf0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
de00: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
de10: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  ax: ..query II r
de20: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 34  owsort label-304
de30: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 31  ..SELECT ALL - 1
de40: 35 20 2b 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a  5 + + - COUNT( *
de50: 20 29 20 41 53 20 63 6f 6c 31 2c 20 43 4f 55 4e   ) AS col1, COUN
de60: 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46  T( * ) AS col1 F
de70: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
de80: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 0d 0a 33 0d 0a  ..----..-18..3..
de90: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
dea0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
deb0: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
dec0: 74 20 6c 61 62 65 6c 2d 33 30 34 0d 0a 53 45 4c  t label-304..SEL
ded0: 45 43 54 20 41 4c 4c 20 2d 20 31 35 20 2b 20 2b  ECT ALL - 15 + +
dee0: 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
def0: 53 20 63 6f 6c 31 2c 20 43 4f 55 4e 54 20 28 20  S col1, COUNT ( 
df00: 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
df10: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
df20: 2d 2d 2d 0d 0a 2d 31 38 0d 0a 33 0d 0a 0d 0a 71  ---..-18..3....q
df30: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
df40: 53 45 4c 45 43 54 20 2d 20 2b 20 63 6f 6c 31 20  SELECT - + col1 
df50: 2b 20 63 6f 6c 32 20 2b 20 2d 20 36 37 20 2a 20  + col2 + - 67 * 
df60: 34 37 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  47 FROM tab1 AS 
df70: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 30 36  cor0..----..-306
df80: 37 0d 0a 2d 33 30 39 35 0d 0a 2d 33 31 32 38 0d  7..-3095..-3128.
df90: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
dfa0: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
dfb0: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
dfc0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 36 0d  wsort label-306.
dfd0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 41 58 28  .SELECT ALL MAX(
dfe0: 20 28 20 2d 20 63 6f 6c 30 20 29 20 29 20 2b 20   ( - col0 ) ) + 
dff0: 2b 20 35 37 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 57 AS col2 FRO
e000: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
e010: 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69  ----..6....skipi
e020: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
e030: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
e040: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
e050: 33 30 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  306..SELECT ALL 
e060: 4d 41 58 20 28 20 28 20 2d 20 63 6f 6c 30 20 29  MAX ( ( - col0 )
e070: 20 29 20 2b 20 2b 20 35 37 20 41 53 20 63 6f 6c   ) + + 57 AS col
e080: 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
e090: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a  or0..----..6....
e0a0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
e0b0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
e0c0: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
e0d0: 72 74 20 6c 61 62 65 6c 2d 33 30 37 0d 0a 53 45  rt label-307..SE
e0e0: 4c 45 43 54 20 2b 20 4d 49 4e 28 20 44 49 53 54  LECT + MIN( DIST
e0f0: 49 4e 43 54 20 2b 20 2b 20 39 33 20 29 20 46 52  INCT + + 93 ) FR
e100: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
e110: 57 48 45 52 45 20 2d 20 63 6f 6c 31 20 3c 3e 20  WHERE - col1 <> 
e120: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
e130: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
e140: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
e150: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
e160: 72 74 20 6c 61 62 65 6c 2d 33 30 37 0d 0a 53 45  rt label-307..SE
e170: 4c 45 43 54 20 2b 20 4d 49 4e 20 28 20 44 49 53  LECT + MIN ( DIS
e180: 54 49 4e 43 54 20 2b 20 2b 20 39 33 20 29 20 46  TINCT + + 93 ) F
e190: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
e1a0: 20 57 48 45 52 45 20 2d 20 63 6f 6c 31 20 3c 3e   WHERE - col1 <>
e1b0: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   NULL..----..NUL
e1c0: 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
e1d0: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
e1e0: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
e1f0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30  rowsort label-30
e200: 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
e210: 43 54 20 2b 20 2b 20 34 34 20 2a 20 2b 20 43 4f  CT + + 44 * + CO
e220: 55 4e 54 28 20 41 4c 4c 20 2d 20 34 38 20 29 20  UNT( ALL - 48 ) 
e230: 2d 20 28 20 2d 20 4d 41 58 28 20 41 4c 4c 20 2d  - ( - MAX( ALL -
e240: 20 2b 20 63 6f 6c 32 20 29 20 29 20 41 53 20 63   + col2 ) ) AS c
e250: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol2 FROM tab2 co
e260: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 39 0d 0a 0d  r0..----..109...
e270: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
e280: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
e290: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
e2a0: 6c 61 62 65 6c 2d 33 30 38 0d 0a 53 45 4c 45 43  label-308..SELEC
e2b0: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 34  T DISTINCT + + 4
e2c0: 34 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 41 4c  4 * + COUNT ( AL
e2d0: 4c 20 2d 20 34 38 20 29 20 2d 20 28 20 2d 20 4d  L - 48 ) - ( - M
e2e0: 41 58 20 28 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c  AX ( ALL - + col
e2f0: 32 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52  2 ) ) AS col2 FR
e300: 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
e310: 2d 2d 0d 0a 31 30 39 0d 0a 0d 0a 71 75 65 72 79  --..109....query
e320: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
e330: 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2d 20 2b 20  CT ALL col0 - + 
e340: 37 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  70 FROM tab1 AS 
e350: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 0d  cor0..----..-19.
e360: 0a 31 35 0d 0a 32 31 0d 0a 0d 0a 71 75 65 72 79  .15..21....query
e370: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
e380: 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32  CT DISTINCT col2
e390: 20 2d 20 28 20 2d 20 63 6f 6c 31 20 29 20 41 53   - ( - col1 ) AS
e3a0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
e3b0: 0a 2d 2d 2d 2d 0d 0a 31 31 30 0d 0a 31 31 35 0d  .----..110..115.
e3c0: 0a 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .64....query II 
e3d0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
e3e0: 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 2c 20  - col1 AS col2, 
e3f0: 31 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  15 AS col0 FROM 
e400: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d  tab2..----..-51.
e410: 0a 31 35 0d 0a 2d 36 37 0d 0a 31 35 0d 0a 2d 37  .15..-67..15..-7
e420: 37 0d 0a 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49  7..15....query I
e430: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
e440: 20 41 4c 4c 20 63 6f 6c 30 20 2a 20 2b 20 2d 20   ALL col0 * + - 
e450: 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
e460: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab2..----..-1
e470: 30 35 38 0d 0a 2d 32 35 36 30 0d 0a 2d 34 33 35  058..-2560..-435
e480: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
e490: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
e4a0: 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol2 AS col1 FROM
e4b0: 20 74 61 62 30 20 57 48 45 52 45 20 63 6f 6c 32   tab0 WHERE col2
e4c0: 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   > NULL..----...
e4d0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
e4e0: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
e4f0: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
e500: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
e510: 6c 2d 33 31 34 0d 0a 53 45 4c 45 43 54 20 41 4c  l-314..SELECT AL
e520: 4c 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  L - CAST( NULL A
e530: 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20 32  S SIGNED ) * - 2
e540: 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
e550: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
e560: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
e570: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
e580: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
e590: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 34 0d  wsort label-314.
e5a0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41  .SELECT ALL - CA
e5b0: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
e5c0: 45 47 45 52 20 29 20 2a 20 2d 20 32 30 20 46 52  EGER ) * - 20 FR
e5d0: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
e5e0: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
e5f0: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
e600: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
e610: 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
e620: 52 45 20 4e 4f 54 20 28 20 4e 4f 54 20 28 20 2b  RE NOT ( NOT ( +
e630: 20 63 6f 6c 31 20 3d 20 2b 20 63 6f 6c 31 20 29   col1 = + col1 )
e640: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75   )..----..9 valu
e650: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36  es hashing to c6
e660: 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63  c0a4111b36d04dbc
e670: 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a  811a11e4d54cad..
e680: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
e690: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
e6a0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
e6b0: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 36 0d 0a  sort label-316..
e6c0: 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 44 49  SELECT COUNT( DI
e6d0: 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 32 20  STINCT + + col2 
e6e0: 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
e6f0: 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..3....skipif m
e700: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
e710: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
e720: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 36  owsort label-316
e730: 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28  ..SELECT COUNT (
e740: 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f   DISTINCT + + co
e750: 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  l2 ) FROM tab2..
e760: 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79  ----..3....query
e770: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
e780: 43 54 20 2d 20 2d 20 63 6f 6c 32 20 2a 20 2b 20  CT - - col2 * + 
e790: 63 6f 6c 30 20 2a 20 2b 20 28 20 63 6f 6c 32 20  col0 * + ( col2 
e7a0: 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  ) FROM tab1 cor0
e7b0: 0d 0a 2d 2d 2d 2d 0d 0a 32 39 35 38 38 35 0d 0a  ..----..295885..
e7c0: 34 32 30 37 38 34 0d 0a 34 37 30 30 31 36 0d 0a  420784..470016..
e7d0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
e7e0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
e7f0: 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  INCT * FROM tab1
e800: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
e810: 4f 54 20 2b 20 63 6f 6c 32 20 3e 3d 20 4e 55 4c  OT + col2 >= NUL
e820: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
e830: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
e840: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
e850: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
e860: 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 38 39  0 WHERE NOT - 89
e870: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
e880: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
e890: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
e8a0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
e8b0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
e8c0: 32 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  20..SELECT ALL -
e8d0: 20 4d 41 58 28 20 63 6f 6c 30 20 29 20 63 6f 6c   MAX( col0 ) col
e8e0: 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
e8f0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 31 0d 0a  or0..----..-91..
e900: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
e910: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
e920: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
e930: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
e940: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
e950: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
e960: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
e970: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
e980: 33 32 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  320..SELECT ALL 
e990: 2d 20 4d 41 58 20 28 20 63 6f 6c 30 20 29 20 63  - MAX ( col0 ) c
e9a0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
e9b0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 31   cor0..----..-91
e9c0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
e9d0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
e9e0: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
e9f0: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
ea00: 20 4e 4f 54 20 2d 20 32 32 20 49 53 20 4e 4f 54   NOT - 22 IS NOT
ea10: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
ea20: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
ea30: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
ea40: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
ea50: 72 74 20 6c 61 62 65 6c 2d 33 32 32 0d 0a 53 45  rt label-322..SE
ea60: 4c 45 43 54 20 2d 20 39 30 2c 20 37 20 2d 20 2d  LECT - 90, 7 - -
ea70: 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
ea80: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
ea90: 2d 2d 2d 0d 0a 2d 39 30 0d 0a 31 30 0d 0a 0d 0a  ---..-90..10....
eaa0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
eab0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
eac0: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
ead0: 6c 61 62 65 6c 2d 33 32 32 0d 0a 53 45 4c 45 43  label-322..SELEC
eae0: 54 20 2d 20 39 30 2c 20 37 20 2d 20 2d 20 43 4f  T - 90, 7 - - CO
eaf0: 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
eb00: 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
eb10: 2d 0d 0a 2d 39 30 0d 0a 31 30 0d 0a 0d 0a 6f 6e  -..-90..10....on
eb20: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
eb30: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
eb40: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
eb50: 20 6c 61 62 65 6c 2d 33 32 33 0d 0a 53 45 4c 45   label-323..SELE
eb60: 43 54 20 53 55 4d 28 20 2b 20 63 6f 6c 31 20 29  CT SUM( + col1 )
eb70: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
eb80: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 39 35 0d 0a 0d  b2..----..195...
eb90: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
eba0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
ebb0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
ebc0: 6c 61 62 65 6c 2d 33 32 33 0d 0a 53 45 4c 45 43  label-323..SELEC
ebd0: 54 20 53 55 4d 20 28 20 2b 20 63 6f 6c 31 20 29  T SUM ( + col1 )
ebe0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
ebf0: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 39 35 0d 0a 0d  b2..----..195...
ec00: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
ec10: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43  CAST syntax: DEC
ec20: 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65  IMAL type: ..que
ec30: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
ec40: 62 65 6c 2d 33 32 34 0d 0a 53 45 4c 45 43 54 20  bel-324..SELECT 
ec50: 63 6f 6c 32 2c 20 2b 20 28 20 2d 20 2b 20 63 6f  col2, + ( - + co
ec60: 6c 31 20 29 20 2b 20 63 6f 6c 32 20 2b 20 43 41  l1 ) + col2 + CA
ec70: 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49  ST( NULL AS DECI
ec80: 4d 41 4c 20 29 20 41 53 20 63 6f 6c 31 20 46 52  MAL ) AS col1 FR
ec90: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35  OM tab1..----..5
eca0: 39 0d 0a 4e 55 4c 4c 0d 0a 36 38 0d 0a 4e 55 4c  9..NULL..68..NUL
ecb0: 4c 0d 0a 39 36 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  L..96..NULL....s
ecc0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
ecd0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
ece0: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
ecf0: 61 62 65 6c 2d 33 32 34 0d 0a 53 45 4c 45 43 54  abel-324..SELECT
ed00: 20 63 6f 6c 32 2c 20 2b 20 28 20 2d 20 2b 20 63   col2, + ( - + c
ed10: 6f 6c 31 20 29 20 2b 20 63 6f 6c 32 20 2b 20 43  ol1 ) + col2 + C
ed20: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45  AST ( NULL AS RE
ed30: 41 4c 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  AL ) AS col1 FRO
ed40: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 39  M tab1..----..59
ed50: 0d 0a 4e 55 4c 4c 0d 0a 36 38 0d 0a 4e 55 4c 4c  ..NULL..68..NULL
ed60: 0d 0a 39 36 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ..96..NULL....qu
ed70: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
ed80: 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 2c 20 63  SELECT + col0, c
ed90: 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
eda0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d   tab1..----..51.
edb0: 0a 35 31 0d 0a 38 35 0d 0a 38 35 0d 0a 39 31 0d  .51..85..85..91.
edc0: 0a 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .91....query III
edd0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
ede0: 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72   * FROM tab2 cor
edf0: 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 28 20  0 WHERE NOT + ( 
ee00: 2d 20 2d 20 63 6f 6c 30 20 29 20 49 53 20 4e 55  - - col0 ) IS NU
ee10: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
ee20: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
ee30: 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
ee40: 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
ee50: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
ee60: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
ee70: 2b 20 28 20 2b 20 2b 20 63 6f 6c 32 20 29 20 46  + ( + + col2 ) F
ee80: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
ee90: 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a  ..----..10..47..
eea0: 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  99....query II r
eeb0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
eec0: 49 53 54 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 32  ISTINCT + - col2
eed0: 20 41 53 20 63 6f 6c 32 2c 20 63 6f 6c 32 20 46   AS col2, col2 F
eee0: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
eef0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 32 33 0d  ..----..-23..23.
ef00: 0a 2d 34 30 0d 0a 34 30 0d 0a 2d 35 38 0d 0a 35  .-40..40..-58..5
ef10: 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  8....query III r
ef20: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
ef30: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
ef40: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2b  r0 WHERE NOT ( +
ef50: 20 63 6f 6c 32 20 3c 20 63 6f 6c 31 20 29 0d 0a   col2 < col1 )..
ef60: 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
ef70: 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34  ashing to c6c0a4
ef80: 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61  111b36d04dbc811a
ef90: 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e  11e4d54cad....on
efa0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
efb0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
efc0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
efd0: 20 6c 61 62 65 6c 2d 33 33 30 0d 0a 53 45 4c 45   label-330..SELE
efe0: 43 54 20 4d 49 4e 28 20 41 4c 4c 20 31 36 20 29  CT MIN( ALL 16 )
eff0: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
f000: 0d 0a 31 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..16....skipif m
f010: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
f020: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
f030: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33 30  owsort label-330
f040: 0d 0a 53 45 4c 45 43 54 20 4d 49 4e 20 28 20 41  ..SELECT MIN ( A
f050: 4c 4c 20 31 36 20 29 20 46 52 4f 4d 20 74 61 62  LL 16 ) FROM tab
f060: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a 0d 0a 6f  0..----..16....o
f070: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
f080: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
f090: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
f0a0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
f0b0: 33 33 31 0d 0a 53 45 4c 45 43 54 20 28 20 2b 20  331..SELECT ( + 
f0c0: 2b 20 43 41 53 54 28 20 2d 20 32 20 41 53 20 53  + CAST( - 2 AS S
f0d0: 49 47 4e 45 44 20 29 20 29 20 41 53 20 63 6f 6c  IGNED ) ) AS col
f0e0: 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
f0f0: 2d 0d 0a 2d 32 0d 0a 2d 32 0d 0a 2d 32 0d 0a 0d  -..-2..-2..-2...
f100: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
f110: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
f120: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
f130: 6c 61 62 65 6c 2d 33 33 31 0d 0a 53 45 4c 45 43  label-331..SELEC
f140: 54 20 28 20 2b 20 2b 20 43 41 53 54 20 28 20 2d  T ( + + CAST ( -
f150: 20 32 20 41 53 20 49 4e 54 45 47 45 52 20 29 20   2 AS INTEGER ) 
f160: 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
f170: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d 0a 2d  ab1..----..-2..-
f180: 32 0d 0a 2d 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  2..-2....skipif 
f190: 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
f1a0: 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
f1b0: 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
f1c0: 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
f1d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
f1e0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
f1f0: 38 39 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  89 col1 FROM tab
f200: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39 0d 0a 2d 38  1..----..-89..-8
f210: 39 0d 0a 2d 38 39 0d 0a 0d 0a 71 75 65 72 79 20  9..-89....query 
f220: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
f230: 54 20 2d 20 34 38 20 2d 20 2b 20 63 6f 6c 31 20  T - 48 - + col1 
f240: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
f250: 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  0 WHERE NULL IS 
f260: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
f270: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
f280: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
f290: 43 54 20 2d 20 28 20 2d 20 31 30 20 29 20 41 53  CT - ( - 10 ) AS
f2a0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
f2b0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
f2c0: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
f2d0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 31  sort..SELECT + 1
f2e0: 36 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c  6 + - col1 + col
f2f0: 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
f300: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a 31  or0..----..16..1
f310: 36 0d 0a 31 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  6..16....onlyif 
f320: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
f330: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
f340: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
f350: 65 6c 2d 33 33 36 0d 0a 53 45 4c 45 43 54 20 44  el-336..SELECT D
f360: 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28  ISTINCT + COUNT(
f370: 20 2d 20 35 32 20 29 2c 20 2d 20 34 38 20 2b 20   - 52 ), - 48 + 
f380: 2b 20 2b 20 38 32 20 41 53 20 63 6f 6c 30 20 46  + + 82 AS col0 F
f390: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
f3a0: 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 33 34 0d 0a 0d  ..----..3..34...
f3b0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
f3c0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
f3d0: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
f3e0: 20 6c 61 62 65 6c 2d 33 33 36 0d 0a 53 45 4c 45   label-336..SELE
f3f0: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f  CT DISTINCT + CO
f400: 55 4e 54 20 28 20 2d 20 35 32 20 29 2c 20 2d 20  UNT ( - 52 ), - 
f410: 34 38 20 2b 20 2b 20 2b 20 38 32 20 41 53 20 63  48 + + + 82 AS c
f420: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
f430: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   cor0..----..3..
f440: 33 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  34....query I ro
f450: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
f460: 53 54 49 4e 43 54 20 63 6f 6c 31 20 2a 20 28 20  STINCT col1 * ( 
f470: 2d 20 33 35 20 29 20 46 52 4f 4d 20 74 61 62 30  - 35 ) FROM tab0
f480: 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 38 33 35 0d 0a 2d  ..----..-2835..-
f490: 33 35 0d 0a 2d 37 33 35 0d 0a 0d 0a 6f 6e 6c 79  35..-735....only
f4a0: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
f4b0: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
f4c0: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
f4d0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33 38  owsort label-338
f4e0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b  ..SELECT ALL + +
f4f0: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
f500: 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20  IGNED ) AS col0 
f510: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
f520: 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
f530: 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  2 AS cor1..----.
f540: 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
f550: 67 20 74 6f 20 63 64 37 61 37 39 30 31 65 34 37  g to cd7a7901e47
f560: 63 31 35 31 35 35 34 30 34 61 66 66 30 64 32 31  c15155404aff0d21
f570: 36 66 65 30 62 0d 0a 0d 0a 73 6b 69 70 69 66 20  6fe0b....skipif 
f580: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
f590: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
f5a0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33  rowsort label-33
f5b0: 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  8..SELECT ALL + 
f5c0: 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
f5d0: 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
f5e0: 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
f5f0: 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
f600: 74 61 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab2 AS cor1..--
f610: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
f620: 68 69 6e 67 20 74 6f 20 63 64 37 61 37 39 30 31  hing to cd7a7901
f630: 65 34 37 63 31 35 31 35 35 34 30 34 61 66 66 30  e47c15155404aff0
f640: 64 32 31 36 66 65 30 62 0d 0a 0d 0a 71 75 65 72  d216fe0b....quer
f650: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
f660: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
f670: 63 6f 6c 31 20 2b 20 2b 20 28 20 2b 20 63 6f 6c  col1 + + ( + col
f680: 32 20 29 2c 20 38 31 20 2b 20 2d 20 2d 20 63 6f  2 ), 81 + - - co
f690: 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
f6a0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
f6b0: 2d 2d 0d 0a 31 30 30 0d 0a 38 32 0d 0a 31 32 38  --..100..82..128
f6c0: 0d 0a 31 36 32 0d 0a 33 31 0d 0a 31 30 32 0d 0a  ..162..31..102..
f6d0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
f6e0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
f6f0: 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
f700: 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 30  or0 WHERE + col0
f710: 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 31 38 20 2a   - - col2 + 18 *
f720: 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32 20 4e   col1 * + col2 N
f730: 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 2d 20 63  OT BETWEEN - - c
f740: 6f 6c 30 20 41 4e 44 20 2d 20 63 6f 6c 31 20 2f  ol0 AND - col1 /
f750: 20 2d 20 37 38 20 2a 20 2b 20 63 6f 6c 31 0d 0a   - 78 * + col1..
f760: 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
f770: 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38  ashing to 75c998
f780: 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66  aa53ac83218cbf2f
f790: 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75  eb962d0a49....qu
f7a0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
f7b0: 45 4c 45 43 54 20 2d 20 28 20 2d 20 2b 20 31 32  ELECT - ( - + 12
f7c0: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
f7d0: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
f7e0: 2d 2d 0d 0a 31 32 0d 0a 31 32 0d 0a 31 32 0d 0a  --..12..12..12..
f7f0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
f800: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
f810: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
f820: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 32 0d 0a  sort label-342..
f830: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
f840: 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b  - + COUNT( * ) +
f850: 20 2b 20 2d 20 34 31 20 41 53 20 63 6f 6c 30 20   + - 41 AS col0 
f860: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
f870: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 0d 0a  0..----..-44....
f880: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
f890: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
f8a0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
f8b0: 61 62 65 6c 2d 33 34 32 0d 0a 53 45 4c 45 43 54  abel-342..SELECT
f8c0: 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 43 4f   DISTINCT - + CO
f8d0: 55 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20 2d 20  UNT ( * ) + + - 
f8e0: 34 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  41 AS col0 FROM 
f8f0: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
f900: 2d 2d 0d 0a 2d 34 34 0d 0a 0d 0a 71 75 65 72 79  --..-44....query
f910: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
f920: 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2b 20 2d 20  CT ALL col1 + - 
f930: 33 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  3 FROM tab1 AS c
f940: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 0d 0a 32  or0..----..11..2
f950: 0d 0a 34 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..44....onlyif m
f960: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
f970: 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72   syntax: DIV for
f980: 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
f990: 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
f9a0: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 34 0d 0a  sort label-344..
f9b0: 53 45 4c 45 43 54 20 2b 20 2b 20 37 30 20 44 49  SELECT + + 70 DI
f9c0: 56 20 4d 41 58 28 20 2b 20 2b 20 63 6f 6c 32 20  V MAX( + + col2 
f9d0: 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
f9e0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a  or0..----..1....
f9f0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
fa00: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
fa10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
fa20: 61 62 65 6c 2d 33 34 34 0d 0a 53 45 4c 45 43 54  abel-344..SELECT
fa30: 20 2b 20 2b 20 37 30 20 2f 20 4d 41 58 20 28 20   + + 70 / MAX ( 
fa40: 2b 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20  + + col2 ) FROM 
fa50: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
fa60: 2d 2d 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..1....onlyif 
fa70: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
fa80: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
fa90: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
faa0: 6c 2d 33 34 35 0d 0a 53 45 4c 45 43 54 20 35 34  l-345..SELECT 54
fab0: 20 2d 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20   - - + COUNT( * 
fac0: 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  ) FROM tab1 cor0
fad0: 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 0d 0a 73 6b  ..----..57....sk
fae0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
faf0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
fb00: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
fb10: 65 6c 2d 33 34 35 0d 0a 53 45 4c 45 43 54 20 35  el-345..SELECT 5
fb20: 34 20 2d 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20  4 - - + COUNT ( 
fb30: 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  * ) FROM tab1 co
fb40: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 0d 0a  r0..----..57....
fb50: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
fb60: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
fb70: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
fb80: 72 74 20 6c 61 62 65 6c 2d 33 34 36 0d 0a 53 45  rt label-346..SE
fb90: 4c 45 43 54 20 30 20 2d 20 43 4f 55 4e 54 28 20  LECT 0 - COUNT( 
fba0: 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
fbb0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
fbc0: 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69  ---..-3....skipi
fbd0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
fbe0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
fbf0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
fc00: 33 34 36 0d 0a 53 45 4c 45 43 54 20 30 20 2d 20  346..SELECT 0 - 
fc10: 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
fc20: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
fc30: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   cor0..----..-3.
fc40: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
fc50: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
fc60: 4e 43 54 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 2d  NCT + + col0 + -
fc70: 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20   + col0 AS col2 
fc80: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
fc90: 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  0..----..0....qu
fca0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
fcb0: 45 4c 45 43 54 20 2d 20 2b 20 63 6f 6c 31 20 41  ELECT - + col1 A
fcc0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
fcd0: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d   AS cor0 WHERE -
fce0: 20 63 6f 6c 32 20 3e 3d 20 2b 20 2b 20 37 34 20   col2 >= + + 74 
fcf0: 2d 20 2b 20 35 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  - + 5..----....o
fd00: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
fd10: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
fd20: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
fd30: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
fd40: 33 34 39 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  349..SELECT + co
fd50: 6c 31 20 2d 20 2b 20 63 6f 6c 30 20 44 49 56 20  l1 - + col0 DIV 
fd60: 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  - col2 AS col1 F
fd70: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
fd80: 31 0d 0a 32 39 0d 0a 38 31 0d 0a 0d 0a 73 6b 69  1..29..81....ski
fd90: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
fda0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
fdb0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
fdc0: 6c 2d 33 34 39 0d 0a 53 45 4c 45 43 54 20 2b 20  l-349..SELECT + 
fdd0: 63 6f 6c 31 20 2d 20 2b 20 63 6f 6c 30 20 2f 20  col1 - + col0 / 
fde0: 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  - col2 AS col1 F
fdf0: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
fe00: 31 0d 0a 32 39 0d 0a 38 31 0d 0a 0d 0a 6f 6e 6c  1..29..81....onl
fe10: 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
fe20: 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
fe30: 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
fe40: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35  rowsort label-35
fe50: 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
fe60: 43 54 20 2b 20 63 6f 6c 31 20 2d 20 2d 20 2d 20  CT + col1 - - - 
fe70: 35 34 20 44 49 56 20 2d 20 2b 20 33 37 20 41 53  54 DIV - + 37 AS
fe80: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
fe90: 0a 2d 2d 2d 2d 0d 0a 35 32 0d 0a 36 38 0d 0a 37  .----..52..68..7
fea0: 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
feb0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
fec0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
fed0: 6f 72 74 20 6c 61 62 65 6c 2d 33 35 30 0d 0a 53  ort label-350..S
fee0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
fef0: 20 63 6f 6c 31 20 2d 20 2d 20 2d 20 35 34 20 2f   col1 - - - 54 /
ff00: 20 2d 20 2b 20 33 37 20 41 53 20 63 6f 6c 30 20   - + 37 AS col0 
ff10: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
ff20: 0a 35 32 0d 0a 36 38 0d 0a 37 38 0d 0a 0d 0a 71  .52..68..78....q
ff30: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
ff40: 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20  SELECT ALL col0 
ff50: 2d 20 2b 20 28 20 2b 20 2b 20 32 33 20 29 20 46  - + ( + + 23 ) F
ff60: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
ff70: 32 33 0d 0a 34 31 0d 0a 35 32 0d 0a 0d 0a 71 75  23..41..52....qu
ff80: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
ff90: 45 4c 45 43 54 20 2b 20 28 20 2d 20 2d 20 63 6f  ELECT + ( - - co
ffa0: 6c 32 20 29 20 2d 20 2d 20 63 6f 6c 31 20 46 52  l2 ) - - col1 FR
ffb0: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab1..----..1
ffc0: 31 30 0d 0a 31 31 35 0d 0a 36 34 0d 0a 0d 0a 71  10..115..64....q
ffd0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
ffe0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
fff0: 28 20 63 6f 6c 30 20 29 20 2d 20 2d 20 2d 20 63  ( col0 ) - - - c
10000 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
10010 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   tab2..----..0..
10020 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10030 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32 38  t..SELECT ALL 28
10040 20 2a 20 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a   * 0 FROM tab1..
10050 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d  ----..0..0..0...
10060 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
10070 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
10080 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
10090 6f 72 74 20 6c 61 62 65 6c 2d 33 35 35 0d 0a 53  ort label-355..S
100a0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58 28  ELECT ALL - MAX(
100b0 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 39 38   DISTINCT - - 98
100c0 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
100d0 2d 2d 0d 0a 2d 39 38 0d 0a 0d 0a 73 6b 69 70 69  --..-98....skipi
100e0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
100f0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
10100 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
10110 33 35 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  355..SELECT ALL 
10120 2d 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54  - MAX ( DISTINCT
10130 20 2d 20 2d 20 39 38 20 29 20 46 52 4f 4d 20 74   - - 98 ) FROM t
10140 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 38 0d 0a  ab2..----..-98..
10150 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
10160 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  rt..SELECT + col
10170 32 20 2a 20 36 39 2c 20 2b 20 63 6f 6c 31 20 41  2 * 69, + col1 A
10180 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
10190 0d 0a 2d 2d 2d 2d 0d 0a 34 30 37 31 0d 0a 35 0d  ..----..4071..5.
101a0 0a 34 36 39 32 0d 0a 34 37 0d 0a 36 36 32 34 0d  .4692..47..6624.
101b0 0a 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .14....query I r
101c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
101d0 4c 4c 20 2b 20 63 6f 6c 32 20 2a 20 33 33 20 41  LL + col2 * 33 A
101e0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
101f0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
10200 31 39 34 37 0d 0a 32 32 34 34 0d 0a 33 31 36 38  1947..2244..3168
10210 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
10220 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
10230 2b 20 63 6f 6c 31 20 2a 20 2d 20 36 37 20 46 52  + col1 * - 67 FR
10240 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
10250 33 31 34 39 0d 0a 2d 33 33 35 0d 0a 2d 39 33 38  3149..-335..-938
10260 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
10270 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  ort..SELECT + + 
10280 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30 20 46 52  col1 * - col0 FR
10290 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
102a0 54 20 2d 20 63 6f 6c 32 20 42 45 54 57 45 45 4e  T - col2 BETWEEN
102b0 20 2b 20 63 6f 6c 32 20 2f 20 2d 20 63 6f 6c 30   + col2 / - col0
102c0 20 2b 20 2d 20 2d 20 28 20 2b 20 63 6f 6c 30 20   + - - ( + col0 
102d0 29 20 2a 20 2b 20 63 6f 6c 32 20 41 4e 44 20 2b  ) * + col2 AND +
102e0 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 2d   - col2..----..-
102f0 32 33 34 36 0d 0a 2d 34 39 32 38 0d 0a 2d 35 30  2346..-4928..-50
10300 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  25....query I ro
10310 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
10320 4c 20 2b 20 28 20 36 34 20 29 20 41 53 20 63 6f  L + ( 64 ) AS co
10330 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
10340 2d 2d 0d 0a 36 34 0d 0a 36 34 0d 0a 36 34 0d 0a  --..64..64..64..
10350 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10360 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
10370 2d 20 37 35 20 41 53 20 63 6f 6c 30 20 46 52 4f  - 75 AS col0 FRO
10380 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
10390 2d 2d 2d 2d 0d 0a 37 35 0d 0a 37 35 0d 0a 37 35  ----..75..75..75
103a0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
103b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34 35 20 2a  ort..SELECT 45 *
103c0 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   - col1 FROM tab
103d0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
103e0 0a 2d 32 31 31 35 0d 0a 2d 32 32 35 0d 0a 2d 36  .-2115..-225..-6
103f0 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  30....query III 
10400 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
10410 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
10420 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 3c 3e 20  E NOT ( NULL <> 
10430 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a  - col2 )..----..
10440 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
10450 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
10460 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
10470 73 6f 72 74 20 6c 61 62 65 6c 2d 33 36 34 0d 0a  sort label-364..
10480 53 45 4c 45 43 54 20 31 37 20 2b 20 2d 20 2b 20  SELECT 17 + - + 
10490 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
104a0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a  tab0..----..14..
104b0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
104c0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
104d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
104e0 20 6c 61 62 65 6c 2d 33 36 34 0d 0a 53 45 4c 45   label-364..SELE
104f0 43 54 20 31 37 20 2b 20 2d 20 2b 20 43 4f 55 4e  CT 17 + - + COUN
10500 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  T ( * ) FROM tab
10510 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 0d 0a 73  0..----..14....s
10520 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
10530 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
10540 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
10550 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
10560 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
10570 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
10580 28 20 2d 20 2b 20 63 6f 6c 31 20 29 20 2a 20 63  ( - + col1 ) * c
10590 6f 6c 31 20 2b 20 2b 20 2b 20 37 33 20 63 6f 6c  ol1 + + + 73 col
105a0 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
105b0 2d 0d 0a 2d 31 32 33 0d 0a 2d 32 31 33 36 0d 0a  -..-123..-2136..
105c0 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  48....query III 
105d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
105e0 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ALL * FROM tab1 
105f0 57 48 45 52 45 20 28 20 33 33 20 29 20 49 53 20  WHERE ( 33 ) IS 
10600 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
10610 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
10620 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33 36   to c6c0a4111b36
10630 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64 35  d04dbc811a11e4d5
10640 34 63 61 64 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  4cad....skipif p
10650 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
10660 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
10670 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
10680 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
10690 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
106a0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
106b0 54 20 34 31 20 2a 20 2b 20 63 6f 6c 30 20 2b 20  T 41 * + col0 + 
106c0 2d 20 36 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74  - 62 col2 FROM t
106d0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 30 32 39 0d  ab1..----..2029.
106e0 0a 33 34 32 33 0d 0a 33 36 36 39 0d 0a 0d 0a 6f  .3423..3669....o
106f0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
10700 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
10710 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10720 74 20 6c 61 62 65 6c 2d 33 36 38 0d 0a 53 45 4c  t label-368..SEL
10730 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  ECT COUNT( * ) *
10740 20 38 36 20 2b 20 2b 20 33 20 46 52 4f 4d 20 74   86 + + 3 FROM t
10750 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 36 31 0d 0a  ab2..----..261..
10760 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
10770 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
10780 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10790 20 6c 61 62 65 6c 2d 33 36 38 0d 0a 53 45 4c 45   label-368..SELE
107a0 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a  CT COUNT ( * ) *
107b0 20 38 36 20 2b 20 2b 20 33 20 46 52 4f 4d 20 74   86 + + 3 FROM t
107c0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 36 31 0d 0a  ab2..----..261..
107d0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
107e0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 32  rt..SELECT - - 2
107f0 30 20 2b 20 33 38 20 2a 20 2b 20 63 6f 6c 30 20  0 + 38 * + col0 
10800 2a 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 28 20 2d  * + col1 * - ( -
10810 20 2b 20 63 6f 6c 31 20 29 20 2a 20 63 6f 6c 30   + col1 ) * col0
10820 2c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  , col0 FROM tab2
10830 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
10840 32 30 39 31 34 31 32 32 38 0d 0a 34 36 0d 0a 39  209141228..46..9
10850 32 32 38 33 37 30 31 32 0d 0a 36 34 0d 0a 39 35  22837012..64..95
10860 39 35 32 33 37 37 30 0d 0a 37 35 0d 0a 0d 0a 6f  9523770..75....o
10870 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
10880 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
10890 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
108a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
108b0 33 37 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  370..SELECT ALL 
108c0 2b 20 28 20 38 39 20 29 20 2b 20 2d 20 63 6f 6c  + ( 89 ) + - col
108d0 31 20 44 49 56 20 2d 20 63 6f 6c 32 20 2b 20 28  1 DIV - col2 + (
108e0 20 2d 20 2d 20 63 6f 6c 31 20 29 20 2b 20 2b 20   - - col1 ) + + 
108f0 63 6f 6c 31 20 2a 20 63 6f 6c 30 20 46 52 4f 4d  col1 * col0 FROM
10900 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
10910 2d 2d 2d 0d 0a 31 33 38 36 0d 0a 31 38 37 0d 0a  ---..1386..187..
10920 31 39 33 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  1939....skipif m
10930 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
10940 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
10950 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 30  owsort label-370
10960 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28  ..SELECT ALL + (
10970 20 38 39 20 29 20 2b 20 2d 20 63 6f 6c 31 20 2f   89 ) + - col1 /
10980 20 2d 20 63 6f 6c 32 20 2b 20 28 20 2d 20 2d 20   - col2 + ( - - 
10990 63 6f 6c 31 20 29 20 2b 20 2b 20 63 6f 6c 31 20  col1 ) + + col1 
109a0 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  * col0 FROM tab0
109b0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
109c0 31 33 38 36 0d 0a 31 38 37 0d 0a 31 39 33 39 0d  1386..187..1939.
109d0 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
109e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  ort..SELECT col0
109f0 20 41 53 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c 30   AS col2, - col0
10a00 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
10a10 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34  b2 cor0..----..4
10a20 36 0d 0a 2d 34 36 0d 0a 36 34 0d 0a 2d 36 34 0d  6..-46..64..-64.
10a30 0a 37 35 0d 0a 2d 37 35 0d 0a 0d 0a 71 75 65 72  .75..-75....quer
10a40 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
10a50 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2b 20 2b  ECT ALL col1 + +
10a60 20 2b 20 37 33 20 41 53 20 63 6f 6c 31 20 46 52   + 73 AS col1 FR
10a70 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
10a80 0a 2d 2d 2d 2d 0d 0a 31 32 30 0d 0a 37 38 0d 0a  .----..120..78..
10a90 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  87....query I ro
10aa0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
10ab0 30 20 2d 20 2d 20 2b 20 38 39 20 2b 20 63 6f 6c  0 - - + 89 + col
10ac0 30 20 2a 20 2b 20 36 32 20 2a 20 2d 20 35 39 20  0 * + 62 * - 59 
10ad0 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  + + col0 FROM ta
10ae0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31 38 30 37  b0..----..-31807
10af0 30 0d 0a 2d 33 35 34 36 34 30 0d 0a 2d 35 34 37  0..-354640..-547
10b00 36 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  66....onlyif mys
10b10 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
10b20 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
10b30 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10b40 20 6c 61 62 65 6c 2d 33 37 34 0d 0a 53 45 4c 45   label-374..SELE
10b50 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20  CT + CAST( NULL 
10b60 41 53 20 53 49 47 4e 45 44 20 29 20 2d 20 2b 20  AS SIGNED ) - + 
10b70 2d 20 35 33 20 46 52 4f 4d 20 74 61 62 32 0d 0a  - 53 FROM tab2..
10b80 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
10b90 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
10ba0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
10bb0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
10bc0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
10bd0 37 34 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41 53  74..SELECT + CAS
10be0 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
10bf0 47 45 52 20 29 20 2d 20 2b 20 2d 20 35 33 20 46  GER ) - + - 53 F
10c00 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
10c10 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
10c20 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
10c30 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
10c40 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
10c50 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 35  owsort label-375
10c60 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20  ..SELECT COUNT( 
10c70 2a 20 29 20 2a 20 2d 20 2d 20 35 30 20 2b 20 2b  * ) * - - 50 + +
10c80 20 34 35 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   45 col1 FROM ta
10c90 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
10ca0 0d 0a 31 39 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..195....skipif 
10cb0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
10cc0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
10cd0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
10ce0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
10cf0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
10d00 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
10d10 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10d20 20 6c 61 62 65 6c 2d 33 37 35 0d 0a 53 45 4c 45   label-375..SELE
10d30 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a  CT COUNT ( * ) *
10d40 20 2d 20 2d 20 35 30 20 2b 20 2b 20 34 35 20 63   - - 50 + + 45 c
10d50 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
10d60 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 35   cor0..----..195
10d70 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
10d80 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
10d90 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 57  FROM tab0 cor0 W
10da0 48 45 52 45 20 4e 55 4c 4c 20 3c 3e 20 28 20 4e  HERE NULL <> ( N
10db0 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ULL )..----....q
10dc0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
10dd0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
10de0 37 36 20 2b 20 28 20 2b 20 63 6f 6c 30 20 29 20  76 + ( + col0 ) 
10df0 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  * - col0 AS col0
10e00 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
10e10 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 32 35 0d  r0..----..-2525.
10e20 0a 2d 37 31 34 39 0d 0a 2d 38 32 30 35 0d 0a 0d  .-7149..-8205...
10e30 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
10e40 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
10e50 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
10e60 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
10e70 6c 2d 33 37 38 0d 0a 53 45 4c 45 43 54 20 2b 20  l-378..SELECT + 
10e80 63 6f 6c 30 20 44 49 56 20 2b 20 2b 20 39 33 20  col0 DIV + + 93 
10e90 2b 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32  + - col0 AS col2
10ea0 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
10eb0 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 38 37 0d  .----..-15..-87.
10ec0 0a 2d 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-96....skipif m
10ed0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
10ee0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
10ef0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 38  owsort label-378
10f00 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20  ..SELECT + col0 
10f10 2f 20 2b 20 2b 20 39 33 20 2b 20 2d 20 63 6f 6c  / + + 93 + - col
10f20 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
10f30 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
10f40 2d 31 35 0d 0a 2d 38 37 0d 0a 2d 39 36 0d 0a 0d  -15..-87..-96...
10f50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10f60 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20  ..SELECT + col0 
10f70 2a 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  * - col2 AS col0
10f80 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
10f90 72 30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20  r0 WHERE ( NULL 
10fa0 29 20 42 45 54 57 45 45 4e 20 2b 20 63 6f 6c 30  ) BETWEEN + col0
10fb0 20 41 4e 44 20 37 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a   AND 7..----....
10fc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
10fd0 0a 53 45 4c 45 43 54 20 2b 20 36 38 20 2a 20 2b  .SELECT + 68 * +
10fe0 20 2d 20 34 37 20 41 53 20 63 6f 6c 32 20 46 52   - 47 AS col2 FR
10ff0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
11000 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42  WHERE NULL NOT B
11010 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
11020 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  col2..----....on
11030 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
11040 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
11050 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
11060 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
11070 38 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32  81..SELECT ALL 2
11080 36 20 44 49 56 20 2d 20 31 34 20 2b 20 2d 20 63  6 DIV - 14 + - c
11090 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
110a0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37   cor0..----..-47
110b0 0d 0a 2d 36 35 0d 0a 2d 37 36 0d 0a 0d 0a 73 6b  ..-65..-76....sk
110c0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
110d0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
110e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
110f0 65 6c 2d 33 38 31 0d 0a 53 45 4c 45 43 54 20 41  el-381..SELECT A
11100 4c 4c 20 32 36 20 2f 20 2d 20 31 34 20 2b 20 2d  LL 26 / - 14 + -
11110 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
11120 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
11130 34 37 0d 0a 2d 36 35 0d 0a 2d 37 36 0d 0a 0d 0a  47..-65..-76....
11140 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
11150 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
11160 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
11170 53 20 63 6f 72 30 20 57 48 45 52 45 20 32 20 42  S cor0 WHERE 2 B
11180 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
11190 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  - col1..----....
111a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
111b0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
111c0 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
111d0 6f 72 74 20 6c 61 62 65 6c 2d 33 38 33 0d 0a 53  ort label-383..S
111e0 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 41  ELECT + COUNT( A
111f0 4c 4c 20 38 37 20 29 2c 20 31 35 20 41 53 20 63  LL 87 ), 15 AS c
11200 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
11210 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   cor0..----..3..
11220 31 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  15....skipif mys
11230 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
11240 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  ble..query II ro
11250 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 33 0d  wsort label-383.
11260 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20  .SELECT + COUNT 
11270 28 20 41 4c 4c 20 38 37 20 29 2c 20 31 35 20 41  ( ALL 87 ), 15 A
11280 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
11290 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
112a0 33 0d 0a 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49  3..15....query I
112b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
112c0 54 20 41 4c 4c 20 2b 20 34 32 2c 20 63 6f 6c 31  T ALL + 42, col1
112d0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
112e0 0d 0a 34 32 0d 0a 31 34 0d 0a 34 32 0d 0a 34 37  ..42..14..42..47
112f0 0d 0a 34 32 0d 0a 35 0d 0a 0d 0a 71 75 65 72 79  ..42..5....query
11300 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
11310 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
11320 74 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20  tab1 WHERE NULL 
11330 3e 3d 20 37 37 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  >= 77..----....q
11340 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
11350 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 28  SELECT ALL + - (
11360 20 2b 20 2b 20 63 6f 6c 32 20 29 20 41 53 20 63   + + col2 ) AS c
11370 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
11380 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33   cor0..----..-23
11390 0d 0a 2d 34 30 0d 0a 2d 35 38 0d 0a 0d 0a 71 75  ..-40..-58....qu
113a0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
113b0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
113c0 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
113d0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
113e0 20 35 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   5 IS NOT NULL..
113f0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
11400 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
11410 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
11420 31 20 57 48 45 52 45 20 2b 20 39 20 2b 20 2b 20  1 WHERE + 9 + + 
11430 32 20 3d 20 2d 20 31 34 0d 0a 2d 2d 2d 2d 0d 0a  2 = - 14..----..
11440 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
11450 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
11460 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  INCT * FROM tab1
11470 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b   AS cor0 WHERE +
11480 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30 20 3e   col1 * - col0 >
11490 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  = NULL..----....
114a0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
114b0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
114c0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
114d0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
114e0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
114f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
11500 20 2d 20 28 20 2b 20 39 35 20 29 20 2b 20 2b 20   - ( + 95 ) + + 
11510 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74  col2 col2 FROM t
11520 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
11530 2d 0d 0a 2d 34 38 0d 0a 2d 38 35 0d 0a 34 0d 0a  -..-48..-85..4..
11540 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
11550 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
11560 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
11570 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
11580 65 6c 2d 33 39 31 0d 0a 53 45 4c 45 43 54 20 2d  el-391..SELECT -
11590 20 33 30 20 44 49 56 20 2b 20 63 6f 6c 30 20 46   30 DIV + col0 F
115a0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
115b0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
115c0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
115d0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
115e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
115f0 74 20 6c 61 62 65 6c 2d 33 39 31 0d 0a 53 45 4c  t label-391..SEL
11600 45 43 54 20 2d 20 33 30 20 2f 20 2b 20 63 6f 6c  ECT - 30 / + col
11610 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
11620 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d  or0..----..0..0.
11630 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
11640 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
11650 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
11660 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
11670 39 32 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 33  92..SELECT - + 3
11680 34 20 2a 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2b  4 * - + COUNT( +
11690 20 63 6f 6c 32 20 29 20 2a 20 43 4f 55 4e 54 28   col2 ) * COUNT(
116a0 20 2a 20 29 20 2d 20 2d 20 2b 20 43 4f 55 4e 54   * ) - - + COUNT
116b0 28 20 2a 20 29 20 2a 20 43 4f 55 4e 54 28 20 2a  ( * ) * COUNT( *
116c0 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2b 20   ) * + COUNT( + 
116d0 63 6f 6c 30 20 29 20 2b 20 2d 20 2d 20 43 4f 55  col0 ) + - - COU
116e0 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20  NT( * ) AS col1 
116f0 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
11700 2d 2d 2d 2d 0d 0a 33 33 36 0d 0a 0d 0a 73 6b 69  ----..336....ski
11710 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
11720 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
11730 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
11740 6c 2d 33 39 32 0d 0a 53 45 4c 45 43 54 20 2d 20  l-392..SELECT - 
11750 2b 20 33 34 20 2a 20 2d 20 2b 20 43 4f 55 4e 54  + 34 * - + COUNT
11760 20 28 20 2b 20 63 6f 6c 32 20 29 20 2a 20 43 4f   ( + col2 ) * CO
11770 55 4e 54 20 28 20 2a 20 29 20 2d 20 2d 20 2b 20  UNT ( * ) - - + 
11780 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 43 4f  COUNT ( * ) * CO
11790 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 43 4f  UNT ( * ) * + CO
117a0 55 4e 54 20 28 20 2b 20 63 6f 6c 30 20 29 20 2b  UNT ( + col0 ) +
117b0 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   - - COUNT ( * )
117c0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
117d0 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  b0 cor0..----..3
117e0 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  36....query I ro
117f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
11800 37 37 20 2a 20 2b 20 37 30 20 2a 20 2d 20 2b 20  77 * + 70 * - + 
11810 32 30 20 2a 20 2d 20 31 32 20 2a 20 2b 20 38 20  20 * - 12 * + 8 
11820 2a 20 37 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  * 7 FROM tab0..-
11830 2d 2d 2d 0d 0a 37 32 34 34 31 36 30 30 0d 0a 37  ---..72441600..7
11840 32 34 34 31 36 30 30 0d 0a 37 32 34 34 31 36 30  2441600..7244160
11850 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
11860 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
11870 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
11880 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
11890 6c 61 62 65 6c 2d 33 39 34 0d 0a 53 45 4c 45 43  label-394..SELEC
118a0 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20  T DISTINCT col1 
118b0 44 49 56 20 2b 20 2d 20 35 38 20 46 52 4f 4d 20  DIV + - 58 FROM 
118c0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab0..----..-1..
118d0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
118e0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
118f0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
11900 6f 72 74 20 6c 61 62 65 6c 2d 33 39 34 0d 0a 53  ort label-394..S
11910 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
11920 6f 6c 31 20 2f 20 2b 20 2d 20 35 38 20 46 52 4f  ol1 / + - 58 FRO
11930 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
11940 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..0....onlyif my
11950 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
11960 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
11970 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
11980 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
11990 6f 72 74 20 6c 61 62 65 6c 2d 33 39 35 0d 0a 53  ort label-395..S
119a0 45 4c 45 43 54 20 2d 20 4d 41 58 28 20 2d 20 28  ELECT - MAX( - (
119b0 20 28 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20   ( + CAST( NULL 
119c0 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 29 20  AS SIGNED ) ) ) 
119d0 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  ) col0 FROM tab1
119e0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
119f0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
11a00 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
11a10 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
11a20 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
11a30 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
11a40 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
11a50 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
11a60 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39  rowsort label-39
11a70 35 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 20  5..SELECT - MAX 
11a80 28 20 2d 20 28 20 28 20 2b 20 43 41 53 54 20 28  ( - ( ( + CAST (
11a90 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
11aa0 20 29 20 29 20 29 20 29 20 63 6f 6c 30 20 46 52   ) ) ) ) col0 FR
11ab0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab1..----..N
11ac0 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
11ad0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
11ae0 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20   + col0 AS col1 
11af0 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
11b00 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  NULL IS NOT NULL
11b10 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
11b20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
11b30 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20  T DISTINCT col1 
11b40 2b 20 2b 20 33 33 20 41 53 20 63 6f 6c 32 20 46  + + 33 AS col2 F
11b50 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
11b60 31 31 34 0d 0a 33 34 0d 0a 35 34 0d 0a 0d 0a 71  114..34..54....q
11b70 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
11b80 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
11b90 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
11ba0 52 45 20 2b 20 63 6f 6c 31 20 2a 20 63 6f 6c 31  RE + col1 * col1
11bb0 20 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   <= NULL..----..
11bc0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
11bd0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
11be0 47 4e 45 44 20 74 79 70 65 3a 20 44 49 56 20 66  GNED type: DIV f
11bf0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
11c00 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
11c10 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39 39  owsort label-399
11c20 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
11c30 6f 6c 30 20 2a 20 43 41 53 54 28 20 2d 20 63 6f  ol0 * CAST( - co
11c40 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 2d  l0 AS SIGNED ) -
11c50 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32   - col1 * - col2
11c60 20 2b 20 63 6f 6c 31 20 44 49 56 20 2d 20 28 20   + col1 DIV - ( 
11c70 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46  col2 ) AS col0 F
11c80 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
11c90 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30 33 33 0d 0a 2d  ..----..-4033..-
11ca0 37 37 38 31 0d 0a 2d 39 35 30 38 0d 0a 0d 0a 73  7781..-9508....s
11cb0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
11cc0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
11cd0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
11ce0 62 65 6c 2d 33 39 39 0d 0a 53 45 4c 45 43 54 20  bel-399..SELECT 
11cf0 41 4c 4c 20 2b 20 63 6f 6c 30 20 2a 20 43 41 53  ALL + col0 * CAS
11d00 54 20 28 20 2d 20 63 6f 6c 30 20 41 53 20 49 4e  T ( - col0 AS IN
11d10 54 45 47 45 52 20 29 20 2d 20 2d 20 63 6f 6c 31  TEGER ) - - col1
11d20 20 2a 20 2d 20 63 6f 6c 32 20 2b 20 63 6f 6c 31   * - col2 + col1
11d30 20 2f 20 2d 20 28 20 63 6f 6c 32 20 29 20 41 53   / - ( col2 ) AS
11d40 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
11d50 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
11d60 34 30 33 33 0d 0a 2d 37 37 38 31 0d 0a 2d 39 35  4033..-7781..-95
11d70 30 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  08....onlyif mys
11d80 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
11d90 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
11da0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
11db0 30 30 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  00..SELECT COUNT
11dc0 28 20 2a 20 29 20 2b 20 2b 20 43 4f 55 4e 54 28  ( * ) + + COUNT(
11dd0 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   * ) AS col0 FRO
11de0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
11df0 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69  ----..6....skipi
11e00 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
11e10 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
11e20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
11e30 34 30 30 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  400..SELECT COUN
11e40 54 20 28 20 2a 20 29 20 2b 20 2b 20 43 4f 55 4e  T ( * ) + + COUN
11e50 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
11e60 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
11e70 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 6f 6e  0..----..6....on
11e80 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
11e90 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
11ea0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11eb0 20 6c 61 62 65 6c 2d 34 30 31 0d 0a 53 45 4c 45   label-401..SELE
11ec0 43 54 20 2d 20 38 30 20 2b 20 2d 20 43 4f 55 4e  CT - 80 + - COUN
11ed0 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30  T( * ) FROM tab0
11ee0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
11ef0 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ULL NOT BETWEEN 
11f00 4e 55 4c 4c 20 41 4e 44 20 2b 20 63 6f 6c 31 20  NULL AND + col1 
11f10 2a 20 2d 20 2b 20 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  * - + 2..----..-
11f20 38 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  80....skipif mys
11f30 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
11f40 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
11f50 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 31 0d 0a  sort label-401..
11f60 53 45 4c 45 43 54 20 2d 20 38 30 20 2b 20 2d 20  SELECT - 80 + - 
11f70 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
11f80 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
11f90 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54  ERE NULL NOT BET
11fa0 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20  WEEN NULL AND + 
11fb0 63 6f 6c 31 20 2a 20 2d 20 2b 20 32 0d 0a 2d 2d  col1 * - + 2..--
11fc0 2d 2d 0d 0a 2d 38 30 0d 0a 0d 0a 71 75 65 72 79  --..-80....query
11fd0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
11fe0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
11ff0 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3e 20 63   WHERE NULL <> c
12000 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ol0..----....onl
12010 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
12020 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
12030 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12040 6c 61 62 65 6c 2d 34 30 33 0d 0a 53 45 4c 45 43  label-403..SELEC
12050 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a 20 29  T ALL COUNT( * )
12060 20 2b 20 2b 20 2b 20 32 33 20 63 6f 6c 31 20 46   + + + 23 col1 F
12070 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
12080 0d 0a 2d 2d 2d 2d 0d 0a 32 36 0d 0a 0d 0a 73 6b  ..----..26....sk
12090 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
120a0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
120b0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
120c0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
120d0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
120e0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
120f0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
12100 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 33 0d  wsort label-403.
12110 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
12120 54 20 28 20 2a 20 29 20 2b 20 2b 20 2b 20 32 33  T ( * ) + + + 23
12130 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
12140 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32  AS cor0..----..2
12150 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
12160 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37  sort..SELECT - 7
12170 30 20 2a 20 2d 20 36 38 20 2b 20 2b 20 63 6f 6c  0 * - 68 + + col
12180 30 20 2b 20 2d 20 38 37 20 2b 20 2b 20 2d 20 63  0 + - 87 + + - c
12190 6f 6c 30 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 2d  ol0 + - + col0 -
121a0 20 2b 20 2d 20 32 35 20 2a 20 63 6f 6c 30 20 41   + - 25 * col0 A
121b0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
121c0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
121d0 35 37 37 37 0d 0a 36 32 30 39 0d 0a 36 34 37 33  5777..6209..6473
121e0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
121f0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
12200 6f 6c 32 20 2d 20 63 6f 6c 32 2c 20 63 6f 6c 30  ol2 - col2, col0
12210 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
12220 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 38 0d 0a  r0..----..-118..
12230 38 35 0d 0a 2d 31 33 36 0d 0a 39 31 0d 0a 2d 31  85..-136..91..-1
12240 39 32 0d 0a 35 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  92..51....onlyif
12250 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
12260 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
12270 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
12280 65 6c 2d 34 30 36 0d 0a 53 45 4c 45 43 54 20 2d  el-406..SELECT -
12290 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43 54   COUNT( DISTINCT
122a0 20 63 6f 6c 30 20 29 20 63 6f 6c 30 20 46 52 4f   col0 ) col0 FRO
122b0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
122c0 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70  ----..-3....skip
122d0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
122e0 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
122f0 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
12300 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
12310 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
12320 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
12330 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
12340 6f 72 74 20 6c 61 62 65 6c 2d 34 30 36 0d 0a 53  ort label-406..S
12350 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20  ELECT - COUNT ( 
12360 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 29 20  DISTINCT col0 ) 
12370 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
12380 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  S cor0..----..-3
12390 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
123a0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
123b0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
123c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 37  owsort label-407
123d0 0d 0a 53 45 4c 45 43 54 20 53 55 4d 28 20 44 49  ..SELECT SUM( DI
123e0 53 54 49 4e 43 54 20 36 31 20 29 20 41 53 20 63  STINCT 61 ) AS c
123f0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol0 FROM tab2 co
12400 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 31 0d 0a 0d 0a  r0..----..61....
12410 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
12420 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
12430 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
12440 61 62 65 6c 2d 34 30 37 0d 0a 53 45 4c 45 43 54  abel-407..SELECT
12450 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20   SUM ( DISTINCT 
12460 36 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  61 ) AS col0 FRO
12470 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
12480 2d 0d 0a 36 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..61....onlyif 
12490 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
124a0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
124b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
124c0 6c 2d 34 30 38 0d 0a 53 45 4c 45 43 54 20 43 4f  l-408..SELECT CO
124d0 55 4e 54 28 20 2a 20 29 20 2a 20 33 37 20 63 6f  UNT( * ) * 37 co
124e0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
124f0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 31 0d  cor0..----..111.
12500 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
12510 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
12520 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
12530 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
12540 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
12550 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
12560 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
12570 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
12580 2d 34 30 38 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -408..SELECT COU
12590 4e 54 20 28 20 2a 20 29 20 2a 20 33 37 20 63 6f  NT ( * ) * 37 co
125a0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
125b0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 31 0d  cor0..----..111.
125c0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
125d0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
125e0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
125f0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
12600 61 62 65 6c 2d 34 30 39 0d 0a 53 45 4c 45 43 54  abel-409..SELECT
12610 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   - CAST( NULL AS
12620 20 53 49 47 4e 45 44 20 29 2c 20 2b 20 63 6f 6c   SIGNED ), + col
12630 30 20 2b 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20  0 + + + col0 AS 
12640 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
12650 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
12660 4c 4c 0d 0a 31 37 34 0d 0a 4e 55 4c 4c 0d 0a 31  LL..174..NULL..1
12670 39 34 0d 0a 4e 55 4c 4c 0d 0a 33 30 0d 0a 0d 0a  94..NULL..30....
12680 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
12690 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
126a0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
126b0 6c 61 62 65 6c 2d 34 30 39 0d 0a 53 45 4c 45 43  label-409..SELEC
126c0 54 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  T - CAST ( NULL 
126d0 41 53 20 49 4e 54 45 47 45 52 20 29 2c 20 2b 20  AS INTEGER ), + 
126e0 63 6f 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c 30 20  col0 + + + col0 
126f0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
12700 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
12710 0a 4e 55 4c 4c 0d 0a 31 37 34 0d 0a 4e 55 4c 4c  .NULL..174..NULL
12720 0d 0a 31 39 34 0d 0a 4e 55 4c 4c 0d 0a 33 30 0d  ..194..NULL..30.
12730 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
12740 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
12750 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
12760 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31 30 0d  wsort label-410.
12770 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
12780 20 2b 20 2b 20 53 55 4d 28 20 2b 20 63 6f 6c 32   + + SUM( + col2
12790 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
127a0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
127b0 0a 32 32 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .223....skipif m
127c0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
127d0 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
127e0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
127f0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
12800 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
12810 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
12820 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12830 6c 61 62 65 6c 2d 34 31 30 0d 0a 53 45 4c 45 43  label-410..SELEC
12840 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 53  T DISTINCT + + S
12850 55 4d 20 28 20 2b 20 63 6f 6c 32 20 29 20 63 6f  UM ( + col2 ) co
12860 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
12870 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 33 0d  cor0..----..223.
12880 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
12890 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
128a0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
128b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
128c0 62 65 6c 2d 34 31 31 0d 0a 53 45 4c 45 43 54 20  bel-411..SELECT 
128d0 63 6f 6c 32 20 44 49 56 20 37 39 20 46 52 4f 4d  col2 DIV 79 FROM
128e0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
128f0 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
12900 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
12910 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
12920 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
12930 61 62 65 6c 2d 34 31 31 0d 0a 53 45 4c 45 43 54  abel-411..SELECT
12940 20 63 6f 6c 32 20 2f 20 37 39 20 46 52 4f 4d 20   col2 / 79 FROM 
12950 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
12960 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f  --..0..0..0....o
12970 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
12980 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
12990 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
129a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
129b0 34 31 32 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  412..SELECT col1
129c0 20 44 49 56 20 2d 20 2b 20 63 6f 6c 31 20 41 53   DIV - + col1 AS
129d0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
129e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  cor0..----..-1..
129f0 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66  -1..-1....skipif
12a00 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
12a10 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
12a20 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
12a30 31 32 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20  12..SELECT col1 
12a40 2f 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  / - + col1 AS co
12a50 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l2 FROM tab0 cor
12a60 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d  0..----..-1..-1.
12a70 0a 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .-1....onlyif my
12a80 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
12a90 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
12aa0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
12ab0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
12ac0 6f 72 74 20 6c 61 62 65 6c 2d 34 31 33 0d 0a 53  ort label-413..S
12ad0 45 4c 45 43 54 20 53 55 4d 28 20 2d 20 2d 20 37  ELECT SUM( - - 7
12ae0 36 20 29 20 2f 20 2d 20 43 41 53 54 28 20 4e 55  6 ) / - CAST( NU
12af0 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a  LL AS SIGNED ) *
12b00 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52   - COUNT( * ) FR
12b10 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
12b20 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
12b30 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
12b40 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
12b50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
12b60 62 65 6c 2d 34 31 33 0d 0a 53 45 4c 45 43 54 20  bel-413..SELECT 
12b70 53 55 4d 20 28 20 2d 20 2d 20 37 36 20 29 20 2f  SUM ( - - 76 ) /
12b80 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
12b90 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20  S INTEGER ) * - 
12ba0 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
12bb0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
12bc0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c  ---..NULL....onl
12bd0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
12be0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
12bf0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12c00 6c 61 62 65 6c 2d 34 31 34 0d 0a 53 45 4c 45 43  label-414..SELEC
12c10 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  T + COUNT( * ) *
12c20 20 32 30 20 2a 20 2b 20 2b 20 33 38 20 41 53 20   20 * + + 38 AS 
12c30 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63  col2 FROM tab1 c
12c40 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 38 30 0d  or0..----..2280.
12c50 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
12c60 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
12c70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12c80 74 20 6c 61 62 65 6c 2d 34 31 34 0d 0a 53 45 4c  t label-414..SEL
12c90 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ECT + COUNT ( * 
12ca0 29 20 2a 20 32 30 20 2a 20 2b 20 2b 20 33 38 20  ) * 20 * + + 38 
12cb0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
12cc0 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32  1 cor0..----..22
12cd0 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  80....query I ro
12ce0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
12cf0 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20  STINCT + + col1 
12d00 2a 20 28 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  * ( col0 ) FROM 
12d10 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
12d20 2d 2d 0d 0a 31 32 31 35 0d 0a 31 38 32 37 0d 0a  --..1215..1827..
12d30 39 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  97....onlyif mys
12d40 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
12d50 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
12d60 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
12d70 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  16..SELECT DISTI
12d80 4e 43 54 20 2d 20 4d 49 4e 28 20 44 49 53 54 49  NCT - MIN( DISTI
12d90 4e 43 54 20 63 6f 6c 30 20 29 20 41 53 20 63 6f  NCT col0 ) AS co
12da0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
12db0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d  cor0..----..-51.
12dc0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
12dd0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
12de0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12df0 74 20 6c 61 62 65 6c 2d 34 31 36 0d 0a 53 45 4c  t label-416..SEL
12e00 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d  ECT DISTINCT - M
12e10 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f  IN ( DISTINCT co
12e20 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l0 ) AS col0 FRO
12e30 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
12e40 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 0d 0a 6f 6e 6c  ----..-51....onl
12e50 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
12e60 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
12e70 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
12e80 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31  rowsort label-41
12e90 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  7..SELECT ALL + 
12ea0 2b 20 63 6f 6c 30 20 2b 20 43 41 53 54 28 20 4e  + col0 + CAST( N
12eb0 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
12ec0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
12ed0 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
12ee0 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
12ef0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
12f00 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
12f10 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
12f20 6c 2d 34 31 37 0d 0a 53 45 4c 45 43 54 20 41 4c  l-417..SELECT AL
12f30 4c 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 43 41 53  L + + col0 + CAS
12f40 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
12f50 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20  GER ) FROM tab0 
12f60 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
12f70 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
12f80 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
12f90 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
12fa0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
12fb0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31 38 0d  wsort label-418.
12fc0 0a 53 45 4c 45 43 54 20 28 20 43 4f 55 4e 54 28  .SELECT ( COUNT(
12fd0 20 2a 20 29 20 29 20 63 6f 6c 30 20 46 52 4f 4d   * ) ) col0 FROM
12fe0 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
12ff0 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..3....skipif my
13000 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
13010 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
13020 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
13030 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
13040 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
13050 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
13060 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
13070 61 62 65 6c 2d 34 31 38 0d 0a 53 45 4c 45 43 54  abel-418..SELECT
13080 20 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29   ( COUNT ( * ) )
13090 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
130a0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  cor0..----..3...
130b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
130c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 36  ..SELECT ALL - 6
130d0 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20   + col0 AS col1 
130e0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
130f0 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 39 0d 0a  0..----..81..9..
13100 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  91....query I ro
13110 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
13120 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57  col2 FROM tab0 W
13130 48 45 52 45 20 2d 20 2d 20 63 6f 6c 32 20 2a 20  HERE - - col2 * 
13140 2b 20 63 6f 6c 30 20 2b 20 2b 20 2b 20 32 34 20  + col0 + + + 24 
13150 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
13160 2d 0d 0a 2d 31 30 0d 0a 2d 34 37 0d 0a 2d 39 39  -..-10..-47..-99
13170 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
13180 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
13190 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  L * FROM tab1 WH
131a0 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29  ERE NOT ( NULL )
131b0 20 49 53 20 4e 55 4c 4c 20 4f 52 20 28 20 37 32   IS NULL OR ( 72
131c0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 29 0d 0a   IS NOT NULL )..
131d0 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
131e0 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34  ashing to c6c0a4
131f0 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61  111b36d04dbc811a
13200 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75  11e4d54cad....qu
13210 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
13220 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
13230 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 32   - col2 * - col2
13240 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32   + col2 * + col2
13250 20 2a 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d   * + - col2 FROM
13260 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
13270 2b 20 35 38 20 2a 20 2d 20 39 34 20 49 53 20 4e  + 58 * - 94 IS N
13280 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
13290 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
132a0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d  ..SELECT ALL ( -
132b0 20 38 39 20 29 20 41 53 20 63 6f 6c 31 20 46 52   89 ) AS col1 FR
132c0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
132d0 38 39 0d 0a 2d 38 39 0d 0a 2d 38 39 0d 0a 0d 0a  89..-89..-89....
132e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
132f0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
13300 20 28 20 2d 20 31 20 29 20 2b 20 2b 20 63 6f 6c   ( - 1 ) + + col
13310 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
13320 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 32 30  ab0..----..0..20
13330 0d 0a 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..80....query II
13340 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
13350 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30   + col0 * + col0
13360 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46  , col0 AS col0 F
13370 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
13380 32 36 30 31 0d 0a 35 31 0d 0a 37 32 32 35 0d 0a  2601..51..7225..
13390 38 35 0d 0a 38 32 38 31 0d 0a 39 31 0d 0a 0d 0a  85..8281..91....
133a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
133b0 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
133c0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
133d0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
133e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
133f0 65 6c 2d 34 32 36 0d 0a 53 45 4c 45 43 54 20 41  el-426..SELECT A
13400 4c 4c 20 43 4f 55 4e 54 28 20 2b 20 43 41 53 54  LL COUNT( + CAST
13410 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
13420 20 29 20 29 20 2a 20 38 39 20 46 52 4f 4d 20 74   ) ) * 89 FROM t
13430 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ab0..----..0....
13440 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
13450 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
13460 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
13470 61 62 65 6c 2d 34 32 36 0d 0a 53 45 4c 45 43 54  abel-426..SELECT
13480 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2b 20 43   ALL COUNT ( + C
13490 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
134a0 54 45 47 45 52 20 29 20 29 20 2a 20 38 39 20 46  TEGER ) ) * 89 F
134b0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
134c0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
134d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
134e0 20 39 37 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f   97 * col0 AS co
134f0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
13500 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
13510 3d 20 2b 20 32 33 20 2a 20 2d 20 38 34 0d 0a 2d  = + 23 * - 84..-
13520 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
13530 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
13540 49 53 54 49 4e 43 54 20 2d 20 34 39 20 2a 20 2d  ISTINCT - 49 * -
13550 20 37 32 20 2b 20 28 20 2d 20 39 33 20 29 20 2d   72 + ( - 93 ) -
13560 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   - col1 FROM tab
13570 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
13580 0a 33 34 38 36 0d 0a 33 35 30 32 0d 0a 33 35 31  .3486..3502..351
13590 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
135a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
135b0 30 20 2a 20 2b 20 63 6f 6c 30 20 2d 20 2b 20 2b  0 * + col0 - + +
135c0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52   col2 AS col1 FR
135d0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab2..----..2
135e0 30 39 33 0d 0a 34 30 35 36 0d 0a 35 35 36 37 0d  093..4056..5567.
135f0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
13600 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
13610 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
13620 57 48 45 52 45 20 2d 20 63 6f 6c 30 20 49 53 20  WHERE - col0 IS 
13630 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
13640 35 39 0d 0a 36 38 0d 0a 39 36 0d 0a 0d 0a 6f 6e  59..68..96....on
13650 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
13660 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
13670 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
13680 20 6c 61 62 65 6c 2d 34 33 31 0d 0a 53 45 4c 45   label-431..SELE
13690 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e  CT DISTINCT COUN
136a0 54 28 20 2a 20 29 20 2a 20 2d 20 32 38 20 46 52  T( * ) * - 28 FR
136b0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
136c0 0a 2d 2d 2d 2d 0d 0a 2d 38 34 0d 0a 0d 0a 73 6b  .----..-84....sk
136d0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
136e0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
136f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
13700 65 6c 2d 34 33 31 0d 0a 53 45 4c 45 43 54 20 44  el-431..SELECT D
13710 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20  ISTINCT COUNT ( 
13720 2a 20 29 20 2a 20 2d 20 32 38 20 46 52 4f 4d 20  * ) * - 28 FROM 
13730 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
13740 2d 2d 0d 0a 2d 38 34 0d 0a 0d 0a 6f 6e 6c 79 69  --..-84....onlyi
13750 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
13760 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
13770 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
13780 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
13790 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 33  rowsort label-43
137a0 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  2..SELECT ALL + 
137b0 35 32 20 2f 20 2d 20 2b 20 28 20 2b 20 43 41 53  52 / - + ( + CAS
137c0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
137d0 44 20 29 20 29 20 2b 20 2d 20 4d 49 4e 28 20 41  D ) ) + - MIN( A
137e0 4c 4c 20 43 41 53 54 28 20 43 41 53 54 28 20 2d  LL CAST( CAST( -
137f0 20 28 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 53   ( + col1 ) AS S
13800 49 47 4e 45 44 20 29 20 41 53 20 53 49 47 4e 45  IGNED ) AS SIGNE
13810 44 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 20  D ) ) FROM tab0 
13820 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
13830 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
13840 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
13850 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
13860 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 33 32 0d  wsort label-432.
13870 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 35 32  .SELECT ALL + 52
13880 20 2f 20 2d 20 2b 20 28 20 2b 20 43 41 53 54 20   / - + ( + CAST 
13890 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
138a0 52 20 29 20 29 20 2b 20 2d 20 4d 49 4e 20 28 20  R ) ) + - MIN ( 
138b0 41 4c 4c 20 43 41 53 54 20 28 20 43 41 53 54 20  ALL CAST ( CAST 
138c0 28 20 2d 20 28 20 2b 20 63 6f 6c 31 20 29 20 41  ( - ( + col1 ) A
138d0 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 49  S INTEGER ) AS I
138e0 4e 54 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20  NTEGER ) ) FROM 
138f0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
13900 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  --..NULL....only
13910 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
13920 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
13930 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
13940 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
13950 33 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  33..SELECT ALL *
13960 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20   FROM tab1 cor0 
13970 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31  WHERE NOT + col1
13980 20 2d 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 2d 20   - + - col1 + - 
13990 2d 20 63 6f 6c 31 20 3d 20 2b 20 43 41 53 54 28  - col1 = + CAST(
139a0 20 2d 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45   - col2 AS SIGNE
139b0 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  D )..----..9 val
139c0 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
139d0 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62  6c0a4111b36d04db
139e0 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d  c811a11e4d54cad.
139f0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
13a00 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
13a10 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
13a20 6f 72 74 20 6c 61 62 65 6c 2d 34 33 33 0d 0a 53  ort label-433..S
13a30 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
13a40 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
13a50 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 2d 20 2b 20   NOT + col1 - + 
13a60 2d 20 63 6f 6c 31 20 2b 20 2d 20 2d 20 63 6f 6c  - col1 + - - col
13a70 31 20 3d 20 2b 20 43 41 53 54 20 28 20 2d 20 63  1 = + CAST ( - c
13a80 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol2 AS INTEGER )
13a90 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
13aa0 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30   hashing to c6c0
13ab0 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31  a4111b36d04dbc81
13ac0 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a  1a11e4d54cad....
13ad0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
13ae0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31  .SELECT ALL col1
13af0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
13b00 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63  r0 WHERE NOT - c
13b10 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol0 IS NOT NULL.
13b20 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
13b30 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
13b40 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
13b50 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
13b60 4e 4f 54 20 2b 20 38 35 20 2a 20 2b 20 2d 20 63  NOT + 85 * + - c
13b70 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol2 IS NOT NULL.
13b80 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
13b90 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
13ba0 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
13bb0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
13bc0 20 63 6f 6c 30 20 4e 4f 54 20 42 45 54 57 45 45   col0 NOT BETWEE
13bd0 4e 20 2b 20 34 35 20 41 4e 44 20 4e 55 4c 4c 0d  N + 45 AND NULL.
13be0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
13bf0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
13c00 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
13c10 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
13c20 6c 2d 34 33 37 0d 0a 53 45 4c 45 43 54 20 41 4c  l-437..SELECT AL
13c30 4c 20 2b 20 2d 20 53 55 4d 28 20 41 4c 4c 20 63  L + - SUM( ALL c
13c40 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol0 ) AS col0 FR
13c50 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
13c60 0a 2d 2d 2d 2d 0d 0a 2d 32 32 37 0d 0a 0d 0a 73  .----..-227....s
13c70 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
13c80 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
13c90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
13ca0 62 65 6c 2d 34 33 37 0d 0a 53 45 4c 45 43 54 20  bel-437..SELECT 
13cb0 41 4c 4c 20 2b 20 2d 20 53 55 4d 20 28 20 41 4c  ALL + - SUM ( AL
13cc0 4c 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30  L col0 ) AS col0
13cd0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
13ce0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 37 0d 0a  r0..----..-227..
13cf0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
13d00 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
13d10 20 2d 20 63 6f 6c 30 2c 20 63 6f 6c 31 20 41 53   - col0, col1 AS
13d20 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
13d30 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
13d40 35 0d 0a 38 31 0d 0a 38 37 0d 0a 32 31 0d 0a 39  5..81..87..21..9
13d50 37 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  7..1....onlyif m
13d60 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
13d70 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
13d80 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
13d90 2d 34 33 39 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -439..SELECT + C
13da0 4f 55 4e 54 28 20 2b 20 33 32 20 29 20 46 52 4f  OUNT( + 32 ) FRO
13db0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  M tab1..----..3.
13dc0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
13dd0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
13de0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
13df0 74 20 6c 61 62 65 6c 2d 34 33 39 0d 0a 53 45 4c  t label-439..SEL
13e00 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2b 20  ECT + COUNT ( + 
13e10 33 32 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a  32 ) FROM tab1..
13e20 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69  ----..3....onlyi
13e30 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
13e40 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
13e50 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
13e60 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34 30 0d  wsort label-440.
13e70 0a 53 45 4c 45 43 54 20 28 20 2d 20 63 6f 6c 30  .SELECT ( - col0
13e80 20 29 20 44 49 56 20 2b 20 63 6f 6c 30 20 41 53   ) DIV + col0 AS
13e90 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
13ea0 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d  .----..-1..-1..-
13eb0 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
13ec0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
13ed0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
13ee0 6f 72 74 20 6c 61 62 65 6c 2d 34 34 30 0d 0a 53  ort label-440..S
13ef0 45 4c 45 43 54 20 28 20 2d 20 63 6f 6c 30 20 29  ELECT ( - col0 )
13f00 20 2f 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c   / + col0 AS col
13f10 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
13f20 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d  -..-1..-1..-1...
13f30 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
13f40 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
13f50 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
13f60 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
13f70 62 65 6c 2d 34 34 31 0d 0a 53 45 4c 45 43 54 20  bel-441..SELECT 
13f80 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
13f90 57 48 45 52 45 20 37 35 20 2f 20 2b 20 2b 20 43  WHERE 75 / + + C
13fa0 41 53 54 28 20 2d 20 63 6f 6c 32 20 41 53 20 53  AST( - col2 AS S
13fb0 49 47 4e 45 44 20 29 20 3e 3d 20 2d 20 63 6f 6c  IGNED ) >= - col
13fc0 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  2..----..9 value
13fd0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63  s hashing to 75c
13fe0 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62  998aa53ac83218cb
13ff0 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d  f2feb962d0a49...
14000 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
14010 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
14020 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
14030 74 20 6c 61 62 65 6c 2d 34 34 31 0d 0a 53 45 4c  t label-441..SEL
14040 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
14050 61 62 32 20 57 48 45 52 45 20 37 35 20 2f 20 2b  ab2 WHERE 75 / +
14060 20 2b 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 32   + CAST ( - col2
14070 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 3e 3d   AS INTEGER ) >=
14080 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39   - col2..----..9
14090 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
140a0 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38  to 75c998aa53ac8
140b0 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30  3218cbf2feb962d0
140c0 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  a49....query II 
140d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
140e0 41 4c 4c 20 63 6f 6c 31 2c 20 2d 20 63 6f 6c 30  ALL col1, - col0
140f0 20 2a 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 2d 20   * + col1 * + - 
14100 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
14110 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  M tab0..----..1.
14120 0a 39 36 30 33 0d 0a 32 31 0d 0a 31 38 32 37 30  .9603..21..18270
14130 0d 0a 38 31 0d 0a 35 37 31 30 35 0d 0a 0d 0a 6f  ..81..57105....o
14140 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
14150 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
14160 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
14170 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
14180 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
14190 6c 2d 34 34 33 0d 0a 53 45 4c 45 43 54 20 41 4c  l-443..SELECT AL
141a0 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  L + COUNT( * ) *
141b0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49   - COUNT( * ) DI
141c0 56 20 2b 20 2d 20 33 37 20 41 53 20 63 6f 6c 30  V + - 37 AS col0
141d0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
141e0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  r0..----..0....s
141f0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
14200 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
14210 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
14220 62 65 6c 2d 34 34 33 0d 0a 53 45 4c 45 43 54 20  bel-443..SELECT 
14230 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ALL + COUNT ( * 
14240 29 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  ) * - COUNT ( * 
14250 29 20 2f 20 2b 20 2d 20 33 37 20 41 53 20 63 6f  ) / + - 37 AS co
14260 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
14270 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  cor0..----..0...
14280 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14290 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 63 6f 6c  ..SELECT - + col
142a0 31 20 2a 20 2d 20 28 20 63 6f 6c 32 20 29 20 41  1 * - ( col2 ) A
142b0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
142c0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
142d0 32 31 30 0d 0a 33 38 30 37 0d 0a 39 39 0d 0a 0d  210..3807..99...
142e0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
142f0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
14300 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
14310 6f 72 74 20 6c 61 62 65 6c 2d 34 34 35 0d 0a 53  ort label-445..S
14320 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
14330 20 2b 20 2b 20 2d 20 38 37 20 46 52 4f 4d 20 74   + + - 87 FROM t
14340 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
14350 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45 54 57 45  E NOT NULL BETWE
14360 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 38 0d 0a 2d  EN NULL AND 8..-
14370 2d 2d 2d 0d 0a 2d 38 37 0d 0a 0d 0a 73 6b 69 70  ---..-87....skip
14380 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
14390 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
143a0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
143b0 2d 34 34 35 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -445..SELECT COU
143c0 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20 2d 20 38  NT ( * ) + + - 8
143d0 37 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  7 FROM tab2 AS c
143e0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
143f0 4c 4c 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20  LL BETWEEN NULL 
14400 41 4e 44 20 38 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 37  AND 8..----..-87
14410 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
14420 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
14430 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
14440 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32  0 WHERE NOT col2
14450 20 2f 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d   / col0 IS NULL.
14460 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
14470 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32  hashing to c4b42
14480 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34  765dff94eaaa4604
14490 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71  0e537fb43b7....q
144a0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
144b0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
144c0 20 38 34 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c   84, col0 AS col
144d0 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
144e0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 34 0d 0a 31  or0..----..84..1
144f0 35 0d 0a 38 34 0d 0a 38 37 0d 0a 38 34 0d 0a 39  5..84..87..84..9
14500 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
14510 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
14520 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
14530 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34  rowsort label-44
14540 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  8..SELECT ALL + 
14550 4d 49 4e 28 20 2b 20 34 34 20 29 20 46 52 4f 4d  MIN( + 44 ) FROM
14560 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
14570 2d 2d 2d 0d 0a 34 34 0d 0a 0d 0a 73 6b 69 70 69  ---..44....skipi
14580 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
14590 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
145a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
145b0 34 34 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  448..SELECT ALL 
145c0 2b 20 4d 49 4e 20 28 20 2b 20 34 34 20 29 20 46  + MIN ( + 44 ) F
145d0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
145e0 0d 0a 2d 2d 2d 2d 0d 0a 34 34 0d 0a 0d 0a 71 75  ..----..44....qu
145f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
14600 45 4c 45 43 54 20 2d 20 2b 20 28 20 63 6f 6c 32  ELECT - + ( col2
14610 20 29 20 2a 20 32 37 20 2b 20 2d 20 63 6f 6c 30   ) * 27 + - col0
14620 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
14630 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
14640 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2a 20 2d 20   NOT - col0 * - 
14650 35 30 20 2f 20 2d 20 2d 20 63 6f 6c 30 20 49 53  50 / - - col0 IS
14660 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
14670 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
14680 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 63  rt..SELECT - + c
14690 6f 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 2b  ol1 * + - col1 +
146a0 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   + col2 AS col0 
146b0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
146c0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 0d 0a 34 35  0..----..100..45
146d0 31 0d 0a 36 36 30 38 0d 0a 0d 0a 6f 6e 6c 79 69  1..6608....onlyi
146e0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
146f0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
14700 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
14710 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35 31 0d  wsort label-451.
14720 0a 53 45 4c 45 43 54 20 33 36 20 44 49 56 20 2d  .SELECT 36 DIV -
14730 20 39 36 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d   96 FROM tab1..-
14740 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
14750 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
14760 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
14770 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
14780 61 62 65 6c 2d 34 35 31 0d 0a 53 45 4c 45 43 54  abel-451..SELECT
14790 20 33 36 20 2f 20 2d 20 39 36 20 46 52 4f 4d 20   36 / - 96 FROM 
147a0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  tab1..----..0..0
147b0 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..0....onlyif my
147c0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
147d0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
147e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
147f0 34 35 32 0d 0a 53 45 4c 45 43 54 20 2d 20 36 32  452..SELECT - 62
14800 20 2b 20 2b 20 28 20 4d 41 58 28 20 32 33 20 29   + + ( MAX( 23 )
14810 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
14820 2d 2d 0d 0a 2d 33 39 0d 0a 0d 0a 73 6b 69 70 69  --..-39....skipi
14830 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
14840 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
14850 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
14860 34 35 32 0d 0a 53 45 4c 45 43 54 20 2d 20 36 32  452..SELECT - 62
14870 20 2b 20 2b 20 28 20 4d 41 58 20 28 20 32 33 20   + + ( MAX ( 23 
14880 29 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ) ) FROM tab0..-
14890 2d 2d 2d 0d 0a 2d 33 39 0d 0a 0d 0a 6f 6e 6c 79  ---..-39....only
148a0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
148b0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
148c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
148d0 61 62 65 6c 2d 34 35 33 0d 0a 53 45 4c 45 43 54  abel-453..SELECT
148e0 20 41 4c 4c 20 2b 20 2d 20 53 55 4d 28 20 63 6f   ALL + - SUM( co
148f0 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l2 ) AS col1 FRO
14900 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
14910 2d 2d 2d 2d 0d 0a 2d 31 35 36 0d 0a 0d 0a 73 6b  ----..-156....sk
14920 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
14930 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
14940 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
14950 65 6c 2d 34 35 33 0d 0a 53 45 4c 45 43 54 20 41  el-453..SELECT A
14960 4c 4c 20 2b 20 2d 20 53 55 4d 20 28 20 63 6f 6c  LL + - SUM ( col
14970 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  2 ) AS col1 FROM
14980 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
14990 2d 2d 2d 0d 0a 2d 31 35 36 0d 0a 0d 0a 6f 6e 6c  ---..-156....onl
149a0 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
149b0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
149c0 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
149d0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35  rowsort label-45
149e0 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  4..SELECT ALL co
149f0 6c 32 20 2b 20 37 31 20 2d 20 2d 20 63 6f 6c 30  l2 + 71 - - col0
14a00 20 44 49 56 20 2b 20 2d 20 38 39 20 46 52 4f 4d   DIV + - 89 FROM
14a10 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
14a20 0d 0a 31 31 31 0d 0a 31 32 39 0d 0a 39 34 0d 0a  ..111..129..94..
14a30 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
14a40 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
14a50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14a60 20 6c 61 62 65 6c 2d 34 35 34 0d 0a 53 45 4c 45   label-454..SELE
14a70 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 37 31  CT ALL col2 + 71
14a80 20 2d 20 2d 20 63 6f 6c 30 20 2f 20 2b 20 2d 20   - - col0 / + - 
14a90 38 39 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  89 FROM tab2 cor
14aa0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 31 0d 0a 31 32  0..----..111..12
14ab0 39 0d 0a 39 34 0d 0a 0d 0a 71 75 65 72 79 20 49  9..94....query I
14ac0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
14ad0 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
14ae0 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
14af0 20 2b 20 35 36 20 2a 20 63 6f 6c 32 20 3e 3d 20   + 56 * col2 >= 
14b00 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  2..----..9 value
14b10 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63  s hashing to 75c
14b20 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62  998aa53ac83218cb
14b30 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d  f2feb962d0a49...
14b40 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
14b50 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
14b60 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
14b70 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
14b80 36 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  61 IS NULL..----
14b90 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
14ba0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  ort..SELECT + - 
14bb0 39 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  90 AS col2 FROM 
14bc0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
14bd0 2d 2d 0d 0a 2d 39 30 0d 0a 2d 39 30 0d 0a 2d 39  --..-90..-90..-9
14be0 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
14bf0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
14c00 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
14c10 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35  rowsort label-45
14c20 38 0d 0a 53 45 4c 45 43 54 20 36 31 20 2a 20 2b  8..SELECT 61 * +
14c30 20 4d 49 4e 28 20 28 20 2d 20 2d 20 63 6f 6c 31   MIN( ( - - col1
14c40 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41   ) ) FROM tab0 A
14c50 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 31  S cor0..----..61
14c60 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
14c70 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
14c80 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
14c90 72 74 20 6c 61 62 65 6c 2d 34 35 38 0d 0a 53 45  rt label-458..SE
14ca0 4c 45 43 54 20 36 31 20 2a 20 2b 20 4d 49 4e 20  LECT 61 * + MIN 
14cb0 28 20 28 20 2d 20 2d 20 63 6f 6c 31 20 29 20 29  ( ( - - col1 ) )
14cc0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
14cd0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 31 0d 0a 0d 0a  r0..----..61....
14ce0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
14cf0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
14d00 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
14d10 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
14d20 6c 2d 34 35 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-459..SELECT AL
14d30 4c 20 35 32 20 41 53 20 63 6f 6c 31 2c 20 2b 20  L 52 AS col1, + 
14d40 43 41 53 54 28 20 63 6f 6c 31 20 41 53 20 53 49  CAST( col1 AS SI
14d50 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32  GNED ) FROM tab2
14d60 0d 0a 2d 2d 2d 2d 0d 0a 35 32 0d 0a 35 31 0d 0a  ..----..52..51..
14d70 35 32 0d 0a 36 37 0d 0a 35 32 0d 0a 37 37 0d 0a  52..67..52..77..
14d80 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
14d90 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
14da0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
14db0 74 20 6c 61 62 65 6c 2d 34 35 39 0d 0a 53 45 4c  t label-459..SEL
14dc0 45 43 54 20 41 4c 4c 20 35 32 20 41 53 20 63 6f  ECT ALL 52 AS co
14dd0 6c 31 2c 20 2b 20 43 41 53 54 20 28 20 63 6f 6c  l1, + CAST ( col
14de0 31 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46  1 AS INTEGER ) F
14df0 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
14e00 35 32 0d 0a 35 31 0d 0a 35 32 0d 0a 36 37 0d 0a  52..51..52..67..
14e10 35 32 0d 0a 37 37 0d 0a 0d 0a 6f 6e 6c 79 69 66  52..77....onlyif
14e20 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
14e30 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
14e40 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
14e50 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 30 0d 0a  sort label-460..
14e60 53 45 4c 45 43 54 20 38 39 20 2a 20 43 41 53 54  SELECT 89 * CAST
14e70 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
14e80 20 29 20 2a 20 37 30 20 2a 20 28 20 2b 20 63 6f   ) * 70 * ( + co
14e90 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  l0 ) FROM tab2..
14ea0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
14eb0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
14ec0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
14ed0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
14ee0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
14ef0 36 30 0d 0a 53 45 4c 45 43 54 20 38 39 20 2a 20  60..SELECT 89 * 
14f00 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
14f10 4e 54 45 47 45 52 20 29 20 2a 20 37 30 20 2a 20  NTEGER ) * 70 * 
14f20 28 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  ( + col0 ) FROM 
14f30 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab2..----..NULL
14f40 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
14f50 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
14f60 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34 39  .SELECT ALL - 49
14f70 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d   * + + col2 FROM
14f80 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31   tab2..----..-11
14f90 32 37 0d 0a 2d 31 39 36 30 0d 0a 2d 32 38 34 32  27..-1960..-2842
14fa0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
14fb0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
14fc0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
14fd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
14fe0 61 62 65 6c 2d 34 36 32 0d 0a 53 45 4c 45 43 54  abel-462..SELECT
14ff0 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 32 33   DISTINCT + - 23
15000 20 44 49 56 20 2b 20 2d 20 63 6f 6c 31 20 41 53   DIV + - col1 AS
15010 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
15020 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor0..----..0
15030 0d 0a 31 0d 0a 34 0d 0a 0d 0a 73 6b 69 70 69 66  ..1..4....skipif
15040 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
15050 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
15060 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
15070 36 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  62..SELECT DISTI
15080 4e 43 54 20 2b 20 2d 20 32 33 20 2f 20 2b 20 2d  NCT + - 23 / + -
15090 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52   col1 AS col1 FR
150a0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
150b0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 34 0d 0a  .----..0..1..4..
150c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
150d0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
150e0 6c 32 20 2d 20 28 20 2d 20 2b 20 63 6f 6c 31 20  l2 - ( - + col1 
150f0 29 20 2a 20 2d 20 28 20 2d 20 2b 20 39 31 20 29  ) * - ( - + 91 )
15100 20 2a 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   * col2 FROM tab
15110 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  2 cor0..----..10
15120 36 37 36 36 0d 0a 32 38 30 33 32 30 0d 0a 33 35  6766..280320..35
15130 33 36 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  3684....onlyif m
15140 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
15150 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
15160 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d   DECIMAL type: .
15170 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
15180 20 6c 61 62 65 6c 2d 34 36 34 0d 0a 53 45 4c 45   label-464..SELE
15190 43 54 20 2b 20 34 31 20 2b 20 2b 20 2b 20 28 20  CT + 41 + + + ( 
151a0 43 41 53 54 28 20 2b 20 2b 20 43 41 53 54 28 20  CAST( + + CAST( 
151b0 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20  NULL AS DECIMAL 
151c0 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 29 20  ) AS SIGNED ) ) 
151d0 2f 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  / col1 FROM tab1
151e0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
151f0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
15200 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
15210 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
15220 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
15230 72 74 20 6c 61 62 65 6c 2d 34 36 34 0d 0a 53 45  rt label-464..SE
15240 4c 45 43 54 20 2b 20 34 31 20 2b 20 2b 20 2b 20  LECT + 41 + + + 
15250 28 20 43 41 53 54 20 28 20 2b 20 2b 20 43 41 53  ( CAST ( + + CAS
15260 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c  T ( NULL AS REAL
15270 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20   ) AS INTEGER ) 
15280 29 20 2f 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ) / col1 FROM ta
15290 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
152a0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
152b0 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  LL....query III 
152c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
152d0 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
152e0 45 20 4e 4f 54 20 28 20 36 37 20 29 20 2a 20 2d  E NOT ( 67 ) * -
152f0 20 36 39 20 4e 4f 54 20 42 45 54 57 45 45 4e 20   69 NOT BETWEEN 
15300 28 20 63 6f 6c 30 20 29 20 41 4e 44 20 2b 20 63  ( col0 ) AND + c
15310 6f 6c 31 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  ol1 + col0..----
15320 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
15330 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
15340 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
15350 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 36  owsort label-466
15360 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
15370 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 37  T COUNT( * ) * 7
15380 38 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  8 FROM tab0..---
15390 2d 0d 0a 32 33 34 0d 0a 0d 0a 73 6b 69 70 69 66  -..234....skipif
153a0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
153b0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
153c0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
153d0 36 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  66..SELECT DISTI
153e0 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  NCT COUNT ( * ) 
153f0 2a 20 37 38 20 46 52 4f 4d 20 74 61 62 30 0d 0a  * 78 FROM tab0..
15400 2d 2d 2d 2d 0d 0a 32 33 34 0d 0a 0d 0a 71 75 65  ----..234....que
15410 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
15420 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
15430 62 31 20 57 48 45 52 45 20 2d 20 37 20 3d 20 4e  b1 WHERE - 7 = N
15440 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ULL..----....ski
15450 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
15460 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
15470 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
15480 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
15490 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
154a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
154b0 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20 2a 20  STINCT - col2 * 
154c0 28 20 2b 20 35 35 20 29 20 63 6f 6c 31 20 46 52  ( + 55 ) col1 FR
154d0 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
154e0 54 20 28 20 4e 55 4c 4c 20 29 20 3e 20 28 20 2d  T ( NULL ) > ( -
154f0 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col1 )..----...
15500 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
15510 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
15520 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
15530 6f 72 74 20 6c 61 62 65 6c 2d 34 36 39 0d 0a 53  ort label-469..S
15540 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28  ELECT DISTINCT (
15550 20 53 55 4d 28 20 63 6f 6c 30 20 29 20 29 20 41   SUM( col0 ) ) A
15560 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
15570 0d 0a 2d 2d 2d 2d 0d 0a 32 32 37 0d 0a 0d 0a 73  ..----..227....s
15580 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
15590 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
155a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
155b0 62 65 6c 2d 34 36 39 0d 0a 53 45 4c 45 43 54 20  bel-469..SELECT 
155c0 44 49 53 54 49 4e 43 54 20 28 20 53 55 4d 20 28  DISTINCT ( SUM (
155d0 20 63 6f 6c 30 20 29 20 29 20 41 53 20 63 6f 6c   col0 ) ) AS col
155e0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
155f0 2d 0d 0a 32 32 37 0d 0a 0d 0a 73 6b 69 70 69 66  -..227....skipif
15600 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
15610 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
15620 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
15630 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
15640 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
15650 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28  rt..SELECT ALL (
15660 20 2b 20 63 6f 6c 30 20 29 20 63 6f 6c 30 20 46   + col0 ) col0 F
15670 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
15680 4f 54 20 4e 55 4c 4c 20 3e 20 4e 55 4c 4c 0d 0a  OT NULL > NULL..
15690 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
156a0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
156b0 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
156c0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
156d0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
156e0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 31 0d 0a  sort label-471..
156f0 53 45 4c 45 43 54 20 2b 20 35 34 20 2b 20 2b 20  SELECT + 54 + + 
15700 28 20 28 20 43 41 53 54 28 20 2d 20 53 55 4d 28  ( ( CAST( - SUM(
15710 20 41 4c 4c 20 63 6f 6c 30 20 29 20 41 53 20 53   ALL col0 ) AS S
15720 49 47 4e 45 44 20 29 20 29 20 29 20 2f 20 4d 41  IGNED ) ) ) / MA
15730 58 28 20 63 6f 6c 31 20 2a 20 34 30 20 29 20 46  X( col1 * 40 ) F
15740 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
15750 4f 54 20 2b 20 34 33 20 2b 20 2b 20 63 6f 6c 32  OT + 43 + + col2
15760 20 2f 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e   / col2 IS NOT N
15770 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ULL..----..NULL.
15780 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
15790 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
157a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
157b0 74 20 6c 61 62 65 6c 2d 34 37 31 0d 0a 53 45 4c  t label-471..SEL
157c0 45 43 54 20 2b 20 35 34 20 2b 20 2b 20 28 20 28  ECT + 54 + + ( (
157d0 20 43 41 53 54 20 28 20 2d 20 53 55 4d 20 28 20   CAST ( - SUM ( 
157e0 41 4c 4c 20 63 6f 6c 30 20 29 20 41 53 20 49 4e  ALL col0 ) AS IN
157f0 54 45 47 45 52 20 29 20 29 20 29 20 2f 20 4d 41  TEGER ) ) ) / MA
15800 58 20 28 20 63 6f 6c 31 20 2a 20 34 30 20 29 20  X ( col1 * 40 ) 
15810 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
15820 4e 4f 54 20 2b 20 34 33 20 2b 20 2b 20 63 6f 6c  NOT + 43 + + col
15830 32 20 2f 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20  2 / col2 IS NOT 
15840 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
15850 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
15860 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
15870 28 20 39 30 20 29 20 41 53 20 63 6f 6c 32 20 46  ( 90 ) AS col2 F
15880 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
15890 39 30 0d 0a 39 30 0d 0a 39 30 0d 0a 0d 0a 6f 6e  90..90..90....on
158a0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
158b0 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
158c0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
158d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
158e0 37 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  73..SELECT DISTI
158f0 4e 43 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  NCT CAST( NULL A
15900 53 20 53 49 47 4e 45 44 20 29 20 2b 20 43 41 53  S SIGNED ) + CAS
15910 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
15920 44 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  D ) FROM tab1..-
15930 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
15940 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
15950 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
15960 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
15970 6c 2d 34 37 33 0d 0a 53 45 4c 45 43 54 20 44 49  l-473..SELECT DI
15980 53 54 49 4e 43 54 20 43 41 53 54 20 28 20 4e 55  STINCT CAST ( NU
15990 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
159a0 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
159b0 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
159c0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab1..----..NULL
159d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
159e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
159f0 49 4e 43 54 20 33 33 20 41 53 20 63 6f 6c 32 20  INCT 33 AS col2 
15a00 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
15a10 4e 55 4c 4c 20 3c 20 28 20 4e 55 4c 4c 20 29 0d  NULL < ( NULL ).
15a20 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
15a30 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
15a40 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 2b 20 38 37   ALL col2 + + 87
15a50 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
15a60 0d 0a 31 33 34 0d 0a 31 38 36 0d 0a 39 37 0d 0a  ..134..186..97..
15a70 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
15a80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
15a90 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
15aa0 54 20 39 33 20 2a 20 2b 20 63 6f 6c 31 20 49 53  T 93 * + col1 IS
15ab0 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
15ac0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
15ad0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
15ae0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
15af0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 37 0d  wsort label-477.
15b00 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
15b10 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20 2b   MIN( DISTINCT +
15b20 20 28 20 2d 20 63 6f 6c 32 20 29 20 29 20 46 52   ( - col2 ) ) FR
15b30 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
15b40 35 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  58....skipif mys
15b50 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
15b60 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
15b70 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 37 0d 0a  sort label-477..
15b80 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
15b90 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2b  MIN ( DISTINCT +
15ba0 20 28 20 2d 20 63 6f 6c 32 20 29 20 29 20 46 52   ( - col2 ) ) FR
15bb0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
15bc0 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  58....query I ro
15bd0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
15be0 63 6f 6c 31 20 2b 20 2b 20 36 34 20 41 53 20 63  col1 + + 64 AS c
15bf0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
15c00 2d 2d 2d 0d 0a 2d 31 33 0d 0a 2d 33 0d 0a 31 33  ---..-13..-3..13
15c10 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
15c20 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
15c30 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
15c40 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  b1 WHERE NOT + c
15c50 6f 6c 30 20 2a 20 2d 20 33 37 20 4e 4f 54 20 42  ol0 * - 37 NOT B
15c60 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
15c70 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  - col1..----....
15c80 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
15c90 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
15ca0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
15cb0 72 74 20 6c 61 62 65 6c 2d 34 38 30 0d 0a 53 45  rt label-480..SE
15cc0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55  LECT DISTINCT SU
15cd0 4d 28 20 41 4c 4c 20 63 6f 6c 30 20 29 20 41 53  M( ALL col0 ) AS
15ce0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
15cf0 0a 2d 2d 2d 2d 0d 0a 32 32 37 0d 0a 0d 0a 73 6b  .----..227....sk
15d00 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
15d10 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
15d20 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
15d30 65 6c 2d 34 38 30 0d 0a 53 45 4c 45 43 54 20 44  el-480..SELECT D
15d40 49 53 54 49 4e 43 54 20 53 55 4d 20 28 20 41 4c  ISTINCT SUM ( AL
15d50 4c 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31  L col0 ) AS col1
15d60 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
15d70 0d 0a 32 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..227....query I
15d80 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
15d90 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
15da0 62 31 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  b1 WHERE NOT col
15db0 32 20 2b 20 37 36 20 49 4e 20 28 20 63 6f 6c 31  2 + 76 IN ( col1
15dc0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75   )..----..9 valu
15dd0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36  es hashing to c6
15de0 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63  c0a4111b36d04dbc
15df0 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a  811a11e4d54cad..
15e00 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
15e10 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
15e20 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
15e30 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38 32 0d 0a  sort label-482..
15e40 53 45 4c 45 43 54 20 53 55 4d 28 20 2b 20 63 6f  SELECT SUM( + co
15e50 6c 30 20 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20  l0 ) + - COUNT( 
15e60 2a 20 29 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29  * ) * COUNT( * )
15e70 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
15e80 0d 0a 31 37 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..176....skipif 
15e90 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
15ea0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
15eb0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38  rowsort label-48
15ec0 32 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20 28 20  2..SELECT SUM ( 
15ed0 2b 20 63 6f 6c 30 20 29 20 2b 20 2d 20 43 4f 55  + col0 ) + - COU
15ee0 4e 54 20 28 20 2a 20 29 20 2a 20 43 4f 55 4e 54  NT ( * ) * COUNT
15ef0 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32   ( * ) FROM tab2
15f00 0d 0a 2d 2d 2d 2d 0d 0a 31 37 36 0d 0a 0d 0a 71  ..----..176....q
15f10 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
15f20 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
15f30 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
15f40 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29  ERE NOT ( NULL )
15f50 20 3c 3e 20 2d 20 28 20 2b 20 63 6f 6c 32 20 29   <> - ( + col2 )
15f60 20 2d 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d   - + col1..----.
15f70 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
15f80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
15f90 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
15fa0 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20  RE NOT ( NULL ) 
15fb0 3c 20 2d 20 63 6f 6c 31 20 2f 20 36 34 20 2b 20  < - col1 / 64 + 
15fc0 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  + col1..----....
15fd0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
15fe0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 37 31  .SELECT ALL - 71
15ff0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
16000 20 4e 4f 54 20 4e 55 4c 4c 20 3e 3d 20 2d 20 63   NOT NULL >= - c
16010 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 0d 0a 2d 2d  ol0 * - col2..--
16020 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
16030 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
16040 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
16050 45 20 4e 4f 54 20 28 20 63 6f 6c 30 20 2b 20 33  E NOT ( col0 + 3
16060 30 20 29 20 42 45 54 57 45 45 4e 20 2d 20 39 32  0 ) BETWEEN - 92
16070 20 41 4e 44 20 2b 20 63 6f 6c 32 20 2a 20 2d 20   AND + col2 * - 
16080 33 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  32..----..9 valu
16090 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
160a0 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
160b0 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
160c0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
160d0 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
160e0 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
160f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
16100 65 6c 2d 34 38 37 0d 0a 53 45 4c 45 43 54 20 63  el-487..SELECT c
16110 6f 6c 30 20 2b 20 2b 20 28 20 63 6f 6c 30 20 29  ol0 + + ( col0 )
16120 20 44 49 56 20 2d 20 36 37 20 41 53 20 63 6f 6c   DIV - 67 AS col
16130 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
16140 2d 0d 0a 34 36 0d 0a 36 34 0d 0a 37 34 0d 0a 0d  -..46..64..74...
16150 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
16160 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
16170 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
16180 6c 61 62 65 6c 2d 34 38 37 0d 0a 53 45 4c 45 43  label-487..SELEC
16190 54 20 63 6f 6c 30 20 2b 20 2b 20 28 20 63 6f 6c  T col0 + + ( col
161a0 30 20 29 20 2f 20 2d 20 36 37 20 41 53 20 63 6f  0 ) / - 67 AS co
161b0 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
161c0 2d 2d 0d 0a 34 36 0d 0a 36 34 0d 0a 37 34 0d 0a  --..46..64..74..
161d0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
161e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
161f0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
16200 54 20 4e 55 4c 4c 20 49 4e 20 28 20 2d 20 28 20  T NULL IN ( - ( 
16210 63 6f 6c 30 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a  col0 ) )..----..
16220 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16230 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 41  t..SELECT col0 A
16240 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
16250 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20   WHERE ( NULL ) 
16260 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35  IS NULL..----..5
16270 31 0d 0a 38 35 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c  1..85..91....onl
16280 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
16290 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
162a0 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
162b0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
162c0 34 39 30 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  490..SELECT * FR
162d0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
162e0 57 48 45 52 45 20 4e 4f 54 20 2b 20 32 36 20 49  WHERE NOT + 26 I
162f0 4e 20 28 20 63 6f 6c 30 20 2b 20 2d 20 43 41 53  N ( col0 + - CAS
16300 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
16310 44 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73  D ) )..----....s
16320 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
16330 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
16340 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
16350 6c 61 62 65 6c 2d 34 39 30 0d 0a 53 45 4c 45 43  label-490..SELEC
16360 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  T * FROM tab1 AS
16370 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
16380 2b 20 32 36 20 49 4e 20 28 20 63 6f 6c 30 20 2b  + 26 IN ( col0 +
16390 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
163a0 53 20 49 4e 54 45 47 45 52 20 29 20 29 0d 0a 2d  S INTEGER ) )..-
163b0 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
163c0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
163d0 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
163e0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
163f0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
16400 6f 72 74 20 6c 61 62 65 6c 2d 34 39 31 0d 0a 53  ort label-491..S
16410 45 4c 45 43 54 20 2d 20 4d 41 58 28 20 63 6f 6c  ELECT - MAX( col
16420 32 20 29 20 2a 20 38 30 20 2b 20 2d 20 43 4f 55  2 ) * 80 + - COU
16430 4e 54 28 20 2a 20 29 20 44 49 56 20 2d 20 34 32  NT( * ) DIV - 42
16440 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
16450 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 34 30 0d  r0..----..-4640.
16460 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
16470 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
16480 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16490 74 20 6c 61 62 65 6c 2d 34 39 31 0d 0a 53 45 4c  t label-491..SEL
164a0 45 43 54 20 2d 20 4d 41 58 20 28 20 63 6f 6c 32  ECT - MAX ( col2
164b0 20 29 20 2a 20 38 30 20 2b 20 2d 20 43 4f 55 4e   ) * 80 + - COUN
164c0 54 20 28 20 2a 20 29 20 2f 20 2d 20 34 32 20 46  T ( * ) / - 42 F
164d0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
164e0 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 34 30 0d 0a 0d  ..----..-4640...
164f0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
16500 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
16510 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  : DIV for intege
16520 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
16530 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16540 62 65 6c 2d 34 39 32 0d 0a 53 45 4c 45 43 54 20  bel-492..SELECT 
16550 41 4c 4c 20 4d 41 58 28 20 2b 20 38 37 20 29 20  ALL MAX( + 87 ) 
16560 44 49 56 20 2b 20 36 33 20 46 52 4f 4d 20 74 61  DIV + 63 FROM ta
16570 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
16580 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..1....skipif my
16590 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
165a0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
165b0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39 32 0d  wsort label-492.
165c0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 41 58 20  .SELECT ALL MAX 
165d0 28 20 2b 20 38 37 20 29 20 2f 20 2b 20 36 33 20  ( + 87 ) / + 63 
165e0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
165f0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 6f 6e  0..----..1....on
16600 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
16610 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
16620 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
16630 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
16640 39 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  93..SELECT DISTI
16650 4e 43 54 20 2d 20 33 20 44 49 56 20 2d 20 33 30  NCT - 3 DIV - 30
16660 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
16670 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  r0..----..0....s
16680 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
16690 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
166a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
166b0 62 65 6c 2d 34 39 33 0d 0a 53 45 4c 45 43 54 20  bel-493..SELECT 
166c0 44 49 53 54 49 4e 43 54 20 2d 20 33 20 2f 20 2d  DISTINCT - 3 / -
166d0 20 33 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53   30 FROM tab0 AS
166e0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
166f0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
16700 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
16710 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
16720 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39 34 0d 0a  sort label-494..
16730 53 45 4c 45 43 54 20 4d 41 58 28 20 44 49 53 54  SELECT MAX( DIST
16740 49 4e 43 54 20 2d 20 63 6f 6c 32 20 29 20 2a 20  INCT - col2 ) * 
16750 2b 20 38 35 20 46 52 4f 4d 20 74 61 62 32 20 41  + 85 FROM tab2 A
16760 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
16770 20 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 3c 3e 20   col2 * col2 <> 
16780 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
16790 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
167a0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
167b0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
167c0 72 74 20 6c 61 62 65 6c 2d 34 39 34 0d 0a 53 45  rt label-494..SE
167d0 4c 45 43 54 20 4d 41 58 20 28 20 44 49 53 54 49  LECT MAX ( DISTI
167e0 4e 43 54 20 2d 20 63 6f 6c 32 20 29 20 2a 20 2b  NCT - col2 ) * +
167f0 20 38 35 20 46 52 4f 4d 20 74 61 62 32 20 41 53   85 FROM tab2 AS
16800 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
16810 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 3c 3e 20 4e  col2 * col2 <> N
16820 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ULL..----..NULL.
16830 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
16840 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
16850 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
16860 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20  cor0 WHERE col1 
16870 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c  NOT BETWEEN NULL
16880 20 41 4e 44 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d   AND col2..----.
16890 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
168a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
168b0 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
168c0 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55  2 WHERE NOT ( NU
168d0 4c 4c 20 29 20 3e 20 28 20 63 6f 6c 32 20 29 0d  LL ) > ( col2 ).
168e0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
168f0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
16900 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
16910 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
16920 6c 2d 34 39 37 0d 0a 53 45 4c 45 43 54 20 2d 20  l-497..SELECT - 
16930 35 38 20 2a 20 2d 20 28 20 2b 20 43 4f 55 4e 54  58 * - ( + COUNT
16940 28 20 2a 20 29 20 29 20 2b 20 28 20 2b 20 4d 49  ( * ) ) + ( + MI
16950 4e 28 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 29 20  N( ALL + col2 ) 
16960 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ) * - COUNT( * )
16970 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
16980 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  b0 WHERE NULL NO
16990 54 20 42 45 54 57 45 45 4e 20 2d 20 34 39 20 41  T BETWEEN - 49 A
169a0 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e  ND NULL..----..N
169b0 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
169c0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
169d0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
169e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39 37 0d  wsort label-497.
169f0 0a 53 45 4c 45 43 54 20 2d 20 35 38 20 2a 20 2d  .SELECT - 58 * -
16a00 20 28 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   ( + COUNT ( * )
16a10 20 29 20 2b 20 28 20 2b 20 4d 49 4e 20 28 20 41   ) + ( + MIN ( A
16a20 4c 4c 20 2b 20 63 6f 6c 32 20 29 20 29 20 2a 20  LL + col2 ) ) * 
16a30 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  - COUNT ( * ) AS
16a40 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
16a50 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42  WHERE NULL NOT B
16a60 45 54 57 45 45 4e 20 2d 20 34 39 20 41 4e 44 20  ETWEEN - 49 AND 
16a70 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
16a80 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
16a90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
16aa0 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57  FROM tab1 cor0 W
16ab0 48 45 52 45 20 4e 55 4c 4c 20 49 4e 20 28 20 31  HERE NULL IN ( 1
16ac0 39 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  9 )..----....que
16ad0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
16ae0 4c 45 43 54 20 2b 20 37 36 20 2b 20 32 33 20 2a  LECT + 76 + 23 *
16af0 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
16b00 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
16b10 0a 31 34 31 30 0d 0a 36 30 35 0d 0a 39 39 36 0d  .1410..605..996.
16b20 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
16b30 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
16b40 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  ax: DIV for inte
16b50 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
16b60 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
16b70 6c 61 62 65 6c 2d 35 30 30 0d 0a 53 45 4c 45 43  label-500..SELEC
16b80 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 44  T + COUNT( * ) D
16b90 49 56 20 2d 20 4d 49 4e 28 20 2b 20 63 6f 6c 32  IV - MIN( + col2
16ba0 20 29 20 2b 20 2d 20 33 34 20 46 52 4f 4d 20 74   ) + - 34 FROM t
16bb0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
16bc0 2d 0d 0a 2d 33 34 0d 0a 0d 0a 73 6b 69 70 69 66  -..-34....skipif
16bd0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
16be0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
16bf0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
16c00 30 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55  00..SELECT + COU
16c10 4e 54 20 28 20 2a 20 29 20 2f 20 2d 20 4d 49 4e  NT ( * ) / - MIN
16c20 20 28 20 2b 20 63 6f 6c 32 20 29 20 2b 20 2d 20   ( + col2 ) + - 
16c30 33 34 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  34 FROM tab0 AS 
16c40 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 0d  cor0..----..-34.
16c50 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
16c60 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
16c70 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
16c80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16c90 62 65 6c 2d 35 30 31 0d 0a 53 45 4c 45 43 54 20  bel-501..SELECT 
16ca0 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
16cb0 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 32  SIGNED ) AS col2
16cc0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
16cd0 72 30 20 57 48 45 52 45 20 63 6f 6c 32 20 2b 20  r0 WHERE col2 + 
16ce0 34 35 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  45 IS NOT NULL..
16cf0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
16d00 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
16d10 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
16d20 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
16d30 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
16d40 30 31 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53  01..SELECT - CAS
16d50 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
16d60 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20 46 52  GER ) AS col2 FR
16d70 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
16d80 57 48 45 52 45 20 63 6f 6c 32 20 2b 20 34 35 20  WHERE col2 + 45 
16d90 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
16da0 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
16db0 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
16dc0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
16dd0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
16de0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16df0 74 20 6c 61 62 65 6c 2d 35 30 32 0d 0a 53 45 4c  t label-502..SEL
16e00 45 43 54 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63  ECT - col1 * + c
16e10 6f 6c 30 20 2b 20 2d 20 63 6f 6c 30 20 44 49 56  ol0 + - col0 DIV
16e20 20 2b 20 28 20 2d 20 63 6f 6c 31 20 29 20 46 52   + ( - col1 ) FR
16e30 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
16e40 57 48 45 52 45 20 2b 20 34 35 20 3c 3d 20 63 6f  WHERE + 45 <= co
16e50 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 34 36 0d  l0..----..-2346.
16e60 0a 2d 34 39 32 38 0d 0a 2d 35 30 32 34 0d 0a 0d  .-4928..-5024...
16e70 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
16e80 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
16e90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
16ea0 6c 61 62 65 6c 2d 35 30 32 0d 0a 53 45 4c 45 43  label-502..SELEC
16eb0 54 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c  T - col1 * + col
16ec0 30 20 2b 20 2d 20 63 6f 6c 30 20 2f 20 2b 20 28  0 + - col0 / + (
16ed0 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74   - col1 ) FROM t
16ee0 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
16ef0 45 20 2b 20 34 35 20 3c 3d 20 63 6f 6c 30 0d 0a  E + 45 <= col0..
16f00 2d 2d 2d 2d 0d 0a 2d 32 33 34 36 0d 0a 2d 34 39  ----..-2346..-49
16f10 32 38 0d 0a 2d 35 30 32 34 0d 0a 0d 0a 6f 6e 6c  28..-5024....onl
16f20 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
16f30 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
16f40 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
16f50 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 30  rowsort label-50
16f60 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  3..SELECT DISTIN
16f70 43 54 20 2d 20 2d 20 35 34 20 2b 20 63 6f 6c 32  CT - - 54 + col2
16f80 20 44 49 56 20 2d 20 63 6f 6c 30 20 46 52 4f 4d   DIV - col0 FROM
16f90 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
16fa0 2d 2d 2d 0d 0a 35 34 0d 0a 0d 0a 73 6b 69 70 69  ---..54....skipi
16fb0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
16fc0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
16fd0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
16fe0 35 30 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  503..SELECT DIST
16ff0 49 4e 43 54 20 2d 20 2d 20 35 34 20 2b 20 63 6f  INCT - - 54 + co
17000 6c 32 20 2f 20 2d 20 63 6f 6c 30 20 46 52 4f 4d  l2 / - col0 FROM
17010 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
17020 2d 2d 2d 0d 0a 35 34 0d 0a 0d 0a 73 6b 69 70 69  ---..54....skipi
17030 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
17040 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
17050 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
17060 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
17070 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
17080 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
17090 49 4e 43 54 20 2b 20 39 37 20 2b 20 2b 20 28 20  INCT + 97 + + ( 
170a0 2d 20 28 20 63 6f 6c 32 20 29 20 29 20 63 6f 6c  - ( col2 ) ) col
170b0 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
170c0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 39 0d 0a 35  or0..----..39..5
170d0 37 0d 0a 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49  7..74....query I
170e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
170f0 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f   DISTINCT - - co
17100 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 2d 20 63 6f  l0 * - col0 - co
17110 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
17120 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
17130 0a 2d 32 36 31 35 0d 0a 2d 37 32 33 30 0d 0a 2d  .-2615..-7230..-
17140 38 33 32 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49  8328....query II
17150 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
17160 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  T * FROM tab1 AS
17170 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
17180 20 3c 3d 20 39 36 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a   <= 96..----....
17190 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
171a0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
171b0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
171c0 45 52 45 20 63 6f 6c 30 20 3e 20 28 20 63 6f 6c  ERE col0 > ( col
171d0 31 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d  1 + col0 )..----
171e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
171f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
17200 63 6f 6c 30 20 2d 20 2d 20 63 6f 6c 30 20 41 53  col0 - - col0 AS
17210 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
17220 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
17230 37 34 0d 0a 31 39 34 0d 0a 33 30 0d 0a 0d 0a 71  74..194..30....q
17240 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
17250 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20  SELECT ALL col2 
17260 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
17270 2b 20 63 6f 6c 32 20 2b 20 28 20 2d 20 63 6f 6c  + col2 + ( - col
17280 32 20 29 20 3e 20 28 20 2d 20 34 37 20 29 0d 0a  2 ) > ( - 47 )..
17290 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a 39 39  ----..10..47..99
172a0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
172b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
172c0 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
172d0 62 30 20 57 48 45 52 45 20 28 20 28 20 2d 20 63  b0 WHERE ( ( - c
172e0 6f 6c 31 20 29 20 2a 20 2b 20 63 6f 6c 30 20 29  ol1 ) * + col0 )
172f0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
17300 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
17310 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35  hing to c4b42765
17320 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35  dff94eaaa46040e5
17330 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72  37fb43b7....quer
17340 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
17350 45 43 54 20 37 34 20 41 53 20 63 6f 6c 30 20 46  ECT 74 AS col0 F
17360 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
17370 55 4c 4c 20 3d 20 63 6f 6c 32 20 2b 20 2d 20 63  ULL = col2 + - c
17380 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol1..----....que
17390 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
173a0 4c 45 43 54 20 41 4c 4c 20 2d 20 37 31 20 2b 20  LECT ALL - 71 + 
173b0 63 6f 6c 31 20 2b 20 2d 20 38 36 20 41 53 20 63  col1 + - 86 AS c
173c0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
173d0 2d 2d 2d 0d 0a 2d 31 33 36 0d 0a 2d 31 35 36 0d  ---..-136..-156.
173e0 0a 2d 37 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-76....onlyif m
173f0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
17400 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
17410 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
17420 72 74 20 6c 61 62 65 6c 2d 35 31 33 0d 0a 53 45  rt label-513..SE
17430 4c 45 43 54 20 2d 20 34 35 20 2b 20 2d 20 2b 20  LECT - 45 + - + 
17440 43 41 53 54 28 20 63 6f 6c 32 20 41 53 20 53 49  CAST( col2 AS SI
17450 47 4e 45 44 20 29 20 2a 20 2d 20 63 6f 6c 32 20  GNED ) * - col2 
17460 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
17470 0a 32 31 36 34 0d 0a 35 35 0d 0a 39 37 35 36 0d  .2164..55..9756.
17480 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
17490 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
174a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
174b0 74 20 6c 61 62 65 6c 2d 35 31 33 0d 0a 53 45 4c  t label-513..SEL
174c0 45 43 54 20 2d 20 34 35 20 2b 20 2d 20 2b 20 43  ECT - 45 + - + C
174d0 41 53 54 20 28 20 63 6f 6c 32 20 41 53 20 49 4e  AST ( col2 AS IN
174e0 54 45 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 32  TEGER ) * - col2
174f0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
17500 0d 0a 32 31 36 34 0d 0a 35 35 0d 0a 39 37 35 36  ..2164..55..9756
17510 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
17520 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
17530 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
17540 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 34  owsort label-514
17550 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
17560 54 20 28 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a  T ( - - COUNT( *
17570 20 29 20 29 20 2d 20 2d 20 28 20 34 35 20 29 20   ) ) - - ( 45 ) 
17580 2a 20 37 38 20 46 52 4f 4d 20 74 61 62 32 0d 0a  * 78 FROM tab2..
17590 2d 2d 2d 2d 0d 0a 33 35 31 33 0d 0a 0d 0a 73 6b  ----..3513....sk
175a0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
175b0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
175c0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
175d0 65 6c 2d 35 31 34 0d 0a 53 45 4c 45 43 54 20 44  el-514..SELECT D
175e0 49 53 54 49 4e 43 54 20 28 20 2d 20 2d 20 43 4f  ISTINCT ( - - CO
175f0 55 4e 54 20 28 20 2a 20 29 20 29 20 2d 20 2d 20  UNT ( * ) ) - - 
17600 28 20 34 35 20 29 20 2a 20 37 38 20 46 52 4f 4d  ( 45 ) * 78 FROM
17610 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 35 31   tab2..----..351
17620 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  3....onlyif mysq
17630 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
17640 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
17650 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31  rowsort label-51
17660 35 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28  5..SELECT COUNT(
17670 20 2a 20 29 20 2a 20 2b 20 32 34 20 41 53 20 63   * ) * + 24 AS c
17680 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol0 FROM tab1 WH
17690 45 52 45 20 28 20 63 6f 6c 30 20 29 20 49 4e 20  ERE ( col0 ) IN 
176a0 28 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a  ( col0 )..----..
176b0 37 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  72....skipif mys
176c0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
176d0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
176e0 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 35 0d 0a  sort label-515..
176f0 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a  SELECT COUNT ( *
17700 20 29 20 2a 20 2b 20 32 34 20 41 53 20 63 6f 6c   ) * + 24 AS col
17710 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  0 FROM tab1 WHER
17720 45 20 28 20 63 6f 6c 30 20 29 20 49 4e 20 28 20  E ( col0 ) IN ( 
17730 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 37 32  col0 )..----..72
17740 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
17750 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
17760 2d 20 63 6f 6c 30 20 2d 20 2d 20 63 6f 6c 30 20  - col0 - - col0 
17770 2a 20 39 35 20 41 53 20 63 6f 6c 30 20 46 52 4f  * 95 AS col0 FRO
17780 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 33  M tab2..----..43
17790 32 34 0d 0a 36 30 31 36 0d 0a 37 30 35 30 0d 0a  24..6016..7050..
177a0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
177b0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
177c0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
177d0 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 37 0d 0a  sort label-517..
177e0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55  SELECT ALL - COU
177f0 4e 54 28 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f  NT( + col0 ) FRO
17800 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab1..----..-3
17810 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
17820 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
17830 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
17840 72 74 20 6c 61 62 65 6c 2d 35 31 37 0d 0a 53 45  rt label-517..SE
17850 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54  LECT ALL - COUNT
17860 20 28 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d   ( + col0 ) FROM
17870 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   tab1..----..-3.
17880 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
17890 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
178a0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
178b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
178c0 62 65 6c 2d 35 31 38 0d 0a 53 45 4c 45 43 54 20  bel-518..SELECT 
178d0 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32 20  + col2 * + col2 
178e0 44 49 56 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  DIV + col2 AS co
178f0 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
17900 2d 2d 0d 0a 32 33 0d 0a 34 30 0d 0a 35 38 0d 0a  --..23..40..58..
17910 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
17920 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
17930 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17940 20 6c 61 62 65 6c 2d 35 31 38 0d 0a 53 45 4c 45   label-518..SELE
17950 43 54 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f  CT + col2 * + co
17960 6c 32 20 2f 20 2b 20 63 6f 6c 32 20 41 53 20 63  l2 / + col2 AS c
17970 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
17980 2d 2d 2d 0d 0a 32 33 0d 0a 34 30 0d 0a 35 38 0d  ---..23..40..58.
17990 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
179a0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
179b0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
179c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 39 0d  wsort label-519.
179d0 0a 53 45 4c 45 43 54 20 4d 49 4e 28 20 41 4c 4c  .SELECT MIN( ALL
179e0 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62   col0 ) FROM tab
179f0 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 31 20 2f  0 WHERE + col1 /
17a00 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 49 53 20   col1 + col1 IS 
17a10 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  NULL..----..NULL
17a20 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
17a30 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
17a40 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
17a50 72 74 20 6c 61 62 65 6c 2d 35 31 39 0d 0a 53 45  rt label-519..SE
17a60 4c 45 43 54 20 4d 49 4e 20 28 20 41 4c 4c 20 63  LECT MIN ( ALL c
17a70 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ol0 ) FROM tab0 
17a80 57 48 45 52 45 20 2b 20 63 6f 6c 31 20 2f 20 63  WHERE + col1 / c
17a90 6f 6c 31 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55  ol1 + col1 IS NU
17aa0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  LL..----..NULL..
17ab0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
17ac0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 36 30  t..SELECT ALL 60
17ad0 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74   * + col2 FROM t
17ae0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 35 34 30 0d  ab1..----..3540.
17af0 0a 34 30 38 30 0d 0a 35 37 36 30 0d 0a 0d 0a 71  .4080..5760....q
17b00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
17b10 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2a 20  SELECT - col1 * 
17b20 37 34 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  74 FROM tab0..--
17b30 2d 2d 0d 0a 2d 31 35 35 34 0d 0a 2d 35 39 39 34  --..-1554..-5994
17b40 0d 0a 2d 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-74....query I
17b50 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
17b60 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
17b70 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 4e 4f  HERE ( NULL ) NO
17b80 54 20 49 4e 20 28 20 34 38 20 29 0d 0a 2d 2d 2d  T IN ( 48 )..---
17b90 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  -....skipif post
17ba0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
17bb0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
17bc0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
17bd0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
17be0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
17bf0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32  ELECT ALL + col2
17c00 20 2a 20 2b 20 28 20 63 6f 6c 31 20 29 20 63 6f   * + ( col1 ) co
17c10 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
17c20 2d 2d 0d 0a 32 31 30 0d 0a 33 38 30 37 0d 0a 39  --..210..3807..9
17c30 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
17c40 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
17c50 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
17c60 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32  rowsort label-52
17c70 34 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28  4..SELECT COUNT(
17c80 20 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   0 ) AS col1 FRO
17c90 4d 20 74 61 62 32 20 57 48 45 52 45 20 2d 20 63  M tab2 WHERE - c
17ca0 6f 6c 30 20 2b 20 63 6f 6c 30 20 49 53 20 4e 55  ol0 + col0 IS NU
17cb0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  LL..----..0....s
17cc0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
17cd0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
17ce0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
17cf0 62 65 6c 2d 35 32 34 0d 0a 53 45 4c 45 43 54 20  bel-524..SELECT 
17d00 43 4f 55 4e 54 20 28 20 30 20 29 20 41 53 20 63  COUNT ( 0 ) AS c
17d10 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol1 FROM tab2 WH
17d20 45 52 45 20 2d 20 63 6f 6c 30 20 2b 20 63 6f 6c  ERE - col0 + col
17d30 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
17d40 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  .0....query III 
17d50 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
17d60 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
17d70 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 63  tab0 WHERE NOT c
17d80 6f 6c 32 20 3c 20 34 39 20 2f 20 63 6f 6c 32 0d  ol2 < 49 / col2.
17d90 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
17da0 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32  hashing to c4b42
17db0 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34  765dff94eaaa4604
17dc0 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71  0e537fb43b7....q
17dd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
17de0 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20 2b 20  SELECT col0 * + 
17df0 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  - col2 AS col1 F
17e00 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
17e10 2d 37 30 35 0d 0a 2d 38 37 30 0d 0a 2d 39 36 30  -705..-870..-960
17e20 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
17e30 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28  sort..SELECT + (
17e40 20 2d 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d   - - col1 ) FROM
17e50 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d   tab1..----..14.
17e60 0a 34 37 0d 0a 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  .47..5....onlyif
17e70 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
17e80 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
17e90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
17ea0 65 6c 2d 35 32 38 0d 0a 53 45 4c 45 43 54 20 2b  el-528..SELECT +
17eb0 20 34 37 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29   47 * COUNT( * )
17ec0 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52   + COUNT( * ) FR
17ed0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
17ee0 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c  WHERE NOT NULL <
17ef0 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  > NULL..----..0.
17f00 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
17f10 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
17f20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
17f30 74 20 6c 61 62 65 6c 2d 35 32 38 0d 0a 53 45 4c  t label-528..SEL
17f40 45 43 54 20 2b 20 34 37 20 2a 20 43 4f 55 4e 54  ECT + 47 * COUNT
17f50 20 28 20 2a 20 29 20 2b 20 43 4f 55 4e 54 20 28   ( * ) + COUNT (
17f60 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   * ) FROM tab1 A
17f70 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
17f80 20 4e 55 4c 4c 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d   NULL <> NULL..-
17f90 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
17fa0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
17fb0 54 20 44 49 53 54 49 4e 43 54 20 37 39 20 2b 20  T DISTINCT 79 + 
17fc0 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  - col2 FROM tab0
17fd0 20 57 48 45 52 45 20 2d 20 28 20 2b 20 63 6f 6c   WHERE - ( + col
17fe0 31 20 29 20 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d  1 ) <= NULL..---
17ff0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
18000 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
18010 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 2a 20 2b  TINCT + col2 * +
18020 20 2b 20 36 35 20 41 53 20 63 6f 6c 30 20 46 52   + 65 AS col0 FR
18030 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab0..----..3
18040 30 35 35 0d 0a 36 34 33 35 0d 0a 36 35 30 0d 0a  055..6435..650..
18050 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
18060 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
18070 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
18080 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
18090 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
180a0 61 62 65 6c 2d 35 33 31 0d 0a 53 45 4c 45 43 54  abel-531..SELECT
180b0 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e   DISTINCT + COUN
180c0 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46  T( * ) AS col0 F
180d0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
180e0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30   CROSS JOIN tab0
180f0 20 41 53 20 63 6f 72 31 20 57 48 45 52 45 20 4e   AS cor1 WHERE N
18100 4f 54 20 28 20 43 41 53 54 28 20 4e 55 4c 4c 20  OT ( CAST( NULL 
18110 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 49 53  AS SIGNED ) ) IS
18120 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
18130 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .9....skipif mys
18140 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
18150 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
18160 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 31 0d 0a  sort label-531..
18170 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
18180 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  + COUNT ( * ) AS
18190 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
181a0 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
181b0 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 20  IN tab0 AS cor1 
181c0 57 48 45 52 45 20 4e 4f 54 20 28 20 43 41 53 54  WHERE NOT ( CAST
181d0 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
181e0 45 52 20 29 20 29 20 49 53 20 4e 4f 54 20 4e 55  ER ) ) IS NOT NU
181f0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 6f  LL..----..9....o
18200 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
18210 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
18220 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
18230 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
18240 35 33 32 0d 0a 53 45 4c 45 43 54 20 2b 20 36 32  532..SELECT + 62
18250 20 44 49 56 20 63 6f 6c 32 20 41 53 20 63 6f 6c   DIV col2 AS col
18260 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  2 FROM tab2 WHER
18270 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f  E NOT NULL IS NO
18280 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  T NULL..----..1.
18290 0a 31 0d 0a 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  .1..2....skipif 
182a0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
182b0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
182c0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33  rowsort label-53
182d0 32 0d 0a 53 45 4c 45 43 54 20 2b 20 36 32 20 2f  2..SELECT + 62 /
182e0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
182f0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
18300 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  T NULL IS NOT NU
18310 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a  LL..----..1..1..
18320 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  2....query II ro
18330 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
18340 36 39 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32  69, col0 AS col2
18350 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
18360 0a 2d 2d 2d 2d 0d 0a 2d 36 39 0d 0a 35 31 0d 0a  .----..-69..51..
18370 2d 36 39 0d 0a 38 35 0d 0a 2d 36 39 0d 0a 39 31  -69..85..-69..91
18380 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
18390 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
183a0 54 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 30 20 41  TINCT + - col0 A
183b0 53 20 63 6f 6c 31 2c 20 2d 20 28 20 2b 20 63 6f  S col1, - ( + co
183c0 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  l2 ) FROM tab0 A
183d0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
183e0 35 0d 0a 2d 34 37 0d 0a 2d 38 37 0d 0a 2d 31 30  5..-47..-87..-10
183f0 0d 0a 2d 39 37 0d 0a 2d 39 39 0d 0a 0d 0a 6f 6e  ..-97..-99....on
18400 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
18410 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
18420 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
18430 20 6c 61 62 65 6c 2d 35 33 35 0d 0a 53 45 4c 45   label-535..SELE
18440 43 54 20 41 4c 4c 20 2d 20 28 20 2b 20 43 4f 55  CT ALL - ( + COU
18450 4e 54 28 20 2a 20 29 20 29 20 2a 20 2d 20 32 36  NT( * ) ) * - 26
18460 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
18470 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
18480 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  L IS NULL..----.
18490 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
184a0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
184b0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
184c0 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 35 0d 0a  sort label-535..
184d0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 28 20 2b  SELECT ALL - ( +
184e0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 2a   COUNT ( * ) ) *
184f0 20 2d 20 32 36 20 46 52 4f 4d 20 74 61 62 31 20   - 26 FROM tab1 
18500 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
18510 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a  T NULL IS NULL..
18520 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ----..0....query
18530 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
18540 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
18550 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
18560 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55  0 WHERE NOT ( NU
18570 4c 4c 20 29 20 42 45 54 57 45 45 4e 20 4e 55 4c  LL ) BETWEEN NUL
18580 4c 20 41 4e 44 20 2b 20 2b 20 63 6f 6c 31 0d 0a  L AND + + col1..
18590 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
185a0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
185b0 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72   syntax: DIV for
185c0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
185d0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
185e0 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 37 0d 0a  sort label-537..
185f0 53 45 4c 45 43 54 20 2d 20 2d 20 38 34 20 44 49  SELECT - - 84 DI
18600 56 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  V - COUNT( * ) A
18610 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
18620 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
18630 2d 32 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -28....skipif my
18640 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
18650 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
18660 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 37 0d  wsort label-537.
18670 0a 53 45 4c 45 43 54 20 2d 20 2d 20 38 34 20 2f  .SELECT - - 84 /
18680 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
18690 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
186a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
186b0 2d 32 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -28....query I r
186c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
186d0 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2b  ISTINCT + col0 +
186e0 20 2b 20 33 31 20 46 52 4f 4d 20 74 61 62 30 20   + 31 FROM tab0 
186f0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
18700 54 20 2d 20 31 31 20 49 53 20 4e 55 4c 4c 0d 0a  T - 11 IS NULL..
18710 2d 2d 2d 2d 0d 0a 31 31 38 0d 0a 31 32 38 0d 0a  ----..118..128..
18720 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  46....query III 
18730 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
18740 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
18750 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  or0 WHERE NOT ( 
18760 33 35 20 2b 20 2b 20 39 35 20 29 20 3d 20 2b 20  35 + + 95 ) = + 
18770 63 6f 6c 32 20 2a 20 63 6f 6c 32 0d 0a 2d 2d 2d  col2 * col2..---
18780 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
18790 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35 64  ing to c4b42765d
187a0 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35 33  ff94eaaa46040e53
187b0 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79  7fb43b7....query
187c0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
187d0 43 54 20 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c 31  CT + col1 + col1
187e0 20 2a 20 38 35 20 41 53 20 63 6f 6c 32 20 46 52   * 85 AS col2 FR
187f0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
18800 57 48 45 52 45 20 4e 4f 54 20 28 20 39 35 20 2d  WHERE NOT ( 95 -
18810 20 2b 20 28 20 2b 20 63 6f 6c 31 20 29 20 29 20   + ( + col1 ) ) 
18820 3c 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c  < + col1 * - col
18830 32 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  2 + col1..----..
18840 34 33 38 36 0d 0a 35 37 36 32 0d 0a 36 36 32 32  4386..5762..6622
18850 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
18860 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
18870 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74  tax: DIV for int
18880 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
18890 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
188a0 20 6c 61 62 65 6c 2d 35 34 31 0d 0a 53 45 4c 45   label-541..SELE
188b0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20  CT DISTINCT - - 
188c0 28 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ( + + COUNT( * )
188d0 20 29 20 44 49 56 20 2b 20 35 30 20 46 52 4f 4d   ) DIV + 50 FROM
188e0 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
188f0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
18900 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
18910 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
18920 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34 31 0d  wsort label-541.
18930 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
18940 20 2d 20 2d 20 28 20 2b 20 2b 20 43 4f 55 4e 54   - - ( + + COUNT
18950 20 28 20 2a 20 29 20 29 20 2f 20 2b 20 35 30 20   ( * ) ) / + 50 
18960 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a  FROM tab2 cor0..
18970 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ----..0....query
18980 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
18990 43 54 20 28 20 63 6f 6c 30 20 29 20 2a 20 2d 20  CT ( col0 ) * - 
189a0 28 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f  ( + col1 ) AS co
189b0 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
189c0 2d 2d 0d 0a 2d 34 32 35 0d 0a 2d 34 32 37 37 0d  --..-425..-4277.
189d0 0a 2d 37 31 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .-714....onlyif 
189e0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
189f0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
18a00 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
18a10 6c 2d 35 34 33 0d 0a 53 45 4c 45 43 54 20 4d 41  l-543..SELECT MA
18a20 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20 32 34  X( DISTINCT + 24
18a30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
18a40 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a  tab0..----..24..
18a50 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
18a60 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
18a70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
18a80 20 6c 61 62 65 6c 2d 35 34 33 0d 0a 53 45 4c 45   label-543..SELE
18a90 43 54 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43  CT MAX ( DISTINC
18aa0 54 20 2b 20 32 34 20 29 20 41 53 20 63 6f 6c 32  T + 24 ) AS col2
18ab0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
18ac0 0d 0a 32 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..24....onlyif m
18ad0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
18ae0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
18af0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
18b00 2d 35 34 34 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -544..SELECT COU
18b10 4e 54 28 20 2d 20 63 6f 6c 31 20 29 20 41 53 20  NT( - col1 ) AS 
18b20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
18b30 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ----..3....skipi
18b40 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
18b50 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
18b60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
18b70 35 34 34 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  544..SELECT COUN
18b80 54 20 28 20 2d 20 63 6f 6c 31 20 29 20 41 53 20  T ( - col1 ) AS 
18b90 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
18ba0 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69  ----..3....onlyi
18bb0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
18bc0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
18bd0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
18be0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34 35 0d  wsort label-545.
18bf0 0a 53 45 4c 45 43 54 20 28 20 43 41 53 54 28 20  .SELECT ( CAST( 
18c00 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20 29  col2 AS SIGNED )
18c10 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d   ) FROM tab1..--
18c20 2d 2d 0d 0a 35 39 0d 0a 36 38 0d 0a 39 36 0d 0a  --..59..68..96..
18c30 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
18c40 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
18c50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
18c60 20 6c 61 62 65 6c 2d 35 34 35 0d 0a 53 45 4c 45   label-545..SELE
18c70 43 54 20 28 20 43 41 53 54 20 28 20 63 6f 6c 32  CT ( CAST ( col2
18c80 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
18c90 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
18ca0 0a 35 39 0d 0a 36 38 0d 0a 39 36 0d 0a 0d 0a 71  .59..68..96....q
18cb0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
18cc0 53 45 4c 45 43 54 20 37 33 20 2a 20 2d 20 63 6f  SELECT 73 * - co
18cd0 6c 32 20 2b 20 2d 20 35 33 20 2a 20 2b 20 63 6f  l2 + - 53 * + co
18ce0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l0 FROM tab1 WHE
18cf0 52 45 20 4e 4f 54 20 32 35 20 49 53 20 4e 55 4c  RE NOT 25 IS NUL
18d00 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 38 31 32 0d 0a  L..----..-8812..
18d10 2d 39 37 31 31 0d 0a 2d 39 37 38 37 0d 0a 0d 0a  -9711..-9787....
18d20 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
18d30 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
18d40 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
18d50 72 74 20 6c 61 62 65 6c 2d 35 34 37 0d 0a 53 45  rt label-547..SE
18d60 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f  LECT DISTINCT CO
18d70 55 4e 54 28 20 2a 20 29 20 2b 20 35 36 20 41 53  UNT( * ) + 56 AS
18d80 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
18d90 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 0d 0a 73 6b 69  .----..59....ski
18da0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
18db0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
18dc0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
18dd0 6c 2d 35 34 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-547..SELECT DI
18de0 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a  STINCT COUNT ( *
18df0 20 29 20 2b 20 35 36 20 41 53 20 63 6f 6c 31 20   ) + 56 AS col1 
18e00 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
18e10 0a 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .59....query III
18e20 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
18e30 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
18e40 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
18e50 20 4e 55 4c 4c 20 29 20 3c 3d 20 63 6f 6c 32 0d   NULL ) <= col2.
18e60 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
18e70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
18e80 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 41 53 20 63   ALL - col0 AS c
18e90 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
18ea0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
18eb0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
18ec0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
18ed0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39 20  wsort..SELECT 9 
18ee0 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  + col2 AS col1 F
18ef0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
18f00 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20   WHERE ( NULL ) 
18f10 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44  BETWEEN NULL AND
18f20 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
18f30 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
18f40 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
18f50 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
18f60 52 45 20 34 30 20 2b 20 2b 20 63 6f 6c 32 20 2a  RE 40 + + col2 *
18f70 20 63 6f 6c 31 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d   col1 >= NULL..-
18f80 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
18f90 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
18fa0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
18fb0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18fc0 74 20 6c 61 62 65 6c 2d 35 35 32 0d 0a 53 45 4c  t label-552..SEL
18fd0 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 43  ECT ALL col2 + C
18fe0 41 53 54 28 20 2b 20 38 34 20 41 53 20 53 49 47  AST( + 84 AS SIG
18ff0 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20  NED ) FROM tab1 
19000 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
19010 34 33 0d 0a 31 35 32 0d 0a 31 38 30 0d 0a 0d 0a  43..152..180....
19020 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
19030 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
19040 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
19050 61 62 65 6c 2d 35 35 32 0d 0a 53 45 4c 45 43 54  abel-552..SELECT
19060 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 43 41 53 54   ALL col2 + CAST
19070 20 28 20 2b 20 38 34 20 41 53 20 49 4e 54 45 47   ( + 84 AS INTEG
19080 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  ER ) FROM tab1 A
19090 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34  S cor0..----..14
190a0 33 0d 0a 31 35 32 0d 0a 31 38 30 0d 0a 0d 0a 71  3..152..180....q
190b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
190c0 53 45 4c 45 43 54 20 31 38 20 2b 20 2b 20 63 6f  SELECT 18 + + co
190d0 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
190e0 2d 2d 0d 0a 31 30 33 0d 0a 31 30 39 0d 0a 36 39  --..103..109..69
190f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
19100 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
19110 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 46 52 4f 4d  l0 * - col1 FROM
19120 20 74 61 62 31 20 57 48 45 52 45 20 28 20 4e 55   tab1 WHERE ( NU
19130 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  LL ) IS NULL..--
19140 2d 2d 0d 0a 2d 34 32 35 0d 0a 2d 34 32 37 37 0d  --..-425..-4277.
19150 0a 2d 37 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49  .-714....query I
19160 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
19170 20 41 4c 4c 20 2b 20 28 20 2d 20 37 31 20 29 20   ALL + ( - 71 ) 
19180 2b 20 2b 20 2b 20 39 35 20 46 52 4f 4d 20 74 61  + + + 95 FROM ta
19190 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
191a0 0d 0a 32 34 0d 0a 32 34 0d 0a 32 34 0d 0a 0d 0a  ..24..24..24....
191b0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
191c0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
191d0 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45   tab0 cor0 WHERE
191e0 20 4e 55 4c 4c 20 3e 20 28 20 36 34 20 29 0d 0a   NULL > ( 64 )..
191f0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
19200 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
19210 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
19220 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
19230 2b 20 31 20 2a 20 2b 20 63 6f 6c 31 20 49 53 20  + 1 * + col1 IS 
19240 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
19250 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
19260 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33 36   to c6c0a4111b36
19270 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64 35  d04dbc811a11e4d5
19280 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 20  4cad....query I 
19290 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
192a0 28 20 35 39 20 29 20 41 53 20 63 6f 6c 32 20 46  ( 59 ) AS col2 F
192b0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
192c0 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 35 39 0d 0a  ..----..59..59..
192d0 35 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  59....onlyif mys
192e0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
192f0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
19300 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
19310 35 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43  59..SELECT ALL C
19320 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20 28 20  OUNT( * ) + - ( 
19330 4d 41 58 28 20 2b 20 28 20 2b 20 63 6f 6c 32 20  MAX( + ( + col2 
19340 29 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ) ) ) FROM tab2 
19350 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d  cor0..----..-55.
19360 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
19370 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
19380 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19390 74 20 6c 61 62 65 6c 2d 35 35 39 0d 0a 53 45 4c  t label-559..SEL
193a0 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20  ECT ALL COUNT ( 
193b0 2a 20 29 20 2b 20 2d 20 28 20 4d 41 58 20 28 20  * ) + - ( MAX ( 
193c0 2b 20 28 20 2b 20 63 6f 6c 32 20 29 20 29 20 29  + ( + col2 ) ) )
193d0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
193e0 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d 0a 0d 0a 71 75  .----..-55....qu
193f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
19400 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
19410 20 36 31 20 2d 20 2d 20 63 6f 6c 32 20 41 53 20   61 - - col2 AS 
19420 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
19430 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S cor0..----..10
19440 31 0d 0a 31 31 39 0d 0a 38 34 0d 0a 0d 0a 6f 6e  1..119..84....on
19450 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
19460 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
19470 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
19480 20 6c 61 62 65 6c 2d 35 36 31 0d 0a 53 45 4c 45   label-561..SELE
19490 43 54 20 2b 20 53 55 4d 28 20 44 49 53 54 49 4e  CT + SUM( DISTIN
194a0 43 54 20 63 6f 6c 32 20 29 20 63 6f 6c 30 20 46  CT col2 ) col0 F
194b0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
194c0 0d 0a 2d 2d 2d 2d 0d 0a 31 32 31 0d 0a 0d 0a 73  ..----..121....s
194d0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
194e0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
194f0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
19500 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
19510 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
19520 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
19530 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
19540 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 31  owsort label-561
19550 0d 0a 53 45 4c 45 43 54 20 2b 20 53 55 4d 20 28  ..SELECT + SUM (
19560 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 29   DISTINCT col2 )
19570 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
19580 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
19590 32 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  21....query I ro
195a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
195b0 4c 20 2d 20 31 31 20 2b 20 2d 20 37 36 20 2b 20  L - 11 + - 76 + 
195c0 2b 20 2b 20 31 38 20 41 53 20 63 6f 6c 31 20 46  + + 18 AS col1 F
195d0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
195e0 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 39 0d 0a 2d 36 39  ..----..-69..-69
195f0 0d 0a 2d 36 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-69....onlyif 
19600 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
19610 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
19620 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
19630 6c 2d 35 36 33 0d 0a 53 45 4c 45 43 54 20 2d 20  l-563..SELECT - 
19640 43 4f 55 4e 54 28 20 2a 20 29 20 2d 20 36 35 20  COUNT( * ) - 65 
19650 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
19660 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 38 0d 0a 0d 0a  0..----..-68....
19670 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
19680 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
19690 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
196a0 61 62 65 6c 2d 35 36 33 0d 0a 53 45 4c 45 43 54  abel-563..SELECT
196b0 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d   - COUNT ( * ) -
196c0 20 36 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   65 AS col0 FROM
196d0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 38   tab0..----..-68
196e0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
196f0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34 20 2d  sort..SELECT 4 -
19700 20 2d 20 2b 20 36 35 20 41 53 20 63 6f 6c 31 2c   - + 65 AS col1,
19710 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   - col2 FROM tab
19720 32 0d 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a 2d 32 33  2..----..69..-23
19730 0d 0a 36 39 0d 0a 2d 34 30 0d 0a 36 39 0d 0a 2d  ..69..-40..69..-
19740 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  58....query I ro
19750 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
19760 53 54 49 4e 43 54 20 63 6f 6c 32 20 2a 20 2d 20  STINCT col2 * - 
19770 28 20 2b 20 33 38 20 29 20 2d 20 2d 20 2b 20 63  ( + 38 ) - - + c
19780 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
19790 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37   tab0..----..-17
197a0 37 31 0d 0a 2d 32 39 33 0d 0a 2d 33 36 36 35 0d  71..-293..-3665.
197b0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
197c0 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
197d0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
197e0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
197f0 61 62 65 6c 2d 35 36 36 0d 0a 53 45 4c 45 43 54  abel-566..SELECT
19800 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 63   DISTINCT col1 c
19810 6f 6c 32 2c 20 63 6f 6c 30 20 44 49 56 20 2d 20  ol2, col0 DIV - 
19820 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46  + col2 AS col0 F
19830 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
19840 31 34 0d 0a 30 0d 0a 34 37 0d 0a 2d 31 0d 0a 35  14..0..47..-1..5
19850 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-1....skipif m
19860 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
19870 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
19880 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
19890 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
198a0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
198b0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
198c0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
198d0 20 6c 61 62 65 6c 2d 35 36 36 0d 0a 53 45 4c 45   label-566..SELE
198e0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  CT DISTINCT col1
198f0 20 63 6f 6c 32 2c 20 63 6f 6c 30 20 2f 20 2d 20   col2, col0 / - 
19900 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46  + col2 AS col0 F
19910 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
19920 31 34 0d 0a 30 0d 0a 34 37 0d 0a 2d 31 0d 0a 35  14..0..47..-1..5
19930 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-1....query I 
19940 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
19950 41 4c 4c 20 2d 20 2d 20 28 20 2d 20 63 6f 6c 31  ALL - - ( - col1
19960 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
19970 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
19980 2d 2d 0d 0a 2d 35 31 0d 0a 2d 36 37 0d 0a 2d 37  --..-51..-67..-7
19990 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
199a0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
199b0 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d   DECIMAL type: .
199c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
199d0 20 6c 61 62 65 6c 2d 35 36 38 0d 0a 53 45 4c 45   label-568..SELE
199e0 43 54 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20  CT - CAST( NULL 
199f0 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2f 20 2b  AS DECIMAL ) / +
19a00 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20   - col2 AS col1 
19a10 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
19a20 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
19a30 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
19a40 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
19a50 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
19a60 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
19a70 6c 2d 35 36 38 0d 0a 53 45 4c 45 43 54 20 2d 20  l-568..SELECT - 
19a80 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52  CAST ( NULL AS R
19a90 45 41 4c 20 29 20 2f 20 2b 20 2d 20 63 6f 6c 32  EAL ) / + - col2
19aa0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
19ab0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
19ac0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
19ad0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  LL....skipif pos
19ae0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
19af0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
19b00 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
19b10 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
19b20 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
19b30 0a 53 45 4c 45 43 54 20 63 6f 6c 30 2c 20 28 20  .SELECT col0, ( 
19b40 2b 20 63 6f 6c 32 20 29 20 63 6f 6c 32 20 46 52  + col2 ) col2 FR
19b50 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 57 48 45  OM tab0 cor0 WHE
19b60 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20  RE NOT NULL NOT 
19b70 42 45 54 57 45 45 4e 20 28 20 4e 55 4c 4c 20 29  BETWEEN ( NULL )
19b80 20 41 4e 44 20 28 20 2d 20 63 6f 6c 30 20 29 0d   AND ( - col0 ).
19b90 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
19ba0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
19bb0 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 2a 20 2b 20   ALL - col2 * + 
19bc0 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  col1 AS col2 FRO
19bd0 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
19be0 2d 0d 0a 2d 32 31 30 0d 0a 2d 33 38 30 37 0d 0a  -..-210..-3807..
19bf0 2d 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -99....onlyif my
19c00 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
19c10 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
19c20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19c30 74 20 6c 61 62 65 6c 2d 35 37 31 0d 0a 53 45 4c  t label-571..SEL
19c40 45 43 54 20 2b 20 43 41 53 54 28 20 28 20 43 41  ECT + CAST( ( CA
19c50 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
19c60 45 44 20 29 20 29 20 41 53 20 53 49 47 4e 45 44  ED ) ) AS SIGNED
19c70 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
19c80 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
19c90 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
19ca0 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
19cb0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
19cc0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
19cd0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 37 31  owsort label-571
19ce0 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20  ..SELECT + CAST 
19cf0 28 20 28 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  ( ( CAST ( NULL 
19d00 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 41  AS INTEGER ) ) A
19d10 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63  S INTEGER ) AS c
19d20 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
19d30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
19d40 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
19d50 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
19d60 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
19d70 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
19d80 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
19d90 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
19da0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
19db0 43 54 20 41 4c 4c 20 28 20 36 39 20 29 20 41 53  CT ALL ( 69 ) AS
19dc0 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c 30 20 2b 20   col2, + col0 + 
19dd0 2b 20 2d 20 32 37 20 2a 20 2d 20 63 6f 6c 32 20  + - 27 * - col2 
19de0 2b 20 2d 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 63  + - - col0 + - c
19df0 6f 6c 32 20 2d 20 39 38 20 63 6f 6c 30 20 46 52  ol2 - 98 col0 FR
19e00 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 36  OM tab2..----..6
19e10 39 0d 0a 31 30 37 30 0d 0a 36 39 0d 0a 31 35 36  9..1070..69..156
19e20 30 0d 0a 36 39 0d 0a 35 39 32 0d 0a 0d 0a 6f 6e  0..69..592....on
19e30 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
19e40 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
19e50 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
19e60 20 6c 61 62 65 6c 2d 35 37 33 0d 0a 53 45 4c 45   label-573..SELE
19e70 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e  CT DISTINCT COUN
19e80 54 28 20 38 35 20 29 20 46 52 4f 4d 20 74 61 62  T( 85 ) FROM tab
19e90 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b  1..----..3....sk
19ea0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
19eb0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
19ec0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
19ed0 65 6c 2d 35 37 33 0d 0a 53 45 4c 45 43 54 20 44  el-573..SELECT D
19ee0 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20  ISTINCT COUNT ( 
19ef0 38 35 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a  85 ) FROM tab1..
19f00 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79  ----..3....query
19f10 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
19f20 43 54 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 63 6f  CT - + col2 * co
19f30 6c 30 20 2b 20 2d 20 2b 20 63 6f 6c 31 20 2b 20  l0 + - + col1 + 
19f40 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  col1 AS col1 FRO
19f50 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
19f60 2d 2d 2d 2d 0d 0a 2d 34 38 39 36 0d 0a 2d 35 30  ----..-4896..-50
19f70 31 35 0d 0a 2d 36 31 38 38 0d 0a 0d 0a 71 75 65  15..-6188....que
19f80 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
19f90 4c 45 43 54 20 41 4c 4c 20 2d 20 34 30 20 46 52  LECT ALL - 40 FR
19fa0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
19fb0 57 48 45 52 45 20 2d 20 36 32 20 4e 4f 54 20 49  WHERE - 62 NOT I
19fc0 4e 20 28 20 2b 20 63 6f 6c 30 20 2a 20 28 20 2d  N ( + col0 * ( -
19fd0 20 38 39 20 29 20 2a 20 2d 20 34 30 20 29 0d 0a   89 ) * - 40 )..
19fe0 2d 2d 2d 2d 0d 0a 2d 34 30 0d 0a 2d 34 30 0d 0a  ----..-40..-40..
19ff0 2d 34 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -40....onlyif my
1a000 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1a010 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1a020 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1a030 35 37 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  576..SELECT DIST
1a040 49 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20  INCT - COUNT( * 
1a050 29 20 2a 20 37 31 20 41 53 20 63 6f 6c 31 20 46  ) * 71 AS col1 F
1a060 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1a070 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 33 0d 0a 0d 0a  ..----..-213....
1a080 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1a090 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1a0a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1a0b0 61 62 65 6c 2d 35 37 36 0d 0a 53 45 4c 45 43 54  abel-576..SELECT
1a0c0 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e   DISTINCT - COUN
1a0d0 54 20 28 20 2a 20 29 20 2a 20 37 31 20 41 53 20  T ( * ) * 71 AS 
1a0e0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
1a0f0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
1a100 31 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  13....onlyif mys
1a110 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
1a120 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
1a130 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a140 20 6c 61 62 65 6c 2d 35 37 37 0d 0a 53 45 4c 45   label-577..SELE
1a150 43 54 20 41 4c 4c 20 2b 20 2b 20 43 41 53 54 28  CT ALL + + CAST(
1a160 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20 53 49 47   + - col2 AS SIG
1a170 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20  NED ) FROM tab1 
1a180 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1a190 35 39 0d 0a 2d 36 38 0d 0a 2d 39 36 0d 0a 0d 0a  59..-68..-96....
1a1a0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1a1b0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1a1c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1a1d0 61 62 65 6c 2d 35 37 37 0d 0a 53 45 4c 45 43 54  abel-577..SELECT
1a1e0 20 41 4c 4c 20 2b 20 2b 20 43 41 53 54 20 28 20   ALL + + CAST ( 
1a1f0 2b 20 2d 20 63 6f 6c 32 20 41 53 20 49 4e 54 45  + - col2 AS INTE
1a200 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 20  GER ) FROM tab1 
1a210 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1a220 35 39 0d 0a 2d 36 38 0d 0a 2d 39 36 0d 0a 0d 0a  59..-68..-96....
1a230 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1a240 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
1a250 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
1a260 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
1a270 52 45 20 4e 55 4c 4c 20 3c 3e 20 2b 20 63 6f 6c  RE NULL <> + col
1a280 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  1..----....query
1a290 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1a2a0 43 54 20 2d 20 30 20 46 52 4f 4d 20 74 61 62 31  CT - 0 FROM tab1
1a2b0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
1a2c0 28 20 31 32 20 42 45 54 57 45 45 4e 20 2b 20 28  ( 12 BETWEEN + (
1a2d0 20 2b 20 2d 20 32 30 20 29 20 41 4e 44 20 2b 20   + - 20 ) AND + 
1a2e0 32 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  21 )..----....qu
1a2f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1a300 45 4c 45 43 54 20 2b 20 34 32 20 2a 20 2d 20 28  ELECT + 42 * - (
1a310 20 2b 20 28 20 2d 20 2b 20 63 6f 6c 30 20 29 20   + ( - + col0 ) 
1a320 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
1a330 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31 34 32 0d  or0..----..2142.
1a340 0a 33 35 37 30 0d 0a 33 38 32 32 0d 0a 0d 0a 6f  .3570..3822....o
1a350 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1a360 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
1a370 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
1a380 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
1a390 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1a3a0 6c 2d 35 38 31 0d 0a 53 45 4c 45 43 54 20 2b 20  l-581..SELECT + 
1a3b0 43 4f 55 4e 54 28 20 2a 20 29 20 2f 20 43 41 53  COUNT( * ) / CAS
1a3c0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
1a3d0 44 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  D ) AS col2 FROM
1a3e0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
1a3f0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
1a400 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1a410 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1a420 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1a430 6c 2d 35 38 31 0d 0a 53 45 4c 45 43 54 20 2b 20  l-581..SELECT + 
1a440 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20 43 41  COUNT ( * ) / CA
1a450 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
1a460 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20 46  EGER ) AS col2 F
1a470 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1a480 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
1a490 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1a4a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1a4b0 20 2d 20 35 36 20 2a 20 2d 20 2d 20 32 37 20 41   - 56 * - - 27 A
1a4c0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
1a4d0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1a4e0 2d 31 35 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49  -1512....query I
1a4f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1a500 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 46 52 4f 4d   ALL - col1 FROM
1a510 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
1a520 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2a 20 2d  ERE NOT col0 * -
1a530 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d   col0 IS NULL..-
1a540 2d 2d 2d 0d 0a 2d 31 34 0d 0a 2d 34 37 0d 0a 2d  ---..-14..-47..-
1a550 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
1a560 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
1a570 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
1a580 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38  rowsort label-58
1a590 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
1a5a0 43 54 20 2d 20 43 4f 55 4e 54 28 20 2d 20 2d 20  CT - COUNT( - - 
1a5b0 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31  col1 ) FROM tab1
1a5c0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1a5d0 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
1a5e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1a5f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1a600 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38 34 0d 0a  sort label-584..
1a610 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1a620 2d 20 43 4f 55 4e 54 20 28 20 2d 20 2d 20 63 6f  - COUNT ( - - co
1a630 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  l1 ) FROM tab1 A
1a640 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  S cor0..----..-3
1a650 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
1a660 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1a670 20 33 31 20 2a 20 2b 20 2d 20 63 6f 6c 32 2c 20   31 * + - col2, 
1a680 35 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  55 AS col0 FROM 
1a690 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
1a6a0 2d 2d 0d 0a 2d 31 38 32 39 0d 0a 35 35 0d 0a 2d  --..-1829..55..-
1a6b0 32 31 30 38 0d 0a 35 35 0d 0a 2d 32 39 37 36 0d  2108..55..-2976.
1a6c0 0a 35 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .55....onlyif my
1a6d0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
1a6e0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
1a6f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1a700 74 20 6c 61 62 65 6c 2d 35 38 36 0d 0a 53 45 4c  t label-586..SEL
1a710 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
1a720 6f 6c 30 20 44 49 56 20 2b 20 2d 20 63 6f 6c 31  ol0 DIV + - col1
1a730 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1a740 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 39  b0..----..-4..-9
1a750 37 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  7..0....skipif m
1a760 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1a770 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1a780 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38 36  owsort label-586
1a790 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1a7a0 54 20 2b 20 63 6f 6c 30 20 2f 20 2b 20 2d 20 63  T + col0 / + - c
1a7b0 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
1a7c0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d   tab0..----..-4.
1a7d0 0a 2d 39 37 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  .-97..0....query
1a7e0 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
1a7f0 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
1a800 30 2c 20 35 33 20 41 53 20 63 6f 6c 32 20 46 52  0, 53 AS col2 FR
1a810 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab2..----..4
1a820 36 0d 0a 35 33 0d 0a 36 34 0d 0a 35 33 0d 0a 37  6..53..64..53..7
1a830 35 0d 0a 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49  5..53....query I
1a840 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1a850 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
1a860 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b2 WHERE NOT NUL
1a870 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 32 34  L NOT BETWEEN 24
1a880 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   AND NULL..----.
1a890 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
1a8a0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
1a8b0 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
1a8c0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
1a8d0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
1a8e0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1a8f0 45 43 54 20 41 4c 4c 20 2b 20 31 38 20 63 6f 6c  ECT ALL + 18 col
1a900 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
1a910 2d 0d 0a 31 38 0d 0a 31 38 0d 0a 31 38 0d 0a 0d  -..18..18..18...
1a920 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
1a930 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1a940 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
1a950 57 48 45 52 45 20 63 6f 6c 32 20 3e 20 28 20 4e  WHERE col2 > ( N
1a960 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ULL )..----....o
1a970 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1a980 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1a990 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1a9a0 74 20 6c 61 62 65 6c 2d 35 39 31 0d 0a 53 45 4c  t label-591..SEL
1a9b0 45 43 54 20 2b 20 2b 20 36 36 20 2b 20 2b 20 43  ECT + + 66 + + C
1a9c0 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
1a9d0 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
1a9e0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a 0d  or0..----..69...
1a9f0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1aa00 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1aa10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1aa20 6c 61 62 65 6c 2d 35 39 31 0d 0a 53 45 4c 45 43  label-591..SELEC
1aa30 54 20 2b 20 2b 20 36 36 20 2b 20 2b 20 43 4f 55  T + + 66 + + COU
1aa40 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  NT ( * ) AS col0
1aa50 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1aa60 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a 0d 0a  r0..----..69....
1aa70 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1aa80 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1aa90 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1aaa0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1aab0 2d 35 39 32 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  -592..SELECT col
1aac0 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
1aad0 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
1aae0 45 20 28 20 4e 55 4c 4c 20 29 20 49 4e 20 28 20  E ( NULL ) IN ( 
1aaf0 2b 20 43 41 53 54 28 20 2b 20 43 41 53 54 28 20  + CAST( + CAST( 
1ab00 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  + + CAST( NULL A
1ab10 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 53 49  S SIGNED ) AS SI
1ab20 47 4e 45 44 20 29 20 41 53 20 53 49 47 4e 45 44  GNED ) AS SIGNED
1ab30 20 29 2c 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2d   ), + col1 + + -
1ab40 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col0 )..----...
1ab50 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1ab60 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1ab70 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1ab80 6c 61 62 65 6c 2d 35 39 32 0d 0a 53 45 4c 45 43  label-592..SELEC
1ab90 54 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  T col2 AS col1 F
1aba0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1abb0 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20   WHERE ( NULL ) 
1abc0 49 4e 20 28 20 2b 20 43 41 53 54 20 28 20 2b 20  IN ( + CAST ( + 
1abd0 43 41 53 54 20 28 20 2b 20 2b 20 43 41 53 54 20  CAST ( + + CAST 
1abe0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
1abf0 52 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29  R ) AS INTEGER )
1ac00 20 41 53 20 49 4e 54 45 47 45 52 20 29 2c 20 2b   AS INTEGER ), +
1ac10 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 63 6f 6c 30   col1 + + - col0
1ac20 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79   )..----....only
1ac30 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
1ac40 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
1ac50 79 70 65 3a 20 44 49 56 20 66 6f 72 20 69 6e 74  ype: DIV for int
1ac60 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
1ac70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1ac80 20 6c 61 62 65 6c 2d 35 39 33 0d 0a 53 45 4c 45   label-593..SELE
1ac90 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41  CT DISTINCT - CA
1aca0 53 54 28 20 2d 20 63 6f 6c 30 20 41 53 20 53 49  ST( - col0 AS SI
1acb0 47 4e 45 44 20 29 20 44 49 56 20 2b 20 2b 20 63  GNED ) DIV + + c
1acc0 6f 6c 31 20 2b 20 63 6f 6c 30 20 2b 20 63 6f 6c  ol1 + col0 + col
1acd0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
1ace0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 30 0d 0a  or0..----..150..
1acf0 31 36 30 0d 0a 31 36 31 0d 0a 0d 0a 73 6b 69 70  160..161....skip
1ad00 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1ad10 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1ad20 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1ad30 2d 35 39 33 0d 0a 53 45 4c 45 43 54 20 44 49 53  -593..SELECT DIS
1ad40 54 49 4e 43 54 20 2d 20 43 41 53 54 20 28 20 2d  TINCT - CAST ( -
1ad50 20 63 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52   col0 AS INTEGER
1ad60 20 29 20 2f 20 2b 20 2b 20 63 6f 6c 31 20 2b 20   ) / + + col1 + 
1ad70 63 6f 6c 30 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  col0 + col2 FROM
1ad80 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
1ad90 2d 2d 2d 0d 0a 31 35 30 0d 0a 31 36 30 0d 0a 31  ---..150..160..1
1ada0 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  61....query I ro
1adb0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1adc0 4c 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 37 31 20  L + col1 + + 71 
1add0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1ade0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
1adf0 0a 31 35 32 0d 0a 37 32 0d 0a 39 32 0d 0a 0d 0a  .152..72..92....
1ae00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1ae10 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33 34 20 2d  .SELECT ALL 34 -
1ae20 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
1ae30 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 0d 0a 2d 35  1..----..-17..-5
1ae40 31 0d 0a 2d 35 37 0d 0a 0d 0a 6f 6e 6c 79 69 66  1..-57....onlyif
1ae50 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
1ae60 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
1ae70 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1ae80 65 6c 2d 35 39 36 0d 0a 53 45 4c 45 43 54 20 2b  el-596..SELECT +
1ae90 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20 2b   MIN( DISTINCT +
1aea0 20 2d 20 63 6f 6c 31 20 29 20 2d 20 43 4f 55 4e   - col1 ) - COUN
1aeb0 54 28 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 29 20  T( ALL - col2 ) 
1aec0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1aed0 31 20 57 48 45 52 45 20 28 20 4e 4f 54 20 2b 20  1 WHERE ( NOT + 
1aee0 63 6f 6c 32 20 3d 20 4e 55 4c 4c 20 29 0d 0a 2d  col2 = NULL )..-
1aef0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
1af00 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1af10 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1af20 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1af30 6c 2d 35 39 36 0d 0a 53 45 4c 45 43 54 20 2b 20  l-596..SELECT + 
1af40 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2b  MIN ( DISTINCT +
1af50 20 2d 20 63 6f 6c 31 20 29 20 2d 20 43 4f 55 4e   - col1 ) - COUN
1af60 54 20 28 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 29  T ( ALL - col2 )
1af70 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1af80 62 31 20 57 48 45 52 45 20 28 20 4e 4f 54 20 2b  b1 WHERE ( NOT +
1af90 20 63 6f 6c 32 20 3d 20 4e 55 4c 4c 20 29 0d 0a   col2 = NULL )..
1afa0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e  ----..NULL....on
1afb0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1afc0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1afd0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1afe0 20 6c 61 62 65 6c 2d 35 39 37 0d 0a 53 45 4c 45   label-597..SELE
1aff0 43 54 20 2d 20 43 4f 55 4e 54 28 20 2b 20 35 31  CT - COUNT( + 51
1b000 20 29 20 2a 20 2b 20 2b 20 37 33 20 2d 20 37 31   ) * + + 73 - 71
1b010 20 2a 20 2d 20 2b 20 34 36 20 46 52 4f 4d 20 74   * - + 46 FROM t
1b020 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 30 34 37 0d  ab1..----..3047.
1b030 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1b040 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1b050 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1b060 74 20 6c 61 62 65 6c 2d 35 39 37 0d 0a 53 45 4c  t label-597..SEL
1b070 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2b 20  ECT - COUNT ( + 
1b080 35 31 20 29 20 2a 20 2b 20 2b 20 37 33 20 2d 20  51 ) * + + 73 - 
1b090 37 31 20 2a 20 2d 20 2b 20 34 36 20 46 52 4f 4d  71 * - + 46 FROM
1b0a0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 30 34   tab1..----..304
1b0b0 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
1b0c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
1b0d0 6f 6c 32 20 2b 20 2d 20 31 36 20 41 53 20 63 6f  ol2 + - 16 AS co
1b0e0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l2 FROM tab0 cor
1b0f0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 35 0d 0a 2d  0..----..-115..-
1b100 32 36 0d 0a 2d 36 33 0d 0a 0d 0a 6f 6e 6c 79 69  26..-63....onlyi
1b110 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
1b120 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74  yntax: DECIMAL t
1b130 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
1b140 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39 39  owsort label-599
1b150 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1b160 54 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  T col2 FROM tab0
1b170 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
1b180 4f 54 20 4e 55 4c 4c 20 49 4e 20 28 20 43 41 53  OT NULL IN ( CAS
1b190 54 28 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20 44  T( + - col2 AS D
1b1a0 45 43 49 4d 41 4c 20 29 20 29 0d 0a 2d 2d 2d 2d  ECIMAL ) )..----
1b1b0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1b1c0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1b1d0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1b1e0 72 74 20 6c 61 62 65 6c 2d 35 39 39 0d 0a 53 45  rt label-599..SE
1b1f0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
1b200 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
1b210 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
1b220 55 4c 4c 20 49 4e 20 28 20 43 41 53 54 20 28 20  ULL IN ( CAST ( 
1b230 2b 20 2d 20 63 6f 6c 32 20 41 53 20 52 45 41 4c  + - col2 AS REAL
1b240 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75   ) )..----....qu
1b250 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1b260 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
1b270 20 35 32 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d   52 + - col1 * -
1b280 20 2b 20 31 30 20 41 53 20 63 6f 6c 31 20 46 52   + 10 AS col1 FR
1b290 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
1b2a0 0a 2d 2d 2d 2d 0d 0a 32 36 32 0d 0a 36 32 0d 0a  .----..262..62..
1b2b0 38 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  862....query I r
1b2c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
1b2d0 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31   + col2 + - col1
1b2e0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1b2f0 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b2 cor0..----..-
1b300 32 38 0d 0a 2d 33 37 0d 0a 2d 39 0d 0a 0d 0a 71  28..-37..-9....q
1b310 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1b320 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1b330 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  T * FROM tab1 AS
1b340 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
1b350 20 3e 20 31 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   > 10..----....o
1b360 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1b370 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
1b380 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
1b390 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
1b3a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1b3b0 6c 2d 36 30 33 0d 0a 53 45 4c 45 43 54 20 2d 20  l-603..SELECT - 
1b3c0 43 41 53 54 28 20 2d 20 32 30 20 41 53 20 53 49  CAST( - 20 AS SI
1b3d0 47 4e 45 44 20 29 20 2b 20 43 4f 55 4e 54 28 20  GNED ) + COUNT( 
1b3e0 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  * ) FROM tab1 AS
1b3f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d   cor0..----..23.
1b400 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1b410 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1b420 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1b430 74 20 6c 61 62 65 6c 2d 36 30 33 0d 0a 53 45 4c  t label-603..SEL
1b440 45 43 54 20 2d 20 43 41 53 54 20 28 20 2d 20 32  ECT - CAST ( - 2
1b450 30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b  0 AS INTEGER ) +
1b460 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
1b470 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
1b480 2d 2d 2d 2d 0d 0a 32 33 0d 0a 0d 0a 71 75 65 72  ----..23....quer
1b490 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
1b4a0 4c 45 43 54 20 2b 20 63 6f 6c 30 2c 20 63 6f 6c  LECT + col0, col
1b4b0 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
1b4c0 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 32 20 2b  or0 WHERE col2 +
1b4d0 20 2b 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e   + col0 IS NOT N
1b4e0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 34  ULL..----..46..4
1b4f0 36 0d 0a 36 34 0d 0a 36 34 0d 0a 37 35 0d 0a 37  6..64..64..75..7
1b500 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
1b510 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
1b520 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1b530 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1b540 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1b550 74 20 6c 61 62 65 6c 2d 36 30 35 0d 0a 53 45 4c  t label-605..SEL
1b560 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28  ECT ALL + COUNT(
1b570 20 36 36 20 29 20 2a 20 2d 20 43 41 53 54 28 20   66 ) * - CAST( 
1b580 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
1b590 20 2b 20 2b 20 39 20 2a 20 43 41 53 54 28 20 4e   + + 9 * CAST( N
1b5a0 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
1b5b0 2b 20 2d 20 28 20 36 39 20 29 20 41 53 20 63 6f  + - ( 69 ) AS co
1b5c0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l2 FROM tab1 cor
1b5d0 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
1b5e0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1b5f0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1b600 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1b610 6c 61 62 65 6c 2d 36 30 35 0d 0a 53 45 4c 45 43  label-605..SELEC
1b620 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20  T ALL + COUNT ( 
1b630 36 36 20 29 20 2a 20 2d 20 43 41 53 54 20 28 20  66 ) * - CAST ( 
1b640 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
1b650 29 20 2b 20 2b 20 39 20 2a 20 43 41 53 54 20 28  ) + + 9 * CAST (
1b660 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
1b670 20 29 20 2b 20 2d 20 28 20 36 39 20 29 20 41 53   ) + - ( 69 ) AS
1b680 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
1b690 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
1b6a0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1b6b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  ort..SELECT - + 
1b6c0 28 20 35 35 20 29 20 41 53 20 63 6f 6c 31 20 46  ( 55 ) AS col1 F
1b6d0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
1b6e0 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
1b6f0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
1b700 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
1b710 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
1b720 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1b730 6c 2d 36 30 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-607..SELECT DI
1b740 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20  STINCT COUNT( * 
1b750 29 20 2d 20 2d 20 35 39 20 41 53 20 63 6f 6c 31  ) - - 59 AS col1
1b760 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1b770 0d 0a 36 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..62....skipif m
1b780 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1b790 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1b7a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 30 37  owsort label-607
1b7b0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1b7c0 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20  T COUNT ( * ) - 
1b7d0 2d 20 35 39 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 59 AS col1 FRO
1b7e0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 36 32  M tab2..----..62
1b7f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1b800 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 33 20 41  ort..SELECT 53 A
1b810 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
1b820 20 57 48 45 52 45 20 2b 20 28 20 2d 20 2b 20 33   WHERE + ( - + 3
1b830 31 20 29 20 2a 20 2d 20 32 35 20 2a 20 2b 20 63  1 ) * - 25 * + c
1b840 6f 6c 32 20 2a 20 2b 20 37 36 20 2b 20 63 6f 6c  ol2 * + 76 + col
1b850 31 20 4e 4f 54 20 49 4e 20 28 20 63 6f 6c 32 20  1 NOT IN ( col2 
1b860 29 0d 0a 2d 2d 2d 2d 0d 0a 35 33 0d 0a 35 33 0d  )..----..53..53.
1b870 0a 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .53....query II 
1b880 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1b890 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20  + col0 AS col1, 
1b8a0 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  col0 AS col0 FRO
1b8b0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36  M tab2..----..46
1b8c0 0d 0a 34 36 0d 0a 36 34 0d 0a 36 34 0d 0a 37 35  ..46..64..64..75
1b8d0 0d 0a 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..75....onlyif m
1b8e0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
1b8f0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
1b900 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1b910 72 74 20 6c 61 62 65 6c 2d 36 31 30 0d 0a 53 45  rt label-610..SE
1b920 4c 45 43 54 20 41 4c 4c 20 43 41 53 54 28 20 2d  LECT ALL CAST( -
1b930 20 2d 20 37 32 20 41 53 20 53 49 47 4e 45 44 20   - 72 AS SIGNED 
1b940 29 20 2d 20 2d 20 63 6f 6c 30 20 2b 20 63 6f 6c  ) - - col0 + col
1b950 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
1b960 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 31 36 0d 0a  ab1..----..216..
1b970 32 31 39 0d 0a 32 33 31 0d 0a 0d 0a 73 6b 69 70  219..231....skip
1b980 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1b990 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1b9a0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1b9b0 2d 36 31 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -610..SELECT ALL
1b9c0 20 43 41 53 54 20 28 20 2d 20 2d 20 37 32 20 41   CAST ( - - 72 A
1b9d0 53 20 49 4e 54 45 47 45 52 20 29 20 2d 20 2d 20  S INTEGER ) - - 
1b9e0 63 6f 6c 30 20 2b 20 63 6f 6c 32 20 41 53 20 63  col0 + col2 AS c
1b9f0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
1ba00 2d 2d 2d 0d 0a 32 31 36 0d 0a 32 31 39 0d 0a 32  ---..216..219..2
1ba10 33 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  31....onlyif mys
1ba20 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
1ba30 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
1ba40 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1ba50 31 31 0d 0a 53 45 4c 45 43 54 20 28 20 43 4f 55  11..SELECT ( COU
1ba60 4e 54 28 20 2a 20 29 20 29 20 2a 20 2d 20 33 35  NT( * ) ) * - 35
1ba70 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1ba80 0d 0a 2d 31 30 35 0d 0a 0d 0a 73 6b 69 70 69 66  ..-105....skipif
1ba90 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1baa0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1bab0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1bac0 31 31 0d 0a 53 45 4c 45 43 54 20 28 20 43 4f 55  11..SELECT ( COU
1bad0 4e 54 20 28 20 2a 20 29 20 29 20 2a 20 2d 20 33  NT ( * ) ) * - 3
1bae0 35 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  5 FROM tab2..---
1baf0 2d 0d 0a 2d 31 30 35 0d 0a 0d 0a 71 75 65 72 79  -..-105....query
1bb00 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
1bb10 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
1bb20 6f 6c 32 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20  ol2 + - col2 AS 
1bb30 63 6f 6c 32 2c 20 2b 20 63 6f 6c 31 20 46 52 4f  col2, + col1 FRO
1bb40 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
1bb50 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 2f 20  HERE NOT col1 / 
1bb60 2d 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55  - col1 IS NOT NU
1bb70 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
1bb80 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
1bb90 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
1bba0 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
1bbb0 45 52 45 20 4e 4f 54 20 28 20 4e 4f 54 20 2d 20  ERE NOT ( NOT - 
1bbc0 2b 20 63 6f 6c 30 20 42 45 54 57 45 45 4e 20 4e  + col0 BETWEEN N
1bbd0 55 4c 4c 20 41 4e 44 20 63 6f 6c 30 20 29 0d 0a  ULL AND col0 )..
1bbe0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1bbf0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1bc00 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1bc10 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1bc20 2d 36 31 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -614..SELECT ALL
1bc30 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   - - COUNT( * ) 
1bc40 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1bc50 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  1 AS cor0 CROSS 
1bc60 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72  JOIN tab0 AS cor
1bc70 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b  1..----..9....sk
1bc80 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1bc90 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1bca0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1bcb0 65 6c 2d 36 31 34 0d 0a 53 45 4c 45 43 54 20 41  el-614..SELECT A
1bcc0 4c 4c 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a  LL - - COUNT ( *
1bcd0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
1bce0 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f  tab1 AS cor0 CRO
1bcf0 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20  SS JOIN tab0 AS 
1bd00 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d  cor1..----..9...
1bd10 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
1bd20 74 0d 0a 53 45 4c 45 43 54 20 31 30 2c 20 2d 20  t..SELECT 10, - 
1bd30 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  col0 AS col1 FRO
1bd40 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab2..----..10
1bd50 0d 0a 2d 34 36 0d 0a 31 30 0d 0a 2d 36 34 0d 0a  ..-46..10..-64..
1bd60 31 30 0d 0a 2d 37 35 0d 0a 0d 0a 71 75 65 72 79  10..-75....query
1bd70 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
1bd80 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
1bd90 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1bda0 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 37 37  0 WHERE NOT + 77
1bdb0 20 2b 20 2b 20 63 6f 6c 31 20 3e 3d 20 2b 20 63   + + col1 >= + c
1bdc0 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol2..----....que
1bdd0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1bde0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1bdf0 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
1be00 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c  or0 WHERE ( NULL
1be10 20 29 20 3e 20 2d 20 2d 20 39 38 0d 0a 2d 2d 2d   ) > - - 98..---
1be20 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
1be30 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
1be40 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1be50 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1be60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1be70 74 20 6c 61 62 65 6c 2d 36 31 38 0d 0a 53 45 4c  t label-618..SEL
1be80 45 43 54 20 41 4c 4c 20 2d 20 39 39 20 2a 20 4d  ECT ALL - 99 * M
1be90 49 4e 28 20 2d 20 2b 20 43 41 53 54 28 20 2d 20  IN( - + CAST( - 
1bea0 63 6f 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29  col0 AS SIGNED )
1beb0 20 29 20 2b 20 39 36 20 41 53 20 63 6f 6c 30 20   ) + 96 AS col0 
1bec0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
1bed0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 38 39 0d 0a  0..----..-1389..
1bee0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1bef0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1bf00 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1bf10 20 6c 61 62 65 6c 2d 36 31 38 0d 0a 53 45 4c 45   label-618..SELE
1bf20 43 54 20 41 4c 4c 20 2d 20 39 39 20 2a 20 4d 49  CT ALL - 99 * MI
1bf30 4e 20 28 20 2d 20 2b 20 43 41 53 54 20 28 20 2d  N ( - + CAST ( -
1bf40 20 63 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52   col0 AS INTEGER
1bf50 20 29 20 29 20 2b 20 39 36 20 41 53 20 63 6f 6c   ) ) + 96 AS col
1bf60 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
1bf70 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 38 39  or0..----..-1389
1bf80 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1bf90 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1bfa0 39 35 20 2b 20 38 30 20 41 53 20 63 6f 6c 32 20  95 + 80 AS col2 
1bfb0 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
1bfc0 2d 2d 2d 2d 0d 0a 31 37 35 0d 0a 31 37 35 0d 0a  ----..175..175..
1bfd0 31 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  175....skipif po
1bfe0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
1bff0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
1c000 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
1c010 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
1c020 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1c030 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
1c040 6c 32 20 2a 20 63 6f 6c 30 20 63 6f 6c 30 20 46  l2 * col0 col0 F
1c050 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1c060 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
1c070 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
1c080 2d 0d 0a 31 30 35 38 0d 0a 32 35 36 30 0d 0a 34  -..1058..2560..4
1c090 33 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  350....query I r
1c0a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
1c0b0 6f 6c 32 20 2a 20 2b 20 37 33 20 46 52 4f 4d 20  ol2 * + 73 FROM 
1c0c0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 33 31  tab0..----..3431
1c0d0 0d 0a 37 32 32 37 0d 0a 37 33 30 0d 0a 0d 0a 71  ..7227..730....q
1c0e0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1c0f0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
1c100 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
1c110 4f 54 20 2d 20 38 32 20 2a 20 2d 20 2d 20 63 6f  OT - 82 * - - co
1c120 6c 32 20 4e 4f 54 20 49 4e 20 28 20 2b 20 33 2c  l2 NOT IN ( + 3,
1c130 20 2b 20 63 6f 6c 30 2c 20 2d 20 31 38 2c 20 2b   + col0, - 18, +
1c140 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   col0 )..----...
1c150 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1c160 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20  ..SELECT col0 * 
1c170 28 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  ( + col0 ) FROM 
1c180 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 31 31 36  tab2..----..2116
1c190 0d 0a 34 30 39 36 0d 0a 35 36 32 35 0d 0a 0d 0a  ..4096..5625....
1c1a0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
1c1b0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
1c1c0 32 20 2b 20 2d 20 2b 20 63 6f 6c 32 20 2d 20 2d  2 + - + col2 - -
1c1d0 20 37 20 41 53 20 63 6f 6c 32 2c 20 2d 20 63 6f   7 AS col2, - co
1c1e0 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
1c1f0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 37 0d 0a 2d  tab0..----..7..-
1c200 31 30 0d 0a 37 0d 0a 2d 34 37 0d 0a 37 0d 0a 2d  10..7..-47..7..-
1c210 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  99....query III 
1c220 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1c230 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
1c240 6f 72 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 31  or0 WHERE - col1
1c250 20 49 4e 20 28 20 63 6f 6c 31 20 2a 20 34 37 20   IN ( col1 * 47 
1c260 2b 20 2b 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 30  + + col0, - col0
1c270 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 29 0d 0a 2d   * - - col2 )..-
1c280 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
1c290 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
1c2a0 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 30 20 2b   col0 + + col0 +
1c2b0 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c   + - col1 AS col
1c2c0 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
1c2d0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 35  or0..----..41..5
1c2e0 31 0d 0a 38 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  1..83....skipif 
1c2f0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
1c300 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
1c310 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
1c320 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
1c330 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1c340 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
1c350 6c 31 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2b 20  l1 * - col1 + + 
1c360 28 20 63 6f 6c 31 20 29 20 63 6f 6c 30 20 46 52  ( col1 ) col0 FR
1c370 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
1c380 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a  T NULL IS NULL..
1c390 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1c3a0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
1c3b0 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
1c3c0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
1c3d0 65 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a  e: DECIMAL type:
1c3e0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1c3f0 72 74 20 6c 61 62 65 6c 2d 36 32 38 0d 0a 53 45  rt label-628..SE
1c400 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41  LECT DISTINCT CA
1c410 53 54 28 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  ST( + CAST( NULL
1c420 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 41 53   AS DECIMAL ) AS
1c430 20 53 49 47 4e 45 44 20 29 20 2d 20 41 56 47 20   SIGNED ) - AVG 
1c440 28 20 63 6f 6c 31 20 29 20 2d 20 2b 20 43 4f 55  ( col1 ) - + COU
1c450 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  NT( * ) AS col2 
1c460 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
1c470 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
1c480 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1c490 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1c4a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 32  rowsort label-62
1c4b0 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
1c4c0 43 54 20 43 41 53 54 20 28 20 2b 20 43 41 53 54  CT CAST ( + CAST
1c4d0 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20   ( NULL AS REAL 
1c4e0 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2d  ) AS INTEGER ) -
1c4f0 20 41 56 47 20 28 20 63 6f 6c 31 20 29 20 2d 20   AVG ( col1 ) - 
1c500 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  + COUNT ( * ) AS
1c510 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
1c520 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
1c530 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
1c540 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
1c550 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
1c560 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1c570 36 32 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  629..SELECT ALL 
1c580 36 20 2b 20 2d 20 28 20 2d 20 28 20 2d 20 2d 20  6 + - ( - ( - - 
1c590 63 6f 6c 31 20 29 20 29 20 2b 20 2b 20 63 6f 6c  col1 ) ) + + col
1c5a0 31 20 2a 20 2d 20 63 6f 6c 30 20 2d 20 2d 20 63  1 * - col0 - - c
1c5b0 6f 6c 32 20 2b 20 2d 20 37 37 20 44 49 56 20 2d  ol2 + - 77 DIV -
1c5c0 20 28 20 2b 20 32 31 20 29 20 41 53 20 63 6f 6c   ( + 21 ) AS col
1c5d0 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  1 FROM tab1 cor0
1c5e0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 32 0d 0a 2d 34  ..----..-352..-4
1c5f0 31 35 33 0d 0a 2d 35 39 35 0d 0a 0d 0a 73 6b 69  153..-595....ski
1c600 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1c610 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1c620 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1c630 6c 2d 36 32 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-629..SELECT AL
1c640 4c 20 36 20 2b 20 2d 20 28 20 2d 20 28 20 2d 20  L 6 + - ( - ( - 
1c650 2d 20 63 6f 6c 31 20 29 20 29 20 2b 20 2b 20 63  - col1 ) ) + + c
1c660 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30 20 2d 20 2d  ol1 * - col0 - -
1c670 20 63 6f 6c 32 20 2b 20 2d 20 37 37 20 2f 20 2d   col2 + - 77 / -
1c680 20 28 20 2b 20 32 31 20 29 20 41 53 20 63 6f 6c   ( + 21 ) AS col
1c690 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  1 FROM tab1 cor0
1c6a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 32 0d 0a 2d 34  ..----..-352..-4
1c6b0 31 35 33 0d 0a 2d 35 39 35 0d 0a 0d 0a 6f 6e 6c  153..-595....onl
1c6c0 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1c6d0 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1c6e0 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1c6f0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33  rowsort label-63
1c700 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  0..SELECT ALL - 
1c710 2b 20 63 6f 6c 32 20 2f 20 2b 20 2b 20 43 41 53  + col2 / + + CAS
1c720 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
1c730 44 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  D ) col2 FROM ta
1c740 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
1c750 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
1c760 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
1c770 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1c780 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
1c790 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
1c7a0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
1c7b0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
1c7c0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
1c7d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1c7e0 62 65 6c 2d 36 33 30 0d 0a 53 45 4c 45 43 54 20  bel-630..SELECT 
1c7f0 41 4c 4c 20 2d 20 2b 20 63 6f 6c 32 20 2f 20 2b  ALL - + col2 / +
1c800 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   + CAST ( NULL A
1c810 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f 6c 32  S INTEGER ) col2
1c820 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1c830 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
1c840 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  NULL..NULL....qu
1c850 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1c860 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
1c870 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
1c880 45 20 31 31 20 2a 20 2d 20 63 6f 6c 31 20 2d 20  E 11 * - col1 - 
1c890 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a  + col1 IS NULL..
1c8a0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1c8b0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1c8c0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1c8d0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
1c8e0 6c 2d 36 33 32 0d 0a 53 45 4c 45 43 54 20 41 4c  l-632..SELECT AL
1c8f0 4c 20 2b 20 33 36 20 2d 20 2d 20 28 20 37 37 20  L + 36 - - ( 77 
1c900 29 20 41 53 20 63 6f 6c 31 2c 20 4d 49 4e 28 20  ) AS col1, MIN( 
1c910 41 4c 4c 20 2b 20 2d 20 32 37 20 29 20 41 53 20  ALL + - 27 ) AS 
1c920 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
1c930 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31  S cor0..----..11
1c940 33 0d 0a 2d 32 37 0d 0a 0d 0a 73 6b 69 70 69 66  3..-27....skipif
1c950 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1c960 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1c970 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1c980 36 33 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  632..SELECT ALL 
1c990 2b 20 33 36 20 2d 20 2d 20 28 20 37 37 20 29 20  + 36 - - ( 77 ) 
1c9a0 41 53 20 63 6f 6c 31 2c 20 4d 49 4e 20 28 20 41  AS col1, MIN ( A
1c9b0 4c 4c 20 2b 20 2d 20 32 37 20 29 20 41 53 20 63  LL + - 27 ) AS c
1c9c0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
1c9d0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 33   cor0..----..113
1c9e0 0d 0a 2d 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-27....query I
1c9f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1ca00 54 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 2b  T - - col1 * - +
1ca10 20 63 6f 6c 31 20 2d 20 2b 20 63 6f 6c 32 20 41   col1 - + col2 A
1ca20 53 20 63 6f 6c 30 2c 20 63 6f 6c 30 20 46 52 4f  S col0, col0 FRO
1ca30 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
1ca40 2d 2d 2d 2d 0d 0a 2d 32 32 37 37 0d 0a 39 31 0d  ----..-2277..91.
1ca50 0a 2d 32 39 32 0d 0a 35 31 0d 0a 2d 38 34 0d 0a  .-292..51..-84..
1ca60 38 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  85....onlyif mys
1ca70 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
1ca80 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
1ca90 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1caa0 20 6c 61 62 65 6c 2d 36 33 34 0d 0a 53 45 4c 45   label-634..SELE
1cab0 43 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53  CT CAST( NULL AS
1cac0 20 53 49 47 4e 45 44 20 29 20 2a 20 63 6f 6c 30   SIGNED ) * col0
1cad0 20 2d 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 63 6f   - + col2 + - co
1cae0 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
1caf0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
1cb00 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
1cb10 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1cb20 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1cb30 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1cb40 61 62 65 6c 2d 36 33 34 0d 0a 53 45 4c 45 43 54  abel-634..SELECT
1cb50 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
1cb60 49 4e 54 45 47 45 52 20 29 20 2a 20 63 6f 6c 30  INTEGER ) * col0
1cb70 20 2d 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 63 6f   - + col2 + - co
1cb80 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
1cb90 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
1cba0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
1cbb0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1cbc0 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
1cbd0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
1cbe0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
1cbf0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1cc00 65 6c 2d 36 33 35 0d 0a 53 45 4c 45 43 54 20 41  el-635..SELECT A
1cc10 4c 4c 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c  LL + + CAST( NUL
1cc20 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2f 20  L AS SIGNED ) / 
1cc30 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2b  + COUNT( * ) + +
1cc40 20 36 38 20 46 52 4f 4d 20 74 61 62 31 20 41 53   68 FROM tab1 AS
1cc50 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
1cc60 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
1cc70 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1cc80 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1cc90 6f 72 74 20 6c 61 62 65 6c 2d 36 33 35 0d 0a 53  ort label-635..S
1cca0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20 43 41  ELECT ALL + + CA
1ccb0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
1ccc0 45 47 45 52 20 29 20 2f 20 2b 20 43 4f 55 4e 54  EGER ) / + COUNT
1ccd0 20 28 20 2a 20 29 20 2b 20 2b 20 36 38 20 46 52   ( * ) + + 68 FR
1cce0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1ccf0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
1cd00 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1cd10 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
1cd20 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
1cd30 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
1cd40 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1cd50 6c 2d 36 33 36 0d 0a 53 45 4c 45 43 54 20 43 4f  l-636..SELECT CO
1cd60 55 4e 54 28 20 2d 20 63 6f 6c 31 20 29 20 46 52  UNT( - col1 ) FR
1cd70 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
1cd80 57 48 45 52 45 20 28 20 2d 20 43 41 53 54 28 20  WHERE ( - CAST( 
1cd90 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
1cda0 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   ) IS NULL..----
1cdb0 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..3....skipif my
1cdc0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1cdd0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1cde0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 36 0d  wsort label-636.
1cdf0 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20  .SELECT COUNT ( 
1ce00 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  - col1 ) FROM ta
1ce10 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
1ce20 20 28 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c   ( - CAST ( NULL
1ce30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
1ce40 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33  IS NULL..----..3
1ce50 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
1ce60 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  sort..SELECT - -
1ce70 20 63 6f 6c 30 2c 20 2d 20 32 34 20 41 53 20 63   col0, - 24 AS c
1ce80 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
1ce90 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d   cor0..----..15.
1cea0 0a 2d 32 34 0d 0a 38 37 0d 0a 2d 32 34 0d 0a 39  .-24..87..-24..9
1ceb0 37 0d 0a 2d 32 34 0d 0a 0d 0a 71 75 65 72 79 20  7..-24....query 
1cec0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
1ced0 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
1cee0 61 62 30 20 57 48 45 52 45 20 2b 20 34 39 20 4e  ab0 WHERE + 49 N
1cef0 4f 54 20 49 4e 20 28 20 2b 20 63 6f 6c 31 2c 20  OT IN ( + col1, 
1cf00 35 39 2c 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d  59, + col1 )..--
1cf10 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
1cf20 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35  hing to c4b42765
1cf30 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35  dff94eaaa46040e5
1cf40 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72  37fb43b7....quer
1cf50 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
1cf60 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
1cf70 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
1cf80 4e 4f 54 20 2b 20 63 6f 6c 30 20 2b 20 63 6f 6c  NOT + col0 + col
1cf90 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
1cfa0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
1cfb0 67 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66  g to c4b42765dff
1cfc0 39 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66  94eaaa46040e537f
1cfd0 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49  b43b7....query I
1cfe0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1cff0 20 2d 20 36 30 20 2a 20 2d 20 28 20 2b 20 63 6f   - 60 * - ( + co
1d000 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  l2 ) FROM tab1 A
1d010 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 35  S cor0..----..35
1d020 34 30 0d 0a 34 30 38 30 0d 0a 35 37 36 30 0d 0a  40..4080..5760..
1d030 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1d040 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1d050 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1d060 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 31 0d 0a  sort label-641..
1d070 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1d080 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b  - COUNT( * ) * +
1d090 20 36 34 20 46 52 4f 4d 20 74 61 62 30 20 63 6f   64 FROM tab0 co
1d0a0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
1d0b0 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b1 AS cor1..----
1d0c0 0d 0a 2d 35 37 36 0d 0a 0d 0a 73 6b 69 70 69 66  ..-576....skipif
1d0d0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1d0e0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1d0f0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1d100 34 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  41..SELECT DISTI
1d110 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  NCT - COUNT ( * 
1d120 29 20 2a 20 2b 20 36 34 20 46 52 4f 4d 20 74 61  ) * + 64 FROM ta
1d130 62 30 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  b0 cor0 CROSS JO
1d140 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 0d  IN tab1 AS cor1.
1d150 0a 2d 2d 2d 2d 0d 0a 2d 35 37 36 0d 0a 0d 0a 6f  .----..-576....o
1d160 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1d170 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1d180 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1d190 74 20 6c 61 62 65 6c 2d 36 34 32 0d 0a 53 45 4c  t label-642..SEL
1d1a0 45 43 54 20 41 4c 4c 20 4d 49 4e 28 20 2b 20 36  ECT ALL MIN( + 6
1d1b0 39 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  9 ) AS col2 FROM
1d1c0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1d1d0 2d 2d 2d 0d 0a 36 39 0d 0a 0d 0a 73 6b 69 70 69  ---..69....skipi
1d1e0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1d1f0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1d200 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1d210 36 34 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  642..SELECT ALL 
1d220 4d 49 4e 20 28 20 2b 20 36 39 20 29 20 41 53 20  MIN ( + 69 ) AS 
1d230 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
1d240 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 39  S cor0..----..69
1d250 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1d260 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1d270 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1d280 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 33  owsort label-643
1d290 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28  ..SELECT ALL + (
1d2a0 20 53 55 4d 28 20 2b 20 2d 20 63 6f 6c 30 20 29   SUM( + - col0 )
1d2b0 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
1d2c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 35  cor0..----..-185
1d2d0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1d2e0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1d2f0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1d300 72 74 20 6c 61 62 65 6c 2d 36 34 33 0d 0a 53 45  rt label-643..SE
1d310 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 53 55 4d  LECT ALL + ( SUM
1d320 20 28 20 2b 20 2d 20 63 6f 6c 30 20 29 20 29 20   ( + - col0 ) ) 
1d330 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1d340 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 35 0d 0a 0d  0..----..-185...
1d350 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
1d360 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
1d370 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1d380 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1d390 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1d3a0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1d3b0 43 54 20 2d 20 33 37 20 63 6f 6c 31 2c 20 2b 20  CT - 37 col1, + 
1d3c0 38 30 20 2d 20 31 37 20 46 52 4f 4d 20 74 61 62  80 - 17 FROM tab
1d3d0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
1d3e0 0a 2d 33 37 0d 0a 36 33 0d 0a 2d 33 37 0d 0a 36  .-37..63..-37..6
1d3f0 33 0d 0a 2d 33 37 0d 0a 36 33 0d 0a 0d 0a 71 75  3..-37..63....qu
1d400 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1d410 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1d420 20 37 37 20 41 53 20 63 6f 6c 31 2c 20 63 6f 6c   77 AS col1, col
1d430 30 20 41 53 20 63 6f 6c 30 2c 20 31 30 20 2b 20  0 AS col0, 10 + 
1d440 2b 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 37  + + col0 * - - 7
1d450 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1d460 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  b2..----..9 valu
1d470 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 64 35  es hashing to d5
1d480 33 65 34 33 32 63 66 36 66 64 36 66 37 32 65 64  3e432cf6fd6f72ed
1d490 37 65 33 63 62 62 30 33 33 36 63 30 65 38 0d 0a  7e3cbb0336c0e8..
1d4a0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1d4b0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1d4c0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1d4d0 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 36 0d 0a  sort label-646..
1d4e0 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20  SELECT COUNT( * 
1d4f0 29 20 2b 20 2b 20 36 33 20 41 53 20 63 6f 6c 31  ) + + 63 AS col1
1d500 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
1d510 0d 0a 36 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..66....skipif m
1d520 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1d530 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1d540 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 36  owsort label-646
1d550 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28  ..SELECT COUNT (
1d560 20 2a 20 29 20 2b 20 2b 20 36 33 20 41 53 20 63   * ) + + 63 AS c
1d570 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
1d580 2d 2d 2d 0d 0a 36 36 0d 0a 0d 0a 71 75 65 72 79  ---..66....query
1d590 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1d5a0 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a 20 39 30  CT ALL col2 * 90
1d5b0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
1d5c0 0d 0a 34 32 33 30 0d 0a 38 39 31 30 0d 0a 39 30  ..4230..8910..90
1d5d0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  0....query III r
1d5e0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1d5f0 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
1d600 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  ab2 WHERE NOT - 
1d610 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col0 IS NULL..--
1d620 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
1d630 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
1d640 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
1d650 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79  962d0a49....only
1d660 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
1d670 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
1d680 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1d690 61 62 65 6c 2d 36 34 39 0d 0a 53 45 4c 45 43 54  abel-649..SELECT
1d6a0 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   - - COUNT( * ) 
1d6b0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1d6c0 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  2 WHERE NULL IS 
1d6d0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  NULL..----..3...
1d6e0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1d6f0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1d700 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1d710 6c 61 62 65 6c 2d 36 34 39 0d 0a 53 45 4c 45 43  label-649..SELEC
1d720 54 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  T - - COUNT ( * 
1d730 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
1d740 61 62 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 49  ab2 WHERE NULL I
1d750 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S NULL..----..3.
1d760 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
1d770 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1d780 2d 20 37 37 2c 20 63 6f 6c 30 20 46 52 4f 4d 20  - 77, col0 FROM 
1d790 74 61 62 31 20 57 48 45 52 45 20 63 6f 6c 32 20  tab1 WHERE col2 
1d7a0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
1d7b0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1d7c0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1d7d0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1d7e0 6f 72 74 20 6c 61 62 65 6c 2d 36 35 31 0d 0a 53  ort label-651..S
1d7f0 45 4c 45 43 54 20 4d 49 4e 28 20 34 30 20 29 20  ELECT MIN( 40 ) 
1d800 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
1d810 0a 34 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .40....skipif my
1d820 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1d830 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1d840 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 31 0d  wsort label-651.
1d850 0a 53 45 4c 45 43 54 20 4d 49 4e 20 28 20 34 30  .SELECT MIN ( 40
1d860 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d   ) FROM tab1..--
1d870 2d 2d 0d 0a 34 30 0d 0a 0d 0a 71 75 65 72 79 20  --..40....query 
1d880 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1d890 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 63  T DISTINCT + - c
1d8a0 6f 6c 30 20 2a 20 2d 20 38 30 20 2b 20 2d 20 63  ol0 * - 80 + - c
1d8b0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol0 FROM tab1 co
1d8c0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 30 32 39 0d 0a  r0..----..4029..
1d8d0 36 37 31 35 0d 0a 37 31 38 39 0d 0a 0d 0a 6f 6e  6715..7189....on
1d8e0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1d8f0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1d900 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1d910 20 6c 61 62 65 6c 2d 36 35 33 0d 0a 53 45 4c 45   label-653..SELE
1d920 43 54 20 41 4c 4c 20 2b 20 35 36 20 2d 20 2b 20  CT ALL + 56 - + 
1d930 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  + COUNT( * ) AS 
1d940 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
1d950 2d 2d 2d 2d 0d 0a 35 33 0d 0a 0d 0a 73 6b 69 70  ----..53....skip
1d960 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1d970 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1d980 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1d990 2d 36 35 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -653..SELECT ALL
1d9a0 20 2b 20 35 36 20 2d 20 2b 20 2b 20 43 4f 55 4e   + 56 - + + COUN
1d9b0 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
1d9c0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
1d9d0 0a 35 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .53....onlyif my
1d9e0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
1d9f0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
1da00 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
1da10 72 74 20 6c 61 62 65 6c 2d 36 35 34 0d 0a 53 45  rt label-654..SE
1da20 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2b 20 2b 20  LECT - col2 + + 
1da30 37 32 20 44 49 56 20 2b 20 2d 20 38 32 20 2a 20  72 DIV + - 82 * 
1da40 2b 20 28 20 2b 20 2d 20 63 6f 6c 30 20 29 2c 20  + ( + - col0 ), 
1da50 2b 20 37 30 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 70 AS col2 FRO
1da60 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
1da70 30 0d 0a 37 30 0d 0a 2d 34 37 0d 0a 37 30 0d 0a  0..70..-47..70..
1da80 2d 39 39 0d 0a 37 30 0d 0a 0d 0a 73 6b 69 70 69  -99..70....skipi
1da90 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1daa0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1dab0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
1dac0 2d 36 35 34 0d 0a 53 45 4c 45 43 54 20 2d 20 63  -654..SELECT - c
1dad0 6f 6c 32 20 2b 20 2b 20 37 32 20 2f 20 2b 20 2d  ol2 + + 72 / + -
1dae0 20 38 32 20 2a 20 2b 20 28 20 2b 20 2d 20 63 6f   82 * + ( + - co
1daf0 6c 30 20 29 2c 20 2b 20 37 30 20 41 53 20 63 6f  l0 ), + 70 AS co
1db00 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
1db10 2d 2d 0d 0a 2d 31 30 0d 0a 37 30 0d 0a 2d 34 37  --..-10..70..-47
1db20 0d 0a 37 30 0d 0a 2d 39 39 0d 0a 37 30 0d 0a 0d  ..70..-99..70...
1db30 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1db40 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
1db50 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
1db60 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1db70 6c 2d 36 35 35 0d 0a 53 45 4c 45 43 54 20 41 4c  l-655..SELECT AL
1db80 4c 20 2d 20 28 20 2b 20 63 6f 6c 32 20 29 20 2a  L - ( + col2 ) *
1db90 20 2b 20 43 41 53 54 28 20 2d 20 38 39 20 41 53   + CAST( - 89 AS
1dba0 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20 63 6f   SIGNED ) * - co
1dbb0 6c 32 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 46 52  l2 + - + col0 FR
1dbc0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
1dbd0 31 39 36 36 31 36 0d 0a 2d 38 37 32 33 38 36 0d  196616..-872386.
1dbe0 0a 2d 38 39 38 37 0d 0a 0d 0a 73 6b 69 70 69 66  .-8987....skipif
1dbf0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1dc00 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1dc10 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1dc20 35 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  55..SELECT ALL -
1dc30 20 28 20 2b 20 63 6f 6c 32 20 29 20 2a 20 2b 20   ( + col2 ) * + 
1dc40 43 41 53 54 20 28 20 2d 20 38 39 20 41 53 20 49  CAST ( - 89 AS I
1dc50 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c  NTEGER ) * - col
1dc60 32 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 46 52 4f  2 + - + col0 FRO
1dc70 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
1dc80 39 36 36 31 36 0d 0a 2d 38 37 32 33 38 36 0d 0a  96616..-872386..
1dc90 2d 38 39 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49  -8987....query I
1dca0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1dcb0 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 46   DISTINCT col0 F
1dcc0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1dcd0 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20   WHERE NOT col0 
1dce0 2b 20 2d 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c  + - col0 IS NULL
1dcf0 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 36 34 0d 0a  ..----..46..64..
1dd00 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  75....query I ro
1dd10 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 36 37  wsort..SELECT 67
1dd20 20 2b 20 2d 20 2b 20 32 30 20 41 53 20 63 6f 6c   + - + 20 AS col
1dd30 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
1dd40 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 34  or0..----..47..4
1dd50 37 0d 0a 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49  7..47....query I
1dd60 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1dd70 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 37 35   DISTINCT + - 75
1dd80 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1dd90 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 35 0d 0a 0d  r0..----..-75...
1dda0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1ddb0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1ddc0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1ddd0 6f 72 74 20 6c 61 62 65 6c 2d 36 35 39 0d 0a 53  ort label-659..S
1dde0 45 4c 45 43 54 20 41 4c 4c 20 4d 41 58 28 20 41  ELECT ALL MAX( A
1ddf0 4c 4c 20 2b 20 2b 20 63 6f 6c 30 20 29 20 41 53  LL + + col0 ) AS
1de00 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
1de10 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a  cor0..----..91..
1de20 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1de30 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1de40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1de50 20 6c 61 62 65 6c 2d 36 35 39 0d 0a 53 45 4c 45   label-659..SELE
1de60 43 54 20 41 4c 4c 20 4d 41 58 20 28 20 41 4c 4c  CT ALL MAX ( ALL
1de70 20 2b 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63   + + col0 ) AS c
1de80 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol2 FROM tab1 co
1de90 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a  r0..----..91....
1dea0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1deb0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
1dec0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
1ded0 30 20 57 48 45 52 45 20 2b 20 31 35 20 4e 4f 54  0 WHERE + 15 NOT
1dee0 20 49 4e 20 28 20 63 6f 6c 32 20 2a 20 2d 20 32   IN ( col2 * - 2
1def0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75   )..----..9 valu
1df00 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
1df10 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
1df20 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
1df30 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1df40 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1df50 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1df60 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 31 0d 0a  sort label-661..
1df70 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55  SELECT ALL - COU
1df80 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
1df90 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
1dfa0 4e 4f 54 20 63 6f 6c 31 20 3e 20 4e 55 4c 4c 0d  NOT col1 > NULL.
1dfb0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
1dfc0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1dfd0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1dfe0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1dff0 2d 36 36 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -661..SELECT ALL
1e000 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46   - COUNT ( * ) F
1e010 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1e020 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20   WHERE NOT col1 
1e030 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  > NULL..----..0.
1e040 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
1e050 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1e060 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
1e070 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55 4c  cor0 WHERE ( NUL
1e080 4c 20 29 20 3e 3d 20 63 6f 6c 31 0d 0a 2d 2d 2d  L ) >= col1..---
1e090 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
1e0a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
1e0b0 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
1e0c0 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
1e0d0 4e 55 4c 4c 20 3e 20 2b 20 63 6f 6c 32 0d 0a 2d  NULL > + col2..-
1e0e0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
1e0f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1e100 63 6f 6c 30 2c 20 63 6f 6c 30 20 41 53 20 63 6f  col0, col0 AS co
1e110 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
1e120 2d 2d 0d 0a 31 35 0d 0a 31 35 0d 0a 38 37 0d 0a  --..15..15..87..
1e130 38 37 0d 0a 39 37 0d 0a 39 37 0d 0a 0d 0a 6f 6e  87..97..97....on
1e140 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
1e150 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
1e160 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
1e170 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1e180 36 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  65..SELECT ALL -
1e190 20 63 6f 6c 31 20 44 49 56 20 2b 20 63 6f 6c 32   col1 DIV + col2
1e1a0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1e1b0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32  b0..----..-1..-2
1e1c0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
1e1d0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1e1e0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1e1f0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 35 0d  wsort label-665.
1e200 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
1e210 6c 31 20 2f 20 2b 20 63 6f 6c 32 20 41 53 20 63  l1 / + col2 AS c
1e220 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
1e230 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32 0d 0a 30 0d 0a  ---..-1..-2..0..
1e240 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e250 74 0d 0a 53 45 4c 45 43 54 20 37 33 20 2a 20 2d  t..SELECT 73 * -
1e260 20 35 37 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d   57 FROM tab1..-
1e270 2d 2d 2d 0d 0a 2d 34 31 36 31 0d 0a 2d 34 31 36  ---..-4161..-416
1e280 31 0d 0a 2d 34 31 36 31 0d 0a 0d 0a 71 75 65 72  1..-4161....quer
1e290 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1e2a0 45 43 54 20 28 20 2d 20 28 20 2d 20 63 6f 6c 31  ECT ( - ( - col1
1e2b0 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20 57   ) ) FROM tab2 W
1e2c0 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3d 20  HERE NOT NULL = 
1e2d0 33 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  31..----....quer
1e2e0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1e2f0 45 43 54 20 28 20 2d 20 28 20 37 32 20 29 20 29  ECT ( - ( 72 ) )
1e300 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63   * + - col1 AS c
1e310 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
1e320 2d 2d 2d 0d 0a 31 30 30 38 0d 0a 33 33 38 34 0d  ---..1008..3384.
1e330 0a 33 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .360....query II
1e340 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1e350 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
1e360 30 20 57 48 45 52 45 20 28 20 4e 4f 54 20 28 20  0 WHERE ( NOT ( 
1e370 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20 4e 55  NULL ) IS NOT NU
1e380 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  LL )..----..9 va
1e390 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
1e3a0 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
1e3b0 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
1e3c0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1e3d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 37 20  ort..SELECT ( 7 
1e3e0 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
1e3f0 2d 0d 0a 37 0d 0a 37 0d 0a 37 0d 0a 0d 0a 73 6b  -..7..7..7....sk
1e400 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1e410 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
1e420 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
1e430 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
1e440 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
1e450 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1e460 49 53 54 49 4e 43 54 20 33 30 20 63 6f 6c 32 20  ISTINCT 30 col2 
1e470 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
1e480 0a 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .30....query I r
1e490 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1e4a0 49 53 54 49 4e 43 54 20 2d 20 28 20 2d 20 2d 20  ISTINCT - ( - - 
1e4b0 63 6f 6c 32 20 29 20 2a 20 2d 20 37 34 20 41 53  col2 ) * - 74 AS
1e4c0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
1e4d0 0a 2d 2d 2d 2d 0d 0a 34 33 36 36 0d 0a 35 30 33  .----..4366..503
1e4e0 32 0d 0a 37 31 30 34 0d 0a 0d 0a 71 75 65 72 79  2..7104....query
1e4f0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
1e500 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
1e510 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
1e520 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20  RE NOT ( NULL ) 
1e530 4e 4f 54 20 42 45 54 57 45 45 4e 20 28 20 4e 55  NOT BETWEEN ( NU
1e540 4c 4c 20 29 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d  LL ) AND NULL..-
1e550 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
1e560 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1e570 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
1e580 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
1e590 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54  ERE NOT NULL NOT
1e5a0 20 42 45 54 57 45 45 4e 20 63 6f 6c 30 20 2a 20   BETWEEN col0 * 
1e5b0 2b 20 63 6f 6c 31 20 41 4e 44 20 4e 55 4c 4c 0d  + col1 AND NULL.
1e5c0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
1e5d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1e5e0 20 2b 20 38 39 20 41 53 20 63 6f 6c 32 20 46 52   + 89 AS col2 FR
1e5f0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
1e600 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20  CROSS JOIN tab0 
1e610 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39  AS cor1..----..9
1e620 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
1e630 74 6f 20 35 63 38 34 32 38 65 39 66 31 65 37 64  to 5c8428e9f1e7d
1e640 65 33 64 30 39 63 62 30 38 31 34 62 34 63 63 31  e3d09cb0814b4cc1
1e650 37 34 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  743....onlyif my
1e660 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
1e670 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
1e680 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
1e690 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1e6a0 6f 72 74 20 6c 61 62 65 6c 2d 36 37 36 0d 0a 53  ort label-676..S
1e6b0 45 4c 45 43 54 20 43 41 53 54 28 20 2b 20 43 4f  ELECT CAST( + CO
1e6c0 55 4e 54 28 20 2a 20 29 20 41 53 20 53 49 47 4e  UNT( * ) AS SIGN
1e6d0 45 44 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  ED ) AS col1 FRO
1e6e0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  M tab0..----..3.
1e6f0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1e700 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1e710 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e720 74 20 6c 61 62 65 6c 2d 36 37 36 0d 0a 53 45 4c  t label-676..SEL
1e730 45 43 54 20 43 41 53 54 20 28 20 2b 20 43 4f 55  ECT CAST ( + COU
1e740 4e 54 20 28 20 2a 20 29 20 41 53 20 49 4e 54 45  NT ( * ) AS INTE
1e750 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20 46 52  GER ) AS col1 FR
1e760 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab0..----..3
1e770 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1e780 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
1e790 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
1e7a0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
1e7b0 6c 61 62 65 6c 2d 36 37 37 0d 0a 53 45 4c 45 43  label-677..SELEC
1e7c0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53  T DISTINCT + CAS
1e7d0 54 28 20 2d 20 2b 20 36 31 20 41 53 20 53 49 47  T( - + 61 AS SIG
1e7e0 4e 45 44 20 29 20 63 6f 6c 30 2c 20 2d 20 63 6f  NED ) col0, - co
1e7f0 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
1e800 2d 2d 0d 0a 2d 36 31 0d 0a 2d 31 35 0d 0a 2d 36  --..-61..-15..-6
1e810 31 0d 0a 2d 38 37 0d 0a 2d 36 31 0d 0a 2d 39 37  1..-87..-61..-97
1e820 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1e830 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1e840 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
1e850 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
1e860 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
1e870 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
1e880 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
1e890 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
1e8a0 65 6c 2d 36 37 37 0d 0a 53 45 4c 45 43 54 20 44  el-677..SELECT D
1e8b0 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 20 28  ISTINCT + CAST (
1e8c0 20 2d 20 2b 20 36 31 20 41 53 20 49 4e 54 45 47   - + 61 AS INTEG
1e8d0 45 52 20 29 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c  ER ) col0, - col
1e8e0 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  0 FROM tab0..---
1e8f0 2d 0d 0a 2d 36 31 0d 0a 2d 31 35 0d 0a 2d 36 31  -..-61..-15..-61
1e900 0d 0a 2d 38 37 0d 0a 2d 36 31 0d 0a 2d 39 37 0d  ..-87..-61..-97.
1e910 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1e920 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
1e930 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
1e940 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37 38 0d  wsort label-678.
1e950 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1e960 20 2d 20 53 55 4d 28 20 2b 20 63 6f 6c 30 20 29   - SUM( + col0 )
1e970 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
1e980 0a 2d 2d 2d 2d 0d 0a 2d 32 32 37 0d 0a 0d 0a 73  .----..-227....s
1e990 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1e9a0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1e9b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1e9c0 62 65 6c 2d 36 37 38 0d 0a 53 45 4c 45 43 54 20  bel-678..SELECT 
1e9d0 44 49 53 54 49 4e 43 54 20 2d 20 53 55 4d 20 28  DISTINCT - SUM (
1e9e0 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   + col0 ) FROM t
1e9f0 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1 cor0..----..
1ea00 2d 32 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -227....query I 
1ea10 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1ea20 41 4c 4c 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 2d  ALL + + col0 + -
1ea30 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 31 20 41   col0 * + col1 A
1ea40 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
1ea50 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1ea60 2d 31 32 30 30 0d 0a 2d 31 37 34 30 0d 0a 30 0d  -1200..-1740..0.
1ea70 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1ea80 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
1ea90 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
1eaa0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1eab0 62 65 6c 2d 36 38 30 0d 0a 53 45 4c 45 43 54 20  bel-680..SELECT 
1eac0 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 43 41 53  DISTINCT - - CAS
1ead0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
1eae0 44 20 29 20 2b 20 63 6f 6c 31 20 2f 20 2b 20 2b  D ) + col1 / + +
1eaf0 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52   col1 AS col0 FR
1eb00 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
1eb10 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
1eb20 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1eb30 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1eb40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1eb50 62 65 6c 2d 36 38 30 0d 0a 53 45 4c 45 43 54 20  bel-680..SELECT 
1eb60 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 43 41 53  DISTINCT - - CAS
1eb70 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
1eb80 47 45 52 20 29 20 2b 20 63 6f 6c 31 20 2f 20 2b  GER ) + col1 / +
1eb90 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20   + col1 AS col0 
1eba0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1ebb0 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
1ebc0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1ebd0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1ebe0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1ebf0 6f 72 74 20 6c 61 62 65 6c 2d 36 38 31 0d 0a 53  ort label-681..S
1ec00 45 4c 45 43 54 20 2d 20 53 55 4d 28 20 63 6f 6c  ELECT - SUM( col
1ec10 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  0 ) FROM tab2 AS
1ec20 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   cor0..----..-18
1ec30 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
1ec40 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1ec50 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1ec60 6f 72 74 20 6c 61 62 65 6c 2d 36 38 31 0d 0a 53  ort label-681..S
1ec70 45 4c 45 43 54 20 2d 20 53 55 4d 20 28 20 63 6f  ELECT - SUM ( co
1ec80 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  l0 ) FROM tab2 A
1ec90 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
1eca0 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  85....query II r
1ecb0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1ecc0 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 2b 20 63  ISTINCT col0 + c
1ecd0 6f 6c 32 2c 20 2b 20 38 32 20 41 53 20 63 6f 6c  ol2, + 82 AS col
1ece0 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
1ecf0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 34 0d 0a  or0..----..104..
1ed00 38 32 0d 0a 31 33 33 0d 0a 38 32 0d 0a 36 39 0d  82..133..82..69.
1ed10 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .82....query I r
1ed20 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1ed30 4c 4c 20 2d 20 2d 20 63 6f 6c 30 20 2b 20 36 31  LL - - col0 + 61
1ed40 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1ed50 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
1ed60 0d 0a 31 30 37 0d 0a 31 32 35 0d 0a 31 33 36 0d  ..107..125..136.
1ed70 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
1ed80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1ed90 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
1eda0 63 6f 72 30 20 57 48 45 52 45 20 37 35 20 49 53  cor0 WHERE 75 IS
1edb0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
1edc0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1edd0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1ede0 2d 20 63 6f 6c 31 20 2b 20 2d 20 38 38 20 46 52  - col1 + - 88 FR
1edf0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
1ee00 31 30 32 0d 0a 2d 31 33 35 0d 0a 2d 39 33 0d 0a  102..-135..-93..
1ee10 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1ee20 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
1ee30 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 2b 20  OM tab0 WHERE + 
1ee40 63 6f 6c 30 20 3d 20 63 6f 6c 32 0d 0a 2d 2d 2d  col0 = col2..---
1ee50 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  -....skipif post
1ee60 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
1ee70 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
1ee80 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
1ee90 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
1eea0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1eeb0 45 4c 45 43 54 20 2b 20 33 31 20 2a 20 63 6f 6c  ELECT + 31 * col
1eec0 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  0 col0 FROM tab0
1eed0 0d 0a 2d 2d 2d 2d 0d 0a 32 36 39 37 0d 0a 33 30  ..----..2697..30
1eee0 30 37 0d 0a 34 36 35 0d 0a 0d 0a 71 75 65 72 79  07..465....query
1eef0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
1ef00 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
1ef10 20 57 48 45 52 45 20 33 20 49 4e 20 28 20 2b 20   WHERE 3 IN ( + 
1ef20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col2 )..----....
1ef30 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
1ef40 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
1ef50 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1ef60 72 74 20 6c 61 62 65 6c 2d 36 38 39 0d 0a 53 45  rt label-689..SE
1ef70 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 31 30 20  LECT ALL - - 10 
1ef80 2b 20 2d 20 2d 20 30 20 2a 20 2b 20 43 4f 55 4e  + - - 0 * + COUN
1ef90 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46  T( * ) AS col2 F
1efa0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1efb0 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 0d 0a 73 6b  ..----..10....sk
1efc0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1efd0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1efe0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1eff0 65 6c 2d 36 38 39 0d 0a 53 45 4c 45 43 54 20 41  el-689..SELECT A
1f000 4c 4c 20 2d 20 2d 20 31 30 20 2b 20 2d 20 2d 20  LL - - 10 + - - 
1f010 30 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  0 * + COUNT ( * 
1f020 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
1f030 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
1f040 2d 0d 0a 31 30 0d 0a 0d 0a 71 75 65 72 79 20 49  -..10....query I
1f050 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1f060 20 44 49 53 54 49 4e 43 54 20 2b 20 35 30 20 2b   DISTINCT + 50 +
1f070 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
1f080 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  1 cor0..----..10
1f090 31 0d 0a 31 33 35 0d 0a 31 34 31 0d 0a 0d 0a 6f  1..135..141....o
1f0a0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1f0b0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1f0c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f0d0 74 20 6c 61 62 65 6c 2d 36 39 31 0d 0a 53 45 4c  t label-691..SEL
1f0e0 45 43 54 20 37 30 20 2b 20 2b 20 37 34 20 2b 20  ECT 70 + + 74 + 
1f0f0 53 55 4d 28 20 63 6f 6c 32 20 29 20 41 53 20 63  SUM( col2 ) AS c
1f100 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
1f110 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 35   cor0..----..265
1f120 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1f130 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1f140 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1f150 72 74 20 6c 61 62 65 6c 2d 36 39 31 0d 0a 53 45  rt label-691..SE
1f160 4c 45 43 54 20 37 30 20 2b 20 2b 20 37 34 20 2b  LECT 70 + + 74 +
1f170 20 53 55 4d 20 28 20 63 6f 6c 32 20 29 20 41 53   SUM ( col2 ) AS
1f180 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
1f190 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32  AS cor0..----..2
1f1a0 36 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  65....query I ro
1f1b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1f1c0 4c 20 2d 20 35 35 20 2a 20 2d 20 63 6f 6c 32 20  L - 55 * - col2 
1f1d0 2b 20 2b 20 2b 20 63 6f 6c 31 20 2b 20 2d 20 63  + + + col1 + - c
1f1e0 6f 6c 32 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20  ol2 + col2 FROM 
1f1f0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
1f200 2d 2d 0d 0a 32 36 36 36 0d 0a 35 34 34 36 0d 0a  --..2666..5446..
1f210 35 37 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  571....query I r
1f220 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1f230 4c 4c 20 2b 20 28 20 2b 20 2b 20 63 6f 6c 30 20  LL + ( + + col0 
1f240 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
1f250 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38  or0..----..15..8
1f260 37 0d 0a 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49  7..97....query I
1f270 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1f280 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 36 36 20 41   + - col0 * 66 A
1f290 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
1f2a0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33   cor0..----..-33
1f2b0 36 36 0d 0a 2d 35 36 31 30 0d 0a 2d 36 30 30 36  66..-5610..-6006
1f2c0 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
1f2d0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1f2e0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1f2f0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1f300 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1f310 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
1f320 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 63 6f  ELECT ALL - + co
1f330 6c 31 20 63 6f 6c 30 2c 20 31 35 20 46 52 4f 4d  l1 col0, 15 FROM
1f340 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
1f350 2d 2d 2d 0d 0a 2d 35 31 0d 0a 31 35 0d 0a 2d 36  ---..-51..15..-6
1f360 37 0d 0a 31 35 0d 0a 2d 37 37 0d 0a 31 35 0d 0a  7..15..-77..15..
1f370 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1f380 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1f390 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  INCT * FROM tab2
1f3a0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
1f3b0 4f 54 20 28 20 36 35 20 29 20 49 53 20 4e 4f 54  OT ( 65 ) IS NOT
1f3c0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
1f3d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1f3e0 53 45 4c 45 43 54 20 28 20 2b 20 39 36 20 29 20  SELECT ( + 96 ) 
1f3f0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1f400 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
1f410 0a 39 36 0d 0a 39 36 0d 0a 39 36 0d 0a 0d 0a 71  .96..96..96....q
1f420 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1f430 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1f440 2b 20 35 36 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 56 AS col2 FRO
1f450 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52  M tab1 cor0 WHER
1f460 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 49  E NOT ( NULL ) I
1f470 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
1f480 0d 0a 35 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..56....onlyif m
1f490 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1f4a0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1f4b0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1f4c0 2d 36 39 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -699..SELECT ALL
1f4d0 20 2d 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2b 20   - COUNT( ALL + 
1f4e0 38 39 20 29 20 2a 20 2b 20 36 30 20 41 53 20 63  89 ) * + 60 AS c
1f4f0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
1f500 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   cor0..----..-18
1f510 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
1f520 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1f530 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1f540 6f 72 74 20 6c 61 62 65 6c 2d 36 39 39 0d 0a 53  ort label-699..S
1f550 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e  ELECT ALL - COUN
1f560 54 20 28 20 41 4c 4c 20 2b 20 38 39 20 29 20 2a  T ( ALL + 89 ) *
1f570 20 2b 20 36 30 20 41 53 20 63 6f 6c 31 20 46 52   + 60 AS col1 FR
1f580 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
1f590 0a 2d 2d 2d 2d 0d 0a 2d 31 38 30 0d 0a 0d 0a 71  .----..-180....q
1f5a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1f5b0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1f5c0 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 2b 20  col0 * - col2 + 
1f5d0 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46  - col2 AS col2 F
1f5e0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1f5f0 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 35 32 0d 0a 2d 38  ..----..-752..-8
1f600 38 30 0d 0a 2d 39 37 30 32 0d 0a 0d 0a 6f 6e 6c  80..-9702....onl
1f610 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1f620 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1f630 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1f640 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30  rowsort label-70
1f650 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  1..SELECT ALL - 
1f660 63 6f 6c 30 20 2a 20 2b 20 43 41 53 54 28 20 2d  col0 * + CAST( -
1f670 20 63 6f 6c 31 20 41 53 20 53 49 47 4e 45 44 20   col1 AS SIGNED 
1f680 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  ) FROM tab0..---
1f690 2d 0d 0a 31 32 31 35 0d 0a 31 38 32 37 0d 0a 39  -..1215..1827..9
1f6a0 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
1f6b0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1f6c0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1f6d0 6f 72 74 20 6c 61 62 65 6c 2d 37 30 31 0d 0a 53  ort label-701..S
1f6e0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30  ELECT ALL - col0
1f6f0 20 2a 20 2b 20 43 41 53 54 20 28 20 2d 20 63 6f   * + CAST ( - co
1f700 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  l1 AS INTEGER ) 
1f710 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
1f720 0a 31 32 31 35 0d 0a 31 38 32 37 0d 0a 39 37 0d  .1215..1827..97.
1f730 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1f740 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
1f750 20 39 36 20 46 52 4f 4d 20 74 61 62 32 20 57 48   96 FROM tab2 WH
1f760 45 52 45 20 2d 20 31 30 20 2a 20 2d 20 2d 20 63  ERE - 10 * - - c
1f770 6f 6c 31 20 2b 20 2d 20 32 32 20 49 53 20 4e 4f  ol1 + - 22 IS NO
1f780 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  T NULL..----..-9
1f790 36 0d 0a 2d 39 36 0d 0a 2d 39 36 0d 0a 0d 0a 6f  6..-96..-96....o
1f7a0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
1f7b0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
1f7c0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
1f7d0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1f7e0 37 30 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  703..SELECT DIST
1f7f0 49 4e 43 54 20 63 6f 6c 32 20 44 49 56 20 2d 20  INCT col2 DIV - 
1f800 28 20 2b 20 63 6f 6c 31 20 29 20 2a 20 2b 20 33  ( + col1 ) * + 3
1f810 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
1f820 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
1f830 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1f840 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
1f850 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
1f860 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
1f870 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
1f880 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
1f890 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
1f8a0 6f 72 74 20 6c 61 62 65 6c 2d 37 30 33 0d 0a 53  ort label-703..S
1f8b0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
1f8c0 6f 6c 32 20 2f 20 2d 20 28 20 2b 20 63 6f 6c 31  ol2 / - ( + col1
1f8d0 20 29 20 2a 20 2b 20 33 20 63 6f 6c 32 20 46 52   ) * + 3 col2 FR
1f8e0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab2..----..0
1f8f0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1f900 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  ort..SELECT col0
1f910 20 2d 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 2d 20   - + col2 + - - 
1f920 35 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  52 FROM tab1 WHE
1f930 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e  RE NOT NULL IS N
1f940 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
1f950 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
1f960 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
1f970 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49  sion: ..query II
1f980 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
1f990 30 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  05..SELECT ALL +
1f9a0 20 63 6f 6c 32 20 44 49 56 20 39 36 20 41 53 20   col2 DIV 96 AS 
1f9b0 63 6f 6c 32 2c 20 2b 20 63 6f 6c 32 20 2b 20 63  col2, + col2 + c
1f9c0 6f 6c 31 20 2b 20 2b 20 63 6f 6c 30 20 46 52 4f  ol1 + + col0 FRO
1f9d0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab1..----..0.
1f9e0 0a 31 34 39 0d 0a 30 0d 0a 32 30 36 0d 0a 31 0d  .149..0..206..1.
1f9f0 0a 31 36 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .161....skipif m
1fa00 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1fa10 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
1fa20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30  rowsort label-70
1fa30 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  5..SELECT ALL + 
1fa40 63 6f 6c 32 20 2f 20 39 36 20 41 53 20 63 6f 6c  col2 / 96 AS col
1fa50 32 2c 20 2b 20 63 6f 6c 32 20 2b 20 63 6f 6c 31  2, + col2 + col1
1fa60 20 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74   + + col0 FROM t
1fa70 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 34  ab1..----..0..14
1fa80 39 0d 0a 30 0d 0a 32 30 36 0d 0a 31 0d 0a 31 36  9..0..206..1..16
1fa90 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  1....query III r
1faa0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
1fab0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
1fac0 20 4e 4f 54 20 63 6f 6c 30 20 2a 20 2b 20 2b 20   NOT col0 * + + 
1fad0 37 31 20 2f 20 2d 20 35 20 2b 20 2b 20 35 32 20  71 / - 5 + + 52 
1fae0 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
1faf0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
1fb00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1fb10 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
1fb20 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
1fb30 45 20 4e 4f 54 20 2d 20 38 20 49 53 20 4e 4f 54  E NOT - 8 IS NOT
1fb40 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
1fb50 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1fb60 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
1fb70 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b  ROM tab2 WHERE +
1fb80 20 63 6f 6c 30 20 4e 4f 54 20 42 45 54 57 45 45   col0 NOT BETWEE
1fb90 4e 20 2d 20 33 34 20 2b 20 2b 20 34 39 20 41 4e  N - 34 + + 49 AN
1fba0 44 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a  D - col2..----..
1fbb0 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
1fbc0 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63   to 75c998aa53ac
1fbd0 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64  83218cbf2feb962d
1fbe0 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  0a49....onlyif m
1fbf0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
1fc00 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
1fc10 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1fc20 72 74 20 6c 61 62 65 6c 2d 37 30 39 0d 0a 53 45  rt label-709..SE
1fc30 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20  LECT ALL + col2 
1fc40 44 49 56 20 2d 20 36 36 20 46 52 4f 4d 20 74 61  DIV - 66 FROM ta
1fc50 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d  b0..----..-1..0.
1fc60 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
1fc70 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1fc80 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1fc90 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 39 0d 0a  sort label-709..
1fca0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
1fcb0 32 20 2f 20 2d 20 36 36 20 46 52 4f 4d 20 74 61  2 / - 66 FROM ta
1fcc0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d  b0..----..-1..0.
1fcd0 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
1fce0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
1fcf0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
1fd00 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
1fd10 31 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  10..SELECT ALL +
1fd20 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c 30   COUNT( * ) col0
1fd30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1fd40 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
1fd50 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b1 AS cor1..----
1fd60 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..9....skipif my
1fd70 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1fd80 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
1fd90 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
1fda0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
1fdb0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
1fdc0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
1fdd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1fde0 61 62 65 6c 2d 37 31 30 0d 0a 53 45 4c 45 43 54  abel-710..SELECT
1fdf0 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2a   ALL + COUNT ( *
1fe00 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   ) col0 FROM tab
1fe10 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
1fe20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72  JOIN tab1 AS cor
1fe30 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b  1..----..9....sk
1fe40 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1fe50 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
1fe60 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
1fe70 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
1fe80 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
1fe90 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
1fea0 20 2b 20 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74   + 0 col2 FROM t
1feb0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
1fec0 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75  -..0..0..0....qu
1fed0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1fee0 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 46 52 4f  ELECT - col2 FRO
1fef0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
1ff00 48 45 52 45 20 4e 55 4c 4c 20 3e 20 4e 55 4c 4c  HERE NULL > NULL
1ff10 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
1ff20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1ff30 43 54 20 2d 20 63 6f 6c 32 2c 20 2d 20 35 36 20  CT - col2, - 56 
1ff40 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1ff50 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
1ff60 0a 2d 31 30 0d 0a 2d 35 36 0d 0a 2d 34 37 0d 0a  .-10..-56..-47..
1ff70 2d 35 36 0d 0a 2d 39 39 0d 0a 2d 35 36 0d 0a 0d  -56..-99..-56...
1ff80 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1ff90 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
1ffa0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
1ffb0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
1ffc0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
1ffd0 61 62 65 6c 2d 37 31 34 0d 0a 53 45 4c 45 43 54  abel-714..SELECT
1ffe0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 2c 20 2d   - COUNT( * ), -
1fff0 20 35 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c   5 + - CAST( NUL
20000 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
20010 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
20020 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
20030 33 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  3..NULL....skipi
20040 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
20050 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
20060 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
20070 2d 37 31 34 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -714..SELECT - C
20080 4f 55 4e 54 20 28 20 2a 20 29 2c 20 2d 20 35 20  OUNT ( * ), - 5 
20090 2b 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + - CAST ( NULL 
200a0 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
200b0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
200c0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  S cor0..----..-3
200d0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
200e0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
200f0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20  CT DISTINCT - + 
20100 34 33 20 41 53 20 63 6f 6c 31 2c 20 2d 20 33 36  43 AS col1, - 36
20110 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
20120 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33 0d 0a 2d  r0..----..-43..-
20130 33 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  36....query I ro
20140 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
20150 2b 20 28 20 63 6f 6c 30 20 29 20 2b 20 33 32 20  + ( col0 ) + 32 
20160 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
20170 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d 0a 2d 36  0..----..-55..-6
20180 35 0d 0a 31 37 0d 0a 0d 0a 71 75 65 72 79 20 49  5..17....query I
20190 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
201a0 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f   DISTINCT - + co
201b0 6c 30 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 2b 20  l0 * - - col0 + 
201c0 2b 20 63 6f 6c 30 20 2b 20 2b 20 2d 20 35 20 2a  + col0 + + - 5 *
201d0 20 2b 20 33 37 20 41 53 20 63 6f 6c 32 20 46 52   + 37 AS col2 FR
201e0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
201f0 0a 2d 2d 2d 2d 0d 0a 2d 32 37 33 35 0d 0a 2d 37  .----..-2735..-7
20200 33 32 35 0d 0a 2d 38 33 37 35 0d 0a 0d 0a 71 75  325..-8375....qu
20210 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
20220 45 4c 45 43 54 20 2b 20 33 32 20 2b 20 2b 20 63  ELECT + 32 + + c
20230 6f 6c 32 20 2a 20 2b 20 39 32 20 41 53 20 63 6f  ol2 * + 92 AS co
20240 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
20250 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 33 35 36  cor0..----..4356
20260 0d 0a 39 31 34 30 0d 0a 39 35 32 0d 0a 0d 0a 71  ..9140..952....q
20270 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
20280 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
20290 2b 20 2b 20 28 20 2b 20 2d 20 37 30 20 29 20 2a  + + ( + - 70 ) *
202a0 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   + - col1 FROM t
202b0 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
202c0 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 42 45 54  E NOT + col1 BET
202d0 57 45 45 4e 20 28 20 2d 20 63 6f 6c 32 20 29 20  WEEN ( - col2 ) 
202e0 41 4e 44 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  AND col0..----..
202f0 33 35 37 30 0d 0a 35 33 39 30 0d 0a 0d 0a 71 75  3570..5390....qu
20300 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
20310 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
20320 20 63 6f 6c 31 20 2b 20 2b 20 33 36 20 46 52 4f   col1 + + 36 FRO
20330 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab2..----..10
20340 33 0d 0a 31 31 33 0d 0a 38 37 0d 0a 0d 0a 6f 6e  3..113..87....on
20350 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
20360 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
20370 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
20380 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
20390 32 31 0d 0a 53 45 4c 45 43 54 20 2d 20 34 39 20  21..SELECT - 49 
203a0 44 49 56 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20  DIV - col0 FROM 
203b0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  tab0..----..0..0
203c0 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..3....skipif my
203d0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
203e0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
203f0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 32 31 0d  wsort label-721.
20400 0a 53 45 4c 45 43 54 20 2d 20 34 39 20 2f 20 2d  .SELECT - 49 / -
20410 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
20420 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 33 0d 0a  .----..0..0..3..
20430 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
20440 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
20450 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
20460 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
20470 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
20480 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
20490 43 54 20 41 4c 4c 20 2d 20 38 35 20 63 6f 6c 32  CT ALL - 85 col2
204a0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
204b0 0d 0a 2d 38 35 0d 0a 2d 38 35 0d 0a 2d 38 35 0d  ..-85..-85..-85.
204c0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
204d0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
204e0 20 28 20 2d 20 63 6f 6c 32 20 29 20 2b 20 35 33   ( - col2 ) + 53
204f0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
20500 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
20510 0d 0a 2d 35 0d 0a 31 33 0d 0a 33 30 0d 0a 0d 0a  ..-5..13..30....
20520 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
20530 0a 53 45 4c 45 43 54 20 41 4c 4c 20 36 30 20 41  .SELECT ALL 60 A
20540 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
20550 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
20560 4f 54 20 31 30 20 49 4e 20 28 20 2d 20 2b 20 63  OT 10 IN ( - + c
20570 6f 6c 32 20 2f 20 2d 20 2d 20 33 36 20 2a 20 2d  ol2 / - - 36 * -
20580 20 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d   - col2 )..----.
20590 0a 36 30 0d 0a 36 30 0d 0a 36 30 0d 0a 0d 0a 71  .60..60..60....q
205a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
205b0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
205c0 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  0 FROM tab0 WHER
205d0 45 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 49 4e 20  E NOT - col1 IN 
205e0 28 20 32 37 20 2a 20 2b 20 63 6f 6c 30 20 2b 20  ( 27 * + col0 + 
205f0 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  col0 )..----..-1
20600 35 0d 0a 2d 38 37 0d 0a 2d 39 37 0d 0a 0d 0a 73  5..-87..-97....s
20610 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
20620 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
20630 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
20640 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
20650 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
20660 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
20670 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 2c 20 2d 20  T ALL + col0, - 
20680 63 6f 6c 30 20 2b 20 2b 20 2d 20 38 36 20 63 6f  col0 + + - 86 co
20690 6c 31 2c 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  l1, + col0 AS co
206a0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l2 FROM tab2 cor
206b0 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  0..----..9 value
206c0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 31 35 32  s hashing to 152
206d0 65 36 61 61 36 39 33 34 64 38 34 36 30 64 30 63  e6aa6934d8460d0c
206e0 63 38 39 31 39 36 35 35 37 66 61 61 61 0d 0a 0d  c89196557faaa...
206f0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
20700 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
20710 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
20720 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
20730 54 20 63 6f 6c 31 20 4e 4f 54 20 42 45 54 57 45  T col1 NOT BETWE
20740 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c  EN NULL AND NULL
20750 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
20760 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
20770 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
20780 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
20790 65 6c 2d 37 32 38 0d 0a 53 45 4c 45 43 54 20 41  el-728..SELECT A
207a0 4c 4c 20 2d 20 39 31 20 2a 20 43 4f 55 4e 54 28  LL - 91 * COUNT(
207b0 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   * ) FROM tab1 A
207c0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
207d0 37 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  73....skipif mys
207e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
207f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
20800 73 6f 72 74 20 6c 61 62 65 6c 2d 37 32 38 0d 0a  sort label-728..
20810 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 39 31 20  SELECT ALL - 91 
20820 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52  * COUNT ( * ) FR
20830 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
20840 0a 2d 2d 2d 2d 0d 0a 2d 32 37 33 0d 0a 0d 0a 71  .----..-273....q
20850 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
20860 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
20870 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  tab0 WHERE NOT +
20880 20 63 6f 6c 32 20 2d 20 2d 20 2b 20 38 36 20 2b   col2 - - + 86 +
20890 20 32 31 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   21 IS NOT NULL.
208a0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
208b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
208c0 20 2d 20 32 31 20 2a 20 2d 20 39 33 20 46 52 4f   - 21 * - 93 FRO
208d0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 39  M tab2..----..19
208e0 35 33 0d 0a 31 39 35 33 0d 0a 31 39 35 33 0d 0a  53..1953..1953..
208f0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
20900 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
20910 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
20920 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
20930 65 6c 2d 37 33 31 0d 0a 53 45 4c 45 43 54 20 32  el-731..SELECT 2
20940 34 20 44 49 56 20 2b 20 36 20 63 6f 6c 32 20 46  4 DIV + 6 col2 F
20950 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
20960 34 0d 0a 34 0d 0a 34 0d 0a 0d 0a 73 6b 69 70 69  4..4..4....skipi
20970 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
20980 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
20990 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
209a0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
209b0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
209c0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
209d0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
209e0 72 74 20 6c 61 62 65 6c 2d 37 33 31 0d 0a 53 45  rt label-731..SE
209f0 4c 45 43 54 20 32 34 20 2f 20 2b 20 36 20 63 6f  LECT 24 / + 6 co
20a00 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
20a10 2d 2d 0d 0a 34 0d 0a 34 0d 0a 34 0d 0a 0d 0a 71  --..4..4..4....q
20a20 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
20a30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
20a40 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 37  ROM tab2 WHERE 7
20a50 30 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55  0 NOT BETWEEN NU
20a60 4c 4c 20 41 4e 44 20 2d 20 2d 20 63 6f 6c 31 0d  LL AND - - col1.
20a70 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 35 31 0d 0a 32  .----..46..51..2
20a80 33 0d 0a 37 35 0d 0a 36 37 0d 0a 35 38 0d 0a 0d  3..75..67..58...
20a90 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
20aa0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
20ab0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
20ac0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
20ad0 62 65 6c 2d 37 33 33 0d 0a 53 45 4c 45 43 54 20  bel-733..SELECT 
20ae0 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
20af0 45 20 4e 4f 54 20 43 41 53 54 28 20 2d 20 2b 20  E NOT CAST( - + 
20b00 28 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 53 49  ( + col0 ) AS SI
20b10 47 4e 45 44 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  GNED ) IS NULL..
20b20 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
20b30 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34  ashing to c6c0a4
20b40 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61  111b36d04dbc811a
20b50 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 73 6b  11e4d54cad....sk
20b60 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
20b70 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
20b80 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
20b90 61 62 65 6c 2d 37 33 33 0d 0a 53 45 4c 45 43 54  abel-733..SELECT
20ba0 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
20bb0 52 45 20 4e 4f 54 20 43 41 53 54 20 28 20 2d 20  RE NOT CAST ( - 
20bc0 2b 20 28 20 2b 20 63 6f 6c 30 20 29 20 41 53 20  + ( + col0 ) AS 
20bd0 49 4e 54 45 47 45 52 20 29 20 49 53 20 4e 55 4c  INTEGER ) IS NUL
20be0 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
20bf0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63  s hashing to c6c
20c00 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38  0a4111b36d04dbc8
20c10 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d  11a11e4d54cad...
20c20 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
20c30 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
20c40 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
20c50 6f 72 74 20 6c 61 62 65 6c 2d 37 33 34 0d 0a 53  ort label-734..S
20c60 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53  ELECT DISTINCT S
20c70 55 4d 28 20 41 4c 4c 20 2b 20 28 20 2b 20 2d 20  UM( ALL + ( + - 
20c80 31 20 29 20 29 20 2a 20 43 4f 55 4e 54 28 20 44  1 ) ) * COUNT( D
20c90 49 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 31  ISTINCT - - col1
20ca0 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
20cb0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
20cc0 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69 66  --..-9....skipif
20cd0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
20ce0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
20cf0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
20d00 33 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  34..SELECT DISTI
20d10 4e 43 54 20 53 55 4d 20 28 20 41 4c 4c 20 2b 20  NCT SUM ( ALL + 
20d20 28 20 2b 20 2d 20 31 20 29 20 29 20 2a 20 43 4f  ( + - 1 ) ) * CO
20d30 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20 2d  UNT ( DISTINCT -
20d40 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   - col1 ) AS col
20d50 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
20d60 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d  or0..----..-9...
20d70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20d80 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
20d90 54 20 2d 20 2d 20 63 6f 6c 30 20 2b 20 63 6f 6c  T - - col0 + col
20da0 31 20 2b 20 2b 20 32 30 20 46 52 4f 4d 20 74 61  1 + + 20 FROM ta
20db0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
20dc0 0d 0a 31 31 37 0d 0a 31 36 31 0d 0a 31 36 32 0d  ..117..161..162.
20dd0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
20de0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
20df0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
20e00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 36 0d  wsort label-736.
20e10 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55 4e  .SELECT - + COUN
20e20 54 28 20 2a 20 29 20 2b 20 2d 20 2d 20 37 30 20  T( * ) + - - 70 
20e30 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
20e40 2b 20 28 20 63 6f 6c 32 20 29 20 2a 20 2b 20 63  + ( col2 ) * + c
20e50 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol0 IS NOT NULL.
20e60 0a 2d 2d 2d 2d 0d 0a 36 37 0d 0a 0d 0a 73 6b 69  .----..67....ski
20e70 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
20e80 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
20e90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
20ea0 6c 2d 37 33 36 0d 0a 53 45 4c 45 43 54 20 2d 20  l-736..SELECT - 
20eb0 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20  + COUNT ( * ) + 
20ec0 2d 20 2d 20 37 30 20 46 52 4f 4d 20 74 61 62 32  - - 70 FROM tab2
20ed0 20 57 48 45 52 45 20 2b 20 28 20 63 6f 6c 32 20   WHERE + ( col2 
20ee0 29 20 2a 20 2b 20 63 6f 6c 30 20 49 53 20 4e 4f  ) * + col0 IS NO
20ef0 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 36 37  T NULL..----..67
20f00 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
20f10 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
20f20 33 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  35 FROM tab0 AS 
20f30 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
20f40 74 61 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab1 AS cor1..--
20f50 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
20f60 68 69 6e 67 20 74 6f 20 64 39 62 31 30 33 66 37  hing to d9b103f7
20f70 39 63 34 65 38 66 30 64 65 34 62 37 63 31 63 38  9c4e8f0de4b7c1c8
20f80 32 31 37 38 33 61 32 39 0d 0a 0d 0a 71 75 65 72  21783a29....quer
20f90 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
20fa0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
20fb0 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
20fc0 20 4e 4f 54 20 4e 55 4c 4c 20 42 45 54 57 45 45   NOT NULL BETWEE
20fd0 4e 20 4e 55 4c 4c 20 41 4e 44 20 2d 20 2b 20 63  N NULL AND - + c
20fe0 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol0..----....que
20ff0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
21000 4c 45 43 54 20 63 6f 6c 32 20 2b 20 2d 20 63 6f  LECT col2 + - co
21010 6c 31 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  l1 * + col2 FROM
21020 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32   tab1..----..-12
21030 34 38 0d 0a 2d 32 33 36 0d 0a 2d 33 31 32 38 0d  48..-236..-3128.
21040 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
21050 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
21060 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  ax: DIV for inte
21070 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
21080 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
21090 6c 61 62 65 6c 2d 37 34 30 0d 0a 53 45 4c 45 43  label-740..SELEC
210a0 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b  T COUNT( * ) * +
210b0 20 33 30 20 2b 20 2b 20 38 33 20 44 49 56 20 2b   30 + + 83 DIV +
210c0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52   - COUNT( * ) FR
210d0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36  OM tab1..----..6
210e0 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
210f0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
21100 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
21110 6f 72 74 20 6c 61 62 65 6c 2d 37 34 30 0d 0a 53  ort label-740..S
21120 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  ELECT COUNT ( * 
21130 29 20 2a 20 2b 20 33 30 20 2b 20 2b 20 38 33 20  ) * + 30 + + 83 
21140 2f 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  / + - COUNT ( * 
21150 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
21160 2d 0d 0a 36 33 0d 0a 0d 0a 71 75 65 72 79 20 49  -..63....query I
21170 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
21180 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
21190 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c  S cor0 WHERE NUL
211a0 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20  L NOT BETWEEN - 
211b0 63 6f 6c 30 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d  col0 AND NULL..-
211c0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
211d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
211e0 44 49 53 54 49 4e 43 54 20 32 30 20 2b 20 2d 20  DISTINCT 20 + - 
211f0 2b 20 31 36 20 41 53 20 63 6f 6c 31 2c 20 63 6f  + 16 AS col1, co
21200 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
21210 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 0d 0a 31  cor0..----..4..1
21220 0d 0a 34 0d 0a 32 31 0d 0a 34 0d 0a 38 31 0d 0a  ..4..21..4..81..
21230 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
21240 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
21250 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
21260 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
21270 65 6c 2d 37 34 33 0d 0a 53 45 4c 45 43 54 20 2b  el-743..SELECT +
21280 20 2b 20 43 41 53 54 28 20 2d 20 41 56 47 20 28   + CAST( - AVG (
21290 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32   DISTINCT + col2
212a0 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 41   ) AS SIGNED ) A
212b0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
212c0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
212d0 2d 34 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -40....skipif my
212e0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
212f0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
21300 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 33 0d  wsort label-743.
21310 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 41 53 54  .SELECT + + CAST
21320 20 28 20 2d 20 41 56 47 20 28 20 44 49 53 54 49   ( - AVG ( DISTI
21330 4e 43 54 20 2b 20 63 6f 6c 32 20 29 20 41 53 20  NCT + col2 ) AS 
21340 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c  INTEGER ) AS col
21350 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
21360 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30 0d 0a  or0..----..-40..
21370 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
21380 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
21390 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
213a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
213b0 65 6c 2d 37 34 34 0d 0a 53 45 4c 45 43 54 20 41  el-744..SELECT A
213c0 4c 4c 20 37 34 20 44 49 56 20 2b 20 63 6f 6c 31  LL 74 DIV + col1
213d0 20 2b 20 2b 20 63 6f 6c 30 20 2d 20 2b 20 63 6f   + + col0 - + co
213e0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
213f0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31  cor0..----..1..1
21400 34 0d 0a 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  4..5....skipif m
21410 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
21420 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
21430 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 34  owsort label-744
21440 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37 34 20  ..SELECT ALL 74 
21450 2f 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c  / + col1 + + col
21460 30 20 2d 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  0 - + col0 FROM 
21470 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
21480 2d 2d 0d 0a 31 0d 0a 31 34 0d 0a 35 0d 0a 0d 0a  --..1..14..5....
21490 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
214a0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
214b0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
214c0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
214d0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
214e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
214f0 20 2d 20 2b 20 38 35 20 63 6f 6c 32 20 46 52 4f   - + 85 col2 FRO
21500 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
21510 2d 2d 2d 2d 0d 0a 2d 38 35 0d 0a 2d 38 35 0d 0a  ----..-85..-85..
21520 2d 38 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -85....onlyif my
21530 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
21540 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
21550 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21560 74 20 6c 61 62 65 6c 2d 37 34 36 0d 0a 53 45 4c  t label-746..SEL
21570 45 43 54 20 41 4c 4c 20 28 20 2b 20 2d 20 43 41  ECT ALL ( + - CA
21580 53 54 28 20 2b 20 2b 20 36 33 20 41 53 20 53 49  ST( + + 63 AS SI
21590 47 4e 45 44 20 29 20 29 20 2d 20 39 35 20 41 53  GNED ) ) - 95 AS
215a0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
215b0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
215c0 31 35 38 0d 0a 2d 31 35 38 0d 0a 2d 31 35 38 0d  158..-158..-158.
215d0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
215e0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
215f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21600 74 20 6c 61 62 65 6c 2d 37 34 36 0d 0a 53 45 4c  t label-746..SEL
21610 45 43 54 20 41 4c 4c 20 28 20 2b 20 2d 20 43 41  ECT ALL ( + - CA
21620 53 54 20 28 20 2b 20 2b 20 36 33 20 41 53 20 49  ST ( + + 63 AS I
21630 4e 54 45 47 45 52 20 29 20 29 20 2d 20 39 35 20  NTEGER ) ) - 95 
21640 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
21650 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
21660 0a 2d 31 35 38 0d 0a 2d 31 35 38 0d 0a 2d 31 35  .-158..-158..-15
21670 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
21680 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2d  sort..SELECT ( -
21690 20 63 6f 6c 32 20 29 20 2a 20 2d 20 63 6f 6c 31   col2 ) * - col1
216a0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
216b0 62 31 20 57 48 45 52 45 20 2d 20 2b 20 63 6f 6c  b1 WHERE - + col
216c0 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  2 IS NOT NULL..-
216d0 2d 2d 2d 0d 0a 31 33 34 34 0d 0a 32 39 35 0d 0a  ---..1344..295..
216e0 33 31 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  3196....onlyif m
216f0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
21700 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
21710 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
21720 6f 72 74 20 6c 61 62 65 6c 2d 37 34 38 0d 0a 53  ort label-748..S
21730 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 31  ELECT ALL - col1
21740 20 2d 20 2d 20 2b 20 63 6f 6c 30 20 44 49 56 20   - - + col0 DIV 
21750 2d 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c 32 20 2b  - col1, + col2 +
21760 20 2b 20 37 37 20 2b 20 2d 20 34 30 20 44 49 56   + 77 + - 40 DIV
21770 20 2b 20 2b 20 39 30 20 41 53 20 63 6f 6c 32 20   + + 90 AS col2 
21780 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
21790 0a 2d 32 35 0d 0a 38 37 0d 0a 2d 38 31 0d 0a 31  .-25..87..-81..1
217a0 32 34 0d 0a 2d 39 38 0d 0a 31 37 36 0d 0a 0d 0a  24..-98..176....
217b0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
217c0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
217d0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
217e0 6c 61 62 65 6c 2d 37 34 38 0d 0a 53 45 4c 45 43  label-748..SELEC
217f0 54 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 2d 20 2d  T ALL - col1 - -
21800 20 2b 20 63 6f 6c 30 20 2f 20 2d 20 63 6f 6c 31   + col0 / - col1
21810 2c 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 37 37 20  , + col2 + + 77 
21820 2b 20 2d 20 34 30 20 2f 20 2b 20 2b 20 39 30 20  + - 40 / + + 90 
21830 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
21840 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 0d 0a 38 37  0..----..-25..87
21850 0d 0a 2d 38 31 0d 0a 31 32 34 0d 0a 2d 39 38 0d  ..-81..124..-98.
21860 0a 31 37 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .176....query II
21870 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
21880 20 41 4c 4c 20 63 6f 6c 31 2c 20 2d 20 63 6f 6c   ALL col1, - col
21890 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
218a0 2d 0d 0a 35 31 0d 0a 2d 35 31 0d 0a 36 37 0d 0a  -..51..-51..67..
218b0 2d 36 37 0d 0a 37 37 0d 0a 2d 37 37 0d 0a 0d 0a  -67..77..-77....
218c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
218d0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
218e0 20 35 38 20 2a 20 2d 20 63 6f 6c 32 20 46 52 4f   58 * - col2 FRO
218f0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab1..----..-3
21900 34 32 32 0d 0a 2d 33 39 34 34 0d 0a 2d 35 35 36  422..-3944..-556
21910 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  8....onlyif mysq
21920 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
21930 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
21940 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35  rowsort label-75
21950 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  1..SELECT DISTIN
21960 43 54 20 4d 41 58 28 20 63 6f 6c 31 20 29 20 41  CT MAX( col1 ) A
21970 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
21980 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 0d 0a 73 6b  ..----..47....sk
21990 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
219a0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
219b0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
219c0 65 6c 2d 37 35 31 0d 0a 53 45 4c 45 43 54 20 44  el-751..SELECT D
219d0 49 53 54 49 4e 43 54 20 4d 41 58 20 28 20 63 6f  ISTINCT MAX ( co
219e0 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l1 ) AS col1 FRO
219f0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 34 37  M tab1..----..47
21a00 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
21a10 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
21a20 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  tax: ..query II 
21a30 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35  rowsort label-75
21a40 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 32  2..SELECT ALL 82
21a50 20 63 6f 6c 31 2c 20 2d 20 43 4f 55 4e 54 28 20   col1, - COUNT( 
21a60 2b 20 63 6f 6c 30 20 29 20 63 6f 6c 32 20 46 52  + col0 ) col2 FR
21a70 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38  OM tab2..----..8
21a80 32 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  2..-3....skipif 
21a90 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
21aa0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
21ab0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
21ac0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
21ad0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
21ae0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
21af0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
21b00 74 20 6c 61 62 65 6c 2d 37 35 32 0d 0a 53 45 4c  t label-752..SEL
21b10 45 43 54 20 41 4c 4c 20 38 32 20 63 6f 6c 31 2c  ECT ALL 82 col1,
21b20 20 2d 20 43 4f 55 4e 54 20 28 20 2b 20 63 6f 6c   - COUNT ( + col
21b30 30 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  0 ) col2 FROM ta
21b40 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38 32 0d 0a 2d 33  b2..----..82..-3
21b50 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
21b60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 30 20 2b  ort..SELECT 50 +
21b70 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20   + col0 AS col0 
21b80 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
21b90 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 63 6f  0 WHERE NOT ( co
21ba0 6c 32 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  l2 ) IS NULL..--
21bb0 2d 2d 0d 0a 31 33 37 0d 0a 31 34 37 0d 0a 36 35  --..137..147..65
21bc0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
21bd0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
21be0 6f 6c 31 20 41 53 20 63 6f 6c 32 2c 20 63 6f 6c  ol1 AS col2, col
21bf0 30 20 2a 20 2b 20 2d 20 39 37 20 2a 20 63 6f 6c  0 * + - 97 * col
21c00 31 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 46 52 4f  1 * - + col2 FRO
21c10 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
21c20 2d 2d 2d 2d 0d 0a 31 34 0d 0a 36 36 34 38 37 36  ----..14..664876
21c30 38 0d 0a 34 37 0d 0a 32 38 32 31 31 30 39 32 0d  8..47..28211092.
21c40 0a 35 0d 0a 32 34 33 32 32 37 35 0d 0a 0d 0a 6f  .5..2432275....o
21c50 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
21c60 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
21c70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21c80 74 20 6c 61 62 65 6c 2d 37 35 35 0d 0a 53 45 4c  t label-755..SEL
21c90 45 43 54 20 41 4c 4c 20 2b 20 41 56 47 20 28 20  ECT ALL + AVG ( 
21ca0 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c  DISTINCT - - col
21cb0 30 20 29 20 2b 20 53 55 4d 28 20 44 49 53 54 49  0 ) + SUM( DISTI
21cc0 4e 43 54 20 2d 20 2b 20 63 6f 6c 31 20 29 20 41  NCT - + col1 ) A
21cd0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
21ce0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b   AS cor0 WHERE +
21cf0 20 33 36 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 63   36 + - col2 * c
21d00 6f 6c 30 20 2b 20 37 37 20 49 53 20 4e 55 4c 4c  ol0 + 77 IS NULL
21d10 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
21d20 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
21d30 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
21d40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
21d50 61 62 65 6c 2d 37 35 35 0d 0a 53 45 4c 45 43 54  abel-755..SELECT
21d60 20 41 4c 4c 20 2b 20 41 56 47 20 28 20 44 49 53   ALL + AVG ( DIS
21d70 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 30 20 29  TINCT - - col0 )
21d80 20 2b 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43   + SUM ( DISTINC
21d90 54 20 2d 20 2b 20 63 6f 6c 31 20 29 20 41 53 20  T - + col1 ) AS 
21da0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
21db0 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 33  S cor0 WHERE + 3
21dc0 36 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 63 6f 6c  6 + - col2 * col
21dd0 30 20 2b 20 37 37 20 49 53 20 4e 55 4c 4c 0d 0a  0 + 77 IS NULL..
21de0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ----..NULL....qu
21df0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
21e00 45 4c 45 43 54 20 41 4c 4c 20 2b 20 38 34 20 41  ELECT ALL + 84 A
21e10 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
21e20 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
21e30 20 74 61 62 30 20 63 6f 72 31 0d 0a 2d 2d 2d 2d   tab0 cor1..----
21e40 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
21e50 6e 67 20 74 6f 20 63 61 64 64 38 37 36 63 32 36  ng to cadd876c26
21e60 33 33 38 66 63 35 38 62 39 32 39 37 65 37 34 66  338fc58b9297e74f
21e70 63 33 32 34 64 38 0d 0a 0d 0a 71 75 65 72 79 20  c324d8....query 
21e80 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
21e90 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
21ea0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
21eb0 20 4e 55 4c 4c 20 29 20 3c 20 4e 55 4c 4c 0d 0a   NULL ) < NULL..
21ec0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
21ed0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
21ee0 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20  DISTINCT - col1 
21ef0 2a 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  * + - col2 FROM 
21f00 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
21f10 52 45 20 4e 4f 54 20 63 6f 6c 30 20 3c 3e 20 2b  RE NOT col0 <> +
21f20 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   col2..----....o
21f30 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
21f40 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
21f50 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21f60 74 20 6c 61 62 65 6c 2d 37 35 39 0d 0a 53 45 4c  t label-759..SEL
21f70 45 43 54 20 2d 20 31 32 20 2a 20 4d 49 4e 28 20  ECT - 12 * MIN( 
21f80 44 49 53 54 49 4e 43 54 20 2d 20 36 37 20 29 20  DISTINCT - 67 ) 
21f90 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
21fa0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
21fb0 0a 38 30 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .804....skipif m
21fc0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
21fd0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
21fe0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 39  owsort label-759
21ff0 0d 0a 53 45 4c 45 43 54 20 2d 20 31 32 20 2a 20  ..SELECT - 12 * 
22000 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2d  MIN ( DISTINCT -
22010 20 36 37 20 29 20 41 53 20 63 6f 6c 32 20 46 52   67 ) AS col2 FR
22020 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
22030 0a 2d 2d 2d 2d 0d 0a 38 30 34 0d 0a 0d 0a 6f 6e  .----..804....on
22040 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
22050 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
22060 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
22070 74 20 6c 61 62 65 6c 2d 37 36 30 0d 0a 53 45 4c  t label-760..SEL
22080 45 43 54 20 41 4c 4c 20 2b 20 2d 20 53 55 4d 28  ECT ALL + - SUM(
22090 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32 2c   col0 ) AS col2,
220a0 20 2b 20 35 37 20 2b 20 2b 20 43 4f 55 4e 54 28   + 57 + + COUNT(
220b0 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   * ) AS col1 FRO
220c0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
220d0 2d 2d 2d 2d 0d 0a 2d 31 38 35 0d 0a 36 30 0d 0a  ----..-185..60..
220e0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
220f0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
22100 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
22110 74 20 6c 61 62 65 6c 2d 37 36 30 0d 0a 53 45 4c  t label-760..SEL
22120 45 43 54 20 41 4c 4c 20 2b 20 2d 20 53 55 4d 20  ECT ALL + - SUM 
22130 28 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32  ( col0 ) AS col2
22140 2c 20 2b 20 35 37 20 2b 20 2b 20 43 4f 55 4e 54  , + 57 + + COUNT
22150 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46   ( * ) AS col1 F
22160 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
22170 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 35 0d 0a 36 30  ..----..-185..60
22180 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
22190 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
221a0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
221b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 31  owsort label-761
221c0 0d 0a 53 45 4c 45 43 54 20 53 55 4d 28 20 44 49  ..SELECT SUM( DI
221d0 53 54 49 4e 43 54 20 63 6f 6c 32 20 29 20 41 53  STINCT col2 ) AS
221e0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
221f0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
22200 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
22210 0a 2d 2d 2d 2d 0d 0a 32 32 33 0d 0a 0d 0a 73 6b  .----..223....sk
22220 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
22230 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
22240 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
22250 65 6c 2d 37 36 31 0d 0a 53 45 4c 45 43 54 20 53  el-761..SELECT S
22260 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f  UM ( DISTINCT co
22270 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l2 ) AS col1 FRO
22280 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52  M tab1 cor0 WHER
22290 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f  E NOT NULL IS NO
222a0 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 32  T NULL..----..22
222b0 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
222c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
222d0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
222e0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
222f0 2d 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55  - col1 IS NOT NU
22300 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
22310 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
22320 45 43 54 20 41 4c 4c 20 2b 20 2d 20 39 33 20 46  ECT ALL + - 93 F
22330 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
22340 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 33 0d 0a 2d 39 33  ..----..-93..-93
22350 0d 0a 2d 39 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-93....onlyif 
22360 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
22370 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
22380 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
22390 6c 2d 37 36 34 0d 0a 53 45 4c 45 43 54 20 2b 20  l-764..SELECT + 
223a0 28 20 28 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ( ( + COUNT( * )
223b0 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   ) ) FROM tab1 A
223c0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
223d0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
223e0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
223f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22400 74 20 6c 61 62 65 6c 2d 37 36 34 0d 0a 53 45 4c  t label-764..SEL
22410 45 43 54 20 2b 20 28 20 28 20 2b 20 43 4f 55 4e  ECT + ( ( + COUN
22420 54 20 28 20 2a 20 29 20 29 20 29 20 46 52 4f 4d  T ( * ) ) ) FROM
22430 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
22440 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20  ---..3....query 
22450 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
22460 54 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f  T + - col1 AS co
22470 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
22480 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
22490 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c   col2 IS NOT NUL
224a0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  L..----....skipi
224b0 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
224c0 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
224d0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
224e0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
224f0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
22500 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
22510 6c 31 20 2a 20 2b 20 28 20 33 31 20 29 20 63 6f  l1 * + ( 31 ) co
22520 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
22530 2d 2d 0d 0a 2d 31 35 38 31 0d 0a 2d 32 30 37 37  --..-1581..-2077
22540 0d 0a 2d 32 33 38 37 0d 0a 0d 0a 71 75 65 72 79  ..-2387....query
22550 20 49 49 49 49 49 49 20 72 6f 77 73 6f 72 74 0d   IIIIII rowsort.
22560 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
22570 4f 4d 20 74 61 62 32 2c 20 74 61 62 31 20 41 53  OM tab2, tab1 AS
22580 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 32 34   cor0 WHERE + 24
22590 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
225a0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
225b0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
225c0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
225d0 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 38 0d 0a  sort label-768..
225e0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55  SELECT ALL + COU
225f0 4e 54 28 20 2a 20 29 20 63 6f 6c 32 20 46 52 4f  NT( * ) col2 FRO
22600 4d 20 74 61 62 31 2c 20 74 61 62 30 20 41 53 20  M tab1, tab0 AS 
22610 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d  cor0..----..9...
22620 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
22630 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
22640 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
22650 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
22660 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
22670 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
22680 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
22690 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
226a0 36 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  68..SELECT ALL +
226b0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c   COUNT ( * ) col
226c0 32 20 46 52 4f 4d 20 74 61 62 31 2c 20 74 61 62  2 FROM tab1, tab
226d0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
226e0 0a 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .9....query I ro
226f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
22700 53 54 49 4e 43 54 20 2b 20 2d 20 37 39 20 2b 20  STINCT + - 79 + 
22710 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  - col1 FROM tab0
22720 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e   WHERE NULL IS N
22730 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 30 0d  ULL..----..-100.
22740 0a 2d 31 36 30 0d 0a 2d 38 30 0d 0a 0d 0a 71 75  .-160..-80....qu
22750 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
22760 45 4c 45 43 54 20 63 6f 6c 31 20 2b 20 2b 20 63  ELECT col1 + + c
22770 6f 6c 31 20 2b 20 2b 20 63 6f 6c 31 20 41 53 20  ol1 + + col1 AS 
22780 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
22790 2d 2d 2d 2d 0d 0a 31 34 31 0d 0a 31 35 0d 0a 34  ----..141..15..4
227a0 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
227b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34 32 20  sort..SELECT 42 
227c0 2b 20 37 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  + 71 FROM tab2..
227d0 2d 2d 2d 2d 0d 0a 31 31 33 0d 0a 31 31 33 0d 0a  ----..113..113..
227e0 31 31 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  113....query I r
227f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
22800 4c 4c 20 2b 20 32 32 20 2b 20 2b 20 63 6f 6c 31  LL + 22 + + col1
22810 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
22820 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
22830 0d 0a 31 30 33 0d 0a 32 33 0d 0a 34 33 0d 0a 0d  ..103..23..43...
22840 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
22850 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
22860 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
22870 6f 72 74 20 6c 61 62 65 6c 2d 37 37 33 0d 0a 53  ort label-773..S
22880 45 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58 28  ELECT ALL - MAX(
22890 20 41 4c 4c 20 2d 20 39 36 20 29 20 2a 20 2b 20   ALL - 96 ) * + 
228a0 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  + COUNT( * ) AS 
228b0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
228c0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38  S cor0..----..28
228d0 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
228e0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
228f0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
22900 6f 72 74 20 6c 61 62 65 6c 2d 37 37 33 0d 0a 53  ort label-773..S
22910 45 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58 20  ELECT ALL - MAX 
22920 28 20 41 4c 4c 20 2d 20 39 36 20 29 20 2a 20 2b  ( ALL - 96 ) * +
22930 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
22940 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
22950 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
22960 32 38 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  288....query II 
22970 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
22980 63 6f 6c 30 20 41 53 20 63 6f 6c 32 2c 20 2d 20  col0 AS col2, - 
22990 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
229a0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
229b0 2d 2d 2d 2d 0d 0a 35 31 0d 0a 2d 39 36 0d 0a 38  ----..51..-96..8
229c0 35 0d 0a 2d 35 39 0d 0a 39 31 0d 0a 2d 36 38 0d  5..-59..91..-68.
229d0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
229e0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
229f0 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
22a00 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
22a10 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3e 3d 20  NOT ( NULL ) >= 
22a20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col0..----....qu
22a30 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
22a40 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
22a50 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
22a60 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 2a 20  RE NOT - col1 * 
22a70 2d 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 2b 20 63  - - col1 * + + c
22a80 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol2 IS NULL..---
22a90 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
22aa0 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31  ing to c6c0a4111
22ab0 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65  b36d04dbc811a11e
22ac0 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79  4d54cad....query
22ad0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
22ae0 43 54 20 2b 20 30 20 46 52 4f 4d 20 74 61 62 30  CT + 0 FROM tab0
22af0 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
22b00 4f 49 4e 20 74 61 62 30 20 63 6f 72 31 0d 0a 2d  OIN tab0 cor1..-
22b10 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
22b20 73 68 69 6e 67 20 74 6f 20 38 62 37 35 31 33 36  shing to 8b75136
22b30 62 32 62 35 31 63 37 37 33 34 35 63 30 33 38 30  b2b51c77345c0380
22b40 34 65 63 31 63 64 61 35 63 0d 0a 0d 0a 71 75 65  4ec1cda5c....que
22b50 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
22b60 4c 45 43 54 20 41 4c 4c 20 2b 20 34 20 2a 20 2b  LECT ALL + 4 * +
22b70 20 33 20 2a 20 63 6f 6c 30 20 2b 20 2d 20 34 39   3 * col0 + - 49
22b80 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
22b90 0d 0a 35 30 33 0d 0a 37 31 39 0d 0a 38 35 31 0d  ..503..719..851.
22ba0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
22bb0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
22bc0 4e 43 54 20 63 6f 6c 32 20 2a 20 2d 20 38 35 20  NCT col2 * - 85 
22bd0 2b 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  + - + col1 AS co
22be0 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
22bf0 2d 2d 0d 0a 2d 32 30 30 36 0d 0a 2d 33 34 37 37  --..-2006..-3477
22c00 0d 0a 2d 34 39 39 37 0d 0a 0d 0a 71 75 65 72 79  ..-4997....query
22c10 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
22c20 43 54 20 41 4c 4c 20 2d 20 2b 20 37 37 20 2a 20  CT ALL - + 77 * 
22c30 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
22c40 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
22c50 37 37 31 0d 0a 2d 33 30 38 30 0d 0a 2d 34 34 36  771..-3080..-446
22c60 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
22c70 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 37 36 20  sort..SELECT 76 
22c80 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
22c90 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 31 20 2b  0 WHERE + col1 +
22ca0 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30   + col0 * - col0
22cb0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
22cc0 2d 2d 0d 0a 37 36 0d 0a 37 36 0d 0a 37 36 0d 0a  --..76..76..76..
22cd0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
22ce0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
22cf0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
22d00 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
22d10 65 6c 2d 37 38 32 0d 0a 53 45 4c 45 43 54 20 41  el-782..SELECT A
22d20 4c 4c 20 2b 20 35 37 20 2a 20 63 6f 6c 31 20 2b  LL + 57 * col1 +
22d30 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
22d40 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20  IGNED ) AS col0 
22d50 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
22d60 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
22d70 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
22d80 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
22d90 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
22da0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
22db0 6c 2d 37 38 32 0d 0a 53 45 4c 45 43 54 20 41 4c  l-782..SELECT AL
22dc0 4c 20 2b 20 35 37 20 2a 20 63 6f 6c 31 20 2b 20  L + 57 * col1 + 
22dd0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
22de0 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 30  NTEGER ) AS col0
22df0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
22e00 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
22e10 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  NULL..NULL....qu
22e20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
22e30 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
22e40 6f 6c 31 20 2d 20 2d 20 34 32 20 2a 20 38 31 20  ol1 - - 42 * 81 
22e50 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  + - col1 AS col2
22e60 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
22e70 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 30 32 0d 0a  r0..----..3402..
22e80 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22e90 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
22ea0 43 54 20 63 6f 6c 32 20 2b 20 2d 20 2b 20 37 35  CT col2 + - + 75
22eb0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
22ec0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
22ed0 0d 0a 2d 32 38 0d 0a 2d 36 35 0d 0a 32 34 0d 0a  ..-28..-65..24..
22ee0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
22ef0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
22f00 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
22f10 73 6f 72 74 20 6c 61 62 65 6c 2d 37 38 35 0d 0a  sort label-785..
22f20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
22f30 2d 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43  - COUNT( DISTINC
22f40 54 20 2b 20 2d 20 63 6f 6c 30 20 29 20 41 53 20  T + - col0 ) AS 
22f50 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
22f60 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c  S cor0 WHERE NUL
22f70 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  L IS NOT NULL..-
22f80 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
22f90 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
22fa0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
22fb0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
22fc0 38 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  85..SELECT DISTI
22fd0 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 44 49  NCT - COUNT ( DI
22fe0 53 54 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 30 20  STINCT + - col0 
22ff0 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
23000 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
23010 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  E NULL IS NOT NU
23020 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f  LL..----..0....o
23030 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
23040 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
23050 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
23060 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
23070 37 38 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  786..SELECT DIST
23080 49 4e 43 54 20 2d 20 43 41 53 54 28 20 2d 20 2d  INCT - CAST( - -
23090 20 34 32 20 41 53 20 53 49 47 4e 45 44 20 29 20   42 AS SIGNED ) 
230a0 2d 20 28 20 2d 20 2d 20 37 33 20 29 20 41 53 20  - ( - - 73 ) AS 
230b0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
230c0 2d 2d 2d 2d 0d 0a 2d 31 31 35 0d 0a 0d 0a 73 6b  ----..-115....sk
230d0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
230e0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
230f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
23100 65 6c 2d 37 38 36 0d 0a 53 45 4c 45 43 54 20 44  el-786..SELECT D
23110 49 53 54 49 4e 43 54 20 2d 20 43 41 53 54 20 28  ISTINCT - CAST (
23120 20 2d 20 2d 20 34 32 20 41 53 20 49 4e 54 45 47   - - 42 AS INTEG
23130 45 52 20 29 20 2d 20 28 20 2d 20 2d 20 37 33 20  ER ) - ( - - 73 
23140 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
23150 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 35 0d  ab1..----..-115.
23160 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
23170 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
23180 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
23190 55 4c 4c 20 3d 20 2d 20 63 6f 6c 32 0d 0a 2d 2d  ULL = - col2..--
231a0 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
231b0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
231c0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
231d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
231e0 20 6c 61 62 65 6c 2d 37 38 38 0d 0a 53 45 4c 45   label-788..SELE
231f0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
23200 6c 32 20 2a 20 63 6f 6c 30 20 2a 20 2b 20 28 20  l2 * col0 * + ( 
23210 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
23220 53 49 47 4e 45 44 20 29 20 29 20 2a 20 2b 20 33  SIGNED ) ) * + 3
23230 32 20 2a 20 2b 20 35 38 20 2b 20 2d 20 2d 20 63  2 * + 58 + - - c
23240 6f 6c 32 20 2b 20 2b 20 28 20 63 6f 6c 31 20 29  ol2 + + ( col1 )
23250 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
23260 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
23270 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
23280 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
23290 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
232a0 38 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  88..SELECT DISTI
232b0 4e 43 54 20 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c  NCT + col2 * col
232c0 30 20 2a 20 2b 20 28 20 2b 20 43 41 53 54 20 28  0 * + ( + CAST (
232d0 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
232e0 20 29 20 29 20 2a 20 2b 20 33 32 20 2a 20 2b 20   ) ) * + 32 * + 
232f0 35 38 20 2b 20 2d 20 2d 20 63 6f 6c 32 20 2b 20  58 + - - col2 + 
23300 2b 20 28 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20  + ( col1 ) FROM 
23310 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab1..----..NULL
23320 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
23330 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
23340 49 4e 43 54 20 63 6f 6c 30 20 2a 20 38 33 20 41  INCT col0 * 83 A
23350 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
23360 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 35 0d 0a 37 32  ..----..1245..72
23370 32 31 0d 0a 38 30 35 31 0d 0a 0d 0a 71 75 65 72  21..8051....quer
23380 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23390 45 43 54 20 41 4c 4c 20 2d 20 39 34 20 2d 20 2b  ECT ALL - 94 - +
233a0 20 39 20 2a 20 2b 20 28 20 2d 20 63 6f 6c 30 20   9 * + ( - col0 
233b0 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
233c0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 36  ab0..----..41..6
233d0 38 39 0d 0a 37 37 39 0d 0a 0d 0a 6f 6e 6c 79 69  89..779....onlyi
233e0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
233f0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
23400 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
23410 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 31 0d  wsort label-791.
23420 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
23430 20 63 6f 6c 31 20 44 49 56 20 2d 20 2b 20 63 6f   col1 DIV - + co
23440 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
23450 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab2..----..-1..
23460 2d 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -2....skipif mys
23470 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
23480 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
23490 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 31 0d 0a  sort label-791..
234a0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
234b0 63 6f 6c 31 20 2f 20 2d 20 2b 20 63 6f 6c 32 20  col1 / - + col2 
234c0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
234d0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32 0d  2..----..-1..-2.
234e0 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
234f0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
23500 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
23510 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
23520 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
23530 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23540 45 43 54 20 31 35 20 2a 20 2d 20 63 6f 6c 32 20  ECT 15 * - col2 
23550 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
23560 2d 2d 2d 2d 0d 0a 2d 31 30 32 30 0d 0a 2d 31 34  ----..-1020..-14
23570 34 30 0d 0a 2d 38 38 35 0d 0a 0d 0a 6f 6e 6c 79  40..-885....only
23580 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
23590 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
235a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
235b0 61 62 65 6c 2d 37 39 33 0d 0a 53 45 4c 45 43 54  abel-793..SELECT
235c0 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a 20 29 20   ALL COUNT( * ) 
235d0 2a 20 53 55 4d 28 20 2d 20 31 20 29 20 41 53 20  * SUM( - 1 ) AS 
235e0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
235f0 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70  ----..-9....skip
23600 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
23610 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
23620 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
23630 2d 37 39 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -793..SELECT ALL
23640 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 53   COUNT ( * ) * S
23650 55 4d 20 28 20 2d 20 31 20 29 20 41 53 20 63 6f  UM ( - 1 ) AS co
23660 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
23670 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..-9....onlyif
23680 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
23690 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
236a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
236b0 65 6c 2d 37 39 34 0d 0a 53 45 4c 45 43 54 20 41  el-794..SELECT A
236c0 4c 4c 20 2d 20 2d 20 39 37 20 2a 20 53 55 4d 28  LL - - 97 * SUM(
236d0 20 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c   + col2 ) AS col
236e0 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  0 FROM tab2 WHER
236f0 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55  E NOT NULL IS NU
23700 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  LL..----..NULL..
23710 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
23720 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
23730 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
23740 20 6c 61 62 65 6c 2d 37 39 34 0d 0a 53 45 4c 45   label-794..SELE
23750 43 54 20 41 4c 4c 20 2d 20 2d 20 39 37 20 2a 20  CT ALL - - 97 * 
23760 53 55 4d 20 28 20 2b 20 63 6f 6c 32 20 29 20 41  SUM ( + col2 ) A
23770 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
23780 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
23790 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e  IS NULL..----..N
237a0 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
237b0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
237c0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
237d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
237e0 74 20 6c 61 62 65 6c 2d 37 39 35 0d 0a 53 45 4c  t label-795..SEL
237f0 45 43 54 20 28 20 2d 20 28 20 2d 20 2d 20 43 41  ECT ( - ( - - CA
23800 53 54 28 20 2b 20 63 6f 6c 30 20 41 53 20 53 49  ST( + col0 AS SI
23810 47 4e 45 44 20 29 20 29 20 29 20 46 52 4f 4d 20  GNED ) ) ) FROM 
23820 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d  tab2..----..-46.
23830 0a 2d 36 34 0d 0a 2d 37 35 0d 0a 0d 0a 73 6b 69  .-64..-75....ski
23840 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
23850 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
23860 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
23870 6c 2d 37 39 35 0d 0a 53 45 4c 45 43 54 20 28 20  l-795..SELECT ( 
23880 2d 20 28 20 2d 20 2d 20 43 41 53 54 20 28 20 2b  - ( - - CAST ( +
23890 20 63 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52   col0 AS INTEGER
238a0 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32   ) ) ) FROM tab2
238b0 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d 36 34  ..----..-46..-64
238c0 0d 0a 2d 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-75....onlyif 
238d0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
238e0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
238f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
23900 6c 2d 37 39 36 0d 0a 53 45 4c 45 43 54 20 41 4c  l-796..SELECT AL
23910 4c 20 4d 49 4e 28 20 2d 20 63 6f 6c 31 20 29 20  L MIN( - col1 ) 
23920 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
23930 0a 2d 34 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-47....skipif m
23940 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
23950 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
23960 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 36  owsort label-796
23970 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e  ..SELECT ALL MIN
23980 20 28 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d   ( - col1 ) FROM
23990 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37   tab1..----..-47
239a0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
239b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
239c0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
239d0 2d 20 63 6f 6c 31 20 4e 4f 54 20 42 45 54 57 45  - col1 NOT BETWE
239e0 45 4e 20 2b 20 28 20 2b 20 2d 20 63 6f 6c 31 20  EN + ( + - col1 
239f0 29 20 41 4e 44 20 2d 20 2b 20 38 33 0d 0a 2d 2d  ) AND - + 83..--
23a00 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
23a10 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
23a20 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
23a30 39 36 32 64 30 61 34 39 0d 0a 0d 0a 73 6b 69 70  962d0a49....skip
23a40 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
23a50 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
23a60 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
23a70 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
23a80 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
23a90 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 36 20  sort..SELECT 56 
23aa0 2d 20 2d 20 28 20 63 6f 6c 32 20 29 20 63 6f 6c  - - ( col2 ) col
23ab0 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
23ac0 2d 0d 0a 31 31 35 0d 0a 31 32 34 0d 0a 31 35 32  -..115..124..152
23ad0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
23ae0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
23af0 2d 20 2d 20 63 6f 6c 32 20 2d 20 2d 20 31 36 20  - - col2 - - 16 
23b00 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
23b10 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 32 33  0 WHERE NOT + 23
23b20 20 3c 3d 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d   <= - col2..----
23b30 0d 0a 31 31 35 0d 0a 32 36 0d 0a 36 33 0d 0a 0d  ..115..26..63...
23b40 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
23b50 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
23b60 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
23b70 6f 72 74 20 6c 61 62 65 6c 2d 38 30 30 0d 0a 53  ort label-800..S
23b80 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
23b90 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43 54   COUNT( DISTINCT
23ba0 20 2b 20 2b 20 63 6f 6c 32 20 29 20 41 53 20 63   + + col2 ) AS c
23bb0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
23bc0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   cor0..----..-3.
23bd0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
23be0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
23bf0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23c00 74 20 6c 61 62 65 6c 2d 38 30 30 0d 0a 53 45 4c  t label-800..SEL
23c10 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
23c20 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20  OUNT ( DISTINCT 
23c30 2b 20 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  + + col2 ) AS co
23c40 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
23c50 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  cor0..----..-3..
23c60 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
23c70 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
23c80 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
23c90 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
23ca0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
23cb0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
23cc0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 37 36  CT DISTINCT - 76
23cd0 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 2d 20 63 6f   + col0 + - - co
23ce0 6c 31 20 2b 20 39 34 20 2a 20 2b 20 2b 20 37 36  l1 + 94 * + + 76
23cf0 20 2a 20 2d 20 2b 20 36 30 20 63 6f 6c 31 20 46   * - + 60 col1 F
23d00 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
23d10 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ULL NOT BETWEEN 
23d20 2d 20 2d 20 37 31 20 2a 20 2b 20 63 6f 6c 32 20  - - 71 * + col2 
23d30 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  AND NULL..----..
23d40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23d50 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
23d60 37 34 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  74 FROM tab2 WHE
23d70 52 45 20 4e 55 4c 4c 20 3e 3d 20 2b 20 63 6f 6c  RE NULL >= + col
23d80 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  2..----....query
23d90 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
23da0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  LECT * FROM tab2
23db0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
23dc0 2d 20 28 20 2d 20 38 36 20 29 20 49 53 20 4e 55  - ( - 86 ) IS NU
23dd0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
23de0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
23df0 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
23e00 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
23e10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23e20 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
23e30 28 20 2b 20 2b 20 63 6f 6c 31 20 29 20 41 53 20  ( + + col1 ) AS 
23e40 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
23e50 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  S cor0..----..-5
23e60 31 0d 0a 2d 36 37 0d 0a 2d 37 37 0d 0a 0d 0a 71  1..-67..-77....q
23e70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
23e80 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
23e90 2b 20 2b 20 63 6f 6c 31 20 2b 20 39 39 20 46 52  + + col1 + 99 FR
23ea0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
23eb0 0a 2d 2d 2d 2d 0d 0a 31 30 30 0d 0a 31 32 30 0d  .----..100..120.
23ec0 0a 31 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .180....query I 
23ed0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
23ee0 63 6f 6c 32 20 2a 20 2b 20 32 33 20 46 52 4f 4d  col2 * + 23 FROM
23ef0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 33 33   tab2..----..133
23f00 34 0d 0a 35 32 39 0d 0a 39 32 30 0d 0a 0d 0a 6f  4..529..920....o
23f10 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
23f20 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
23f30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23f40 74 20 6c 61 62 65 6c 2d 38 30 37 0d 0a 53 45 4c  t label-807..SEL
23f50 45 43 54 20 53 55 4d 28 20 41 4c 4c 20 2b 20 63  ECT SUM( ALL + c
23f60 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol2 ) AS col0 FR
23f70 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
23f80 32 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  21....skipif mys
23f90 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
23fa0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
23fb0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 37 0d 0a  sort label-807..
23fc0 53 45 4c 45 43 54 20 53 55 4d 20 28 20 41 4c 4c  SELECT SUM ( ALL
23fd0 20 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c   + col2 ) AS col
23fe0 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
23ff0 2d 0d 0a 31 32 31 0d 0a 0d 0a 71 75 65 72 79 20  -..121....query 
24000 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
24010 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 28  T DISTINCT + + (
24020 20 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20 29 20   ( + - col1 ) ) 
24030 2b 20 2d 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  + - + col0 AS co
24040 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
24050 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 31  cor0..----..-141
24060 0d 0a 2d 31 34 32 0d 0a 2d 39 37 0d 0a 0d 0a 6f  ..-142..-97....o
24070 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
24080 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
24090 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
240a0 72 74 20 6c 61 62 65 6c 2d 38 30 39 0d 0a 53 45  rt label-809..SE
240b0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
240c0 38 31 20 2b 20 2d 20 36 36 2c 20 28 20 2b 20 43  81 + - 66, ( + C
240d0 4f 55 4e 54 28 20 2a 20 29 20 29 20 41 53 20 63  OUNT( * ) ) AS c
240e0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol1 FROM tab1 co
240f0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 33 0d  r0..----..15..3.
24100 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
24110 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
24120 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
24130 72 74 20 6c 61 62 65 6c 2d 38 30 39 0d 0a 53 45  rt label-809..SE
24140 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
24150 38 31 20 2b 20 2d 20 36 36 2c 20 28 20 2b 20 43  81 + - 66, ( + C
24160 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 41 53 20  OUNT ( * ) ) AS 
24170 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63  col1 FROM tab1 c
24180 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 33  or0..----..15..3
24190 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
241a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
241b0 2b 20 2d 20 39 20 2b 20 2b 20 63 6f 6c 31 20 46  + - 9 + + col1 F
241c0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
241d0 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a 31 32 0d 0a  ..----..-8..12..
241e0 37 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  72....query III 
241f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
24200 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
24210 6f 72 30 20 57 48 45 52 45 20 28 20 2d 20 63 6f  or0 WHERE ( - co
24220 6c 31 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  l1 ) IS NOT NULL
24230 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
24240 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39   hashing to 75c9
24250 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66  98aa53ac83218cbf
24260 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a  2feb962d0a49....
24270 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
24280 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
24290 45 44 20 74 79 70 65 3a 20 44 49 56 20 66 6f 72  ED type: DIV for
242a0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
242b0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  n: ..query II ro
242c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 32 0d  wsort label-812.
242d0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41  .SELECT ALL - CA
242e0 53 54 28 20 2d 20 35 32 20 41 53 20 53 49 47 4e  ST( - 52 AS SIGN
242f0 45 44 20 29 20 2b 20 2d 20 63 6f 6c 31 20 2a 20  ED ) + - col1 * 
24300 2d 20 43 41 53 54 28 20 63 6f 6c 32 20 41 53 20  - CAST( col2 AS 
24310 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31  SIGNED ) AS col1
24320 2c 20 63 6f 6c 32 20 44 49 56 20 2d 20 63 6f 6c  , col2 DIV - col
24330 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
24340 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
24350 2d 0d 0a 31 35 31 0d 0a 2d 31 0d 0a 32 36 32 0d  -..151..-1..262.
24360 0a 30 0d 0a 33 38 35 39 0d 0a 2d 33 0d 0a 0d 0a  .0..3859..-3....
24370 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
24380 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
24390 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
243a0 6c 61 62 65 6c 2d 38 31 32 0d 0a 53 45 4c 45 43  label-812..SELEC
243b0 54 20 41 4c 4c 20 2d 20 43 41 53 54 20 28 20 2d  T ALL - CAST ( -
243c0 20 35 32 20 41 53 20 49 4e 54 45 47 45 52 20 29   52 AS INTEGER )
243d0 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 43 41   + - col1 * - CA
243e0 53 54 20 28 20 63 6f 6c 32 20 41 53 20 49 4e 54  ST ( col2 AS INT
243f0 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31 2c 20  EGER ) AS col1, 
24400 63 6f 6c 32 20 2f 20 2d 20 63 6f 6c 30 20 41 53  col2 / - col0 AS
24410 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
24420 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
24430 35 31 0d 0a 2d 31 0d 0a 32 36 32 0d 0a 30 0d 0a  51..-1..262..0..
24440 33 38 35 39 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79  3859..-3....only
24450 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
24460 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
24470 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
24480 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31  rowsort label-81
24490 33 0d 0a 53 45 4c 45 43 54 20 2b 20 31 36 20 2b  3..SELECT + 16 +
244a0 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c   - col0 AS col1,
244b0 20 43 41 53 54 28 20 2d 20 2d 20 63 6f 6c 32 20   CAST( - - col2 
244c0 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d  AS SIGNED ) FROM
244d0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
244e0 2d 2d 2d 0d 0a 2d 37 31 0d 0a 31 30 0d 0a 2d 38  ---..-71..10..-8
244f0 31 0d 0a 39 39 0d 0a 31 0d 0a 34 37 0d 0a 0d 0a  1..99..1..47....
24500 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
24510 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
24520 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
24530 6c 61 62 65 6c 2d 38 31 33 0d 0a 53 45 4c 45 43  label-813..SELEC
24540 54 20 2b 20 31 36 20 2b 20 2d 20 63 6f 6c 30 20  T + 16 + - col0 
24550 41 53 20 63 6f 6c 31 2c 20 43 41 53 54 20 28 20  AS col1, CAST ( 
24560 2d 20 2d 20 63 6f 6c 32 20 41 53 20 49 4e 54 45  - - col2 AS INTE
24570 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20  GER ) FROM tab0 
24580 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
24590 37 31 0d 0a 31 30 0d 0a 2d 38 31 0d 0a 39 39 0d  71..10..-81..99.
245a0 0a 31 0d 0a 34 37 0d 0a 0d 0a 6f 6e 6c 79 69 66  .1..47....onlyif
245b0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
245c0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
245d0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
245e0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 34 0d 0a  sort label-814..
245f0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
24600 2b 20 63 6f 6c 30 20 2a 20 2d 20 33 37 20 2f 20  + col0 * - 37 / 
24610 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
24620 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
24630 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
24640 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
24650 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
24660 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
24670 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
24680 31 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  14..SELECT DISTI
24690 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 33  NCT + col0 * - 3
246a0 37 20 2f 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  7 / + CAST ( NUL
246b0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46  L AS INTEGER ) F
246c0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
246d0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
246e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
246f0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
24700 6c 30 20 2a 20 2b 20 2b 20 28 20 2d 20 63 6f 6c  l0 * + + ( - col
24710 30 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  0 ) FROM tab0..-
24720 2d 2d 2d 0d 0a 32 32 35 0d 0a 37 35 36 39 0d 0a  ---..225..7569..
24730 39 34 30 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  9409....query I 
24740 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
24750 44 49 53 54 49 4e 43 54 20 28 20 2d 20 2d 20 63  DISTINCT ( - - c
24760 6f 6c 31 20 29 20 2a 20 2b 20 63 6f 6c 31 20 41  ol1 ) * + col1 A
24770 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
24780 0d 0a 2d 2d 2d 2d 0d 0a 32 36 30 31 0d 0a 34 34  ..----..2601..44
24790 38 39 0d 0a 35 39 32 39 0d 0a 0d 0a 6f 6e 6c 79  89..5929....only
247a0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
247b0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
247c0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
247d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 37  owsort label-817
247e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
247f0 30 20 2a 20 2b 20 43 41 53 54 28 20 2b 20 35 36  0 * + CAST( + 56
24800 20 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f 6c   AS SIGNED ) col
24810 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  1 FROM tab1 cor0
24820 0d 0a 2d 2d 2d 2d 0d 0a 32 38 35 36 0d 0a 34 37  ..----..2856..47
24830 36 30 0d 0a 35 30 39 36 0d 0a 0d 0a 73 6b 69 70  60..5096....skip
24840 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
24850 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
24860 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
24870 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
24880 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
24890 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
248a0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
248b0 6f 72 74 20 6c 61 62 65 6c 2d 38 31 37 0d 0a 53  ort label-817..S
248c0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2a  ELECT ALL col0 *
248d0 20 2b 20 43 41 53 54 20 28 20 2b 20 35 36 20 41   + CAST ( + 56 A
248e0 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f 6c 31  S INTEGER ) col1
248f0 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
24900 0a 2d 2d 2d 2d 0d 0a 32 38 35 36 0d 0a 34 37 36  .----..2856..476
24910 30 0d 0a 35 30 39 36 0d 0a 0d 0a 6f 6e 6c 79 69  0..5096....onlyi
24920 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
24930 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
24940 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
24950 62 65 6c 2d 38 31 38 0d 0a 53 45 4c 45 43 54 20  bel-818..SELECT 
24960 41 4c 4c 20 4d 49 4e 28 20 31 35 20 29 20 2b 20  ALL MIN( 15 ) + 
24970 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  - - COUNT( * ) A
24980 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
24990 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
249a0 31 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  18....skipif mys
249b0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
249c0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
249d0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 38 0d 0a  sort label-818..
249e0 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 20 28  SELECT ALL MIN (
249f0 20 31 35 20 29 20 2b 20 2d 20 2d 20 43 4f 55 4e   15 ) + - - COUN
24a00 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  T ( * ) AS col2 
24a10 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
24a20 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d 0a 0d 0a 6f  0..----..18....o
24a30 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
24a40 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
24a50 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
24a60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
24a70 38 31 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  819..SELECT DIST
24a80 49 4e 43 54 20 2b 20 63 6f 6c 30 20 44 49 56 20  INCT + col0 DIV 
24a90 37 38 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c  78 + col0 AS col
24aa0 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
24ab0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38  or0..----..15..8
24ac0 38 0d 0a 39 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  8..98....skipif 
24ad0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
24ae0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
24af0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31  rowsort label-81
24b00 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
24b10 43 54 20 2b 20 63 6f 6c 30 20 2f 20 37 38 20 2b  CT + col0 / 78 +
24b20 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
24b30 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
24b40 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 38 0d 0a 39  .----..15..88..9
24b50 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  8....onlyif mysq
24b60 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
24b70 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
24b80 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32  rowsort label-82
24b90 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  0..SELECT ALL + 
24ba0 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2d  COUNT( * ) * + -
24bb0 20 43 4f 55 4e 54 28 20 2d 20 63 6f 6c 32 20 29   COUNT( - col2 )
24bc0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
24bd0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
24be0 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
24bf0 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b  L..----..0....sk
24c00 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
24c10 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
24c20 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
24c30 65 6c 2d 38 32 30 0d 0a 53 45 4c 45 43 54 20 41  el-820..SELECT A
24c40 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  LL + COUNT ( * )
24c50 20 2a 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2d   * + - COUNT ( -
24c60 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20   col2 ) AS col1 
24c70 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
24c80 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  0 WHERE NULL IS 
24c90 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
24ca0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  0....skipif post
24cb0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
24cc0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
24cd0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
24ce0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
24cf0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
24d00 45 4c 45 43 54 20 2b 20 2d 20 32 37 20 63 6f 6c  ELECT + - 27 col
24d10 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
24d20 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d 0a  or0..----..-27..
24d30 2d 32 37 0d 0a 2d 32 37 0d 0a 0d 0a 6f 6e 6c 79  -27..-27....only
24d40 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
24d50 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
24d60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
24d70 61 62 65 6c 2d 38 32 32 0d 0a 53 45 4c 45 43 54  abel-822..SELECT
24d80 20 2b 20 2d 20 53 55 4d 28 20 2d 20 63 6f 6c 31   + - SUM( - col1
24d90 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a 20   ) * - COUNT( * 
24da0 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
24db0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 38 0d  or0..----..-198.
24dc0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
24dd0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
24de0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
24df0 74 20 6c 61 62 65 6c 2d 38 32 32 0d 0a 53 45 4c  t label-822..SEL
24e00 45 43 54 20 2b 20 2d 20 53 55 4d 20 28 20 2d 20  ECT + - SUM ( - 
24e10 63 6f 6c 31 20 29 20 2a 20 2d 20 43 4f 55 4e 54  col1 ) * - COUNT
24e20 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31   ( * ) FROM tab1
24e30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
24e40 2d 31 39 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49  -198....query II
24e50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
24e60 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53  T * FROM tab2 AS
24e70 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
24e80 20 3c 3d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   <= col2..----..
24e90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
24ea0 74 0d 0a 53 45 4c 45 43 54 20 33 33 20 2d 20 2d  t..SELECT 33 - -
24eb0 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
24ec0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
24ed0 0a 31 30 31 0d 0a 31 32 39 0d 0a 39 32 0d 0a 0d  .101..129..92...
24ee0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24ef0 0d 0a 53 45 4c 45 43 54 20 37 32 20 2a 20 2d 20  ..SELECT 72 * - 
24f00 35 38 20 2a 20 63 6f 6c 30 20 2d 20 2b 20 2b 20  58 * col0 - + + 
24f10 39 36 20 2d 20 2d 20 2b 20 33 37 20 2b 20 2b 20  96 - - + 37 + + 
24f20 34 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  47 AS col1 FROM 
24f30 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 32  tab2..----..-192
24f40 31 30 38 0d 0a 2d 32 36 37 32 37 36 0d 0a 2d 33  108..-267276..-3
24f50 31 33 32 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49  13212....query I
24f60 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
24f70 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57  CT * FROM tab0 W
24f80 48 45 52 45 20 38 31 20 3c 20 2b 20 28 20 2d 20  HERE 81 < + ( - 
24f90 63 6f 6c 32 20 29 20 2a 20 39 37 20 2a 20 2d 20  col2 ) * 97 * - 
24fa0 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  col1..----..9 va
24fb0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
24fc0 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
24fd0 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
24fe0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
24ff0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
25000 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46  - col0 AS col2 F
25010 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28  ROM tab1 WHERE (
25020 20 4e 4f 54 20 28 20 28 20 28 20 28 20 2d 20 28   NOT ( ( ( ( - (
25030 20 2b 20 2b 20 36 37 20 29 20 29 20 29 20 49 53   + + 67 ) ) ) IS
25040 20 4e 4f 54 20 4e 55 4c 4c 20 29 20 29 20 29 0d   NOT NULL ) ) ).
25050 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
25060 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
25070 20 34 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   41 AS col1 FROM
25080 20 74 61 62 32 2c 20 74 61 62 31 20 63 6f 72 30   tab2, tab1 cor0
25090 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
250a0 20 68 61 73 68 69 6e 67 20 74 6f 20 35 62 31 38   hashing to 5b18
250b0 39 38 36 62 62 32 39 34 34 31 32 62 33 64 39 66  986bb294412b3d9f
250c0 30 37 62 37 65 36 66 63 38 32 31 65 0d 0a 0d 0a  07b7e6fc821e....
250d0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
250e0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
250f0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
25100 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
25110 2d 38 32 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  -829..SELECT DIS
25120 54 49 4e 43 54 20 34 36 20 44 49 56 20 39 31 20  TINCT 46 DIV 91 
25130 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
25140 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
25150 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
25160 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
25170 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32 39 0d 0a  sort label-829..
25180 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
25190 34 36 20 2f 20 39 31 20 46 52 4f 4d 20 74 61 62  46 / 91 FROM tab
251a0 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  0..----..0....qu
251b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
251c0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
251d0 20 63 6f 6c 30 20 2a 20 35 39 20 46 52 4f 4d 20   col0 * 59 FROM 
251e0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 31  tab2..----..-271
251f0 34 0d 0a 2d 33 37 37 36 0d 0a 2d 34 34 32 35 0d  4..-3776..-4425.
25200 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
25210 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
25220 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
25230 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 31 0d  wsort label-831.
25240 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
25250 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31  T( * ) FROM tab1
25260 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20   WHERE NOT col1 
25270 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 31 35 20  + + col2 + - 15 
25280 42 45 54 57 45 45 4e 20 2d 20 2b 20 63 6f 6c 31  BETWEEN - + col1
25290 20 41 4e 44 20 63 6f 6c 32 20 2a 20 2d 20 63 6f   AND col2 * - co
252a0 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  l2..----..3....s
252b0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
252c0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
252d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
252e0 62 65 6c 2d 38 33 31 0d 0a 53 45 4c 45 43 54 20  bel-831..SELECT 
252f0 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ALL COUNT ( * ) 
25300 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
25310 4e 4f 54 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c  NOT col1 + + col
25320 32 20 2b 20 2d 20 31 35 20 42 45 54 57 45 45 4e  2 + - 15 BETWEEN
25330 20 2d 20 2b 20 63 6f 6c 31 20 41 4e 44 20 63 6f   - + col1 AND co
25340 6c 32 20 2a 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d  l2 * - col2..---
25350 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..3....onlyif m
25360 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
25370 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
25380 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
25390 2d 38 33 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -832..SELECT ALL
253a0 20 2d 20 2b 20 4d 49 4e 28 20 44 49 53 54 49 4e   - + MIN( DISTIN
253b0 43 54 20 2d 20 2b 20 63 6f 6c 30 20 29 20 46 52  CT - + col0 ) FR
253c0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
253d0 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 0d 0a 73 6b 69  .----..97....ski
253e0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
253f0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
25400 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
25410 6c 2d 38 33 32 0d 0a 53 45 4c 45 43 54 20 41 4c  l-832..SELECT AL
25420 4c 20 2d 20 2b 20 4d 49 4e 20 28 20 44 49 53 54  L - + MIN ( DIST
25430 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 30 20 29 20  INCT - + col0 ) 
25440 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
25450 30 0d 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 0d 0a 6f  0..----..97....o
25460 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
25470 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
25480 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
25490 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
254a0 38 33 33 0d 0a 53 45 4c 45 43 54 20 2b 20 32 37  833..SELECT + 27
254b0 20 44 49 56 20 63 6f 6c 32 20 2b 20 63 6f 6c 30   DIV col2 + col0
254c0 20 2d 20 2d 20 2d 20 34 33 20 41 53 20 63 6f 6c   - - - 43 AS col
254d0 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  0 FROM tab2 cor0
254e0 0d 0a 2d 2d 2d 2d 0d 0a 32 31 0d 0a 33 32 0d 0a  ..----..21..32..
254f0 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
25500 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
25510 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
25520 6f 72 74 20 6c 61 62 65 6c 2d 38 33 33 0d 0a 53  ort label-833..S
25530 45 4c 45 43 54 20 2b 20 32 37 20 2f 20 63 6f 6c  ELECT + 27 / col
25540 32 20 2b 20 63 6f 6c 30 20 2d 20 2d 20 2d 20 34  2 + col0 - - - 4
25550 33 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  3 AS col0 FROM t
25560 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
25570 32 31 0d 0a 33 32 0d 0a 34 0d 0a 0d 0a 71 75 65  21..32..4....que
25580 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
25590 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
255a0 63 6f 6c 30 20 2a 20 2b 20 28 20 2b 20 2d 20 63  col0 * + ( + - c
255b0 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  ol2 ) FROM tab2.
255c0 0a 2d 2d 2d 2d 0d 0a 31 30 35 38 0d 0a 32 35 36  .----..1058..256
255d0 30 0d 0a 34 33 35 30 0d 0a 0d 0a 6f 6e 6c 79 69  0..4350....onlyi
255e0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
255f0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
25600 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
25610 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 35 0d  wsort label-835.
25620 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
25630 20 36 20 2a 20 2b 20 43 41 53 54 28 20 4e 55 4c   6 * + CAST( NUL
25640 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
25650 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
25660 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
25670 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab0 AS cor1..--
25680 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
25690 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
256a0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
256b0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
256c0 2d 38 33 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  -835..SELECT DIS
256d0 54 49 4e 43 54 20 36 20 2a 20 2b 20 43 41 53 54  TINCT 6 * + CAST
256e0 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
256f0 45 52 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  ER ) AS col0 FRO
25700 4d 20 74 61 62 32 20 63 6f 72 30 20 43 52 4f 53  M tab2 cor0 CROS
25710 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63  S JOIN tab0 AS c
25720 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or1..----..NULL.
25730 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
25740 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
25750 4e 43 54 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  NCT - col2 FROM 
25760 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab2 WHERE NOT N
25770 55 4c 4c 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c  ULL BETWEEN NULL
25780 20 41 4e 44 20 37 35 20 2a 20 2b 20 63 6f 6c 30   AND 75 * + col0
25790 20 2a 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d   * col0..----...
257a0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
257b0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
257c0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
257d0 6f 72 74 20 6c 61 62 65 6c 2d 38 33 37 0d 0a 53  ort label-837..S
257e0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d  ELECT DISTINCT M
257f0 41 58 28 20 2d 20 33 38 20 29 20 46 52 4f 4d 20  AX( - 38 ) FROM 
25800 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
25810 0a 2d 33 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-38....skipif m
25820 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
25830 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
25840 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 37  owsort label-837
25850 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
25860 54 20 4d 41 58 20 28 20 2d 20 33 38 20 29 20 46  T MAX ( - 38 ) F
25870 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
25880 2d 2d 2d 0d 0a 2d 33 38 0d 0a 0d 0a 71 75 65 72  ---..-38....quer
25890 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
258a0 45 43 54 20 2d 20 28 20 28 20 2d 20 2b 20 63 6f  ECT - ( ( - + co
258b0 6c 31 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46  l1 ) ) AS col1 F
258c0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
258d0 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 34 37 0d 0a  ..----..14..47..
258e0 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
258f0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
25900 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 30 20 2a  TINCT - + col0 *
25910 20 2b 20 63 6f 6c 31 20 2a 20 63 6f 6c 32 20 46   + col1 * col2 F
25920 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
25930 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 32 37 30 0d 0a  ..----..-18270..
25940 2d 35 37 31 30 35 0d 0a 2d 39 36 30 33 0d 0a 0d  -57105..-9603...
25950 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25960 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
25970 30 20 2b 20 2d 20 28 20 2d 20 63 6f 6c 30 20 29  0 + - ( - col0 )
25980 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
25990 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
259a0 0d 0a 31 30 32 0d 0a 31 37 30 0d 0a 31 38 32 0d  ..102..170..182.
259b0 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
259c0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
259d0 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
259e0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
259f0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
25a00 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
25a10 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
25a20 6c 32 20 2a 20 2d 20 2d 20 38 34 20 63 6f 6c 30  l2 * - - 84 col0
25a30 2c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  , col0 FROM tab0
25a40 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
25a50 33 39 34 38 0d 0a 31 35 0d 0a 38 33 31 36 0d 0a  3948..15..8316..
25a60 39 37 0d 0a 38 34 30 0d 0a 38 37 0d 0a 0d 0a 6f  97..840..87....o
25a70 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
25a80 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
25a90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
25aa0 74 20 6c 61 62 65 6c 2d 38 34 32 0d 0a 53 45 4c  t label-842..SEL
25ab0 45 43 54 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a  ECT - + COUNT( *
25ac0 20 29 20 2a 20 2b 20 2b 20 4d 49 4e 28 20 2d 20   ) * + + MIN( - 
25ad0 63 6f 6c 31 20 29 20 63 6f 6c 32 20 46 52 4f 4d  col1 ) col2 FROM
25ae0 20 74 61 62 32 20 57 48 45 52 45 20 2b 20 63 6f   tab2 WHERE + co
25af0 6c 32 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 2a 20  l2 + - + col0 * 
25b00 2b 20 63 6f 6c 32 20 2a 20 31 34 20 2b 20 2b 20  + col2 * 14 + + 
25b10 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55  - col0 IS NOT NU
25b20 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 33 31 0d 0a 0d  LL..----..231...
25b30 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
25b40 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
25b50 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
25b60 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
25b70 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
25b80 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
25b90 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
25ba0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
25bb0 34 32 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43  42..SELECT - + C
25bc0 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 2b  OUNT ( * ) * + +
25bd0 20 4d 49 4e 20 28 20 2d 20 63 6f 6c 31 20 29 20   MIN ( - col1 ) 
25be0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57  col2 FROM tab2 W
25bf0 48 45 52 45 20 2b 20 63 6f 6c 32 20 2b 20 2d 20  HERE + col2 + - 
25c00 2b 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32 20  + col0 * + col2 
25c10 2a 20 31 34 20 2b 20 2b 20 2d 20 63 6f 6c 30 20  * 14 + + - col0 
25c20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
25c30 2d 0d 0a 32 33 31 0d 0a 0d 0a 73 6b 69 70 69 66  -..231....skipif
25c40 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
25c50 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
25c60 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
25c70 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
25c80 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
25c90 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
25ca0 4e 43 54 20 33 38 20 2a 20 2d 20 63 6f 6c 31 20  NCT 38 * - col1 
25cb0 2a 20 2d 20 2b 20 39 32 20 63 6f 6c 30 20 46 52  * - + 92 col0 FR
25cc0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
25cd0 37 38 32 39 36 0d 0a 32 33 34 32 33 32 0d 0a 32  78296..234232..2
25ce0 36 39 31 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49  69192....query I
25cf0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
25d00 20 2b 20 63 6f 6c 32 20 2b 20 34 36 20 46 52 4f   + col2 + 46 FRO
25d10 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab2..----..10
25d20 34 0d 0a 36 39 0d 0a 38 36 0d 0a 0d 0a 71 75 65  4..69..86....que
25d30 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
25d40 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2b 20 2b 20  LECT - col1 + + 
25d50 2d 20 63 6f 6c 32 20 2a 20 28 20 2b 20 2b 20 34  - col2 * ( + + 4
25d60 31 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  1 ) FROM tab0..-
25d70 2d 2d 2d 0d 0a 2d 32 30 30 38 0d 0a 2d 34 30 36  ---..-2008..-406
25d80 30 0d 0a 2d 34 33 31 0d 0a 0d 0a 6f 6e 6c 79 69  0..-431....onlyi
25d90 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
25da0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
25db0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
25dc0 62 65 6c 2d 38 34 36 0d 0a 53 45 4c 45 43 54 20  bel-846..SELECT 
25dd0 2d 20 4d 41 58 28 20 2b 20 32 31 20 29 20 41 53  - MAX( + 21 ) AS
25de0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
25df0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
25e00 32 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  21....skipif mys
25e10 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
25e20 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
25e30 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34 36 0d 0a  sort label-846..
25e40 53 45 4c 45 43 54 20 2d 20 4d 41 58 20 28 20 2b  SELECT - MAX ( +
25e50 20 32 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52   21 ) AS col1 FR
25e60 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
25e70 0a 2d 2d 2d 2d 0d 0a 2d 32 31 0d 0a 0d 0a 71 75  .----..-21....qu
25e80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
25e90 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32  ELECT ALL + col2
25ea0 20 2b 20 2d 20 2b 20 35 36 20 41 53 20 63 6f 6c   + - + 56 AS col
25eb0 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
25ec0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a  or0..----..-16..
25ed0 2d 33 33 0d 0a 32 0d 0a 0d 0a 6f 6e 6c 79 69 66  -33..2....onlyif
25ee0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
25ef0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
25f00 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
25f10 65 6c 2d 38 34 38 0d 0a 53 45 4c 45 43 54 20 44  el-848..SELECT D
25f20 49 53 54 49 4e 43 54 20 2d 20 2d 20 43 4f 55 4e  ISTINCT - - COUN
25f30 54 28 20 2a 20 29 20 2b 20 2b 20 2b 20 33 35 20  T( * ) + + + 35 
25f40 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
25f50 30 0d 0a 2d 2d 2d 2d 0d 0a 33 38 0d 0a 0d 0a 73  0..----..38....s
25f60 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
25f70 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
25f80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
25f90 62 65 6c 2d 38 34 38 0d 0a 53 45 4c 45 43 54 20  bel-848..SELECT 
25fa0 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 43 4f 55  DISTINCT - - COU
25fb0 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20 2b 20 33  NT ( * ) + + + 3
25fc0 35 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  5 FROM tab1 AS c
25fd0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 38 0d 0a 0d  or0..----..38...
25fe0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
25ff0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
26000 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
26010 6f 72 74 20 6c 61 62 65 6c 2d 38 34 39 0d 0a 53  ort label-849..S
26020 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 4d 49  ELECT ALL - - MI
26030 4e 28 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d  N( - col1 ) FROM
26040 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
26050 0d 0a 2d 34 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-47....skipif 
26060 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
26070 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
26080 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34  rowsort label-84
26090 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  9..SELECT ALL - 
260a0 2d 20 4d 49 4e 20 28 20 2d 20 63 6f 6c 31 20 29  - MIN ( - col1 )
260b0 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
260c0 0a 2d 2d 2d 2d 0d 0a 2d 34 37 0d 0a 0d 0a 71 75  .----..-47....qu
260d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
260e0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2b  ELECT ALL col1 +
260f0 20 63 6f 6c 31 20 2b 20 2d 20 36 36 20 2b 20 63   col1 + - 66 + c
26100 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
26110 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
26120 2d 2d 2d 0d 0a 31 31 31 0d 0a 33 33 0d 0a 36 33  ---..111..33..63
26130 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
26140 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
26150 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
26160 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35 31  owsort label-851
26170 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
26180 54 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  T - + COUNT( * )
26190 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
261a0 62 32 20 57 48 45 52 45 20 2b 20 34 39 20 4e 4f  b2 WHERE + 49 NO
261b0 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  T BETWEEN NULL A
261c0 4e 44 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  ND - col1..----.
261d0 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-3....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 35 31 0d  wsort label-851.
26210 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
26220 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   - + COUNT ( * )
26230 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
26240 62 32 20 57 48 45 52 45 20 2b 20 34 39 20 4e 4f  b2 WHERE + 49 NO
26250 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  T BETWEEN NULL A
26260 4e 44 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  ND - col1..----.
26270 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .-3....query II 
26280 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
26290 63 6f 6c 30 20 2b 20 63 6f 6c 32 20 41 53 20 63  col0 + col2 AS c
262a0 6f 6c 31 2c 20 63 6f 6c 32 20 41 53 20 63 6f 6c  ol1, col2 AS col
262b0 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
262c0 2d 0d 0a 31 39 36 0d 0a 39 39 0d 0a 36 32 0d 0a  -..196..99..62..
262d0 34 37 0d 0a 39 37 0d 0a 31 30 0d 0a 0d 0a 71 75  47..97..10....qu
262e0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
262f0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
26300 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
26310 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
26320 20 37 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   7 IS NULL..----
26330 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
26340 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35 64 66  ng to c4b42765df
26350 66 39 34 65 61 61 61 34 36 30 34 30 65 35 33 37  f94eaaa46040e537
26360 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66  fb43b7....onlyif
26370 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
26380 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
26390 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
263a0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
263b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35 34  owsort label-854
263c0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
263d0 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b  T - COUNT( * ) +
263e0 20 4d 41 58 28 20 41 4c 4c 20 2d 20 43 41 53 54   MAX( ALL - CAST
263f0 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
26400 20 29 20 29 20 2a 20 2b 20 2d 20 35 39 20 46 52   ) ) * + - 59 FR
26410 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
26420 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
26430 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
26440 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
26450 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
26460 62 65 6c 2d 38 35 34 0d 0a 53 45 4c 45 43 54 20  bel-854..SELECT 
26470 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
26480 20 28 20 2a 20 29 20 2b 20 4d 41 58 20 28 20 41   ( * ) + MAX ( A
26490 4c 4c 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c  LL - CAST ( NULL
264a0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
264b0 2a 20 2b 20 2d 20 35 39 20 46 52 4f 4d 20 74 61  * + - 59 FROM ta
264c0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
264d0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
264e0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
264f0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
26500 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
26510 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
26520 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
26530 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
26540 20 35 34 20 2a 20 63 6f 6c 31 20 63 6f 6c 30 20   54 * col1 col0 
26550 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
26560 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54  0 WHERE NULL NOT
26570 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e   BETWEEN NULL AN
26580 44 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d  D ( NULL )..----
26590 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
265a0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
265b0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
265c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35 36  owsort label-856
265d0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
265e0 54 20 37 34 20 2a 20 2b 20 4d 41 58 28 20 2d 20  T 74 * + MAX( - 
265f0 33 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  32 ) AS col2 FRO
26600 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab0..----..-2
26610 33 36 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  368....skipif my
26620 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
26630 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
26640 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35 36 0d  wsort label-856.
26650 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
26660 20 37 34 20 2a 20 2b 20 4d 41 58 20 28 20 2d 20   74 * + MAX ( - 
26670 33 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  32 ) AS col2 FRO
26680 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab0..----..-2
26690 33 36 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  368....query II 
266a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
266b0 33 2c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  3, col0 FROM tab
266c0 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 34 36 0d 0a  2..----..3..46..
266d0 33 0d 0a 36 34 0d 0a 33 0d 0a 37 35 0d 0a 0d 0a  3..64..3..75....
266e0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
266f0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
26700 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
26710 2b 20 2d 20 63 6f 6c 31 20 3c 20 63 6f 6c 30 0d  + - col1 < col0.
26720 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
26730 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39  hashing to 75c99
26740 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32  8aa53ac83218cbf2
26750 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f  feb962d0a49....o
26760 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
26770 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
26780 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
26790 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
267a0 38 35 39 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  859..SELECT - co
267b0 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20 2a 20  l1 * - - col1 * 
267c0 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
267d0 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31  SIGNED ) AS col1
267e0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
267f0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
26800 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
26810 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
26820 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
26830 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35 39 0d 0a  sort label-859..
26840 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2a 20  SELECT - col1 * 
26850 2d 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 43 41 53  - - col1 * + CAS
26860 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
26870 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20 46 52  GER ) AS col1 FR
26880 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab1..----..N
26890 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
268a0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
268b0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
268c0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
268d0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 30 0d  wsort label-860.
268e0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
268f0 20 2b 20 4d 41 58 28 20 41 4c 4c 20 63 6f 6c 31   + MAX( ALL col1
26900 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
26910 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a  tab0..----..81..
26920 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
26930 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
26940 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
26950 20 6c 61 62 65 6c 2d 38 36 30 0d 0a 53 45 4c 45   label-860..SELE
26960 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 4d 41  CT DISTINCT + MA
26970 58 20 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20 41  X ( ALL col1 ) A
26980 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
26990 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 0d 0a 71 75  ..----..81....qu
269a0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
269b0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
269c0 2d 20 63 6f 6c 32 2c 20 36 33 20 41 53 20 63 6f  - col2, 63 AS co
269d0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
269e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d  cor0..----..-23.
269f0 0a 36 33 0d 0a 2d 34 30 0d 0a 36 33 0d 0a 2d 35  .63..-40..63..-5
26a00 38 0d 0a 36 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  8..63....onlyif 
26a10 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
26a20 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
26a30 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
26a40 6c 2d 38 36 32 0d 0a 53 45 4c 45 43 54 20 2b 20  l-862..SELECT + 
26a50 2b 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43  + COUNT( DISTINC
26a60 54 20 2d 20 63 6f 6c 32 20 29 20 2a 20 35 36 20  T - col2 ) * 56 
26a70 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
26a80 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
26a90 0a 31 36 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .168....skipif m
26aa0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
26ab0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
26ac0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 32  owsort label-862
26ad0 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f 55  ..SELECT + + COU
26ae0 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20  NT ( DISTINCT - 
26af0 63 6f 6c 32 20 29 20 2a 20 35 36 20 41 53 20 63  col2 ) * 56 AS c
26b00 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
26b10 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 38   cor0..----..168
26b20 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
26b30 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  ort..SELECT + - 
26b40 63 6f 6c 30 20 2a 20 2b 20 2d 20 63 6f 6c 30 20  col0 * + - col0 
26b50 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
26b60 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
26b70 0a 32 32 35 0d 0a 37 35 36 39 0d 0a 39 34 30 39  .225..7569..9409
26b80 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
26b90 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
26ba0 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 31 20 2a 20  INCT + - col1 * 
26bb0 2b 20 2b 20 31 20 2b 20 2d 20 63 6f 6c 31 20 2a  + + 1 + - col1 *
26bc0 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74   + + col1 FROM t
26bd0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
26be0 2d 0d 0a 2d 32 31 30 0d 0a 2d 32 32 35 36 0d 0a  -..-210..-2256..
26bf0 2d 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -30....query I r
26c00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
26c10 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 2f  ISTINCT - col1 /
26c20 20 63 6f 6c 30 20 2b 20 63 6f 6c 30 20 2d 20 63   col0 + col0 - c
26c30 6f 6c 31 20 2b 20 2b 20 28 20 2d 20 2b 20 63 6f  ol1 + + ( - + co
26c40 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  l1 ) FROM tab2 A
26c50 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
26c60 20 2b 20 33 33 20 2a 20 63 6f 6c 32 20 49 53 20   + 33 * col2 IS 
26c70 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
26c80 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26c90 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
26ca0 2d 20 39 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 92 AS col1 FRO
26cb0 4d 20 74 61 62 30 20 63 6f 72 30 20 43 52 4f 53  M tab0 cor0 CROS
26cc0 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63  S JOIN tab1 AS c
26cd0 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  or1..----..9 val
26ce0 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 35  ues hashing to 5
26cf0 31 36 66 61 34 35 63 38 62 30 36 66 39 66 36 37  16fa45c8b06f9f67
26d00 64 36 65 35 30 30 62 66 64 34 33 35 63 31 61 0d  d6e500bfd435c1a.
26d10 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
26d20 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
26d30 4e 43 54 20 2b 20 2b 20 33 36 20 46 52 4f 4d 20  NCT + + 36 FROM 
26d40 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
26d50 0a 33 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .36....onlyif my
26d60 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
26d70 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
26d80 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a  DECIMAL type: ..
26d90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
26da0 6c 61 62 65 6c 2d 38 36 38 0d 0a 53 45 4c 45 43  label-868..SELEC
26db0 54 20 2d 20 43 41 53 54 28 20 2d 20 2b 20 43 41  T - CAST( - + CA
26dc0 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49  ST( NULL AS DECI
26dd0 4d 41 4c 20 29 20 41 53 20 53 49 47 4e 45 44 20  MAL ) AS SIGNED 
26de0 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
26df0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
26e00 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
26e10 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
26e20 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
26e30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
26e40 62 65 6c 2d 38 36 38 0d 0a 53 45 4c 45 43 54 20  bel-868..SELECT 
26e50 2d 20 43 41 53 54 20 28 20 2d 20 2b 20 43 41 53  - CAST ( - + CAS
26e60 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c  T ( NULL AS REAL
26e70 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20   ) AS INTEGER ) 
26e80 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
26e90 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
26ea0 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
26eb0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
26ec0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
26ed0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
26ee0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
26ef0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
26f00 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
26f10 63 6f 6c 32 20 2a 20 28 20 2b 20 63 6f 6c 32 20  col2 * ( + col2 
26f20 29 20 2a 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 2b  ) * - - col1 * +
26f30 20 2b 20 28 20 63 6f 6c 32 20 29 20 63 6f 6c 31   + ( col2 ) col1
26f40 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
26f50 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 32 36 38 39  r0..----..102689
26f60 35 0d 0a 31 32 33 38 36 33 30 34 0d 0a 31 34 37  5..12386304..147
26f70 37 38 33 30 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  78304....onlyif 
26f80 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
26f90 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
26fa0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
26fb0 6c 2d 38 37 30 0d 0a 53 45 4c 45 43 54 20 44 49  l-870..SELECT DI
26fc0 53 54 49 4e 43 54 20 2b 20 2d 20 28 20 2b 20 34  STINCT + - ( + 4
26fd0 35 20 29 20 2b 20 2d 20 28 20 2b 20 43 4f 55 4e  5 ) + - ( + COUN
26fe0 54 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 30  T( * ) ) AS col0
26ff0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
27000 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 0d 0a 0d  r0..----..-48...
27010 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
27020 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
27030 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
27040 6c 61 62 65 6c 2d 38 37 30 0d 0a 53 45 4c 45 43  label-870..SELEC
27050 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 28  T DISTINCT + - (
27060 20 2b 20 34 35 20 29 20 2b 20 2d 20 28 20 2b 20   + 45 ) + - ( + 
27070 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 41 53  COUNT ( * ) ) AS
27080 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
27090 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
270a0 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  48....query I ro
270b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
270c0 28 20 2b 20 33 36 20 29 20 46 52 4f 4d 20 74 61  ( + 36 ) FROM ta
270d0 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  b1 cor0..----..3
270e0 36 0d 0a 33 36 0d 0a 33 36 0d 0a 0d 0a 71 75 65  6..36..36....que
270f0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
27100 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
27110 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
27120 48 45 52 45 20 2d 20 35 33 20 2a 20 63 6f 6c 32  HERE - 53 * col2
27130 20 2b 20 2d 20 2b 20 28 20 2d 20 63 6f 6c 30 20   + - + ( - col0 
27140 29 20 2f 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20  ) / col0 IS NOT 
27150 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  NULL..----..9 va
27160 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
27170 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64  c6c0a4111b36d04d
27180 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64  bc811a11e4d54cad
27190 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
271a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
271b0 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20 2a 20  l1 * - - col1 * 
271c0 2b 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32  + + col0 AS col2
271d0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
271e0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 39 36 34 36  r0..----..119646
271f0 0d 0a 33 33 36 36 37 35 0d 0a 33 37 39 34 35 36  ..336675..379456
27200 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
27210 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
27220 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  tax: ..query II 
27230 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37  rowsort label-87
27240 34 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2d 20  4..SELECT - ( - 
27250 36 30 20 29 20 41 53 20 63 6f 6c 32 2c 20 2b 20  60 ) AS col2, + 
27260 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 28  COUNT( * ) * - (
27270 20 4d 49 4e 28 20 2d 20 2d 20 37 31 20 29 20 29   MIN( - - 71 ) )
27280 20 2a 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2d 20   * COUNT( ALL - 
27290 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31 20 46  col0 ) AS col1 F
272a0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
272b0 36 30 0d 0a 2d 36 33 39 0d 0a 0d 0a 73 6b 69 70  60..-639....skip
272c0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
272d0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
272e0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
272f0 6c 2d 38 37 34 0d 0a 53 45 4c 45 43 54 20 2d 20  l-874..SELECT - 
27300 28 20 2d 20 36 30 20 29 20 41 53 20 63 6f 6c 32  ( - 60 ) AS col2
27310 2c 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  , + COUNT ( * ) 
27320 2a 20 2d 20 28 20 4d 49 4e 20 28 20 2d 20 2d 20  * - ( MIN ( - - 
27330 37 31 20 29 20 29 20 2a 20 43 4f 55 4e 54 20 28  71 ) ) * COUNT (
27340 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 29 20 41 53   ALL - col0 ) AS
27350 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
27360 0a 2d 2d 2d 2d 0d 0a 36 30 0d 0a 2d 36 33 39 0d  .----..60..-639.
27370 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
27380 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
27390 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
273a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37 35 0d  wsort label-875.
273b0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 28  .SELECT ALL MIN(
273c0 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32   DISTINCT + col2
273d0 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
273e0 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 0d 0a 73  2..----..23....s
273f0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
27400 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
27410 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
27420 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
27430 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
27440 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
27450 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
27460 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37 35  owsort label-875
27470 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e  ..SELECT ALL MIN
27480 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f   ( DISTINCT + co
27490 6c 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74  l2 ) col1 FROM t
274a0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 0d  ab2..----..23...
274b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
274c0 0d 0a 53 45 4c 45 43 54 20 36 20 2a 20 2b 20 2b  ..SELECT 6 * + +
274d0 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20 41 53 20   col0 * col2 AS 
274e0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
274f0 2d 2d 2d 2d 0d 0a 31 35 33 36 30 0d 0a 32 36 31  ----..15360..261
27500 30 30 0d 0a 36 33 34 38 0d 0a 0d 0a 71 75 65 72  00..6348....quer
27510 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
27520 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
27530 31 20 57 48 45 52 45 20 28 20 28 20 4e 55 4c 4c  1 WHERE ( ( NULL
27540 20 29 20 3e 20 2b 20 2b 20 63 6f 6c 32 20 2b 20   ) > + + col2 + 
27550 2d 20 2d 20 63 6f 6c 30 20 2b 20 35 32 20 29 0d  - - col0 + 52 ).
27560 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
27570 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
27580 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
27590 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
275a0 6c 2d 38 37 38 0d 0a 53 45 4c 45 43 54 20 2d 20  l-878..SELECT - 
275b0 28 20 2d 20 28 20 2d 20 2d 20 43 4f 55 4e 54 28  ( - ( - - COUNT(
275c0 20 2a 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61   * ) ) ) FROM ta
275d0 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  b2..----..3....s
275e0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
275f0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
27600 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
27610 62 65 6c 2d 38 37 38 0d 0a 53 45 4c 45 43 54 20  bel-878..SELECT 
27620 2d 20 28 20 2d 20 28 20 2d 20 2d 20 43 4f 55 4e  - ( - ( - - COUN
27630 54 20 28 20 2a 20 29 20 29 20 29 20 46 52 4f 4d  T ( * ) ) ) FROM
27640 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   tab2..----..3..
27650 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
27660 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32  t..SELECT - col2
27670 20 2b 20 2b 20 2d 20 39 39 20 2b 20 2d 20 63 6f   + + - 99 + - co
27680 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
27690 2d 2d 0d 0a 2d 31 33 30 0d 0a 2d 31 39 39 0d 0a  --..-130..-199..
276a0 2d 32 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49  -227....query II
276b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
276c0 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2b 20 63 6f   ALL + col2 + co
276d0 6c 32 2c 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  l2, + col1 AS co
276e0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l2 FROM tab1 cor
276f0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 38 0d 0a 35 0d  0..----..118..5.
27700 0a 31 33 36 0d 0a 34 37 0d 0a 31 39 32 0d 0a 31  .136..47..192..1
27710 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
27720 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
27730 20 2d 20 63 6f 6c 30 20 2b 20 34 32 20 41 53 20   - col0 + 42 AS 
27740 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63  col2 FROM tab2 c
27750 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a  or0..----..-22..
27760 2d 33 33 0d 0a 2d 34 0d 0a 0d 0a 6f 6e 6c 79 69  -33..-4....onlyi
27770 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
27780 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
27790 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
277a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 32 0d  wsort label-882.
277b0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
277c0 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l2 AS col1 FROM 
277d0 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45 20  tab1 cor0 WHERE 
277e0 2d 20 32 38 20 4e 4f 54 20 42 45 54 57 45 45 4e  - 28 NOT BETWEEN
277f0 20 4e 55 4c 4c 20 41 4e 44 20 43 41 53 54 28 20   NULL AND CAST( 
27800 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
27810 20 2b 20 39 38 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73   + 98..----....s
27820 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
27830 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
27840 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
27850 62 65 6c 2d 38 38 32 0d 0a 53 45 4c 45 43 54 20  bel-882..SELECT 
27860 41 4c 4c 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  ALL - col2 AS co
27870 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l1 FROM tab1 cor
27880 30 20 57 48 45 52 45 20 2d 20 32 38 20 4e 4f 54  0 WHERE - 28 NOT
27890 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e   BETWEEN NULL AN
278a0 44 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  D CAST ( NULL AS
278b0 20 49 4e 54 45 47 45 52 20 29 20 2b 20 39 38 0d   INTEGER ) + 98.
278c0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
278d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
278e0 20 2d 20 33 37 20 2d 20 2b 20 2b 20 32 38 20 46   - 37 - + + 28 F
278f0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
27900 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35 0d 0a 2d 36 35  ..----..-65..-65
27910 0d 0a 2d 36 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-65....onlyif 
27920 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
27930 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
27940 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
27950 6c 2d 38 38 34 0d 0a 53 45 4c 45 43 54 20 2d 20  l-884..SELECT - 
27960 53 55 4d 28 20 41 4c 4c 20 2b 20 63 6f 6c 32 20  SUM( ALL + col2 
27970 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  ) col1 FROM tab0
27980 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
27990 2d 31 35 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -156....skipif m
279a0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
279b0 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
279c0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
279d0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
279e0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
279f0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
27a00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
27a10 6c 61 62 65 6c 2d 38 38 34 0d 0a 53 45 4c 45 43  label-884..SELEC
27a20 54 20 2d 20 53 55 4d 20 28 20 41 4c 4c 20 2b 20  T - SUM ( ALL + 
27a30 63 6f 6c 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d  col2 ) col1 FROM
27a40 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
27a50 2d 2d 2d 0d 0a 2d 31 35 36 0d 0a 0d 0a 6f 6e 6c  ---..-156....onl
27a60 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
27a70 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
27a80 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
27a90 20 6c 61 62 65 6c 2d 38 38 35 0d 0a 53 45 4c 45   label-885..SELE
27aa0 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 2c  CT + COUNT( * ),
27ab0 20 2d 20 33 33 20 2a 20 2b 20 43 4f 55 4e 54 28   - 33 * + COUNT(
27ac0 20 2a 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74   * ) col1 FROM t
27ad0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
27ae0 2d 0d 0a 33 0d 0a 2d 39 39 0d 0a 0d 0a 73 6b 69  -..3..-99....ski
27af0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
27b00 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
27b10 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
27b20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
27b30 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
27b40 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
27b50 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
27b60 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 35 0d  wsort label-885.
27b70 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20  .SELECT + COUNT 
27b80 28 20 2a 20 29 2c 20 2d 20 33 33 20 2a 20 2b 20  ( * ), - 33 * + 
27b90 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 31  COUNT ( * ) col1
27ba0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
27bb0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 39 39  r0..----..3..-99
27bc0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
27bd0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  sort..SELECT + -
27be0 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20 2d   col0 AS col1, -
27bf0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
27c00 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
27c10 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d 39 36 0d  .----..-51..-96.
27c20 0a 2d 38 35 0d 0a 2d 35 39 0d 0a 2d 39 31 0d 0a  .-85..-59..-91..
27c30 2d 36 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -68....query I r
27c40 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
27c50 49 53 54 49 4e 43 54 20 2b 20 28 20 2d 20 2b 20  ISTINCT + ( - + 
27c60 63 6f 6c 32 20 29 20 2a 20 2b 20 2d 20 63 6f 6c  col2 ) * + - col
27c70 32 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  2 * + col0 AS co
27c80 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
27c90 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 32 34  cor0..----..1024
27ca0 30 30 0d 0a 32 34 33 33 34 0d 0a 32 35 32 33 30  00..24334..25230
27cb0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
27cc0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
27cd0 31 20 2b 20 2b 20 63 6f 6c 31 20 2f 20 2b 20 32  1 + + col1 / + 2
27ce0 38 20 2a 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f  8 * - col1 AS co
27cf0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
27d00 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
27d10 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d   NULL ) IS NULL.
27d20 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
27d30 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
27d40 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
27d50 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
27d60 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 39 0d 0a  sort label-889..
27d70 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
27d80 30 20 41 53 20 63 6f 6c 32 2c 20 2b 20 43 41 53  0 AS col2, + CAS
27d90 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
27da0 44 20 29 20 2a 20 2d 20 63 6f 6c 30 20 46 52 4f  D ) * - col0 FRO
27db0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
27dc0 2d 2d 2d 2d 0d 0a 34 36 0d 0a 4e 55 4c 4c 0d 0a  ----..46..NULL..
27dd0 36 34 0d 0a 4e 55 4c 4c 0d 0a 37 35 0d 0a 4e 55  64..NULL..75..NU
27de0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
27df0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
27e00 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  ble..query II ro
27e10 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 39 0d  wsort label-889.
27e20 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
27e30 6c 30 20 41 53 20 63 6f 6c 32 2c 20 2b 20 43 41  l0 AS col2, + CA
27e40 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
27e50 45 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 30 20  EGER ) * - col0 
27e60 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
27e70 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 4e 55 4c  0..----..46..NUL
27e80 4c 0d 0a 36 34 0d 0a 4e 55 4c 4c 0d 0a 37 35 0d  L..64..NULL..75.
27e90 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .NULL....onlyif 
27ea0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
27eb0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
27ec0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
27ed0 6c 2d 38 39 30 0d 0a 53 45 4c 45 43 54 20 2d 20  l-890..SELECT - 
27ee0 43 4f 55 4e 54 28 20 2b 20 35 33 20 29 20 46 52  COUNT( + 53 ) FR
27ef0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
27f00 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  .----..-3....ski
27f10 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
27f20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
27f30 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
27f40 6c 2d 38 39 30 0d 0a 53 45 4c 45 43 54 20 2d 20  l-890..SELECT - 
27f50 43 4f 55 4e 54 20 28 20 2b 20 35 33 20 29 20 46  COUNT ( + 53 ) F
27f60 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
27f70 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75  ..----..-3....qu
27f80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
27f90 45 4c 45 43 54 20 2b 20 39 32 20 2a 20 63 6f 6c  ELECT + 92 * col
27fa0 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
27fb0 2d 0d 0a 34 36 39 32 0d 0a 36 31 36 34 0d 0a 37  -..4692..6164..7
27fc0 30 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  084....onlyif my
27fd0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
27fe0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
27ff0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
28000 74 20 6c 61 62 65 6c 2d 38 39 32 0d 0a 53 45 4c  t label-892..SEL
28010 45 43 54 20 37 36 20 2a 20 35 20 44 49 56 20 2b  ECT 76 * 5 DIV +
28020 20 39 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d   92 FROM tab0..-
28030 2d 2d 2d 0d 0a 34 0d 0a 34 0d 0a 34 0d 0a 0d 0a  ---..4..4..4....
28040 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
28050 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
28060 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
28070 61 62 65 6c 2d 38 39 32 0d 0a 53 45 4c 45 43 54  abel-892..SELECT
28080 20 37 36 20 2a 20 35 20 2f 20 2b 20 39 32 20 46   76 * 5 / + 92 F
28090 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
280a0 34 0d 0a 34 0d 0a 34 0d 0a 0d 0a 71 75 65 72 79  4..4..4....query
280b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
280c0 43 54 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 2b 20  CT - col0 * - + 
280d0 34 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  41 FROM tab0 AS 
280e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 35 36 37  cor0..----..3567
280f0 0d 0a 33 39 37 37 0d 0a 36 31 35 0d 0a 0d 0a 71  ..3977..615....q
28100 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
28110 53 45 4c 45 43 54 20 63 6f 6c 32 20 2a 20 2d 20  SELECT col2 * - 
28120 2d 20 37 36 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 76 AS col1 FRO
28130 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
28140 2d 2d 2d 2d 0d 0a 33 35 37 32 0d 0a 37 35 32 34  ----..3572..7524
28150 0d 0a 37 36 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..760....onlyif 
28160 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
28170 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f  e syntax: DIV fo
28180 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
28190 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
281a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 35 0d  wsort label-895.
281b0 0a 53 45 4c 45 43 54 20 2b 20 28 20 2d 20 36 38  .SELECT + ( - 68
281c0 20 29 20 2a 20 2d 20 2b 20 30 20 44 49 56 20 2d   ) * - + 0 DIV -
281d0 20 34 35 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a   45 + + COUNT( *
281e0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
281f0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  cor0..----..3...
28200 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
28210 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
28220 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
28230 6c 61 62 65 6c 2d 38 39 35 0d 0a 53 45 4c 45 43  label-895..SELEC
28240 54 20 2b 20 28 20 2d 20 36 38 20 29 20 2a 20 2d  T + ( - 68 ) * -
28250 20 2b 20 30 20 2f 20 2d 20 34 35 20 2b 20 2b 20   + 0 / - 45 + + 
28260 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
28270 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
28280 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..3....onlyif
28290 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
282a0 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
282b0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
282c0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
282d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 36  owsort label-896
282e0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
282f0 54 20 2b 20 2b 20 53 55 4d 28 20 41 4c 4c 20 2d  T + + SUM( ALL -
28300 20 2d 20 63 6f 6c 30 20 29 20 2a 20 43 41 53 54   - col0 ) * CAST
28310 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
28320 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
28330 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
28340 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
28350 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
28360 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
28370 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
28380 2d 38 39 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -896..SELECT DIS
28390 54 49 4e 43 54 20 2b 20 2b 20 53 55 4d 20 28 20  TINCT + + SUM ( 
283a0 41 4c 4c 20 2d 20 2d 20 63 6f 6c 30 20 29 20 2a  ALL - - col0 ) *
283b0 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
283c0 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c  INTEGER ) AS col
283d0 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
283e0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
283f0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
28400 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
28410 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
28420 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 37 0d  wsort label-897.
28430 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 49  .SELECT ALL - MI
28440 4e 28 20 44 49 53 54 49 4e 43 54 20 2b 20 35 38  N( DISTINCT + 58
28450 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
28460 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d  cor0..----..-58.
28470 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
28480 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
28490 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
284a0 74 20 6c 61 62 65 6c 2d 38 39 37 0d 0a 53 45 4c  t label-897..SEL
284b0 45 43 54 20 41 4c 4c 20 2d 20 4d 49 4e 20 28 20  ECT ALL - MIN ( 
284c0 44 49 53 54 49 4e 43 54 20 2b 20 35 38 20 29 20  DISTINCT + 58 ) 
284d0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
284e0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 0d 0a  0..----..-58....
284f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
28500 0a 53 45 4c 45 43 54 20 28 20 2d 20 2d 20 63 6f  .SELECT ( - - co
28510 6c 32 20 29 20 2a 20 2d 20 2d 20 28 20 2d 20 63  l2 ) * - - ( - c
28520 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20  ol2 ) FROM tab1 
28530 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
28540 33 34 38 31 0d 0a 2d 34 36 32 34 0d 0a 2d 39 32  3481..-4624..-92
28550 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  16....query I ro
28560 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
28570 4c 20 2b 20 31 39 20 2a 20 2d 20 2d 20 31 33 20  L + 19 * - - 13 
28580 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
28590 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 37 0d 0a 32 34  0..----..247..24
285a0 37 0d 0a 32 34 37 0d 0a 0d 0a 71 75 65 72 79 20  7..247....query 
285b0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
285c0 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
285d0 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49  WHERE NOT NULL I
285e0 4e 20 28 20 28 20 2b 20 63 6f 6c 31 20 29 20 2b  N ( ( + col1 ) +
285f0 20 2b 20 63 6f 6c 31 2c 20 28 20 2d 20 2b 20 33   + col1, ( - + 3
28600 34 20 29 2c 20 2b 20 2b 20 32 30 20 2b 20 2b 20  4 ), + + 20 + + 
28610 2b 20 36 33 2c 20 31 2c 20 2b 20 28 20 2d 20 2b  + 63, 1, + ( - +
28620 20 63 6f 6c 32 20 29 20 2f 20 2b 20 2b 20 63 6f   col2 ) / + + co
28630 6c 32 20 2b 20 2d 20 63 6f 6c 31 2c 20 2b 20 63  l2 + - col1, + c
28640 6f 6c 30 20 2b 20 38 34 20 29 0d 0a 2d 2d 2d 2d  ol0 + 84 )..----
28650 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
28660 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
28670 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48  L * FROM tab2 WH
28680 45 52 45 20 28 20 2d 20 63 6f 6c 32 20 49 53 20  ERE ( - col2 IS 
28690 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  NULL )..----....
286a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
286b0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
286c0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
286d0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
286e0 2d 39 30 32 0d 0a 53 45 4c 45 43 54 20 37 31 20  -902..SELECT 71 
286f0 44 49 56 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  DIV col2 FROM ta
28700 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a  b0..----..0..1..
28710 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
28720 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
28730 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
28740 6f 72 74 20 6c 61 62 65 6c 2d 39 30 32 0d 0a 53  ort label-902..S
28750 45 4c 45 43 54 20 37 31 20 2f 20 63 6f 6c 32 20  ELECT 71 / col2 
28760 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
28770 0a 30 0d 0a 31 0d 0a 37 0d 0a 0d 0a 6f 6e 6c 79  .0..1..7....only
28780 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
28790 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
287a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
287b0 61 62 65 6c 2d 39 30 33 0d 0a 53 45 4c 45 43 54  abel-903..SELECT
287c0 20 44 49 53 54 49 4e 43 54 20 2b 20 53 55 4d 28   DISTINCT + SUM(
287d0 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 29   DISTINCT col1 )
287e0 20 2b 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20   + + + COUNT( * 
287f0 29 20 2a 20 2d 20 35 31 20 41 53 20 63 6f 6c 31  ) * - 51 AS col1
28800 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
28810 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 30 0d 0a 0d  r0..----..-50...
28820 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
28830 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
28840 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
28850 6c 61 62 65 6c 2d 39 30 33 0d 0a 53 45 4c 45 43  label-903..SELEC
28860 54 20 44 49 53 54 49 4e 43 54 20 2b 20 53 55 4d  T DISTINCT + SUM
28870 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31   ( DISTINCT col1
28880 20 29 20 2b 20 2b 20 2b 20 43 4f 55 4e 54 20 28   ) + + + COUNT (
28890 20 2a 20 29 20 2a 20 2d 20 35 31 20 41 53 20 63   * ) * - 51 AS c
288a0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
288b0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 30   cor0..----..-50
288c0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
288d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 36 35 20 41  ort..SELECT 65 A
288e0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
288f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 35 0d   cor0..----..65.
28900 0a 36 35 0d 0a 36 35 0d 0a 0d 0a 6f 6e 6c 79 69  .65..65....onlyi
28910 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
28920 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
28930 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
28940 61 62 65 6c 2d 39 30 35 0d 0a 53 45 4c 45 43 54  abel-905..SELECT
28950 20 43 4f 55 4e 54 28 20 2a 20 29 2c 20 2d 20 43   COUNT( * ), - C
28960 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
28970 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
28980 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 33  or0..----..3..-3
28990 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
289a0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
289b0 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  e..query II rows
289c0 6f 72 74 20 6c 61 62 65 6c 2d 39 30 35 0d 0a 53  ort label-905..S
289d0 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  ELECT COUNT ( * 
289e0 29 2c 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29  ), - COUNT ( * )
289f0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
28a00 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
28a10 0d 0a 33 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79  ..3..-3....query
28a20 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
28a30 45 43 54 20 41 4c 4c 20 2b 20 37 39 20 2b 20 28  ECT ALL + 79 + (
28a40 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c   - col2 ) AS col
28a50 32 2c 20 2b 20 28 20 2d 20 34 31 20 29 20 46 52  2, + ( - 41 ) FR
28a60 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
28a70 0a 2d 2d 2d 2d 0d 0a 32 31 0d 0a 2d 34 31 0d 0a  .----..21..-41..
28a80 33 39 0d 0a 2d 34 31 0d 0a 35 36 0d 0a 2d 34 31  39..-41..56..-41
28a90 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
28aa0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
28ab0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
28ac0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30 37  owsort label-907
28ad0 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 39 39 20  ..SELECT - + 99 
28ae0 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  + + COUNT( * ) *
28af0 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   + - COUNT( * ) 
28b00 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
28b10 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
28b20 0a 2d 31 30 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-108....skipif 
28b30 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
28b40 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
28b50 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30  rowsort label-90
28b60 37 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 39 39  7..SELECT - + 99
28b70 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
28b80 20 2a 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a   * + - COUNT ( *
28b90 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
28ba0 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
28bb0 2d 2d 0d 0a 2d 31 30 38 0d 0a 0d 0a 71 75 65 72  --..-108....quer
28bc0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
28bd0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
28be0 6f 6c 30 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 2d  ol0 + col0 + - -
28bf0 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
28c00 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
28c10 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a 39  .----..10..47..9
28c20 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
28c30 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
28c40 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
28c50 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
28c60 6c 61 62 65 6c 2d 39 30 39 0d 0a 53 45 4c 45 43  label-909..SELEC
28c70 54 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c 32 20 2b  T ALL - + col2 +
28c80 20 2d 20 2d 20 43 41 53 54 28 20 2d 20 32 33 20   - - CAST( - 23 
28c90 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20  AS SIGNED ) * - 
28ca0 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  - col0 FROM tab2
28cb0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
28cc0 2d 31 30 38 31 0d 0a 2d 31 35 31 32 0d 0a 2d 31  -1081..-1512..-1
28cd0 37 38 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  783....skipif my
28ce0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
28cf0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
28d00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30 39 0d  wsort label-909.
28d10 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20  .SELECT ALL - + 
28d20 63 6f 6c 32 20 2b 20 2d 20 2d 20 43 41 53 54 20  col2 + - - CAST 
28d30 28 20 2d 20 32 33 20 41 53 20 49 4e 54 45 47 45  ( - 23 AS INTEGE
28d40 52 20 29 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 46  R ) * - - col0 F
28d50 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
28d60 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 38 31 0d 0a 2d  ..----..-1081..-
28d70 31 35 31 32 0d 0a 2d 31 37 38 33 0d 0a 0d 0a 71  1512..-1783....q
28d80 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
28d90 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
28da0 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28  tab0 WHERE NOT (
28db0 20 63 6f 6c 32 20 29 20 4e 4f 54 20 49 4e 20 28   col2 ) NOT IN (
28dc0 20 2b 20 63 6f 6c 30 20 2f 20 2b 20 63 6f 6c 31   + col0 / + col1
28dd0 2c 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c 31 2c 20  , col2, - col1, 
28de0 2b 20 2d 20 33 30 2c 20 2b 20 63 6f 6c 32 2c 20  + - 30, + col2, 
28df0 2d 20 63 6f 6c 30 2c 20 63 6f 6c 32 20 2b 20 2d  - col0, col2 + -
28e00 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 63 6f 6c 32   col2 + + - col2
28e10 20 29 20 41 4e 44 20 28 20 4e 55 4c 4c 20 29 20   ) AND ( NULL ) 
28e20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
28e30 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
28e40 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
28e50 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49  ntax: ..query II
28e60 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
28e70 31 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  11..SELECT DISTI
28e80 4e 43 54 20 2d 20 39 2c 20 2b 20 43 4f 55 4e 54  NCT - 9, + COUNT
28e90 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ( * ) AS col2 FR
28ea0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
28eb0 39 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  9..3....skipif m
28ec0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
28ed0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
28ee0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31  rowsort label-91
28ef0 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  1..SELECT DISTIN
28f00 43 54 20 2d 20 39 2c 20 2b 20 43 4f 55 4e 54 20  CT - 9, + COUNT 
28f10 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ( * ) AS col2 FR
28f20 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
28f30 39 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  9..3....query I 
28f40 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
28f50 41 4c 4c 20 2d 20 35 36 20 2d 20 2b 20 63 6f 6c  ALL - 56 - + col
28f60 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  0 FROM tab0..---
28f70 2d 0d 0a 2d 31 34 33 0d 0a 2d 31 35 33 0d 0a 2d  -..-143..-153..-
28f80 37 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  71....onlyif mys
28f90 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
28fa0 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69  yntax: DIV for i
28fb0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
28fc0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
28fd0 72 74 20 6c 61 62 65 6c 2d 39 31 33 0d 0a 53 45  rt label-913..SE
28fe0 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20  LECT + COUNT( * 
28ff0 29 20 44 49 56 20 2d 20 4d 41 58 28 20 63 6f 6c  ) DIV - MAX( col
29000 30 20 29 20 2b 20 2b 20 2d 20 34 34 20 46 52 4f  0 ) + + - 44 FRO
29010 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  M tab2..----..-4
29020 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
29030 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
29040 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
29050 6f 72 74 20 6c 61 62 65 6c 2d 39 31 33 0d 0a 53  ort label-913..S
29060 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  ELECT + COUNT ( 
29070 2a 20 29 20 2f 20 2d 20 4d 41 58 20 28 20 63 6f  * ) / - MAX ( co
29080 6c 30 20 29 20 2b 20 2b 20 2d 20 34 34 20 46 52  l0 ) + + - 44 FR
29090 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
290a0 34 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  44....onlyif mys
290b0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
290c0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
290d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
290e0 31 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  14..SELECT DISTI
290f0 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  NCT - COUNT( * )
29100 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
29110 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  b1 WHERE NOT + c
29120 6f 6c 30 20 3e 3d 20 63 6f 6c 30 0d 0a 2d 2d 2d  ol0 >= col0..---
29130 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
29140 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
29150 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
29160 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31 34  owsort label-914
29170 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
29180 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T - COUNT ( * ) 
29190 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
291a0 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f  1 WHERE NOT + co
291b0 6c 30 20 3e 3d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  l0 >= col0..----
291c0 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ..0....query II 
291d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
291e0 41 4c 4c 20 2b 20 35 30 2c 20 2b 20 63 6f 6c 30  ALL + 50, + col0
291f0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
29200 0d 0a 35 30 0d 0a 35 31 0d 0a 35 30 0d 0a 38 35  ..50..51..50..85
29210 0d 0a 35 30 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79  ..50..91....only
29220 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
29230 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
29240 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
29250 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31 36  owsort label-916
29260 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 44 49  ..SELECT col2 DI
29270 56 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  V + + col2 AS co
29280 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
29290 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73  --..1..1..1....s
292a0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
292b0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
292c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
292d0 62 65 6c 2d 39 31 36 0d 0a 53 45 4c 45 43 54 20  bel-916..SELECT 
292e0 63 6f 6c 32 20 2f 20 2b 20 2b 20 63 6f 6c 32 20  col2 / + + col2 
292f0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
29300 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31  0..----..1..1..1
29310 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
29320 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
29330 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
29340 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
29350 20 6c 61 62 65 6c 2d 39 31 37 0d 0a 53 45 4c 45   label-917..SELE
29360 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
29370 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
29380 54 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 43 41 53  T + col0 * - CAS
29390 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
293a0 44 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  D ) IS NULL..---
293b0 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
293c0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
293d0 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  le..query III ro
293e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31 37 0d  wsort label-917.
293f0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
29400 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
29410 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 2a 20  RE NOT + col0 * 
29420 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
29430 20 49 4e 54 45 47 45 52 20 29 20 49 53 20 4e 55   INTEGER ) IS NU
29440 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
29450 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
29460 45 43 54 20 2b 20 28 20 2b 20 31 35 20 29 20 46  ECT + ( + 15 ) F
29470 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
29480 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 31 35 0d 0a  ..----..15..15..
29490 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  15....query I ro
294a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20  wsort..SELECT ( 
294b0 2b 20 2b 20 63 6f 6c 32 20 29 20 2a 20 2b 20 2b  + + col2 ) * + +
294c0 20 32 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53   25 FROM tab0 AS
294d0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 37   cor0..----..117
294e0 35 0d 0a 32 34 37 35 0d 0a 32 35 30 0d 0a 0d 0a  5..2475..250....
294f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
29500 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20  .SELECT ALL + + 
29510 63 6f 6c 30 20 2b 20 2d 20 38 37 20 46 52 4f 4d  col0 + - 87 FROM
29520 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
29530 2d 2d 2d 0d 0a 2d 37 32 0d 0a 30 0d 0a 31 30 0d  ---..-72..0..10.
29540 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
29550 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
29560 20 2d 20 35 34 20 46 52 4f 4d 20 74 61 62 32 20   - 54 FROM tab2 
29570 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f  AS cor0 WHERE co
29580 6c 31 20 2a 20 2d 20 2b 20 63 6f 6c 30 20 2a 20  l1 * - + col0 * 
29590 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col2 IS NOT NULL
295a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 34 0d 0a 2d 35 34  ..----..-54..-54
295b0 0d 0a 2d 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-54....query I
295c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
295d0 20 2b 20 39 39 20 41 53 20 63 6f 6c 31 20 46 52   + 99 AS col1 FR
295e0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
295f0 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20  CROSS JOIN tab1 
29600 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39  AS cor1..----..9
29610 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
29620 74 6f 20 34 62 37 37 34 36 37 64 64 35 66 33 34  to 4b77467dd5f34
29630 36 31 30 39 64 32 39 66 36 33 36 34 61 37 62 62  6109d29f6364a7bb
29640 38 64 62 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  8db....skipif po
29650 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
29660 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
29670 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
29680 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
29690 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
296a0 0a 53 45 4c 45 43 54 20 39 31 20 2f 20 63 6f 6c  .SELECT 91 / col
296b0 31 20 2a 20 2d 20 28 20 63 6f 6c 32 20 29 20 2a  1 * - ( col2 ) *
296c0 20 2d 20 63 6f 6c 31 20 63 6f 6c 32 20 46 52 4f   - col1 col2 FRO
296d0 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52  M tab1 cor0 WHER
296e0 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3d 20 4e 55  E NOT NULL <= NU
296f0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
29700 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
29710 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2b  ECT ALL + col2 +
29720 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74   + - col0 FROM t
29730 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
29740 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 3d 20 63 6f  E NOT NULL >= co
29750 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  l1..----....quer
29760 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
29770 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
29780 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
29790 4e 4f 54 20 2d 20 34 30 20 2b 20 2b 20 37 30 20  NOT - 40 + + 70 
297a0 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
297b0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
297c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
297d0 6f 6c 31 20 2a 20 28 20 2b 20 2d 20 63 6f 6c 31  ol1 * ( + - col1
297e0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
297f0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
29800 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL IS NULL..---
29810 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
29820 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
29830 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
29840 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
29850 45 20 4e 55 4c 4c 20 3c 3e 20 2b 20 63 6f 6c 31  E NULL <> + col1
29860 20 2a 20 39 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   * 92..----....o
29870 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
29880 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
29890 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
298a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
298b0 39 32 38 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  928..SELECT - - 
298c0 43 41 53 54 28 20 2b 20 28 20 63 6f 6c 30 20 29  CAST( + ( col0 )
298d0 20 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f 6c   AS SIGNED ) col
298e0 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
298f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 38  or0..----..51..8
29900 35 0d 0a 39 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  5..91....skipif 
29910 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
29920 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
29930 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
29940 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
29950 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
29960 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
29970 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
29980 20 6c 61 62 65 6c 2d 39 32 38 0d 0a 53 45 4c 45   label-928..SELE
29990 43 54 20 2d 20 2d 20 43 41 53 54 20 28 20 2b 20  CT - - CAST ( + 
299a0 28 20 63 6f 6c 30 20 29 20 41 53 20 49 4e 54 45  ( col0 ) AS INTE
299b0 47 45 52 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20  GER ) col0 FROM 
299c0 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
299d0 2d 2d 0d 0a 35 31 0d 0a 38 35 0d 0a 39 31 0d 0a  --..51..85..91..
299e0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
299f0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
29a00 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
29a10 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
29a20 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
29a30 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
29a40 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
29a50 6f 6c 32 20 63 6f 6c 30 2c 20 63 6f 6c 30 20 2d  ol2 col0, col0 -
29a60 20 34 35 20 2a 20 30 20 46 52 4f 4d 20 74 61 62   45 * 0 FROM tab
29a70 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 38 37  0..----..-10..87
29a80 0d 0a 2d 34 37 0d 0a 31 35 0d 0a 2d 39 39 0d 0a  ..-47..15..-99..
29a90 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  97....query II r
29aa0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
29ab0 4c 4c 20 2b 20 32 33 2c 20 28 20 2b 20 63 6f 6c  LL + 23, ( + col
29ac0 31 20 29 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  1 ) + col2 AS co
29ad0 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
29ae0 2d 2d 0d 0a 32 33 0d 0a 31 31 30 0d 0a 32 33 0d  --..23..110..23.
29af0 0a 31 31 35 0d 0a 32 33 0d 0a 36 34 0d 0a 0d 0a  .115..23..64....
29b00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
29b10 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
29b20 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
29b30 74 61 62 31 20 57 48 45 52 45 20 2d 20 2b 20 63  tab1 WHERE - + c
29b40 6f 6c 30 20 2a 20 39 32 20 2b 20 2d 20 63 6f 6c  ol0 * 92 + - col
29b50 31 20 2a 20 2d 20 2b 20 63 6f 6c 30 20 2a 20 2d  1 * - + col0 * -
29b60 20 28 20 2b 20 31 34 20 29 20 49 53 20 4e 4f 54   ( + 14 ) IS NOT
29b70 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d   NULL..----..14.
29b80 0a 34 37 0d 0a 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  .47..5....onlyif
29b90 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
29ba0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
29bb0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
29bc0 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33 32 0d 0a  sort label-932..
29bd0 53 45 4c 45 43 54 20 2d 20 36 38 20 44 49 56 20  SELECT - 68 DIV 
29be0 2b 20 37 33 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 73 AS col2 FRO
29bf0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab2..----..0.
29c00 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .0..0....skipif 
29c10 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
29c20 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
29c30 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33  rowsort label-93
29c40 32 0d 0a 53 45 4c 45 43 54 20 2d 20 36 38 20 2f  2..SELECT - 68 /
29c50 20 2b 20 37 33 20 41 53 20 63 6f 6c 32 20 46 52   + 73 AS col2 FR
29c60 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab2..----..0
29c70 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..0..0....onlyif
29c80 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
29c90 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
29ca0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
29cb0 65 6c 2d 39 33 33 0d 0a 53 45 4c 45 43 54 20 2d  el-933..SELECT -
29cc0 20 28 20 2d 20 2b 20 4d 41 58 28 20 44 49 53 54   ( - + MAX( DIST
29cd0 49 4e 43 54 20 35 39 20 29 20 29 20 46 52 4f 4d  INCT 59 ) ) FROM
29ce0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d   tab2..----..59.
29cf0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
29d00 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
29d10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29d20 74 20 6c 61 62 65 6c 2d 39 33 33 0d 0a 53 45 4c  t label-933..SEL
29d30 45 43 54 20 2d 20 28 20 2d 20 2b 20 4d 41 58 20  ECT - ( - + MAX 
29d40 28 20 44 49 53 54 49 4e 43 54 20 35 39 20 29 20  ( DISTINCT 59 ) 
29d50 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
29d60 2d 0d 0a 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49  -..59....query I
29d70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
29d80 20 36 36 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 41   66 * + + col1 A
29d90 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
29da0 0d 0a 2d 2d 2d 2d 0d 0a 33 33 36 36 0d 0a 34 34  ..----..3366..44
29db0 32 32 0d 0a 35 30 38 32 0d 0a 0d 0a 6f 6e 6c 79  22..5082....only
29dc0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
29dd0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
29de0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
29df0 6c 61 62 65 6c 2d 39 33 35 0d 0a 53 45 4c 45 43  label-935..SELEC
29e00 54 20 41 4c 4c 20 34 36 20 41 53 20 63 6f 6c 32  T ALL 46 AS col2
29e10 2c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  , + COUNT( * ) A
29e20 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
29e30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 33 0d 0a 0d  ..----..46..3...
29e40 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
29e50 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
29e60 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
29e70 20 6c 61 62 65 6c 2d 39 33 35 0d 0a 53 45 4c 45   label-935..SELE
29e80 43 54 20 41 4c 4c 20 34 36 20 41 53 20 63 6f 6c  CT ALL 46 AS col
29e90 32 2c 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  2, + COUNT ( * )
29ea0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
29eb0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 33 0d  b0..----..46..3.
29ec0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
29ed0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
29ee0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
29ef0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33 36 0d  wsort label-936.
29f00 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
29f10 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   ( - COUNT( * ) 
29f20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  ) col2 FROM tab1
29f30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
29f40 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
29f50 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
29f60 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
29f70 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
29f80 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
29f90 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
29fa0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
29fb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
29fc0 62 65 6c 2d 39 33 36 0d 0a 53 45 4c 45 43 54 20  bel-936..SELECT 
29fd0 44 49 53 54 49 4e 43 54 20 28 20 2d 20 43 4f 55  DISTINCT ( - COU
29fe0 4e 54 20 28 20 2a 20 29 20 29 20 63 6f 6c 32 20  NT ( * ) ) col2 
29ff0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2a000 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71  0..----..-3....q
2a010 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2a020 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2a030 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 2b 20 28  - + col2 * + + (
2a040 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2b 20 39 32   - col1 ) * + 92
2a050 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
2a060 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 33 32 30 0d  r0..----..19320.
2a070 0a 33 35 30 32 34 34 0d 0a 39 31 30 38 0d 0a 0d  .350244..9108...
2a080 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2a090 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2a0a0 54 20 2b 20 28 20 2b 20 39 37 20 29 20 46 52 4f  T + ( + 97 ) FRO
2a0b0 4d 20 74 61 62 31 20 57 48 45 52 45 20 2d 20 33  M tab1 WHERE - 3
2a0c0 38 20 2b 20 2b 20 63 6f 6c 31 20 3c 3e 20 4e 55  8 + + col1 <> NU
2a0d0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
2a0e0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
2a0f0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
2a100 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
2a110 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33 39  owsort label-939
2a120 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2a130 54 20 43 41 53 54 28 20 2b 20 63 6f 6c 31 20 41  T CAST( + col1 A
2a140 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
2a150 74 61 62 30 20 57 48 45 52 45 20 33 33 20 49 53  tab0 WHERE 33 IS
2a160 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73   NULL..----....s
2a170 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2a180 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2a190 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2a1a0 62 65 6c 2d 39 33 39 0d 0a 53 45 4c 45 43 54 20  bel-939..SELECT 
2a1b0 44 49 53 54 49 4e 43 54 20 43 41 53 54 20 28 20  DISTINCT CAST ( 
2a1c0 2b 20 63 6f 6c 31 20 41 53 20 49 4e 54 45 47 45  + col1 AS INTEGE
2a1d0 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20 57 48  R ) FROM tab0 WH
2a1e0 45 52 45 20 33 33 20 49 53 20 4e 55 4c 4c 0d 0a  ERE 33 IS NULL..
2a1f0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
2a200 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2a210 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 46 52  DISTINCT col0 FR
2a220 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 63 6f  OM tab2 WHERE co
2a230 6c 32 20 2a 20 33 32 20 49 53 20 4e 4f 54 20 4e  l2 * 32 IS NOT N
2a240 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 36  ULL..----..46..6
2a250 34 0d 0a 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49  4..75....query I
2a260 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2a270 20 34 37 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20   47 * col1 FROM 
2a280 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 38 30 37  tab0..----..3807
2a290 0d 0a 34 37 0d 0a 39 38 37 0d 0a 0d 0a 71 75 65  ..47..987....que
2a2a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2a2b0 4c 45 43 54 20 2d 20 32 39 20 2a 20 2b 20 63 6f  LECT - 29 * + co
2a2c0 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
2a2d0 2d 2d 0d 0a 2d 32 33 34 39 0d 0a 2d 32 39 0d 0a  --..-2349..-29..
2a2e0 2d 36 30 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -609....onlyif m
2a2f0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
2a300 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
2a310 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77   ..query III row
2a320 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34 33 0d 0a  sort label-943..
2a330 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
2a340 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 37  b2 WHERE NOT - 7
2a350 34 20 3c 3e 20 63 6f 6c 31 20 2a 20 2d 20 43 41  4 <> col1 * - CA
2a360 53 54 28 20 2d 20 63 6f 6c 31 20 41 53 20 53 49  ST( - col1 AS SI
2a370 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  GNED )..----....
2a380 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2a390 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2a3a0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
2a3b0 20 6c 61 62 65 6c 2d 39 34 33 0d 0a 53 45 4c 45   label-943..SELE
2a3c0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
2a3d0 48 45 52 45 20 4e 4f 54 20 2d 20 37 34 20 3c 3e  HERE NOT - 74 <>
2a3e0 20 63 6f 6c 31 20 2a 20 2d 20 43 41 53 54 20 28   col1 * - CAST (
2a3f0 20 2d 20 63 6f 6c 31 20 41 53 20 49 4e 54 45 47   - col1 AS INTEG
2a400 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  ER )..----....qu
2a410 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2a420 45 4c 45 43 54 20 2d 20 34 30 20 41 53 20 63 6f  ELECT - 40 AS co
2a430 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l0 FROM tab1 WHE
2a440 52 45 20 4e 4f 54 20 2d 20 36 30 20 3c 3d 20 4e  RE NOT - 60 <= N
2a450 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
2a460 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2a470 4c 45 43 54 20 63 6f 6c 30 20 2b 20 2d 20 34 20  LECT col0 + - 4 
2a480 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
2a490 31 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 38 31 0d  1..----..47..81.
2a4a0 0a 38 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .87....query III
2a4b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2a4c0 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45   * FROM tab0 WHE
2a4d0 52 45 20 4e 4f 54 20 2d 20 28 20 2d 20 63 6f 6c  RE NOT - ( - col
2a4e0 32 20 29 20 2d 20 2b 20 28 20 2d 20 63 6f 6c 31  2 ) - + ( - col1
2a4f0 20 2b 20 63 6f 6c 32 20 29 20 2a 20 63 6f 6c 31   + col2 ) * col1
2a500 20 3c 3e 20 28 20 2b 20 38 38 20 29 0d 0a 2d 2d   <> ( + 88 )..--
2a510 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
2a520 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
2a530 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l0 FROM tab0 WHE
2a540 52 45 20 63 6f 6c 30 20 3c 3d 20 4e 55 4c 4c 0d  RE col0 <= NULL.
2a550 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
2a560 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2a570 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2a580 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2a590 6c 2d 39 34 38 0d 0a 53 45 4c 45 43 54 20 41 4c  l-948..SELECT AL
2a5a0 4c 20 28 20 2b 20 43 4f 55 4e 54 28 20 2d 20 28  L ( + COUNT( - (
2a5b0 20 2d 20 63 6f 6c 30 20 29 20 29 20 29 20 63 6f   - col0 ) ) ) co
2a5c0 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
2a5d0 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..3....skipif 
2a5e0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2a5f0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
2a600 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2a610 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2a620 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2a630 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2a640 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2a650 20 6c 61 62 65 6c 2d 39 34 38 0d 0a 53 45 4c 45   label-948..SELE
2a660 43 54 20 41 4c 4c 20 28 20 2b 20 43 4f 55 4e 54  CT ALL ( + COUNT
2a670 20 28 20 2d 20 28 20 2d 20 63 6f 6c 30 20 29 20   ( - ( - col0 ) 
2a680 29 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ) ) col0 FROM ta
2a690 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71  b0..----..3....q
2a6a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2a6b0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
2a6c0 31 20 2a 20 2b 20 28 20 2b 20 32 34 20 29 20 46  1 * + ( + 24 ) F
2a6d0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
2a6e0 31 31 32 38 0d 0a 31 32 30 0d 0a 33 33 36 0d 0a  1128..120..336..
2a6f0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
2a700 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
2a710 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 55  OM tab0 WHERE NU
2a720 4c 4c 20 42 45 54 57 45 45 4e 20 28 20 35 37 20  LL BETWEEN ( 57 
2a730 29 20 41 4e 44 20 2d 20 63 6f 6c 32 0d 0a 2d 2d  ) AND - col2..--
2a740 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
2a750 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
2a760 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
2a770 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2a780 20 6c 61 62 65 6c 2d 39 35 31 0d 0a 53 45 4c 45   label-951..SELE
2a790 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 2a 20  CT ALL - col2 * 
2a7a0 43 41 53 54 28 20 2b 20 63 6f 6c 31 20 41 53 20  CAST( + col1 AS 
2a7b0 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
2a7c0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 34 34 0d  b1..----..-1344.
2a7d0 0a 2d 32 39 35 0d 0a 2d 33 31 39 36 0d 0a 0d 0a  .-295..-3196....
2a7e0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2a7f0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2a800 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2a810 61 62 65 6c 2d 39 35 31 0d 0a 53 45 4c 45 43 54  abel-951..SELECT
2a820 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 2a 20 43 41   ALL - col2 * CA
2a830 53 54 20 28 20 2b 20 63 6f 6c 31 20 41 53 20 49  ST ( + col1 AS I
2a840 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61  NTEGER ) FROM ta
2a850 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 34 34 0d  b1..----..-1344.
2a860 0a 2d 32 39 35 0d 0a 2d 33 31 39 36 0d 0a 0d 0a  .-295..-3196....
2a870 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2a880 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33 33 20 2a  .SELECT ALL 33 *
2a890 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52   col2 AS col1 FR
2a8a0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab1..----..1
2a8b0 39 34 37 0d 0a 32 32 34 34 0d 0a 33 31 36 38 0d  947..2244..3168.
2a8c0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
2a8d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
2a8e0 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
2a8f0 4f 54 20 35 33 20 2a 20 2d 20 32 34 20 49 53 20  OT 53 * - 24 IS 
2a900 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
2a910 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a920 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 35 38  t..SELECT - ( 58
2a930 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
2a940 2d 2d 0d 0a 2d 35 38 0d 0a 2d 35 38 0d 0a 2d 35  --..-58..-58..-5
2a950 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
2a960 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2a970 54 49 4e 43 54 20 32 33 20 2a 20 2d 20 63 6f 6c  TINCT 23 * - col
2a980 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
2a990 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 38 31  ab0..----..-1081
2a9a0 0d 0a 2d 32 32 37 37 0d 0a 2d 32 33 30 0d 0a 0d  ..-2277..-230...
2a9b0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
2a9c0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
2a9d0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
2a9e0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
2a9f0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
2aa00 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2aa10 54 20 41 4c 4c 20 33 38 20 63 6f 6c 32 20 46 52  T ALL 38 col2 FR
2aa20 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
2aa30 54 20 63 6f 6c 30 20 2f 20 2b 20 63 6f 6c 31 20  T col0 / + col1 
2aa40 3d 20 28 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d  = ( col0 )..----
2aa50 0d 0a 33 38 0d 0a 33 38 0d 0a 33 38 0d 0a 0d 0a  ..38..38..38....
2aa60 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
2aa70 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
2aa80 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
2aa90 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
2aaa0 65 6c 2d 39 35 37 0d 0a 53 45 4c 45 43 54 20 41  el-957..SELECT A
2aab0 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  LL * FROM tab1 W
2aac0 48 45 52 45 20 4e 4f 54 20 28 20 63 6f 6c 31 20  HERE NOT ( col1 
2aad0 2f 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  / CAST( NULL AS 
2aae0 53 49 47 4e 45 44 20 29 20 29 20 3e 20 4e 55 4c  SIGNED ) ) > NUL
2aaf0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  L..----....skipi
2ab00 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2ab10 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2ab20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
2ab30 6c 2d 39 35 37 0d 0a 53 45 4c 45 43 54 20 41 4c  l-957..SELECT AL
2ab40 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  L * FROM tab1 WH
2ab50 45 52 45 20 4e 4f 54 20 28 20 63 6f 6c 31 20 2f  ERE NOT ( col1 /
2ab60 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
2ab70 49 4e 54 45 47 45 52 20 29 20 29 20 3e 20 4e 55  INTEGER ) ) > NU
2ab80 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
2ab90 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2aba0 45 43 54 20 2b 20 31 32 20 2b 20 2b 20 37 34 20  ECT + 12 + + 74 
2abb0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2abc0 30 0d 0a 2d 2d 2d 2d 0d 0a 38 36 0d 0a 38 36 0d  0..----..86..86.
2abd0 0a 38 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .86....query I r
2abe0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
2abf0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol0 FROM tab2 WH
2ac00 45 52 45 20 4e 4f 54 20 28 20 63 6f 6c 30 20 29  ERE NOT ( col0 )
2ac10 20 2d 20 2b 20 28 20 2b 20 63 6f 6c 32 20 29 20   - + ( + col2 ) 
2ac20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 34  IS NULL..----..4
2ac30 36 0d 0a 36 34 0d 0a 37 35 0d 0a 0d 0a 6f 6e 6c  6..64..75....onl
2ac40 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2ac50 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
2ac60 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ac70 6c 61 62 65 6c 2d 39 36 30 0d 0a 53 45 4c 45 43  label-960..SELEC
2ac80 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55  T DISTINCT + COU
2ac90 4e 54 28 20 2a 20 29 20 2b 20 2b 20 38 34 20 46  NT( * ) + + 84 F
2aca0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
2acb0 38 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  87....skipif mys
2acc0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2acd0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2ace0 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 30 0d 0a  sort label-960..
2acf0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2ad00 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20  + COUNT ( * ) + 
2ad10 2b 20 38 34 20 46 52 4f 4d 20 74 61 62 31 0d 0a  + 84 FROM tab1..
2ad20 2d 2d 2d 2d 0d 0a 38 37 0d 0a 0d 0a 71 75 65 72  ----..87....quer
2ad30 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
2ad40 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
2ad50 20 74 61 62 32 20 57 48 45 52 45 20 28 20 4e 55   tab2 WHERE ( NU
2ad60 4c 4c 20 29 20 49 4e 20 28 20 2d 20 63 6f 6c 30  LL ) IN ( - col0
2ad70 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79   )..----....only
2ad80 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
2ad90 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
2ada0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
2adb0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 32  owsort label-962
2adc0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2add0 54 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c  T + col2 * + col
2ade0 30 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  0 + - CAST( NULL
2adf0 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
2ae00 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab1..----..NU
2ae10 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
2ae20 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2ae30 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2ae40 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 32 0d 0a  sort label-962..
2ae50 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2ae60 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 30 20  + col2 * + col0 
2ae70 2b 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + - CAST ( NULL 
2ae80 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
2ae90 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab1..----..NU
2aea0 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
2aeb0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
2aec0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
2aed0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2aee0 20 6c 61 62 65 6c 2d 39 36 33 0d 0a 53 45 4c 45   label-963..SELE
2aef0 43 54 20 63 6f 6c 31 20 2a 20 43 41 53 54 28 20  CT col1 * CAST( 
2af00 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
2af10 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c   + + col2 AS col
2af20 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
2af30 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
2af40 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
2af50 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2af60 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2af70 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 33 0d  wsort label-963.
2af80 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 43  .SELECT col1 * C
2af90 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
2afa0 54 45 47 45 52 20 29 20 2b 20 2b 20 63 6f 6c 32  TEGER ) + + col2
2afb0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2afc0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b1..----..NULL..
2afd0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  NULL..NULL....qu
2afe0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2aff0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a  ELECT ALL col2 *
2b000 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 31 20 41   col0 + - col1 A
2b010 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
2b020 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 37 0d 0a 32 34  ..----..1007..24
2b030 38 33 0d 0a 34 32 38 33 0d 0a 0d 0a 71 75 65 72  83..4283....quer
2b040 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2b050 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
2b060 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol0 FROM tab1 WH
2b070 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 49 53 20  ERE ( NULL ) IS 
2b080 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d  NULL..----..-51.
2b090 0a 2d 38 35 0d 0a 2d 39 31 0d 0a 0d 0a 73 6b 69  .-85..-91....ski
2b0a0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
2b0b0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
2b0c0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
2b0d0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
2b0e0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
2b0f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
2b100 6c 32 20 2b 20 2b 20 36 20 63 6f 6c 30 20 46 52  l2 + + 6 col0 FR
2b110 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab2..----..2
2b120 39 0d 0a 34 36 0d 0a 36 34 0d 0a 0d 0a 71 75 65  9..46..64....que
2b130 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
2b140 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
2b150 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
2b160 48 45 52 45 20 63 6f 6c 30 20 3e 20 4e 55 4c 4c  HERE col0 > NULL
2b170 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
2b180 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2b190 54 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 30 20  T col1 + - col0 
2b1a0 2a 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  * col2 FROM tab1
2b1b0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38   cor0..----..-48
2b1c0 38 32 0d 0a 2d 35 30 31 30 0d 0a 2d 36 31 34 31  82..-5010..-6141
2b1d0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2b1e0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2b1f0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2b200 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 39  owsort label-969
2b210 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20  ..SELECT COUNT( 
2b220 2a 20 29 20 2b 20 33 36 20 46 52 4f 4d 20 74 61  * ) + 36 FROM ta
2b230 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2b240 0d 0a 33 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..39....skipif m
2b250 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2b260 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2b270 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 39  owsort label-969
2b280 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28  ..SELECT COUNT (
2b290 20 2a 20 29 20 2b 20 33 36 20 46 52 4f 4d 20 74   * ) + 36 FROM t
2b2a0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
2b2b0 2d 0d 0a 33 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..39....onlyif 
2b2c0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2b2d0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2b2e0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2b2f0 6c 2d 39 37 30 0d 0a 53 45 4c 45 43 54 20 2d 20  l-970..SELECT - 
2b300 4d 49 4e 28 20 38 35 20 29 20 41 53 20 63 6f 6c  MIN( 85 ) AS col
2b310 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
2b320 2d 0d 0a 2d 38 35 0d 0a 0d 0a 73 6b 69 70 69 66  -..-85....skipif
2b330 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2b340 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2b350 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2b360 37 30 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e  70..SELECT - MIN
2b370 20 28 20 38 35 20 29 20 41 53 20 63 6f 6c 31 20   ( 85 ) AS col1 
2b380 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2b390 0a 2d 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-85....query I 
2b3a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2b3b0 31 39 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  19 AS col0 FROM 
2b3c0 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f  tab1 AS cor0 CRO
2b3d0 53 53 20 4a 4f 49 4e 20 74 61 62 30 0d 0a 2d 2d  SS JOIN tab0..--
2b3e0 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
2b3f0 68 69 6e 67 20 74 6f 20 33 64 61 63 33 30 64 63  hing to 3dac30dc
2b400 38 32 63 39 65 35 61 63 62 62 64 33 61 35 63 35  82c9e5acbbd3a5c5
2b410 64 31 61 65 65 65 31 31 0d 0a 0d 0a 71 75 65 72  d1aeee11....quer
2b420 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2b430 45 43 54 20 2b 20 36 32 20 46 52 4f 4d 20 74 61  ECT + 62 FROM ta
2b440 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b1 AS cor0 CROSS
2b450 20 4a 4f 49 4e 20 74 61 62 30 0d 0a 2d 2d 2d 2d   JOIN tab0..----
2b460 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
2b470 6e 67 20 74 6f 20 35 31 64 64 32 37 37 31 64 35  ng to 51dd2771d5
2b480 31 36 63 65 62 39 33 35 34 38 33 65 64 65 64 37  16ceb935483eded7
2b490 38 61 35 66 61 30 0d 0a 0d 0a 71 75 65 72 79 20  8a5fa0....query 
2b4a0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
2b4b0 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
2b4c0 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42  WHERE NOT NULL B
2b4d0 45 54 57 45 45 4e 20 63 6f 6c 31 20 41 4e 44 20  ETWEEN col1 AND 
2b4e0 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a  ( NULL )..----..
2b4f0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2b500 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2b510 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2b520 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 34 0d 0a  sort label-974..
2b530 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2b540 2b 20 4d 41 58 28 20 41 4c 4c 20 2d 20 63 6f 6c  + MAX( ALL - col
2b550 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  0 ) AS col1 FROM
2b560 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
2b570 2d 2d 2d 0d 0a 2d 34 36 0d 0a 0d 0a 73 6b 69 70  ---..-46....skip
2b580 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2b590 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2b5a0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2b5b0 2d 39 37 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -974..SELECT DIS
2b5c0 54 49 4e 43 54 20 2b 20 4d 41 58 20 28 20 41 4c  TINCT + MAX ( AL
2b5d0 4c 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63 6f  L - col0 ) AS co
2b5e0 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
2b5f0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d  cor0..----..-46.
2b600 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2b610 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37 33 20  rt..SELECT - 73 
2b620 2a 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  * col1 FROM tab0
2b630 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2b640 2d 31 35 33 33 0d 0a 2d 35 39 31 33 0d 0a 2d 37  -1533..-5913..-7
2b650 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
2b660 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
2b670 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
2b680 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  or0 WHERE NOT co
2b690 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  l0 IS NULL..----
2b6a0 0d 0a 32 33 0d 0a 34 30 0d 0a 35 38 0d 0a 0d 0a  ..23..40..58....
2b6b0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2b6c0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2b6d0 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
2b6e0 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
2b6f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2b700 65 6c 2d 39 37 37 0d 0a 53 45 4c 45 43 54 20 2d  el-977..SELECT -
2b710 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56 20   COUNT( * ) DIV 
2b720 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  - COUNT( * ) FRO
2b730 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
2b740 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69  ----..1....skipi
2b750 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2b760 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2b770 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2b780 39 37 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f  977..SELECT - CO
2b790 55 4e 54 20 28 20 2a 20 29 20 2f 20 2d 20 43 4f  UNT ( * ) / - CO
2b7a0 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
2b7b0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
2b7c0 2d 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..1....onlyif m
2b7d0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
2b7e0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
2b7f0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2b800 72 74 20 6c 61 62 65 6c 2d 39 37 38 0d 0a 53 45  rt label-978..SE
2b810 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2a 20  LECT ALL col0 * 
2b820 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  - col0 FROM tab1
2b830 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28   AS cor0 WHERE (
2b840 20 2b 20 63 6f 6c 31 20 2b 20 33 31 20 29 20 4e   + col1 + 31 ) N
2b850 4f 54 20 49 4e 20 28 20 43 41 53 54 28 20 39 32  OT IN ( CAST( 92
2b860 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 63   AS SIGNED ) * c
2b870 6f 6c 31 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d  ol1 + col1 )..--
2b880 2d 2d 0d 0a 2d 32 36 30 31 0d 0a 2d 37 32 32 35  --..-2601..-7225
2b890 0d 0a 2d 38 32 38 31 0d 0a 0d 0a 73 6b 69 70 69  ..-8281....skipi
2b8a0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2b8b0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2b8c0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2b8d0 39 37 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  978..SELECT ALL 
2b8e0 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 46 52  col0 * - col0 FR
2b8f0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
2b900 57 48 45 52 45 20 28 20 2b 20 63 6f 6c 31 20 2b  WHERE ( + col1 +
2b910 20 33 31 20 29 20 4e 4f 54 20 49 4e 20 28 20 43   31 ) NOT IN ( C
2b920 41 53 54 20 28 20 39 32 20 41 53 20 49 4e 54 45  AST ( 92 AS INTE
2b930 47 45 52 20 29 20 2a 20 63 6f 6c 31 20 2b 20 63  GER ) * col1 + c
2b940 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36  ol1 )..----..-26
2b950 30 31 0d 0a 2d 37 32 32 35 0d 0a 2d 38 32 38 31  01..-7225..-8281
2b960 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2b970 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2b980 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2b990 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 39  owsort label-979
2b9a0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2b9b0 54 20 2d 20 28 20 39 30 20 29 20 2a 20 43 4f 55  T - ( 90 ) * COU
2b9c0 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  NT( * ) AS col2 
2b9d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2b9e0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 30 0d 0a 0d  0..----..-270...
2b9f0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2ba00 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2ba10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ba20 6c 61 62 65 6c 2d 39 37 39 0d 0a 53 45 4c 45 43  label-979..SELEC
2ba30 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 39  T DISTINCT - ( 9
2ba40 30 20 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20  0 ) * COUNT ( * 
2ba50 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
2ba60 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2ba70 2d 0d 0a 2d 32 37 30 0d 0a 0d 0a 71 75 65 72 79  -..-270....query
2ba80 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2ba90 43 54 20 36 35 20 2f 20 36 39 20 41 53 20 63 6f  CT 65 / 69 AS co
2baa0 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
2bab0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
2bac0 20 36 37 20 2d 20 35 31 20 29 20 3c 3d 20 4e 55   67 - 51 ) <= NU
2bad0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  LL..----....skip
2bae0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2baf0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2bb00 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2bb10 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2bb20 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
2bb30 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34 31 20  sort..SELECT 41 
2bb40 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
2bb50 2d 2d 2d 2d 0d 0a 34 31 0d 0a 34 31 0d 0a 34 31  ----..41..41..41
2bb60 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2bb70 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2bb80 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2bb90 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 32  owsort label-982
2bba0 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
2bbb0 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
2bbc0 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
2bbd0 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a  T NULL IS NULL..
2bbe0 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  ----..0....skipi
2bbf0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2bc00 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2bc10 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2bc20 39 38 32 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f  982..SELECT - CO
2bc30 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
2bc40 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  0 FROM tab1 WHER
2bc50 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55  E NOT NULL IS NU
2bc60 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f  LL..----..0....o
2bc70 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2bc80 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2bc90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2bca0 74 20 6c 61 62 65 6c 2d 39 38 33 0d 0a 53 45 4c  t label-983..SEL
2bcb0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 28  ECT DISTINCT + (
2bcc0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20   - COUNT( * ) ) 
2bcd0 2a 20 2b 20 39 38 20 41 53 20 63 6f 6c 31 20 46  * + 98 AS col1 F
2bce0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
2bcf0 2d 32 39 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -294....skipif m
2bd00 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2bd10 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2bd20 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 33  owsort label-983
2bd30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2bd40 54 20 2b 20 28 20 2d 20 43 4f 55 4e 54 20 28 20  T + ( - COUNT ( 
2bd50 2a 20 29 20 29 20 2a 20 2b 20 39 38 20 41 53 20  * ) ) * + 98 AS 
2bd60 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
2bd70 2d 2d 2d 2d 0d 0a 2d 32 39 34 0d 0a 0d 0a 6f 6e  ----..-294....on
2bd80 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
2bd90 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44  regate syntax: D
2bda0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
2bdb0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
2bdc0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2bdd0 2d 39 38 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -984..SELECT DIS
2bde0 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 41 4c 4c  TINCT COUNT( ALL
2bdf0 20 2b 20 32 20 29 20 44 49 56 20 2b 20 43 4f 55   + 2 ) DIV + COU
2be00 4e 54 28 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 29  NT( ALL - col0 )
2be10 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2be20 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73  b1..----..1....s
2be30 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2be40 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2be50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2be60 62 65 6c 2d 39 38 34 0d 0a 53 45 4c 45 43 54 20  bel-984..SELECT 
2be70 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28  DISTINCT COUNT (
2be80 20 41 4c 4c 20 2b 20 32 20 29 20 2f 20 2b 20 43   ALL + 2 ) / + C
2be90 4f 55 4e 54 20 28 20 41 4c 4c 20 2d 20 63 6f 6c  OUNT ( ALL - col
2bea0 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  0 ) AS col1 FROM
2beb0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   tab1..----..1..
2bec0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2bed0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 33 32 20 2a  t..SELECT + 32 *
2bee0 20 2b 20 63 6f 6c 32 20 2d 20 2b 20 63 6f 6c 30   + col2 - + col0
2bef0 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
2bf00 20 4e 4f 54 20 28 20 63 6f 6c 32 20 2d 20 2d 20   NOT ( col2 - - 
2bf10 28 20 63 6f 6c 30 20 29 20 29 20 4e 4f 54 20 49  ( col0 ) ) NOT I
2bf20 4e 20 28 20 31 35 20 29 0d 0a 2d 2d 2d 2d 0d 0a  N ( 15 )..----..
2bf30 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2bf40 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2bf50 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2bf60 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 36 0d 0a  sort label-986..
2bf70 53 45 4c 45 43 54 20 2d 20 2b 20 53 55 4d 28 20  SELECT - + SUM( 
2bf80 33 34 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63  34 ) FROM tab2 c
2bf90 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 32 0d  or0..----..-102.
2bfa0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2bfb0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2bfc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2bfd0 74 20 6c 61 62 65 6c 2d 39 38 36 0d 0a 53 45 4c  t label-986..SEL
2bfe0 45 43 54 20 2d 20 2b 20 53 55 4d 20 28 20 33 34  ECT - + SUM ( 34
2bff0 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72   ) FROM tab2 cor
2c000 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 32 0d 0a 0d  0..----..-102...
2c010 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c020 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2c030 54 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  T col2 FROM tab2
2c040 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28   AS cor0 WHERE (
2c050 20 4e 55 4c 4c 20 29 20 4e 4f 54 20 42 45 54 57   NULL ) NOT BETW
2c060 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 63 6f 6c  EEN NULL AND col
2c070 31 20 2a 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  1 * col1..----..
2c080 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
2c090 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
2c0a0 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  INCT * FROM tab1
2c0b0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d   AS cor0 WHERE -
2c0c0 20 63 6f 6c 32 20 42 45 54 57 45 45 4e 20 2d 20   col2 BETWEEN - 
2c0d0 38 34 20 41 4e 44 20 63 6f 6c 31 0d 0a 2d 2d 2d  84 AND col1..---
2c0e0 2d 0d 0a 38 35 0d 0a 35 0d 0a 35 39 0d 0a 39 31  -..85..5..59..91
2c0f0 0d 0a 34 37 0d 0a 36 38 0d 0a 0d 0a 6f 6e 6c 79  ..47..68....only
2c100 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2c110 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2c120 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2c130 61 62 65 6c 2d 39 38 39 0d 0a 53 45 4c 45 43 54  abel-989..SELECT
2c140 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20   ALL + COUNT( * 
2c150 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
2c160 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab1 WHERE NOT ( 
2c170 4e 55 4c 4c 20 29 20 3e 3d 20 2d 20 28 20 63 6f  NULL ) >= - ( co
2c180 6c 32 20 29 20 2b 20 2d 20 33 39 0d 0a 2d 2d 2d  l2 ) + - 39..---
2c190 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
2c1a0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2c1b0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2c1c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 39  owsort label-989
2c1d0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
2c1e0 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
2c1f0 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l1 FROM tab1 WHE
2c200 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20  RE NOT ( NULL ) 
2c210 3e 3d 20 2d 20 28 20 63 6f 6c 32 20 29 20 2b 20  >= - ( col2 ) + 
2c220 2d 20 33 39 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  - 39..----..0...
2c230 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2c240 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2c250 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  : DIV for intege
2c260 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
2c270 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2c280 62 65 6c 2d 39 39 30 0d 0a 53 45 4c 45 43 54 20  bel-990..SELECT 
2c290 44 49 53 54 49 4e 43 54 20 2d 20 32 35 20 44 49  DISTINCT - 25 DI
2c2a0 56 20 28 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  V ( COUNT( * ) *
2c2b0 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20   - COUNT( * ) ) 
2c2c0 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
2c2d0 4e 4f 54 20 28 20 2d 20 28 20 2d 20 63 6f 6c 32  NOT ( - ( - col2
2c2e0 20 29 20 2b 20 63 6f 6c 32 20 29 20 3c 20 2b 20   ) + col2 ) < + 
2c2f0 36 34 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 73  64..----..6....s
2c300 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2c310 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2c320 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2c330 62 65 6c 2d 39 39 30 0d 0a 53 45 4c 45 43 54 20  bel-990..SELECT 
2c340 44 49 53 54 49 4e 43 54 20 2d 20 32 35 20 2f 20  DISTINCT - 25 / 
2c350 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  ( COUNT ( * ) * 
2c360 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20  - COUNT ( * ) ) 
2c370 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
2c380 4e 4f 54 20 28 20 2d 20 28 20 2d 20 63 6f 6c 32  NOT ( - ( - col2
2c390 20 29 20 2b 20 63 6f 6c 32 20 29 20 3c 20 2b 20   ) + col2 ) < + 
2c3a0 36 34 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 6f  64..----..6....o
2c3b0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
2c3c0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
2c3d0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
2c3e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2c3f0 39 39 31 0d 0a 53 45 4c 45 43 54 20 2d 20 35 31  991..SELECT - 51
2c400 20 44 49 56 20 63 6f 6c 30 20 46 52 4f 4d 20 74   DIV col0 FROM t
2c410 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30  ab1..----..-1..0
2c420 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
2c430 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2c440 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2c450 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 39 31 0d  wsort label-991.
2c460 0a 53 45 4c 45 43 54 20 2d 20 35 31 20 2f 20 63  .SELECT - 51 / c
2c470 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
2c480 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d 0a 30 0d 0a 0d  ---..-1..0..0...
2c490 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c4a0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2c4b0 54 20 35 32 20 2a 20 2d 20 63 6f 6c 30 20 41 53  T 52 * - col0 AS
2c4c0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
2c4d0 0a 2d 2d 2d 2d 0d 0a 2d 32 33 39 32 0d 0a 2d 33  .----..-2392..-3
2c4e0 33 32 38 0d 0a 2d 33 39 30 30 0d 0a 0d 0a 73 6b  328..-3900....sk
2c4f0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
2c500 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
2c510 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
2c520 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
2c530 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
2c540 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
2c550 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 2b  ISTINCT + col2 +
2c560 20 2b 20 2b 20 31 38 20 63 6f 6c 31 20 46 52 4f   + + 18 col1 FRO
2c570 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
2c580 2d 2d 2d 2d 0d 0a 31 31 37 0d 0a 32 38 0d 0a 36  ----..117..28..6
2c590 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
2c5a0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
2c5b0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2c5c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2c5d0 6c 61 62 65 6c 2d 39 39 34 0d 0a 53 45 4c 45 43  label-994..SELEC
2c5e0 54 20 2d 20 31 35 20 44 49 56 20 63 6f 6c 32 20  T - 15 DIV col2 
2c5f0 44 49 56 20 63 6f 6c 32 20 2b 20 63 6f 6c 30 20  DIV col2 + col0 
2c600 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2c610 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
2c620 0a 31 35 0d 0a 38 37 0d 0a 39 37 0d 0a 0d 0a 73  .15..87..97....s
2c630 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2c640 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2c650 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2c660 62 65 6c 2d 39 39 34 0d 0a 53 45 4c 45 43 54 20  bel-994..SELECT 
2c670 2d 20 31 35 20 2f 20 63 6f 6c 32 20 2f 20 63 6f  - 15 / col2 / co
2c680 6c 32 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c  l2 + col0 AS col
2c690 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
2c6a0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38  or0..----..15..8
2c6b0 37 0d 0a 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  7..97....skipif 
2c6c0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
2c6d0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
2c6e0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
2c6f0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
2c700 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2c710 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
2c720 2d 20 63 6f 6c 30 20 2b 20 2b 20 30 20 2a 20 2b  - col0 + + 0 * +
2c730 20 2b 20 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f   + col2 col1 FRO
2c740 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
2c750 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d 36 34 0d 0a  ----..-46..-64..
2c760 2d 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -75....onlyif my
2c770 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
2c780 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
2c790 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
2c7a0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2c7b0 6f 72 74 20 6c 61 62 65 6c 2d 39 39 36 0d 0a 53  ort label-996..S
2c7c0 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55 4e 54 28  ELECT - + COUNT(
2c7d0 20 2a 20 29 20 44 49 56 20 34 35 20 2b 20 38 31   * ) DIV 45 + 81
2c7e0 20 2b 20 36 34 20 2a 20 37 38 20 41 53 20 63 6f   + 64 * 78 AS co
2c7f0 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
2c800 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 30 37 33  cor0..----..5073
2c810 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2c820 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2c830 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2c840 72 74 20 6c 61 62 65 6c 2d 39 39 36 0d 0a 53 45  rt label-996..SE
2c850 4c 45 43 54 20 2d 20 2b 20 43 4f 55 4e 54 20 28  LECT - + COUNT (
2c860 20 2a 20 29 20 2f 20 34 35 20 2b 20 38 31 20 2b   * ) / 45 + 81 +
2c870 20 36 34 20 2a 20 37 38 20 41 53 20 63 6f 6c 30   64 * 78 AS col0
2c880 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
2c890 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 30 37 33 0d 0a  r0..----..5073..
2c8a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2c8b0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2c8c0 43 54 20 34 39 20 2b 20 2b 20 32 39 20 41 53 20  CT 49 + + 29 AS 
2c8d0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
2c8e0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 38  S cor0..----..78
2c8f0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2c900 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2c910 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2c920 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2c930 61 62 65 6c 2d 39 39 38 0d 0a 53 45 4c 45 43 54  abel-998..SELECT
2c940 20 41 4c 4c 20 2d 20 28 20 2d 20 43 41 53 54 28   ALL - ( - CAST(
2c950 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
2c960 29 20 29 20 2b 20 37 39 20 2a 20 28 20 63 6f 6c  ) ) + 79 * ( col
2c970 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  2 ) FROM tab1 AS
2c980 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
2c990 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
2c9a0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2c9b0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2c9c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2c9d0 6c 61 62 65 6c 2d 39 39 38 0d 0a 53 45 4c 45 43  label-998..SELEC
2c9e0 54 20 41 4c 4c 20 2d 20 28 20 2d 20 43 41 53 54  T ALL - ( - CAST
2c9f0 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
2ca00 45 52 20 29 20 29 20 2b 20 37 39 20 2a 20 28 20  ER ) ) + 79 * ( 
2ca10 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31  col2 ) FROM tab1
2ca20 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2ca30 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
2ca40 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2ca50 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
2ca60 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
2ca70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2ca80 61 62 65 6c 2d 39 39 39 0d 0a 53 45 4c 45 43 54  abel-999..SELECT
2ca90 20 63 6f 6c 31 20 44 49 56 20 34 34 20 46 52 4f   col1 DIV 44 FRO
2caa0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
2cab0 48 45 52 45 20 28 20 2d 20 33 31 20 29 20 2b 20  HERE ( - 31 ) + 
2cac0 2b 20 63 6f 6c 32 20 2a 20 2d 20 35 32 20 4e 4f  + col2 * - 52 NO
2cad0 54 20 42 45 54 57 45 45 4e 20 36 31 20 2b 20 2b  T BETWEEN 61 + +
2cae0 20 63 6f 6c 32 20 41 4e 44 20 28 20 4e 55 4c 4c   col2 AND ( NULL
2caf0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a   )..----..0..0..
2cb00 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
2cb10 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2cb20 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2cb30 6f 72 74 20 6c 61 62 65 6c 2d 39 39 39 0d 0a 53  ort label-999..S
2cb40 45 4c 45 43 54 20 63 6f 6c 31 20 2f 20 34 34 20  ELECT col1 / 44 
2cb50 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2cb60 30 20 57 48 45 52 45 20 28 20 2d 20 33 31 20 29  0 WHERE ( - 31 )
2cb70 20 2b 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 35 32   + + col2 * - 52
2cb80 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 36 31 20   NOT BETWEEN 61 
2cb90 2b 20 2b 20 63 6f 6c 32 20 41 4e 44 20 28 20 4e  + + col2 AND ( N
2cba0 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  ULL )..----..0..
2cbb0 30 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49  0..1....query II
2cbc0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2cbd0 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
2cbe0 45 52 45 20 2d 20 63 6f 6c 32 20 3c 20 28 20 4e  ERE - col2 < ( N
2cbf0 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ULL )..----....q
2cc00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2cc10 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2cc20 2b 20 63 6f 6c 32 20 2d 20 2d 20 34 31 20 2b 20  + col2 - - 41 + 
2cc30 2b 20 35 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 52 AS col0 FRO
2cc40 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31  M tab2..----..11
2cc50 36 0d 0a 31 33 33 0d 0a 31 35 31 0d 0a 0d 0a 71  6..133..151....q
2cc60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2cc70 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 2b  SELECT ALL + ( +
2cc80 20 63 6f 6c 31 20 29 20 2a 20 36 20 2b 20 2b 20   col1 ) * 6 + + 
2cc90 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  col0 AS col0 FRO
2cca0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31  M tab1..----..11
2ccb0 35 0d 0a 31 33 35 0d 0a 33 37 33 0d 0a 0d 0a 73  5..135..373....s
2ccc0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
2ccd0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
2cce0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
2ccf0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
2cd00 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
2cd10 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2cd20 63 6f 6c 30 20 2a 20 2b 20 33 31 20 63 6f 6c 32  col0 * + 31 col2
2cd30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
2cd40 0d 0a 31 35 38 31 0d 0a 32 36 33 35 0d 0a 32 38  ..1581..2635..28
2cd50 32 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  21....query I ro
2cd60 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20  wsort..SELECT ( 
2cd70 2b 20 2b 20 63 6f 6c 30 20 29 20 2a 20 2d 20 2b  + + col0 ) * - +
2cd80 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 30 20 46   col0 + + col0 F
2cd90 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
2cda0 2d 32 31 30 0d 0a 2d 37 34 38 32 0d 0a 2d 39 33  -210..-7482..-93
2cdb0 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  12....query I ro
2cdc0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
2cdd0 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  col1 AS col2 FRO
2cde0 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 55 4c  M tab1 WHERE NUL
2cdf0 4c 20 4e 4f 54 20 49 4e 20 28 20 2b 20 2b 20 63  L NOT IN ( + + c
2ce00 6f 6c 32 20 2a 20 2d 20 63 6f 6c 31 20 2f 20 2b  ol2 * - col1 / +
2ce10 20 63 6f 6c 31 20 2b 20 2d 20 37 34 20 2b 20 63   col1 + - 74 + c
2ce20 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ol0 )..----....o
2ce30 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
2ce40 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
2ce50 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
2ce60 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
2ce70 6c 2d 31 30 30 36 0d 0a 53 45 4c 45 43 54 20 41  l-1006..SELECT A
2ce80 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  LL * FROM tab1 W
2ce90 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 2b 20  HERE NOT col1 + 
2cea0 2b 20 2b 20 28 20 37 37 20 29 20 2a 20 43 41 53  + + ( 77 ) * CAS
2ceb0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
2cec0 44 20 29 20 4e 4f 54 20 49 4e 20 28 20 2d 20 37  D ) NOT IN ( - 7
2ced0 35 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  5 )..----....ski
2cee0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2cef0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2cf00 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
2cf10 62 65 6c 2d 31 30 30 36 0d 0a 53 45 4c 45 43 54  bel-1006..SELECT
2cf20 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31   ALL * FROM tab1
2cf30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20   WHERE NOT col1 
2cf40 2b 20 2b 20 2b 20 28 20 37 37 20 29 20 2a 20 43  + + + ( 77 ) * C
2cf50 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
2cf60 54 45 47 45 52 20 29 20 4e 4f 54 20 49 4e 20 28  TEGER ) NOT IN (
2cf70 20 2d 20 37 35 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   - 75 )..----...
2cf80 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2cf90 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
2cfa0 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20 2b  M tab1 WHERE ( +
2cfb0 20 36 32 20 29 20 3c 3d 20 28 20 2d 20 63 6f 6c   62 ) <= ( - col
2cfc0 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  0 )..----....que
2cfd0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2cfe0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2cff0 63 6f 6c 32 20 2d 20 2d 20 2d 20 63 6f 6c 30 20  col2 - - - col0 
2d000 2b 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 33  + - col0 * - - 3
2d010 34 20 2a 20 33 20 46 52 4f 4d 20 74 61 62 31 0d  4 * 3 FROM tab1.
2d020 0a 2d 2d 2d 2d 0d 0a 2d 35 31 35 37 0d 0a 2d 38  .----..-5157..-8
2d030 36 39 36 0d 0a 2d 39 33 30 35 0d 0a 0d 0a 71 75  696..-9305....qu
2d040 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2d050 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 36 34 20  ELECT col1 * 64 
2d060 2a 20 2d 20 38 36 20 2a 20 2d 20 63 6f 6c 32 20  * - 86 * - col2 
2d070 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2d080 0a 31 36 32 33 36 38 30 0d 0a 31 37 35 39 30 37  .1623680..175907
2d090 38 34 0d 0a 37 33 39 37 33 37 36 0d 0a 0d 0a 71  84..7397376....q
2d0a0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
2d0b0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2d0c0 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
2d0d0 45 52 45 20 2b 20 30 20 4e 4f 54 20 49 4e 20 28  ERE + 0 NOT IN (
2d0e0 20 2b 20 31 38 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39   + 18 )..----..9
2d0f0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
2d100 74 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64  to c6c0a4111b36d
2d110 30 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34  04dbc811a11e4d54
2d120 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  cad....query III
2d130 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2d140 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
2d150 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
2d160 63 6f 6c 31 20 49 4e 20 28 20 2d 20 2d 20 63 6f  col1 IN ( - - co
2d170 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  l0 )..----..9 va
2d180 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
2d190 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
2d1a0 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
2d1b0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
2d1c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2d1d0 54 49 4e 43 54 20 2b 20 34 34 20 2a 20 2b 20 35  TINCT + 44 * + 5
2d1e0 39 20 41 53 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c  9 AS col2, + col
2d1f0 30 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  0 + col0 AS col0
2d200 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
2d210 0d 0a 32 35 39 36 0d 0a 31 37 34 0d 0a 32 35 39  ..2596..174..259
2d220 36 0d 0a 31 39 34 0d 0a 32 35 39 36 0d 0a 33 30  6..194..2596..30
2d230 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2d240 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2d250 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2d260 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 31  owsort label-101
2d270 33 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 37  3..SELECT MAX( 7
2d280 39 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  9 ) AS col1 FROM
2d290 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 37 39 0d   tab2..----..79.
2d2a0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2d2b0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2d2c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2d2d0 74 20 6c 61 62 65 6c 2d 31 30 31 33 0d 0a 53 45  t label-1013..SE
2d2e0 4c 45 43 54 20 4d 41 58 20 28 20 37 39 20 29 20  LECT MAX ( 79 ) 
2d2f0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
2d300 32 0d 0a 2d 2d 2d 2d 0d 0a 37 39 0d 0a 0d 0a 73  2..----..79....s
2d310 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
2d320 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
2d330 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
2d340 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
2d350 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
2d360 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2d370 20 2b 20 2b 20 63 6f 6c 31 20 2d 20 2b 20 38 35   + + col1 - + 85
2d380 20 41 53 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c 32   AS col2, + col2
2d390 20 2a 20 2b 20 63 6f 6c 32 20 2d 20 2d 20 63 6f   * + col2 - - co
2d3a0 6c 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l0 col1 FROM tab
2d3b0 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  2 cor0..----..-1
2d3c0 38 0d 0a 33 34 33 39 0d 0a 2d 33 34 0d 0a 35 37  8..3439..-34..57
2d3d0 35 0d 0a 2d 38 0d 0a 31 36 36 34 0d 0a 0d 0a 71  5..-8..1664....q
2d3e0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
2d3f0 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
2d400 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
2d410 52 45 20 28 20 28 20 2d 20 63 6f 6c 30 20 2f 20  RE ( ( - col0 / 
2d420 39 38 20 3e 20 28 20 4e 55 4c 4c 20 29 20 29 20  98 > ( NULL ) ) 
2d430 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
2d440 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2d450 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2d460 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2d470 62 65 6c 2d 31 30 31 36 0d 0a 53 45 4c 45 43 54  bel-1016..SELECT
2d480 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 28 20   DISTINCT - + ( 
2d490 2b 20 2d 20 53 55 4d 28 20 2b 20 36 30 20 29 20  + - SUM( + 60 ) 
2d4a0 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
2d4b0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
2d4c0 2d 0d 0a 31 38 30 0d 0a 0d 0a 73 6b 69 70 69 66  -..180....skipif
2d4d0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2d4e0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2d4f0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2d500 30 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  016..SELECT DIST
2d510 49 4e 43 54 20 2d 20 2b 20 28 20 2b 20 2d 20 53  INCT - + ( + - S
2d520 55 4d 20 28 20 2b 20 36 30 20 29 20 29 20 41 53  UM ( + 60 ) ) AS
2d530 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
2d540 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
2d550 38 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  80....onlyif mys
2d560 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
2d570 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
2d580 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2d590 20 6c 61 62 65 6c 2d 31 30 31 37 0d 0a 53 45 4c   label-1017..SEL
2d5a0 45 43 54 20 2d 20 38 20 44 49 56 20 2b 20 2b 20  ECT - 8 DIV + + 
2d5b0 36 38 20 2a 20 2b 20 2b 20 36 20 41 53 20 63 6f  68 * + + 6 AS co
2d5c0 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
2d5d0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  cor0..----..0..0
2d5e0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
2d5f0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2d600 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2d610 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 31 37  wsort label-1017
2d620 0d 0a 53 45 4c 45 43 54 20 2d 20 38 20 2f 20 2b  ..SELECT - 8 / +
2d630 20 2b 20 36 38 20 2a 20 2b 20 2b 20 36 20 41 53   + 68 * + + 6 AS
2d640 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
2d650 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor0..----..0
2d660 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..0..0....onlyif
2d670 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2d680 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
2d690 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2d6a0 65 6c 2d 31 30 31 38 0d 0a 53 45 4c 45 43 54 20  el-1018..SELECT 
2d6b0 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54  DISTINCT + COUNT
2d6c0 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  ( DISTINCT + col
2d6d0 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  0 ) FROM tab0 AS
2d6e0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   cor0..----..3..
2d6f0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2d700 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2d710 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2d720 20 6c 61 62 65 6c 2d 31 30 31 38 0d 0a 53 45 4c   label-1018..SEL
2d730 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
2d740 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20  OUNT ( DISTINCT 
2d750 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  + col0 ) FROM ta
2d760 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2d770 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..3....query I r
2d780 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2d790 4c 4c 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  LL col1 FROM tab
2d7a0 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
2d7b0 28 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 2b 20 2d  ( NOT + col0 + -
2d7c0 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 20 29 0d   col2 IS NULL ).
2d7d0 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 34 37 0d 0a 35  .----..14..47..5
2d7e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2d7f0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2d800 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2d810 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 32  owsort label-102
2d820 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f  0..SELECT ALL CO
2d830 55 4e 54 28 20 2d 20 63 6f 6c 31 20 29 20 2a 20  UNT( - col1 ) * 
2d840 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 63  - + COUNT( * ) c
2d850 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
2d860 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d   cor0..----..-9.
2d870 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2d880 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2d890 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
2d8a0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
2d8b0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
2d8c0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
2d8d0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
2d8e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2d8f0 2d 31 30 32 30 0d 0a 53 45 4c 45 43 54 20 41 4c  -1020..SELECT AL
2d900 4c 20 43 4f 55 4e 54 20 28 20 2d 20 63 6f 6c 31  L COUNT ( - col1
2d910 20 29 20 2a 20 2d 20 2b 20 43 4f 55 4e 54 20 28   ) * - + COUNT (
2d920 20 2a 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74   * ) col0 FROM t
2d930 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
2d940 2d 0d 0a 2d 39 0d 0a 0d 0a 71 75 65 72 79 20 49  -..-9....query I
2d950 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2d960 20 31 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53   10 FROM tab1 AS
2d970 20 63 6f 72 30 20 4c 45 46 54 20 4a 4f 49 4e 20   cor0 LEFT JOIN 
2d980 74 61 62 30 20 41 53 20 63 6f 72 31 20 4f 4e 20  tab0 AS cor1 ON 
2d990 2b 20 39 38 20 2a 20 2b 20 35 36 20 2a 20 37 39  + 98 * + 56 * 79
2d9a0 20 3c 3e 20 2b 20 34 38 20 2b 20 2d 20 34 38 20   <> + 48 + - 48 
2d9b0 2a 20 2b 20 39 33 0d 0a 2d 2d 2d 2d 0d 0a 39 20  * + 93..----..9 
2d9c0 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
2d9d0 6f 20 61 34 37 31 39 34 34 32 39 66 33 65 30 33  o a47194429f3e03
2d9e0 35 38 61 33 61 65 62 66 66 64 35 66 30 35 30 31  58a3aebffd5f0501
2d9f0 31 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  13....query I ro
2da00 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
2da10 4c 20 2d 20 31 37 20 2a 20 2d 20 28 20 63 6f 6c  L - 17 * - ( col
2da20 30 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  0 ) FROM tab0..-
2da30 2d 2d 2d 0d 0a 31 34 37 39 0d 0a 31 36 34 39 0d  ---..1479..1649.
2da40 0a 32 35 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .255....onlyif m
2da50 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
2da60 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
2da70 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2da80 2d 31 30 32 33 0d 0a 53 45 4c 45 43 54 20 44 49  -1023..SELECT DI
2da90 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20  STINCT COUNT( * 
2daa0 29 20 2a 20 2d 20 2b 20 37 30 20 46 52 4f 4d 20  ) * - + 70 FROM 
2dab0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 30  tab2..----..-210
2dac0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2dad0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2dae0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2daf0 72 74 20 6c 61 62 65 6c 2d 31 30 32 33 0d 0a 53  rt label-1023..S
2db00 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43  ELECT DISTINCT C
2db10 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 2b  OUNT ( * ) * - +
2db20 20 37 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   70 FROM tab2..-
2db30 2d 2d 2d 0d 0a 2d 32 31 30 0d 0a 0d 0a 71 75 65  ---..-210....que
2db40 72 79 20 49 49 49 49 49 49 20 72 6f 77 73 6f 72  ry IIIIII rowsor
2db50 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
2db60 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52   tab2 AS cor0 CR
2db70 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53  OSS JOIN tab0 AS
2db80 20 63 6f 72 31 20 57 48 45 52 45 20 2d 20 37 34   cor1 WHERE - 74
2db90 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
2dba0 2d 2d 0d 0a 35 34 20 76 61 6c 75 65 73 20 68 61  --..54 values ha
2dbb0 73 68 69 6e 67 20 74 6f 20 33 38 38 38 32 32 32  shing to 3888222
2dbc0 37 63 66 63 37 63 33 62 66 36 32 31 65 64 31 66  7cfc7c3bf621ed1f
2dbd0 33 30 33 34 35 37 33 39 63 0d 0a 0d 0a 71 75 65  30345739c....que
2dbe0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2dbf0 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c  LECT ALL - + col
2dc00 31 20 2a 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c  1 * col0 + - col
2dc10 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
2dc20 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  or0 WHERE NOT co
2dc30 6c 32 20 2f 20 2d 20 2d 20 28 20 2b 20 2b 20 63  l2 / - - ( + + c
2dc40 6f 6c 31 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d  ol1 ) IS NULL..-
2dc50 2d 2d 2d 0d 0a 2d 32 33 36 39 0d 0a 2d 34 39 36  ---..-2369..-496
2dc60 38 0d 0a 2d 35 30 38 33 0d 0a 0d 0a 6f 6e 6c 79  8..-5083....only
2dc70 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2dc80 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2dc90 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2dca0 61 62 65 6c 2d 31 30 32 36 0d 0a 53 45 4c 45 43  abel-1026..SELEC
2dcb0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55  T DISTINCT - COU
2dcc0 4e 54 28 20 2b 20 28 20 2d 20 63 6f 6c 31 20 29  NT( + ( - col1 )
2dcd0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
2dce0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
2dcf0 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
2dd00 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  .----..-3....ski
2dd10 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2dd20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2dd30 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2dd40 6c 2d 31 30 32 36 0d 0a 53 45 4c 45 43 54 20 44  l-1026..SELECT D
2dd50 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 20  ISTINCT - COUNT 
2dd60 28 20 2b 20 28 20 2d 20 63 6f 6c 31 20 29 20 29  ( + ( - col1 ) )
2dd70 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2dd80 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
2dd90 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  L IS NOT NULL..-
2dda0 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79  ---..-3....query
2ddb0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
2ddc0 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
2ddd0 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
2dde0 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3d 20 28 20  RE NOT NULL = ( 
2ddf0 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col1 )..----....
2de00 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2de10 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2de20 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
2de30 6f 72 74 20 6c 61 62 65 6c 2d 31 30 32 38 0d 0a  ort label-1028..
2de40 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2de50 2b 20 39 37 20 2a 20 2d 20 43 4f 55 4e 54 28 20  + 97 * - COUNT( 
2de60 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20  DISTINCT + col1 
2de70 29 20 41 53 20 63 6f 6c 32 2c 20 37 30 20 41 53  ) AS col2, 70 AS
2de80 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
2de90 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
2dea0 32 39 31 0d 0a 37 30 0d 0a 0d 0a 73 6b 69 70 69  291..70....skipi
2deb0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2dec0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2ded0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
2dee0 2d 31 30 32 38 0d 0a 53 45 4c 45 43 54 20 44 49  -1028..SELECT DI
2def0 53 54 49 4e 43 54 20 2b 20 39 37 20 2a 20 2d 20  STINCT + 97 * - 
2df00 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54  COUNT ( DISTINCT
2df10 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   + col1 ) AS col
2df20 32 2c 20 37 30 20 41 53 20 63 6f 6c 32 20 46 52  2, 70 AS col2 FR
2df30 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
2df40 0a 2d 2d 2d 2d 0d 0a 2d 32 39 31 0d 0a 37 30 0d  .----..-291..70.
2df50 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2df60 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
2df70 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
2df80 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
2df90 6c 61 62 65 6c 2d 31 30 32 39 0d 0a 53 45 4c 45  label-1029..SELE
2dfa0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
2dfb0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
2dfc0 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 31 20 2a   col1 * + col1 *
2dfd0 20 2b 20 43 41 53 54 28 20 28 20 2d 20 28 20 2d   + CAST( ( - ( -
2dfe0 20 28 20 2d 20 35 34 20 29 20 29 20 29 20 41 53   ( - 54 ) ) ) AS
2dff0 20 53 49 47 4e 45 44 20 29 20 3e 20 4e 55 4c 4c   SIGNED ) > NULL
2e000 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
2e010 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2e020 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2e030 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
2e040 2d 31 30 32 39 0d 0a 53 45 4c 45 43 54 20 2a 20  -1029..SELECT * 
2e050 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2e060 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31  0 WHERE NOT col1
2e070 20 2a 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 43 41   * + col1 * + CA
2e080 53 54 20 28 20 28 20 2d 20 28 20 2d 20 28 20 2d  ST ( ( - ( - ( -
2e090 20 35 34 20 29 20 29 20 29 20 41 53 20 49 4e 54   54 ) ) ) AS INT
2e0a0 45 47 45 52 20 29 20 3e 20 4e 55 4c 4c 0d 0a 2d  EGER ) > NULL..-
2e0b0 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
2e0c0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
2e0d0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
2e0e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2e0f0 74 20 6c 61 62 65 6c 2d 31 30 33 30 0d 0a 53 45  t label-1030..SE
2e100 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 44 49  LECT ALL col1 DI
2e110 56 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  V - + col1 AS co
2e120 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l2 FROM tab2 cor
2e130 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d  0..----..-1..-1.
2e140 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-1....skipif my
2e150 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2e160 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2e170 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 30  wsort label-1030
2e180 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
2e190 31 20 2f 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20  1 / - + col1 AS 
2e1a0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63  col2 FROM tab2 c
2e1b0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  or0..----..-1..-
2e1c0 31 0d 0a 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  1..-1....onlyif 
2e1d0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2e1e0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2e1f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2e200 6c 2d 31 30 33 31 0d 0a 53 45 4c 45 43 54 20 2d  l-1031..SELECT -
2e210 20 4d 41 58 28 20 2b 20 2d 20 63 6f 6c 32 20 29   MAX( + - col2 )
2e220 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2e230 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2e240 0d 0a 31 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..10....skipif m
2e250 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2e260 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2e270 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33  owsort label-103
2e280 31 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 20  1..SELECT - MAX 
2e290 28 20 2b 20 2d 20 63 6f 6c 32 20 29 20 41 53 20  ( + - col2 ) AS 
2e2a0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
2e2b0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S cor0..----..10
2e2c0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2e2d0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2e2e0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2e2f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33  owsort label-103
2e300 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49  2..SELECT ALL MI
2e310 4e 28 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63  N( - col1 ) AS c
2e320 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
2e330 2d 2d 2d 0d 0a 2d 37 37 0d 0a 0d 0a 73 6b 69 70  ---..-77....skip
2e340 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2e350 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2e360 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2e370 2d 31 30 33 32 0d 0a 53 45 4c 45 43 54 20 41 4c  -1032..SELECT AL
2e380 4c 20 4d 49 4e 20 28 20 2d 20 63 6f 6c 31 20 29  L MIN ( - col1 )
2e390 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2e3a0 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 37 0d 0a 0d  b2..----..-77...
2e3b0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2e3c0 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
2e3d0 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
2e3e0 20 63 6f 6c 31 20 3c 3e 20 2d 20 28 20 2b 20 34   col1 <> - ( + 4
2e3f0 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  1 )..----....ski
2e400 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
2e410 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
2e420 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
2e430 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
2e440 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
2e450 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
2e460 6f 6c 32 20 41 53 20 63 6f 6c 30 2c 20 32 20 63  ol2 AS col0, 2 c
2e470 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
2e480 2d 2d 2d 0d 0a 35 39 0d 0a 32 0d 0a 36 38 0d 0a  ---..59..2..68..
2e490 32 0d 0a 39 36 0d 0a 32 0d 0a 0d 0a 73 6b 69 70  2..96..2....skip
2e4a0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2e4b0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2e4c0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2e4d0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2e4e0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
2e4f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
2e500 63 6f 6c 32 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c  col2 col2, - col
2e510 31 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f  1 + - col1 AS co
2e520 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
2e530 2d 2d 0d 0a 31 30 0d 0a 2d 34 32 0d 0a 34 37 0d  --..10..-42..47.
2e540 0a 2d 31 36 32 0d 0a 39 39 0d 0a 2d 32 0d 0a 0d  .-162..99..-2...
2e550 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e560 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2e570 54 20 2b 20 35 36 20 2b 20 2b 20 2d 20 63 6f 6c  T + 56 + + - col
2e580 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  1 FROM tab0 cor0
2e590 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 0d 0a 33 35 0d  ..----..-25..35.
2e5a0 0a 35 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .55....query II 
2e5b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2e5c0 41 4c 4c 20 2b 20 32 35 2c 20 63 6f 6c 30 20 2d  ALL + 25, col0 -
2e5d0 20 2b 20 2d 20 31 33 20 2b 20 28 20 2b 20 63 6f   + - 13 + ( + co
2e5e0 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l2 ) AS col2 FRO
2e5f0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
2e600 2d 2d 2d 2d 0d 0a 32 35 0d 0a 31 35 37 0d 0a 32  ----..25..157..2
2e610 35 0d 0a 31 36 30 0d 0a 32 35 0d 0a 31 37 32 0d  5..160..25..172.
2e620 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2e630 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37 37 20  rt..SELECT + 77 
2e640 2b 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  + + - col2 FROM 
2e650 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
2e660 2d 2d 0d 0a 2d 31 39 0d 0a 31 38 0d 0a 39 0d 0a  --..-19..18..9..
2e670 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2e680 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2e690 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2e6a0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 39 0d  sort label-1039.
2e6b0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2e6c0 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2b 20   COUNT( * ) + + 
2e6d0 35 35 20 2b 20 2b 20 31 39 20 46 52 4f 4d 20 74  55 + + 19 FROM t
2e6e0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2e6f0 2d 0d 0a 37 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..77....skipif 
2e700 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2e710 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2e720 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2e730 33 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  39..SELECT DISTI
2e740 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  NCT COUNT ( * ) 
2e750 2b 20 2b 20 35 35 20 2b 20 2b 20 31 39 20 46 52  + + 55 + + 19 FR
2e760 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
2e770 0a 2d 2d 2d 2d 0d 0a 37 37 0d 0a 0d 0a 71 75 65  .----..77....que
2e780 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2e790 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30 20  LECT ALL - col0 
2e7a0 2a 20 63 6f 6c 30 20 2a 20 31 31 20 46 52 4f 4d  * col0 * 11 FROM
2e7b0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
2e7c0 2d 2d 2d 0d 0a 2d 31 30 33 34 39 39 0d 0a 2d 32  ---..-103499..-2
2e7d0 34 37 35 0d 0a 2d 38 33 32 35 39 0d 0a 0d 0a 6f  475..-83259....o
2e7e0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
2e7f0 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
2e800 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
2e810 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
2e820 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2e830 6c 2d 31 30 34 31 0d 0a 53 45 4c 45 43 54 20 2d  l-1041..SELECT -
2e840 20 2b 20 32 38 20 2b 20 43 41 53 54 28 20 2b 20   + 28 + CAST( + 
2e850 43 41 53 54 28 20 2b 20 53 55 4d 28 20 41 4c 4c  CAST( + SUM( ALL
2e860 20 63 6f 6c 31 20 29 20 41 53 20 53 49 47 4e 45   col1 ) AS SIGNE
2e870 44 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20  D ) AS SIGNED ) 
2e880 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2e890 30 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 0d 0a 73  0..----..75....s
2e8a0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2e8b0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2e8c0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2e8d0 62 65 6c 2d 31 30 34 31 0d 0a 53 45 4c 45 43 54  bel-1041..SELECT
2e8e0 20 2d 20 2b 20 32 38 20 2b 20 43 41 53 54 20 28   - + 28 + CAST (
2e8f0 20 2b 20 43 41 53 54 20 28 20 2b 20 53 55 4d 20   + CAST ( + SUM 
2e900 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20 41 53 20  ( ALL col1 ) AS 
2e910 49 4e 54 45 47 45 52 20 29 20 41 53 20 49 4e 54  INTEGER ) AS INT
2e920 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30  EGER ) FROM tab0
2e930 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2e940 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  75....onlyif mys
2e950 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
2e960 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
2e970 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2e980 30 34 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  042..SELECT DIST
2e990 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  INCT COUNT( * ) 
2e9a0 2a 20 2d 20 28 20 2d 20 31 35 20 29 20 2b 20 2b  * - ( - 15 ) + +
2e9b0 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
2e9c0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
2e9d0 2d 2d 2d 0d 0a 34 38 0d 0a 0d 0a 73 6b 69 70 69  ---..48....skipi
2e9e0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2e9f0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2ea00 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2ea10 31 30 34 32 0d 0a 53 45 4c 45 43 54 20 44 49 53  1042..SELECT DIS
2ea20 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  TINCT COUNT ( * 
2ea30 29 20 2a 20 2d 20 28 20 2d 20 31 35 20 29 20 2b  ) * - ( - 15 ) +
2ea40 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
2ea50 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
2ea60 0d 0a 2d 2d 2d 2d 0d 0a 34 38 0d 0a 0d 0a 6f 6e  ..----..48....on
2ea70 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
2ea80 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
2ea90 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2eaa0 74 20 6c 61 62 65 6c 2d 31 30 34 33 0d 0a 53 45  t label-1043..SE
2eab0 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54  LECT ALL + COUNT
2eac0 28 20 63 6f 6c 31 20 29 2c 20 39 35 20 2d 20 2b  ( col1 ), 95 - +
2ead0 20 2d 20 35 34 20 41 53 20 63 6f 6c 31 20 46 52   - 54 AS col1 FR
2eae0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab2..----..3
2eaf0 0d 0a 31 34 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..149....skipif 
2eb00 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2eb10 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
2eb20 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2eb30 30 34 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  043..SELECT ALL 
2eb40 2b 20 43 4f 55 4e 54 20 28 20 63 6f 6c 31 20 29  + COUNT ( col1 )
2eb50 2c 20 39 35 20 2d 20 2b 20 2d 20 35 34 20 41 53  , 95 - + - 54 AS
2eb60 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
2eb70 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 31 34 39 0d 0a 0d  .----..3..149...
2eb80 0a 71 75 65 72 79 20 49 49 49 49 49 49 20 72 6f  .query IIIIII ro
2eb90 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
2eba0 46 52 4f 4d 20 28 20 74 61 62 32 20 41 53 20 63  FROM ( tab2 AS c
2ebb0 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
2ebc0 61 62 32 20 63 6f 72 31 20 29 20 57 48 45 52 45  ab2 cor1 ) WHERE
2ebd0 20 4e 4f 54 20 2d 20 37 36 20 2b 20 2d 20 36 20   NOT - 76 + - 6 
2ebe0 3c 3e 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d  <> ( NULL )..---
2ebf0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
2ec00 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2ec10 54 49 4e 43 54 20 63 6f 6c 32 20 2a 20 2b 20 63  TINCT col2 * + c
2ec20 6f 6c 31 20 2a 20 37 32 20 41 53 20 63 6f 6c 30  ol1 * 72 AS col0
2ec30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
2ec40 0d 0a 31 35 31 32 30 0d 0a 32 37 34 31 30 34 0d  ..15120..274104.
2ec50 0a 37 31 32 38 0d 0a 0d 0a 71 75 65 72 79 20 49  .7128....query I
2ec60 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
2ec70 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
2ec80 53 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e  S cor0 WHERE ( N
2ec90 55 4c 4c 20 29 20 3e 20 2b 20 63 6f 6c 31 20 2f  ULL ) > + col1 /
2eca0 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31   - col0 * - col1
2ecb0 20 2b 20 2d 20 2b 20 35 37 20 2b 20 2b 20 35 34   + - + 57 + + 54
2ecc0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
2ecd0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2ece0 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66  te syntax: DIV f
2ecf0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
2ed00 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
2ed10 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34  owsort label-104
2ed20 37 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28  7..SELECT COUNT(
2ed30 20 2a 20 29 20 44 49 56 20 43 4f 55 4e 54 28 20   * ) DIV COUNT( 
2ed40 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  * ) FROM tab2 co
2ed50 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73  r0..----..1....s
2ed60 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2ed70 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2ed80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2ed90 62 65 6c 2d 31 30 34 37 0d 0a 53 45 4c 45 43 54  bel-1047..SELECT
2eda0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20 43   COUNT ( * ) / C
2edb0 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
2edc0 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
2edd0 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .1....query I ro
2ede0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2edf0 53 54 49 4e 43 54 20 2b 20 32 33 20 2b 20 63 6f  STINCT + 23 + co
2ee00 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
2ee10 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 30 0d  cor0..----..110.
2ee20 0a 31 32 30 0d 0a 33 38 0d 0a 0d 0a 71 75 65 72  .120..38....quer
2ee30 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2ee40 45 43 54 20 41 4c 4c 20 2b 20 2b 20 31 32 20 2d  ECT ALL + + 12 -
2ee50 20 63 6f 6c 31 20 2a 20 35 37 20 46 52 4f 4d 20   col1 * 57 FROM 
2ee60 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
2ee70 2d 2d 0d 0a 2d 32 36 36 37 0d 0a 2d 32 37 33 0d  --..-2667..-273.
2ee80 0a 2d 37 38 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .-786....onlyif 
2ee90 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
2eea0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
2eeb0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2eec0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 30 0d 0a  ort label-1050..
2eed0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2eee0 34 36 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 44 49  46 + - + col0 DI
2eef0 56 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  V col1 FROM tab1
2ef00 0d 0a 2d 2d 2d 2d 0d 0a 32 39 0d 0a 34 33 0d 0a  ..----..29..43..
2ef10 34 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  45....skipif mys
2ef20 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2ef30 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2ef40 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 30 0d  sort label-1050.
2ef50 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2ef60 20 34 36 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 2f   46 + - + col0 /
2ef70 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
2ef80 0a 2d 2d 2d 2d 0d 0a 32 39 0d 0a 34 33 0d 0a 34  .----..29..43..4
2ef90 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
2efa0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
2efb0 6f 6c 31 20 2b 20 2b 20 63 6f 6c 31 20 2a 20 2d  ol1 + + col1 * -
2efc0 20 2b 20 39 34 20 41 53 20 63 6f 6c 31 20 46 52   + 94 AS col1 FR
2efd0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
2efe0 31 33 33 30 0d 0a 2d 34 34 36 35 0d 0a 2d 34 37  1330..-4465..-47
2eff0 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
2f000 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2f010 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2f020 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2f030 35 32 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 43  52..SELECT - - C
2f040 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20 36 38  OUNT( * ) + - 68
2f050 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
2f060 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f  WHERE NULL IS NO
2f070 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  T NULL..----..-6
2f080 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
2f090 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2f0a0 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
2f0b0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
2f0c0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
2f0d0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
2f0e0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
2f0f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2f100 65 6c 2d 31 30 35 32 0d 0a 53 45 4c 45 43 54 20  el-1052..SELECT 
2f110 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  - - COUNT ( * ) 
2f120 2b 20 2d 20 36 38 20 63 6f 6c 31 20 46 52 4f 4d  + - 68 col1 FROM
2f130 20 74 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c   tab0 WHERE NULL
2f140 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
2f150 2d 2d 0d 0a 2d 36 38 0d 0a 0d 0a 71 75 65 72 79  --..-68....query
2f160 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
2f170 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
2f180 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  tab0 WHERE NOT +
2f190 20 63 6f 6c 30 20 4e 4f 54 20 49 4e 20 28 20 63   col0 NOT IN ( c
2f1a0 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20 29 0d 0a  ol1 + + col2 )..
2f1b0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
2f1c0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
2f1d0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
2f1e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2f1f0 2d 31 30 35 34 0d 0a 53 45 4c 45 43 54 20 2b 20  -1054..SELECT + 
2f200 2b 20 28 20 2b 20 28 20 2d 20 43 4f 55 4e 54 28  + ( + ( - COUNT(
2f210 20 2a 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61   * ) ) ) FROM ta
2f220 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
2f230 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2a 20 2b 20   NOT - col0 * + 
2f240 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45 4e  col2 NOT BETWEEN
2f250 20 2b 20 63 6f 6c 32 20 41 4e 44 20 63 6f 6c 30   + col2 AND col0
2f260 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
2f270 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2f280 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2f290 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2f2a0 6c 2d 31 30 35 34 0d 0a 53 45 4c 45 43 54 20 2b  l-1054..SELECT +
2f2b0 20 2b 20 28 20 2b 20 28 20 2d 20 43 4f 55 4e 54   + ( + ( - COUNT
2f2c0 20 28 20 2a 20 29 20 29 20 29 20 46 52 4f 4d 20   ( * ) ) ) FROM 
2f2d0 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
2f2e0 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2a 20  RE NOT - col0 * 
2f2f0 2b 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45  + col2 NOT BETWE
2f300 45 4e 20 2b 20 63 6f 6c 32 20 41 4e 44 20 63 6f  EN + col2 AND co
2f310 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71  l0..----..0....q
2f320 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2f330 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2f340 2b 20 38 33 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 83 AS col0 FRO
2f350 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43  M tab1 AS cor0 C
2f360 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41  ROSS JOIN tab0 A
2f370 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 38 33  S cor1..----..83
2f380 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
2f390 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
2f3a0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
2f3b0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
2f3c0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
2f3d0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2f3e0 4c 45 43 54 20 39 39 20 63 6f 6c 30 20 46 52 4f  LECT 99 col0 FRO
2f3f0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 39 39  M tab1..----..99
2f400 0d 0a 39 39 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72  ..99..99....quer
2f410 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2f420 45 43 54 20 35 20 2a 20 2d 20 28 20 33 30 20 29  ECT 5 * - ( 30 )
2f430 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
2f440 0d 0a 2d 31 35 30 0d 0a 2d 31 35 30 0d 0a 2d 31  ..-150..-150..-1
2f450 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  50....query III 
2f460 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2f470 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
2f480 57 48 45 52 45 20 28 20 2d 20 63 6f 6c 31 20 2a  WHERE ( - col1 *
2f490 20 2b 20 38 33 20 2a 20 2b 20 33 30 20 2f 20 63   + 83 * + 30 / c
2f4a0 6f 6c 30 20 29 20 49 4e 20 28 20 2d 20 63 6f 6c  ol0 ) IN ( - col
2f4b0 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  2 )..----....que
2f4c0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2f4d0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28 20  LECT DISTINCT ( 
2f4e0 2b 20 63 6f 6c 31 20 29 20 2b 20 2d 20 2b 20 63  + col1 ) + - + c
2f4f0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
2f500 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
2f510 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
2f520 2d 32 31 0d 0a 2d 35 34 0d 0a 2d 38 32 0d 0a 0d  -21..-54..-82...
2f530 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2f540 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
2f550 6f 6c 31 20 2a 20 2b 20 63 6f 6c 30 20 2a 20 2b  ol1 * + col0 * +
2f560 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   - col0 FROM tab
2f570 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
2f580 0a 2d 31 30 37 39 31 36 0d 0a 2d 33 31 35 33 39  .-107916..-31539
2f590 32 0d 0a 2d 33 37 36 38 37 35 0d 0a 0d 0a 71 75  2..-376875....qu
2f5a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2f5b0 45 4c 45 43 54 20 2b 20 28 20 63 6f 6c 31 20 29  ELECT + ( col1 )
2f5c0 20 2a 20 63 6f 6c 32 20 2a 20 2b 20 2b 20 63 6f   * col2 * + + co
2f5d0 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
2f5e0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
2f5f0 2d 2d 0d 0a 31 37 38 39 32 39 0d 0a 32 31 30 30  --..178929..2100
2f600 0d 0a 39 38 30 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..9801....onlyif
2f610 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
2f620 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
2f630 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
2f640 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 32 0d  sort label-1062.
2f650 0a 53 45 4c 45 43 54 20 2d 20 43 41 53 54 28 20  .SELECT - CAST( 
2f660 2b 20 2b 20 41 56 47 20 28 20 63 6f 6c 32 20 29  + + AVG ( col2 )
2f670 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
2f680 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
2f690 2d 2d 2d 2d 0d 0a 2d 34 30 0d 0a 0d 0a 73 6b 69  ----..-40....ski
2f6a0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2f6b0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2f6c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2f6d0 6c 2d 31 30 36 32 0d 0a 53 45 4c 45 43 54 20 2d  l-1062..SELECT -
2f6e0 20 43 41 53 54 20 28 20 2b 20 2b 20 41 56 47 20   CAST ( + + AVG 
2f6f0 28 20 63 6f 6c 32 20 29 20 41 53 20 49 4e 54 45  ( col2 ) AS INTE
2f700 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 32 20  GER ) FROM tab2 
2f710 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
2f720 34 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  40....onlyif mys
2f730 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
2f740 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20  : DECIMAL type: 
2f750 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2f760 74 20 6c 61 62 65 6c 2d 31 30 36 33 0d 0a 53 45  t label-1063..SE
2f770 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41 53 54 28  LECT ALL - CAST(
2f780 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c   NULL AS DECIMAL
2f790 20 29 20 2f 20 2d 20 37 31 20 2a 20 63 6f 6c 30   ) / - 71 * col0
2f7a0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2f7b0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2f7c0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
2f7d0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
2f7e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2f7f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2f800 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 33 0d  sort label-1063.
2f810 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41  .SELECT ALL - CA
2f820 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41  ST ( NULL AS REA
2f830 4c 20 29 20 2f 20 2d 20 37 31 20 2a 20 63 6f 6c  L ) / - 71 * col
2f840 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
2f850 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
2f860 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
2f870 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
2f880 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
2f890 20 63 6f 6c 30 20 2b 20 2d 20 2b 20 33 37 20 46   col0 + - + 37 F
2f8a0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2f8b0 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2b 20 63   WHERE NOT ( + c
2f8c0 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 29 20 4e  ol0 * - col2 ) N
2f8d0 4f 54 20 42 45 54 57 45 45 4e 20 2b 20 63 6f 6c  OT BETWEEN + col
2f8e0 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  1 AND NULL..----
2f8f0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2f900 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
2f910 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
2f920 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2f930 61 62 65 6c 2d 31 30 36 35 0d 0a 53 45 4c 45 43  abel-1065..SELEC
2f940 54 20 2b 20 63 6f 6c 32 20 44 49 56 20 2b 20 2b  T + col2 DIV + +
2f950 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
2f960 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
2f970 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 33 0d 0a  .----..0..1..3..
2f980 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2f990 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2f9a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2f9b0 20 6c 61 62 65 6c 2d 31 30 36 35 0d 0a 53 45 4c   label-1065..SEL
2f9c0 45 43 54 20 2b 20 63 6f 6c 32 20 2f 20 2b 20 2b  ECT + col2 / + +
2f9d0 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
2f9e0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
2f9f0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 33 0d 0a  .----..0..1..3..
2fa00 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2fa10 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2fa20 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2fa30 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 36 0d  sort label-1066.
2fa40 0a 53 45 4c 45 43 54 20 53 55 4d 28 20 44 49 53  .SELECT SUM( DIS
2fa50 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 29 20 46  TINCT + col0 ) F
2fa60 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2fa70 0d 0a 2d 2d 2d 2d 0d 0a 31 39 39 0d 0a 0d 0a 73  ..----..199....s
2fa80 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2fa90 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2faa0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2fab0 62 65 6c 2d 31 30 36 36 0d 0a 53 45 4c 45 43 54  bel-1066..SELECT
2fac0 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20   SUM ( DISTINCT 
2fad0 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  + col0 ) FROM ta
2fae0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2faf0 0d 0a 31 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..199....query I
2fb00 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2fb10 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 46 52 4f 4d   ALL + col1 FROM
2fb20 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
2fb30 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a  - col2 IS NULL..
2fb40 2d 2d 2d 2d 0d 0a 31 0d 0a 32 31 0d 0a 38 31 0d  ----..1..21..81.
2fb50 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2fb60 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
2fb70 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
2fb80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2fb90 62 65 6c 2d 31 30 36 38 0d 0a 53 45 4c 45 43 54  bel-1068..SELECT
2fba0 20 44 49 53 54 49 4e 43 54 20 2b 20 38 34 20 44   DISTINCT + 84 D
2fbb0 49 56 20 2d 20 2d 20 63 6f 6c 32 20 63 6f 6c 31  IV - - col2 col1
2fbc0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
2fbd0 0d 0a 31 0d 0a 32 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..1..2..3....ski
2fbe0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2fbf0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
2fc00 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2fc10 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2fc20 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2fc30 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2fc40 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
2fc50 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 38 0d  sort label-1068.
2fc60 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2fc70 20 2b 20 38 34 20 2f 20 2d 20 2d 20 63 6f 6c 32   + 84 / - - col2
2fc80 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
2fc90 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 0d 0a 33 0d 0a  .----..1..2..3..
2fca0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2fcb0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2fcc0 43 54 20 2b 20 32 39 20 2a 20 2d 20 63 6f 6c 31  CT + 29 * - col1
2fcd0 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
2fce0 20 4e 55 4c 4c 20 3c 3e 20 2b 20 63 6f 6c 31 20   NULL <> + col1 
2fcf0 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  - col0..----....
2fd00 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
2fd10 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
2fd20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
2fd30 4e 4f 54 20 2b 20 2b 20 36 37 20 2b 20 2d 20 63  NOT + + 67 + - c
2fd40 6f 6c 31 20 4e 4f 54 20 49 4e 20 28 20 2b 20 63  ol1 NOT IN ( + c
2fd50 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20 2f 20 2d  ol1 * - col2 / -
2fd60 20 63 6f 6c 31 20 2d 20 2d 20 37 30 20 29 0d 0a   col1 - - 70 )..
2fd70 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
2fd80 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
2fd90 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
2fda0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2fdb0 72 74 20 6c 61 62 65 6c 2d 31 30 37 31 0d 0a 53  rt label-1071..S
2fdc0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2fdd0 20 32 35 20 44 49 56 20 2d 20 33 32 20 2a 20 63   25 DIV - 32 * c
2fde0 6f 6c 30 20 44 49 56 20 2d 20 33 36 20 41 53 20  ol0 DIV - 36 AS 
2fdf0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
2fe00 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S cor0..----..0.
2fe10 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2fe20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2fe30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2fe40 74 20 6c 61 62 65 6c 2d 31 30 37 31 0d 0a 53 45  t label-1071..SE
2fe50 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2fe60 32 35 20 2f 20 2d 20 33 32 20 2a 20 63 6f 6c 30  25 / - 32 * col0
2fe70 20 2f 20 2d 20 33 36 20 41 53 20 63 6f 6c 30 20   / - 36 AS col0 
2fe80 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2fe90 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  0..----..0....qu
2fea0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
2feb0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
2fec0 31 2c 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c  1, + col2 AS col
2fed0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
2fee0 2d 0d 0a 2d 31 34 0d 0a 39 36 0d 0a 2d 34 37 0d  -..-14..96..-47.
2fef0 0a 36 38 0d 0a 2d 35 0d 0a 35 39 0d 0a 0d 0a 6f  .68..-5..59....o
2ff00 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
2ff10 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
2ff20 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
2ff30 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2ff40 31 30 37 33 0d 0a 53 45 4c 45 43 54 20 2d 20 36  1073..SELECT - 6
2ff50 39 20 44 49 56 20 2b 20 32 37 20 2b 20 2b 20 63  9 DIV + 27 + + c
2ff60 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20  ol0 * + col0 AS 
2ff70 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
2ff80 2d 2d 2d 2d 0d 0a 32 35 39 39 0d 0a 37 32 32 33  ----..2599..7223
2ff90 0d 0a 38 32 37 39 0d 0a 0d 0a 73 6b 69 70 69 66  ..8279....skipif
2ffa0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2ffb0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2ffc0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2ffd0 30 37 33 0d 0a 53 45 4c 45 43 54 20 2d 20 36 39  073..SELECT - 69
2ffe0 20 2f 20 2b 20 32 37 20 2b 20 2b 20 63 6f 6c 30   / + 27 + + col0
2fff0 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c   * + col0 AS col
30000 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
30010 2d 0d 0a 32 35 39 39 0d 0a 37 32 32 33 0d 0a 38  -..2599..7223..8
30020 32 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  279....query I r
30030 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
30040 4c 4c 20 36 36 20 46 52 4f 4d 20 74 61 62 30 20  LL 66 FROM tab0 
30050 57 48 45 52 45 20 4e 55 4c 4c 20 49 4e 20 28 20  WHERE NULL IN ( 
30060 36 32 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 2b 20  62 * + + col2 + 
30070 2d 20 2d 20 63 6f 6c 30 2c 20 63 6f 6c 31 20 29  - - col0, col1 )
30080 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
30090 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
300a0 54 20 63 6f 6c 30 20 2a 20 2b 20 2b 20 63 6f 6c  T col0 * + + col
300b0 32 20 2a 20 63 6f 6c 32 20 2b 20 2d 20 2d 20 63  2 * col2 + - - c
300c0 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f  ol2 + - col1 FRO
300d0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
300e0 2d 2d 2d 2d 0d 0a 33 33 31 30 31 0d 0a 38 36 38  ----..33101..868
300f0 39 0d 0a 39 35 30 37 39 35 0d 0a 0d 0a 71 75 65  9..950795....que
30100 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
30110 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20  LECT ALL + col1 
30120 2b 20 33 33 20 46 52 4f 4d 20 74 61 62 31 20 41  + 33 FROM tab1 A
30130 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 38  S cor0..----..38
30140 0d 0a 34 37 0d 0a 38 30 0d 0a 0d 0a 6f 6e 6c 79  ..47..80....only
30150 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
30160 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
30170 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
30180 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
30190 30 37 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  077..SELECT DIST
301a0 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  INCT * FROM tab1
301b0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 63   AS cor0 WHERE c
301c0 6f 6c 31 20 2a 20 43 41 53 54 28 20 2b 20 63 6f  ol1 * CAST( + co
301d0 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20 3e  l1 AS SIGNED ) >
301e0 20 2b 20 2b 20 36 35 20 2b 20 2b 20 2b 20 63 6f   + + 65 + + + co
301f0 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 31 34  l2..----..51..14
30200 0d 0a 39 36 0d 0a 39 31 0d 0a 34 37 0d 0a 36 38  ..96..91..47..68
30210 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
30220 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
30230 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  e..query III row
30240 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 37 0d  sort label-1077.
30250 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
30260 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
30270 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20  cor0 WHERE col1 
30280 2a 20 43 41 53 54 20 28 20 2b 20 63 6f 6c 31 20  * CAST ( + col1 
30290 41 53 20 49 4e 54 45 47 45 52 20 29 20 3e 20 2b  AS INTEGER ) > +
302a0 20 2b 20 36 35 20 2b 20 2b 20 2b 20 63 6f 6c 32   + 65 + + + col2
302b0 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 31 34 0d 0a  ..----..51..14..
302c0 39 36 0d 0a 39 31 0d 0a 34 37 0d 0a 36 38 0d 0a  96..91..47..68..
302d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
302e0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31  t..SELECT + col1
302f0 20 2a 20 2b 20 2d 20 28 20 2b 20 63 6f 6c 30 20   * + - ( + col0 
30300 29 20 2b 20 2d 20 63 6f 6c 31 20 2d 20 63 6f 6c  ) + - col1 - col
30310 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  1 AS col0 FROM t
30320 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
30330 2d 0d 0a 2d 32 34 34 38 0d 0a 2d 35 30 38 32 0d  -..-2448..-5082.
30340 0a 2d 35 31 35 39 0d 0a 0d 0a 71 75 65 72 79 20  .-5159....query 
30350 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
30360 43 54 20 44 49 53 54 49 4e 43 54 20 39 30 20 2b  CT DISTINCT 90 +
30370 20 28 20 2d 20 2b 20 31 20 29 2c 20 38 34 20 41   ( - + 1 ), 84 A
30380 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
30390 0d 0a 2d 2d 2d 2d 0d 0a 38 39 0d 0a 38 34 0d 0a  ..----..89..84..
303a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
303b0 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 41  t..SELECT col1 A
303c0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
303d0 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e   WHERE NULL IS N
303e0 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
303f0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
30400 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
30410 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
30420 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 31 0d 0a  ort label-1081..
30430 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
30440 4d 41 58 28 20 41 4c 4c 20 2d 20 2b 20 33 32 20  MAX( ALL - + 32 
30450 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
30460 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 32 0d 0a  ab0..----..-32..
30470 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
30480 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
30490 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
304a0 20 6c 61 62 65 6c 2d 31 30 38 31 0d 0a 53 45 4c   label-1081..SEL
304b0 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d 41 58  ECT DISTINCT MAX
304c0 20 28 20 41 4c 4c 20 2d 20 2b 20 33 32 20 29 20   ( ALL - + 32 ) 
304d0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
304e0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 32 0d 0a 0d 0a  0..----..-32....
304f0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
30500 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
30510 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
30520 72 74 20 6c 61 62 65 6c 2d 31 30 38 32 0d 0a 53  rt label-1082..S
30530 45 4c 45 43 54 20 2b 20 28 20 2b 20 2b 20 4d 49  ELECT + ( + + MI
30540 4e 28 20 34 20 29 20 29 20 46 52 4f 4d 20 74 61  N( 4 ) ) FROM ta
30550 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 0d 0a 0d 0a 73  b2..----..4....s
30560 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
30570 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
30580 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
30590 62 65 6c 2d 31 30 38 32 0d 0a 53 45 4c 45 43 54  bel-1082..SELECT
305a0 20 2b 20 28 20 2b 20 2b 20 4d 49 4e 20 28 20 34   + ( + + MIN ( 4
305b0 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a   ) ) FROM tab2..
305c0 2d 2d 2d 2d 0d 0a 34 0d 0a 0d 0a 71 75 65 72 79  ----..4....query
305d0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
305e0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
305f0 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
30600 4e 4f 54 20 28 20 2d 20 63 6f 6c 31 20 3c 3d 20  NOT ( - col1 <= 
30610 28 20 2b 20 63 6f 6c 31 20 2f 20 2d 20 2d 20 63  ( + col1 / - - c
30620 6f 6c 32 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d  ol2 ) )..----...
30630 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
30640 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43  CAST syntax: DEC
30650 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65  IMAL type: ..que
30660 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
30670 65 6c 2d 31 30 38 34 0d 0a 53 45 4c 45 43 54 20  el-1084..SELECT 
30680 41 4c 4c 20 2d 20 28 20 28 20 2b 20 43 41 53 54  ALL - ( ( + CAST
30690 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41  ( NULL AS DECIMA
306a0 4c 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61 62  L ) ) ) FROM tab
306b0 32 2c 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  2, tab1 AS cor0.
306c0 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
306d0 68 61 73 68 69 6e 67 20 74 6f 20 63 64 37 61 37  hashing to cd7a7
306e0 39 30 31 65 34 37 63 31 35 31 35 35 34 30 34 61  901e47c15155404a
306f0 66 66 30 64 32 31 36 66 65 30 62 0d 0a 0d 0a 73  ff0d216fe0b....s
30700 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
30710 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
30720 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
30730 62 65 6c 2d 31 30 38 34 0d 0a 53 45 4c 45 43 54  bel-1084..SELECT
30740 20 41 4c 4c 20 2d 20 28 20 28 20 2b 20 43 41 53   ALL - ( ( + CAS
30750 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c  T ( NULL AS REAL
30760 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32   ) ) ) FROM tab2
30770 2c 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  , tab1 AS cor0..
30780 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
30790 61 73 68 69 6e 67 20 74 6f 20 63 64 37 61 37 39  ashing to cd7a79
307a0 30 31 65 34 37 63 31 35 31 35 35 34 30 34 61 66  01e47c15155404af
307b0 66 30 64 32 31 36 66 65 30 62 0d 0a 0d 0a 71 75  f0d216fe0b....qu
307c0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
307d0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
307e0 31 20 41 53 20 63 6f 6c 32 2c 20 35 30 20 46 52  1 AS col2, 50 FR
307f0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
30800 35 31 0d 0a 35 30 0d 0a 2d 36 37 0d 0a 35 30 0d  51..50..-67..50.
30810 0a 2d 37 37 0d 0a 35 30 0d 0a 0d 0a 6f 6e 6c 79  .-77..50....only
30820 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
30830 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
30840 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
30850 6c 61 62 65 6c 2d 31 30 38 36 0d 0a 53 45 4c 45  label-1086..SELE
30860 43 54 20 41 4c 4c 20 33 34 2c 20 2b 20 43 4f 55  CT ALL 34, + COU
30870 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  NT( * ) AS col0 
30880 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
30890 0a 33 34 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66  .34..3....skipif
308a0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
308b0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
308c0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
308d0 31 30 38 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1086..SELECT ALL
308e0 20 33 34 2c 20 2b 20 43 4f 55 4e 54 20 28 20 2a   34, + COUNT ( *
308f0 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
30900 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a  tab1..----..34..
30910 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  3....query III r
30920 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
30930 20 63 6f 6c 31 2c 20 2d 20 63 6f 6c 30 20 2b 20   col1, - col0 + 
30940 2d 20 2d 20 34 30 20 2a 20 2b 20 2d 20 36 31 20  - - 40 * + - 61 
30950 41 53 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c 30 20  AS col2, + col0 
30960 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
30970 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
30980 73 20 68 61 73 68 69 6e 67 20 74 6f 20 38 62 64  s hashing to 8bd
30990 38 32 63 61 34 39 32 39 61 30 33 32 37 66 36 64  82ca4929a0327f6d
309a0 38 31 33 39 62 36 61 62 63 62 38 37 32 0d 0a 0d  8139b6abcb872...
309b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
309c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36  ..SELECT ALL + 6
309d0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
309e0 20 2d 20 39 20 49 53 20 4e 4f 54 20 4e 55 4c 4c   - 9 IS NOT NULL
309f0 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 36 0d 0a 36 0d  ..----..6..6..6.
30a00 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
30a10 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
30a20 49 4e 43 54 20 2b 20 63 6f 6c 32 20 2a 20 2d 20  INCT + col2 * - 
30a30 63 6f 6c 32 20 2d 20 2b 20 2b 20 37 32 2c 20 31  col2 - + + 72, 1
30a40 31 20 2d 20 2d 20 2b 20 39 32 20 41 53 20 63 6f  1 - - + 92 AS co
30a50 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
30a60 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 32  cor0..----..-172
30a70 0d 0a 31 30 33 0d 0a 2d 32 32 38 31 0d 0a 31 30  ..103..-2281..10
30a80 33 0d 0a 2d 39 38 37 33 0d 0a 31 30 33 0d 0a 0d  3..-9873..103...
30a90 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
30aa0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
30ab0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
30ac0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 30 0d 0a  ort label-1090..
30ad0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55  SELECT ALL + COU
30ae0 4e 54 28 20 2a 20 29 20 2b 20 2d 20 43 4f 55 4e  NT( * ) + - COUN
30af0 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30  T( * ) FROM tab0
30b00 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
30b10 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
30b20 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
30b30 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
30b40 20 6c 61 62 65 6c 2d 31 30 39 30 0d 0a 53 45 4c   label-1090..SEL
30b50 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20  ECT ALL + COUNT 
30b60 28 20 2a 20 29 20 2b 20 2d 20 43 4f 55 4e 54 20  ( * ) + - COUNT 
30b70 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ( * ) FROM tab0 
30b80 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  cor0..----..0...
30b90 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
30ba0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
30bb0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
30bc0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
30bd0 6c 2d 31 30 39 31 0d 0a 53 45 4c 45 43 54 20 44  l-1091..SELECT D
30be0 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 44  ISTINCT + col0 D
30bf0 49 56 20 2b 20 2b 20 63 6f 6c 31 20 2b 20 2b 20  IV + + col1 + + 
30c00 2d 20 39 35 20 46 52 4f 4d 20 74 61 62 30 20 41  - 95 FROM tab0 A
30c10 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  S cor0..----..-9
30c20 31 0d 0a 2d 39 35 0d 0a 32 0d 0a 0d 0a 73 6b 69  1..-95..2....ski
30c30 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
30c40 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
30c50 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
30c60 6c 2d 31 30 39 31 0d 0a 53 45 4c 45 43 54 20 44  l-1091..SELECT D
30c70 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2f  ISTINCT + col0 /
30c80 20 2b 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2d 20   + + col1 + + - 
30c90 39 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  95 FROM tab0 AS 
30ca0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 31 0d  cor0..----..-91.
30cb0 0a 2d 39 35 0d 0a 32 0d 0a 0d 0a 71 75 65 72 79  .-95..2....query
30cc0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
30cd0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
30ce0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
30cf0 4f 54 20 28 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f  OT ( NOT NULL NO
30d00 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  T BETWEEN NULL A
30d10 4e 44 20 2d 20 38 39 20 29 0d 0a 2d 2d 2d 2d 0d  ND - 89 )..----.
30d20 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
30d30 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
30d40 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
30d50 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 33  wsort label-1093
30d60 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 53  ..SELECT ALL + S
30d70 55 4d 28 20 2d 20 2b 20 39 37 20 29 20 46 52 4f  UM( - + 97 ) FRO
30d80 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
30d90 2d 2d 2d 2d 0d 0a 2d 32 39 31 0d 0a 0d 0a 73 6b  ----..-291....sk
30da0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
30db0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
30dc0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
30dd0 65 6c 2d 31 30 39 33 0d 0a 53 45 4c 45 43 54 20  el-1093..SELECT 
30de0 41 4c 4c 20 2b 20 53 55 4d 20 28 20 2d 20 2b 20  ALL + SUM ( - + 
30df0 39 37 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  97 ) FROM tab2 A
30e00 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
30e10 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  91....query I ro
30e20 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
30e30 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2b 20  STINCT + col0 + 
30e40 2b 20 63 6f 6c 30 20 2a 20 2d 20 2b 20 63 6f 6c  + col0 * - + col
30e50 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
30e60 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
30e70 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3d 20 39 32  E NOT NULL <= 92
30e80 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
30e90 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
30ea0 54 20 41 4c 4c 20 38 32 20 2a 20 2b 20 2d 20 35  T ALL 82 * + - 5
30eb0 38 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  8 AS col2 FROM t
30ec0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37 35 36  ab1..----..-4756
30ed0 0d 0a 2d 34 37 35 36 0d 0a 2d 34 37 35 36 0d 0a  ..-4756..-4756..
30ee0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
30ef0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
30f00 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
30f10 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 36 0d  sort label-1096.
30f20 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28  .SELECT - COUNT(
30f30 20 2a 20 29 20 2a 20 53 55 4d 28 20 41 4c 4c 20   * ) * SUM( ALL 
30f40 63 6f 6c 30 20 29 20 63 6f 6c 32 20 46 52 4f 4d  col0 ) col2 FROM
30f50 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 35   tab2..----..-55
30f60 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
30f70 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
30f80 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
30f90 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
30fa0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
30fb0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
30fc0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
30fd0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
30fe0 65 6c 2d 31 30 39 36 0d 0a 53 45 4c 45 43 54 20  el-1096..SELECT 
30ff0 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  - COUNT ( * ) * 
31000 53 55 4d 20 28 20 41 4c 4c 20 63 6f 6c 30 20 29  SUM ( ALL col0 )
31010 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
31020 0a 2d 2d 2d 2d 0d 0a 2d 35 35 35 0d 0a 0d 0a 71  .----..-555....q
31030 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
31040 53 45 4c 45 43 54 20 63 6f 6c 32 20 2a 20 2b 20  SELECT col2 * + 
31050 2d 20 35 30 20 2a 20 2b 20 2b 20 39 30 20 2a 20  - 50 * + + 90 * 
31060 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46  + col0 AS col0 F
31070 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
31080 2d 33 31 37 32 35 30 30 0d 0a 2d 33 39 31 35 30  -3172500..-39150
31090 30 30 0d 0a 2d 34 33 32 31 33 35 30 30 0d 0a 0d  00..-43213500...
310a0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
310b0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
310c0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
310d0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
310e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
310f0 62 65 6c 2d 31 30 39 38 0d 0a 53 45 4c 45 43 54  bel-1098..SELECT
31100 20 41 4c 4c 20 2b 20 43 41 53 54 28 20 2d 20 43   ALL + CAST( - C
31110 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 53 49 47  OUNT( * ) AS SIG
31120 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20 46 52  NED ) AS col1 FR
31130 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
31140 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
31150 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
31160 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
31170 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 38 0d 0a  ort label-1098..
31180 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53  SELECT ALL + CAS
31190 54 20 28 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  T ( - COUNT ( * 
311a0 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  ) AS INTEGER ) A
311b0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
311c0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 6f 6e  ..----..-3....on
311d0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
311e0 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
311f0 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
31200 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31210 31 30 39 39 0d 0a 53 45 4c 45 43 54 20 2b 20 63  1099..SELECT + c
31220 6f 6c 30 20 44 49 56 20 2b 20 63 6f 6c 32 20 41  ol0 DIV + col2 A
31230 53 20 63 6f 6c 31 2c 20 31 35 20 41 53 20 63 6f  S col1, 15 AS co
31240 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
31250 2d 2d 0d 0a 31 0d 0a 31 35 0d 0a 31 0d 0a 31 35  --..1..15..1..15
31260 0d 0a 32 0d 0a 31 35 0d 0a 0d 0a 73 6b 69 70 69  ..2..15....skipi
31270 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
31280 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
31290 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
312a0 2d 31 30 39 39 0d 0a 53 45 4c 45 43 54 20 2b 20  -1099..SELECT + 
312b0 63 6f 6c 30 20 2f 20 2b 20 63 6f 6c 32 20 41 53  col0 / + col2 AS
312c0 20 63 6f 6c 31 2c 20 31 35 20 41 53 20 63 6f 6c   col1, 15 AS col
312d0 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
312e0 2d 0d 0a 31 0d 0a 31 35 0d 0a 31 0d 0a 31 35 0d  -..1..15..1..15.
312f0 0a 32 0d 0a 31 35 0d 0a 0d 0a 71 75 65 72 79 20  .2..15....query 
31300 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31310 54 20 41 4c 4c 20 38 31 20 2b 20 2b 20 63 6f 6c  T ALL 81 + + col
31320 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
31330 2d 0d 0a 31 34 30 0d 0a 31 34 39 0d 0a 31 37 37  -..140..149..177
31340 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
31350 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
31360 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
31370 62 30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20  b0 WHERE ( NULL 
31380 29 20 49 53 20 4e 55 4c 4c 20 4f 52 20 4e 4f 54  ) IS NULL OR NOT
31390 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
313a0 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
313b0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62  s hashing to c4b
313c0 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36  42765dff94eaaa46
313d0 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d  040e537fb43b7...
313e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
313f0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 31  ..SELECT ALL - 1
31400 36 20 2b 20 28 20 2d 20 2b 20 63 6f 6c 32 20 29  6 + ( - + col2 )
31410 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
31420 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 35 0d 0a  r0..----..-115..
31430 2d 32 36 0d 0a 2d 36 33 0d 0a 0d 0a 71 75 65 72  -26..-63....quer
31440 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
31450 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
31460 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
31470 2d 20 38 35 20 49 53 20 4e 55 4c 4c 20 41 4e 44  - 85 IS NULL AND
31480 20 4e 4f 54 20 63 6f 6c 31 20 49 53 20 4e 4f 54   NOT col1 IS NOT
31490 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
314a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
314b0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 38 20 2b  SELECT ALL + 8 +
314c0 20 2d 20 2b 20 28 20 63 6f 6c 31 20 29 20 46 52   - + ( col1 ) FR
314d0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
314e0 0a 2d 2d 2d 2d 0d 0a 2d 33 39 0d 0a 2d 36 0d 0a  .----..-39..-6..
314f0 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
31500 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
31510 6f 6c 32 20 2a 20 2b 20 33 39 20 2b 20 2d 20 36  ol2 * + 39 + - 6
31520 32 20 2b 20 2b 20 32 37 20 2b 20 2b 20 36 36 20  2 + + 27 + + 66 
31530 2d 20 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  - - - col1 FROM 
31540 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
31550 2d 2d 0d 0a 31 37 38 33 0d 0a 33 38 39 31 0d 0a  --..1783..3891..
31560 34 30 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  400....onlyif my
31570 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
31580 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
31590 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
315a0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30 36 0d 0a  ort label-1106..
315b0 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
315c0 4d 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52  M tab0 cor0 WHER
315d0 45 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  E CAST( NULL AS 
315e0 53 49 47 4e 45 44 20 29 20 3c 20 2d 20 35 31 0d  SIGNED ) < - 51.
315f0 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
31600 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
31610 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
31620 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31630 31 31 30 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1106..SELECT ALL
31640 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72   * FROM tab0 cor
31650 30 20 57 48 45 52 45 20 43 41 53 54 20 28 20 4e  0 WHERE CAST ( N
31660 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
31670 20 3c 20 2d 20 35 31 0d 0a 2d 2d 2d 2d 0d 0a 0d   < - 51..----...
31680 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
31690 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
316a0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
316b0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30 37 0d 0a  ort label-1107..
316c0 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
316d0 2a 20 29 20 2b 20 43 4f 55 4e 54 28 20 41 4c 4c  * ) + COUNT( ALL
316e0 20 2d 20 2d 20 63 6f 6c 31 20 29 20 63 6f 6c 32   - - col1 ) col2
316f0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
31700 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  r0..----..0....s
31710 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
31720 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
31730 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
31740 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
31750 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
31760 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
31770 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
31780 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30  owsort label-110
31790 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e  7..SELECT - COUN
317a0 54 20 28 20 2a 20 29 20 2b 20 43 4f 55 4e 54 20  T ( * ) + COUNT 
317b0 28 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c 31 20 29  ( ALL - - col1 )
317c0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
317d0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor0..----..0
317e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
317f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
31800 49 4e 43 54 20 2b 20 2d 20 35 35 20 46 52 4f 4d  INCT + - 55 FROM
31810 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52   tab0 AS cor0 CR
31820 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53  OSS JOIN tab2 AS
31830 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 35   cor1..----..-55
31840 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
31850 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
31860 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
31870 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30  owsort label-110
31880 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  9..SELECT ALL + 
31890 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 36  COUNT( * ) * + 6
318a0 31 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  1 + + COUNT( * )
318b0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
318c0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
318d0 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b2 AS cor1..----
318e0 0d 0a 35 35 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..558....skipif 
318f0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
31900 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
31910 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
31920 30 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  09..SELECT ALL +
31930 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b   COUNT ( * ) * +
31940 20 36 31 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20   61 + + COUNT ( 
31950 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  * ) FROM tab0 AS
31960 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
31970 20 74 61 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d   tab2 AS cor1..-
31980 2d 2d 2d 0d 0a 35 35 38 0d 0a 0d 0a 6f 6e 6c 79  ---..558....only
31990 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
319a0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56  gate syntax: DIV
319b0 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
319c0 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
319d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
319e0 31 31 30 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20  110..SELECT - ( 
319f0 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 44  - COUNT( * ) ) D
31a00 49 56 20 2b 20 28 20 28 20 2d 20 37 20 29 20 29  IV + ( ( - 7 ) )
31a10 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
31a20 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
31a30 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
31a40 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
31a50 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 30  wsort label-1110
31a60 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2d 20 43  ..SELECT - ( - C
31a70 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 2f 20 2b  OUNT ( * ) ) / +
31a80 20 28 20 28 20 2d 20 37 20 29 20 29 20 46 52 4f   ( ( - 7 ) ) FRO
31a90 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab2..----..0.
31aa0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
31ab0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2b  rt..SELECT - ( +
31ac0 20 63 6f 6c 30 20 29 20 2d 20 2b 20 2b 20 63 6f   col0 ) - + + co
31ad0 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
31ae0 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
31af0 0a 2d 31 30 38 0d 0a 2d 39 36 0d 0a 2d 39 38 0d  .-108..-96..-98.
31b00 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
31b10 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
31b20 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
31b30 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 32  wsort label-1112
31b40 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
31b50 54 20 43 4f 55 4e 54 28 20 2d 20 2d 20 63 6f 6c  T COUNT( - - col
31b60 32 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  2 ) FROM tab2 AS
31b70 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
31b80 2d 20 63 6f 6c 30 20 49 4e 20 28 20 63 6f 6c 31  - col0 IN ( col1
31b90 20 2b 20 2b 20 33 34 20 2a 20 2b 20 2d 20 63 6f   + + 34 * + - co
31ba0 6c 30 20 2b 20 2d 20 36 33 20 29 0d 0a 2d 2d 2d  l0 + - 63 )..---
31bb0 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..3....skipif m
31bc0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
31bd0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
31be0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31  owsort label-111
31bf0 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  2..SELECT DISTIN
31c00 43 54 20 43 4f 55 4e 54 20 28 20 2d 20 2d 20 63  CT COUNT ( - - c
31c10 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ol2 ) FROM tab2 
31c20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
31c30 54 20 2d 20 63 6f 6c 30 20 49 4e 20 28 20 63 6f  T - col0 IN ( co
31c40 6c 31 20 2b 20 2b 20 33 34 20 2a 20 2b 20 2d 20  l1 + + 34 * + - 
31c50 63 6f 6c 30 20 2b 20 2d 20 36 33 20 29 0d 0a 2d  col0 + - 63 )..-
31c60 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20  ---..3....query 
31c70 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
31c80 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ECT * FROM tab0 
31c90 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
31ca0 54 20 2d 20 63 6f 6c 31 20 2f 20 32 20 2f 20 2b  T - col1 / 2 / +
31cb0 20 2b 20 36 30 20 2a 20 63 6f 6c 32 20 49 53 20   + 60 * col2 IS 
31cc0 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
31cd0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
31ce0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
31cf0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
31d00 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 34 0d  sort label-1114.
31d10 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20  .SELECT ALL + ( 
31d20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 41 53 20  COUNT( * ) ) AS 
31d30 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
31d40 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
31d50 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
31d60 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
31d70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31d80 74 20 6c 61 62 65 6c 2d 31 31 31 34 0d 0a 53 45  t label-1114..SE
31d90 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 43 4f 55  LECT ALL + ( COU
31da0 4e 54 20 28 20 2a 20 29 20 29 20 41 53 20 63 6f  NT ( * ) ) AS co
31db0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
31dc0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  cor0..----..3...
31dd0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
31de0 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 35 37 20  ..SELECT - - 57 
31df0 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
31e00 2d 2d 2d 2d 0d 0a 35 37 0d 0a 35 37 0d 0a 35 37  ----..57..57..57
31e10 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
31e20 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
31e30 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
31e40 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31  owsort label-111
31e50 36 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 53 55  6..SELECT - - SU
31e60 4d 28 20 36 30 20 29 20 46 52 4f 4d 20 74 61 62  M( 60 ) FROM tab
31e70 30 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  0 cor0 WHERE NOT
31e80 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54   ( NULL ) IS NOT
31e90 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 38 30   NULL..----..180
31ea0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
31eb0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
31ec0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
31ed0 72 74 20 6c 61 62 65 6c 2d 31 31 31 36 0d 0a 53  rt label-1116..S
31ee0 45 4c 45 43 54 20 2d 20 2d 20 53 55 4d 20 28 20  ELECT - - SUM ( 
31ef0 36 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 63  60 ) FROM tab0 c
31f00 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  or0 WHERE NOT ( 
31f10 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20 4e 55  NULL ) IS NOT NU
31f20 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 38 30 0d 0a 0d  LL..----..180...
31f30 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
31f40 74 0d 0a 53 45 4c 45 43 54 20 2b 20 33 35 2c 20  t..SELECT + 35, 
31f50 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
31f60 2d 2d 2d 2d 0d 0a 33 35 0d 0a 31 30 0d 0a 33 35  ----..35..10..35
31f70 0d 0a 34 37 0d 0a 33 35 0d 0a 39 39 0d 0a 0d 0a  ..47..35..99....
31f80 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
31f90 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
31fa0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
31fb0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
31fc0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
31fd0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31fe0 54 20 2d 20 63 6f 6c 30 20 63 6f 6c 31 2c 20 36  T - col0 col1, 6
31ff0 20 2a 20 2d 20 2b 20 63 6f 6c 30 20 41 53 20 63   * - + col0 AS c
32000 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
32010 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d 32 37 36 0d 0a  ---..-46..-276..
32020 2d 36 34 0d 0a 2d 33 38 34 0d 0a 2d 37 35 0d 0a  -64..-384..-75..
32030 2d 34 35 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -450....onlyif m
32040 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
32050 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
32060 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
32070 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 39 0d 0a  ort label-1119..
32080 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
32090 63 6f 6c 30 2c 20 43 41 53 54 28 20 4e 55 4c 4c  col0, CAST( NULL
320a0 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
320b0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  M tab0..----..15
320c0 0d 0a 4e 55 4c 4c 0d 0a 38 37 0d 0a 4e 55 4c 4c  ..NULL..87..NULL
320d0 0d 0a 39 37 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ..97..NULL....sk
320e0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
320f0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
32100 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
32110 62 65 6c 2d 31 31 31 39 0d 0a 53 45 4c 45 43 54  bel-1119..SELECT
32120 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 2c 20   DISTINCT col0, 
32130 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
32140 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61  NTEGER ) FROM ta
32150 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 4e 55  b0..----..15..NU
32160 4c 4c 0d 0a 38 37 0d 0a 4e 55 4c 4c 0d 0a 39 37  LL..87..NULL..97
32170 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
32180 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
32190 54 20 41 4c 4c 20 28 20 2d 20 2b 20 36 20 29 20  T ALL ( - + 6 ) 
321a0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
321b0 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 0d 0a 2d 36 0d  1..----..-6..-6.
321c0 0a 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .-6....query II 
321d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
321e0 63 6f 6c 30 20 41 53 20 63 6f 6c 30 2c 20 28 20  col0 AS col0, ( 
321f0 2b 20 38 30 20 29 20 46 52 4f 4d 20 74 61 62 30  + 80 ) FROM tab0
32200 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 30 0d 0a  ..----..15..80..
32210 38 37 0d 0a 38 30 0d 0a 39 37 0d 0a 38 30 0d 0a  87..80..97..80..
32220 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
32230 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
32240 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
32250 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 32 0d  sort label-1122.
32260 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f  .SELECT ALL + CO
32270 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 33 36 20  UNT( * ) * - 36 
32280 2a 20 2b 20 4d 49 4e 28 20 2b 20 2b 20 63 6f 6c  * + MIN( + + col
32290 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  2 ) AS col1 FROM
322a0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30   tab0..----..-10
322b0 38 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  80....skipif mys
322c0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
322d0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
322e0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 32 0d  sort label-1122.
322f0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f  .SELECT ALL + CO
32300 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 33 36  UNT ( * ) * - 36
32310 20 2a 20 2b 20 4d 49 4e 20 28 20 2b 20 2b 20 63   * + MIN ( + + c
32320 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ol2 ) AS col1 FR
32330 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
32340 31 30 38 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  1080....onlyif m
32350 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
32360 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72   syntax: DIV for
32370 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
32380 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
32390 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 33 0d  sort label-1123.
323a0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20  .SELECT ALL + ( 
323b0 2b 20 2b 20 53 55 4d 28 20 2d 20 32 20 29 20 29  + + SUM( - 2 ) )
323c0 20 44 49 56 20 34 36 20 63 6f 6c 30 20 46 52 4f   DIV 46 col0 FRO
323d0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab2..----..0.
323e0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
323f0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
32400 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
32410 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
32420 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
32430 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
32440 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
32450 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
32460 2d 31 31 32 33 0d 0a 53 45 4c 45 43 54 20 41 4c  -1123..SELECT AL
32470 4c 20 2b 20 28 20 2b 20 2b 20 53 55 4d 20 28 20  L + ( + + SUM ( 
32480 2d 20 32 20 29 20 29 20 2f 20 34 36 20 63 6f 6c  - 2 ) ) / 46 col
32490 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  0 FROM tab2..---
324a0 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  -..0....query II
324b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
324c0 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
324d0 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
324e0 4e 4f 54 20 28 20 4e 55 4c 4c 20 49 53 20 4e 4f  NOT ( NULL IS NO
324f0 54 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a  T NULL )..----..
32500 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
32510 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
32520 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
32530 34 33 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  43b7....skipif p
32540 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
32550 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
32560 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
32570 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
32580 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
32590 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2b 20  t..SELECT - ( + 
325a0 39 30 20 29 20 63 6f 6c 32 2c 20 63 6f 6c 32 20  90 ) col2, col2 
325b0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
325c0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  S cor0..----..-9
325d0 30 0d 0a 35 39 0d 0a 2d 39 30 0d 0a 36 38 0d 0a  0..59..-90..68..
325e0 2d 39 30 0d 0a 39 36 0d 0a 0d 0a 71 75 65 72 79  -90..96....query
325f0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
32600 43 54 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 2d 20  CT + col0 * + - 
32610 34 33 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  43 AS col0 FROM 
32620 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
32630 52 45 20 4e 4f 54 20 2d 20 38 32 20 49 53 20 4e  RE NOT - 82 IS N
32640 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 37 34 31  ULL..----..-3741
32650 0d 0a 2d 34 31 37 31 0d 0a 2d 36 34 35 0d 0a 0d  ..-4171..-645...
32660 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
32670 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
32680 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
32690 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 37 0d 0a  ort label-1127..
326a0 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20  SELECT COUNT( * 
326b0 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
326c0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  or0 WHERE NOT ( 
326d0 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20 4e 55  NULL ) IS NOT NU
326e0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  LL..----..3....s
326f0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
32700 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
32710 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
32720 62 65 6c 2d 31 31 32 37 0d 0a 53 45 4c 45 43 54  bel-1127..SELECT
32730 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
32740 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
32750 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20  HERE NOT ( NULL 
32760 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  ) IS NOT NULL..-
32770 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20  ---..3....query 
32780 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
32790 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
327a0 6c 31 20 2b 20 2d 20 32 31 20 41 53 20 63 6f 6c  l1 + - 21 AS col
327b0 30 2c 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c  0, - col2 AS col
327c0 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
327d0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 30 0d 0a 2d  or0..----..30..-
327e0 32 33 0d 0a 34 36 0d 0a 2d 35 38 0d 0a 35 36 0d  23..46..-58..56.
327f0 0a 2d 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-40....query I 
32800 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
32810 41 4c 4c 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 33  ALL + col0 + + 3
32820 20 2b 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c   + + col1 AS col
32830 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
32840 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 0d 0a  or0..----..100..
32850 31 34 34 0d 0a 31 34 35 0d 0a 0d 0a 6f 6e 6c 79  144..145....only
32860 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
32870 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
32880 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
32890 61 62 65 6c 2d 31 31 33 30 0d 0a 53 45 4c 45 43  abel-1130..SELEC
328a0 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a 20 29  T ALL COUNT( * )
328b0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
328c0 72 30 20 57 48 45 52 45 20 63 6f 6c 32 20 49 53  r0 WHERE col2 IS
328d0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
328e0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
328f0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
32900 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32910 20 6c 61 62 65 6c 2d 31 31 33 30 0d 0a 53 45 4c   label-1130..SEL
32920 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20  ECT ALL COUNT ( 
32930 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  * ) FROM tab2 AS
32940 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 32   cor0 WHERE col2
32950 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
32960 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  0....query III r
32970 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
32980 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20   FROM tab1 cor0 
32990 57 48 45 52 45 20 36 31 20 49 53 20 4e 55 4c 4c  WHERE 61 IS NULL
329a0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
329b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
329c0 54 20 41 4c 4c 20 2b 20 2b 20 36 33 20 2b 20 2d  T ALL + + 63 + -
329d0 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31   - col2 + - col1
329e0 20 2a 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20 63   * + - col2 AS c
329f0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
32a00 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 30   cor0..----..150
32a10 33 0d 0a 33 33 32 37 0d 0a 34 31 37 0d 0a 0d 0a  3..3327..417....
32a20 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
32a30 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
32a40 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
32a50 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
32a60 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
32a70 65 6c 2d 31 31 33 33 0d 0a 53 45 4c 45 43 54 20  el-1133..SELECT 
32a80 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 43 41 53  DISTINCT - + CAS
32a90 54 28 20 4d 49 4e 28 20 2d 20 63 6f 6c 30 20 29  T( MIN( - col0 )
32aa0 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
32ab0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
32ac0 2d 2d 2d 2d 0d 0a 39 37 0d 0a 0d 0a 73 6b 69 70  ----..97....skip
32ad0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
32ae0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
32af0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
32b00 2d 31 31 33 33 0d 0a 53 45 4c 45 43 54 20 44 49  -1133..SELECT DI
32b10 53 54 49 4e 43 54 20 2d 20 2b 20 43 41 53 54 20  STINCT - + CAST 
32b20 28 20 4d 49 4e 20 28 20 2d 20 63 6f 6c 30 20 29  ( MIN ( - col0 )
32b30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
32b40 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
32b50 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 0d 0a 71 75 65  .----..97....que
32b60 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
32b70 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 41  ELECT ALL col0 A
32b80 53 20 63 6f 6c 31 2c 20 28 20 63 6f 6c 31 20 29  S col1, ( col1 )
32b90 20 2a 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20   * col1 AS col1 
32ba0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
32bb0 0a 34 36 0d 0a 32 36 30 31 0d 0a 36 34 0d 0a 35  .46..2601..64..5
32bc0 39 32 39 0d 0a 37 35 0d 0a 34 34 38 39 0d 0a 0d  929..75..4489...
32bd0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32be0 0d 0a 53 45 4c 45 43 54 20 33 33 20 2b 20 2b 20  ..SELECT 33 + + 
32bf0 2d 20 28 20 2b 20 34 32 20 29 20 46 52 4f 4d 20  - ( + 42 ) FROM 
32c00 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a  tab0..----..-9..
32c10 2d 39 0d 0a 2d 39 0d 0a 0d 0a 71 75 65 72 79 20  -9..-9....query 
32c20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
32c30 54 20 63 6f 6c 31 20 2b 20 2b 20 31 36 20 46 52  T col1 + + 16 FR
32c40 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab1..----..2
32c50 31 0d 0a 33 30 0d 0a 36 33 0d 0a 0d 0a 6f 6e 6c  1..30..63....onl
32c60 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
32c70 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
32c80 74 65 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d  te syntax: DECIM
32c90 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  AL type: ..query
32ca0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
32cb0 2d 31 31 33 37 0d 0a 53 45 4c 45 43 54 20 43 4f  -1137..SELECT CO
32cc0 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20 2b 20 43  UNT( * ) + - + C
32cd0 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43  AST( NULL AS DEC
32ce0 49 4d 41 4c 20 29 20 41 53 20 63 6f 6c 32 20 46  IMAL ) AS col2 F
32cf0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
32d00 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
32d10 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
32d20 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
32d30 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33  owsort label-113
32d40 37 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  7..SELECT COUNT 
32d50 28 20 2a 20 29 20 2b 20 2d 20 2b 20 43 41 53 54  ( * ) + - + CAST
32d60 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20   ( NULL AS REAL 
32d70 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
32d80 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab0..----..NULL.
32d90 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
32da0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
32db0 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  0 FROM tab1 WHER
32dc0 45 20 28 20 2b 20 63 6f 6c 32 20 2a 20 28 20 2d  E ( + col2 * ( -
32dd0 20 63 6f 6c 30 20 29 20 49 53 20 4e 4f 54 20 4e   col0 ) IS NOT N
32de0 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31  ULL )..----..-51
32df0 0d 0a 2d 38 35 0d 0a 2d 39 31 0d 0a 0d 0a 6f 6e  ..-85..-91....on
32e00 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
32e10 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
32e20 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
32e30 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
32e40 31 33 39 0d 0a 53 45 4c 45 43 54 20 2b 20 36 35  139..SELECT + 65
32e50 20 44 49 56 20 63 6f 6c 32 20 46 52 4f 4d 20 74   DIV col2 FROM t
32e60 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d  ab0..----..0..1.
32e70 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .6....skipif mys
32e80 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
32e90 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
32ea0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33 39 0d  sort label-1139.
32eb0 0a 53 45 4c 45 43 54 20 2b 20 36 35 20 2f 20 63  .SELECT + 65 / c
32ec0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
32ed0 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 36 0d 0a 0d 0a  ---..0..1..6....
32ee0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
32ef0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
32f00 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 28 20   - - col2 + - ( 
32f10 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  + col1 ) FROM ta
32f20 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
32f30 0d 0a 2d 32 38 0d 0a 2d 33 37 0d 0a 2d 39 0d 0a  ..-28..-37..-9..
32f40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
32f50 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31  t..SELECT + col1
32f60 20 2b 20 32 32 20 46 52 4f 4d 20 74 61 62 30 20   + 22 FROM tab0 
32f70 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
32f80 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
32f90 0d 0a 31 30 33 0d 0a 32 33 0d 0a 34 33 0d 0a 0d  ..103..23..43...
32fa0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
32fb0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
32fc0 43 54 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 63 6f  CT - col2 * + co
32fd0 6c 31 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20 63  l1 * + col0 AS c
32fe0 6f 6c 30 2c 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  ol0, + col2 FROM
32ff0 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
33000 0d 0a 2d 31 38 32 37 30 0d 0a 31 30 0d 0a 2d 35  ..-18270..10..-5
33010 37 31 30 35 0d 0a 34 37 0d 0a 2d 39 36 30 33 0d  7105..47..-9603.
33020 0a 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .99....query I r
33030 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
33040 6f 6c 32 20 2b 20 34 32 20 46 52 4f 4d 20 74 61  ol2 + 42 FROM ta
33050 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 0d 0a 36  b2..----..100..6
33060 35 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49  5..82....query I
33070 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
33080 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57  CT * FROM tab0 W
33090 48 45 52 45 20 2d 20 2d 20 63 6f 6c 32 20 2a 20  HERE - - col2 * 
330a0 2b 20 2b 20 39 37 20 2b 20 2d 20 2b 20 39 38 20  + + 97 + - + 98 
330b0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
330c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
330d0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
330e0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
330f0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
33100 33 36 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  36 IS NULL..----
33110 0d 0a 2d 35 31 0d 0a 2d 36 37 0d 0a 2d 37 37 0d  ..-51..-67..-77.
33120 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
33130 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
33140 30 20 2a 20 2b 20 2d 20 38 39 20 2b 20 2b 20 2b  0 * + - 89 + + +
33150 20 28 20 2d 20 2d 20 63 6f 6c 32 20 29 20 2a 20   ( - - col2 ) * 
33160 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  - - col1 FROM ta
33170 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
33180 0d 0a 31 31 32 39 35 0d 0a 35 38 38 33 0d 0a 37  ..11295..5883..7
33190 38 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  860....query I r
331a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
331b0 49 53 54 49 4e 43 54 20 2d 20 38 30 20 46 52 4f  ISTINCT - 80 FRO
331c0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
331d0 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2f 20  HERE NOT col0 / 
331e0 63 6f 6c 30 20 2a 20 2d 20 2b 20 28 20 35 37 20  col0 * - + ( 57 
331f0 29 20 2a 20 2d 20 31 30 20 49 53 20 4e 4f 54 20  ) * - 10 IS NOT 
33200 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
33210 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
33220 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
33230 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33240 20 6c 61 62 65 6c 2d 31 31 34 38 0d 0a 53 45 4c   label-1148..SEL
33250 45 43 54 20 41 4c 4c 20 4d 41 58 28 20 2d 20 2d  ECT ALL MAX( - -
33260 20 28 20 63 6f 6c 31 20 29 20 29 20 41 53 20 63   ( col1 ) ) AS c
33270 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
33280 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 37 0d   cor0..----..77.
33290 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
332a0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
332b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
332c0 74 20 6c 61 62 65 6c 2d 31 31 34 38 0d 0a 53 45  t label-1148..SE
332d0 4c 45 43 54 20 41 4c 4c 20 4d 41 58 20 28 20 2d  LECT ALL MAX ( -
332e0 20 2d 20 28 20 63 6f 6c 31 20 29 20 29 20 41 53   - ( col1 ) ) AS
332f0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
33300 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  AS cor0..----..7
33310 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
33320 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
33330 6f 6c 31 20 2b 20 2d 20 63 6f 6c 30 20 41 53 20  ol1 + - col0 AS 
33340 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57  col2 FROM tab1 W
33350 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 3d  HERE NOT NULL >=
33360 20 2d 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 34 30   - - col0 + - 40
33370 20 2f 20 2d 20 2b 20 32 35 0d 0a 2d 2d 2d 2d 0d   / - + 25..----.
33380 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
33390 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
333a0 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 2c 20  - col1 AS col2, 
333b0 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  7 AS col1 FROM t
333c0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 37  ab0..----..-1..7
333d0 0d 0a 2d 32 31 0d 0a 37 0d 0a 2d 38 31 0d 0a 37  ..-21..7..-81..7
333e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
333f0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
33400 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
33410 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35  owsort label-115
33420 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 41  1..SELECT ALL MA
33430 58 28 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63  X( - col2 ) AS c
33440 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
33450 2d 2d 2d 0d 0a 2d 35 39 0d 0a 0d 0a 73 6b 69 70  ---..-59....skip
33460 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
33470 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
33480 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
33490 2d 31 31 35 31 0d 0a 53 45 4c 45 43 54 20 41 4c  -1151..SELECT AL
334a0 4c 20 4d 41 58 20 28 20 2d 20 63 6f 6c 32 20 29  L MAX ( - col2 )
334b0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
334c0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 0d  b1..----..-59...
334d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
334e0 0d 0a 53 45 4c 45 43 54 20 2b 20 34 20 2a 20 2d  ..SELECT + 4 * -
334f0 20 38 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   82 AS col2 FROM
33500 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 32   tab0..----..-32
33510 38 0d 0a 2d 33 32 38 0d 0a 2d 33 32 38 0d 0a 0d  8..-328..-328...
33520 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
33530 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
33540 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
33550 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
33560 54 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45  T col2 NOT BETWE
33570 45 4e 20 2b 20 2b 20 38 30 20 41 4e 44 20 4e 55  EN + + 80 AND NU
33580 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
33590 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
335a0 45 43 54 20 41 4c 4c 20 36 33 20 2a 20 2d 20 63  ECT ALL 63 * - c
335b0 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
335c0 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
335d0 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20  ERE NOT NULL IS 
335e0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
335f0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
33600 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
33610 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33620 20 6c 61 62 65 6c 2d 31 31 35 35 0d 0a 53 45 4c   label-1155..SEL
33630 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ECT + COUNT( * )
33640 20 2b 20 2d 20 2d 20 53 55 4d 28 20 63 6f 6c 30   + - - SUM( col0
33650 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
33660 2d 2d 0d 0a 32 30 32 0d 0a 0d 0a 73 6b 69 70 69  --..202....skipi
33670 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
33680 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
33690 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
336a0 31 31 35 35 0d 0a 53 45 4c 45 43 54 20 2b 20 43  1155..SELECT + C
336b0 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20 2d  OUNT ( * ) + - -
336c0 20 53 55 4d 20 28 20 63 6f 6c 30 20 29 20 46 52   SUM ( col0 ) FR
336d0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab0..----..2
336e0 30 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  02....query I ro
336f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
33700 37 30 20 2b 20 2b 20 63 6f 6c 31 20 41 53 20 63  70 + + col1 AS c
33710 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
33720 2d 2d 2d 0d 0a 2d 34 39 0d 0a 2d 36 39 0d 0a 31  ---..-49..-69..1
33730 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
33740 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 34  sort..SELECT + 4
33750 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  9 FROM tab2 AS c
33760 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
33770 61 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab2 AS cor1..---
33780 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
33790 69 6e 67 20 74 6f 20 63 62 34 30 37 38 33 63 30  ing to cb40783c0
337a0 66 66 66 37 32 65 38 38 30 32 63 64 66 30 36 38  fff72e8802cdf068
337b0 32 65 37 63 62 35 35 0d 0a 0d 0a 71 75 65 72 79  2e7cb55....query
337c0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
337d0 43 54 20 44 49 53 54 49 4e 43 54 20 39 36 20 41  CT DISTINCT 96 A
337e0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
337f0 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
33800 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31  OIN tab1 AS cor1
33810 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 0d 0a 71 75  ..----..96....qu
33820 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
33830 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2a  ELECT ALL col1 *
33840 20 2d 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74   - - col2 FROM t
33850 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
33860 2d 0d 0a 31 31 37 33 0d 0a 33 30 38 30 0d 0a 33  -..1173..3080..3
33870 38 38 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  886....query III
33880 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
33890 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
338a0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
338b0 45 52 45 20 34 20 49 53 20 4e 4f 54 20 4e 55 4c  ERE 4 IS NOT NUL
338c0 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
338d0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63  s hashing to c6c
338e0 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38  0a4111b36d04dbc8
338f0 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d  11a11e4d54cad...
33900 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33910 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
33920 54 20 2d 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 63  T - + col2 + - c
33930 6f 6c 32 20 2b 20 2d 20 39 38 20 41 53 20 63 6f  ol2 + - 98 AS co
33940 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l0 FROM tab1 cor
33950 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 36 0d 0a 2d  0..----..-216..-
33960 32 33 34 0d 0a 2d 32 39 30 0d 0a 0d 0a 71 75 65  234..-290....que
33970 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
33980 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 34 30 20  LECT ALL + ( 40 
33990 29 20 2a 20 2d 20 28 20 2d 20 63 6f 6c 31 20 29  ) * - ( - col1 )
339a0 20 2b 20 2b 20 37 39 20 46 52 4f 4d 20 74 61 62   + + 79 FROM tab
339b0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
339c0 0a 32 31 31 39 0d 0a 32 37 35 39 0d 0a 33 31 35  .2119..2759..315
339d0 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
339e0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
339f0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49  ntax: ..query II
33a00 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
33a10 31 36 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  163..SELECT ALL 
33a20 2b 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  + ( - COUNT( * )
33a30 20 29 20 2b 20 2d 20 2b 20 4d 49 4e 28 20 2b 20   ) + - + MIN( + 
33a40 34 35 20 29 20 41 53 20 63 6f 6c 31 2c 20 2b 20  45 ) AS col1, + 
33a50 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c 30 20  COUNT( * ) col0 
33a60 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
33a70 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 0d 0a 33 0d  0..----..-48..3.
33a80 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
33a90 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
33aa0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
33ab0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
33ac0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
33ad0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
33ae0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
33af0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
33b00 6c 2d 31 31 36 33 0d 0a 53 45 4c 45 43 54 20 41  l-1163..SELECT A
33b10 4c 4c 20 2b 20 28 20 2d 20 43 4f 55 4e 54 20 28  LL + ( - COUNT (
33b20 20 2a 20 29 20 29 20 2b 20 2d 20 2b 20 4d 49 4e   * ) ) + - + MIN
33b30 20 28 20 2b 20 34 35 20 29 20 41 53 20 63 6f 6c   ( + 45 ) AS col
33b40 31 2c 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  1, + COUNT ( * )
33b50 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
33b60 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
33b70 34 38 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  48..3....onlyif 
33b80 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
33b90 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
33ba0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
33bb0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 34 0d 0a  ort label-1164..
33bc0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
33bd0 2d 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 34 38 20  - - col2 + - 48 
33be0 2d 20 2d 20 63 6f 6c 32 20 44 49 56 20 2b 20 63  - - col2 DIV + c
33bf0 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol0 AS col1 FROM
33c00 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
33c10 2d 2d 2d 0d 0a 2d 32 35 0d 0a 2d 38 0d 0a 31 30  ---..-25..-8..10
33c20 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
33c30 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
33c40 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
33c50 72 74 20 6c 61 62 65 6c 2d 31 31 36 34 0d 0a 53  rt label-1164..S
33c60 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
33c70 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 34 38 20 2d   - col2 + - 48 -
33c80 20 2d 20 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 30   - col2 / + col0
33c90 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
33ca0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
33cb0 0d 0a 2d 32 35 0d 0a 2d 38 0d 0a 31 30 0d 0a 0d  ..-25..-8..10...
33cc0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
33cd0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
33ce0 35 36 20 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 32  56 AS col0, col2
33cf0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
33d00 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
33d10 0d 0a 2d 35 36 0d 0a 35 39 0d 0a 2d 35 36 0d 0a  ..-56..59..-56..
33d20 36 38 0d 0a 2d 35 36 0d 0a 39 36 0d 0a 0d 0a 71  68..-56..96....q
33d30 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
33d40 53 45 4c 45 43 54 20 2b 20 2d 20 39 31 20 41 53  SELECT + - 91 AS
33d50 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
33d60 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
33d70 39 31 0d 0a 2d 39 31 0d 0a 2d 39 31 0d 0a 0d 0a  91..-91..-91....
33d80 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
33d90 0d 0a 53 45 4c 45 43 54 20 2d 20 32 31 20 41 53  ..SELECT - 21 AS
33da0 20 63 6f 6c 32 2c 20 63 6f 6c 32 20 46 52 4f 4d   col2, col2 FROM
33db0 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
33dc0 0d 0a 2d 32 31 0d 0a 32 33 0d 0a 2d 32 31 0d 0a  ..-21..23..-21..
33dd0 34 30 0d 0a 2d 32 31 0d 0a 35 38 0d 0a 0d 0a 6f  40..-21..58....o
33de0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
33df0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
33e00 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
33e10 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
33e20 31 31 36 38 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  1168..SELECT col
33e30 32 20 44 49 56 20 32 33 20 41 53 20 63 6f 6c 30  2 DIV 23 AS col0
33e40 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
33e50 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 0d 0a 32 0d 0a  r0..----..2..2..
33e60 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
33e70 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
33e80 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
33e90 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 38 0d 0a  ort label-1168..
33ea0 53 45 4c 45 43 54 20 63 6f 6c 32 20 2f 20 32 33  SELECT col2 / 23
33eb0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
33ec0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
33ed0 0d 0a 32 0d 0a 32 0d 0a 34 0d 0a 0d 0a 6f 6e 6c  ..2..2..4....onl
33ee0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
33ef0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
33f00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
33f10 6c 61 62 65 6c 2d 31 31 36 39 0d 0a 53 45 4c 45  label-1169..SELE
33f20 43 54 20 2b 20 53 55 4d 28 20 44 49 53 54 49 4e  CT + SUM( DISTIN
33f30 43 54 20 63 6f 6c 30 20 29 20 2a 20 35 35 20 46  CT col0 ) * 55 F
33f40 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
33f50 31 30 31 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  10175....skipif 
33f60 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
33f70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
33f80 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
33f90 36 39 0d 0a 53 45 4c 45 43 54 20 2b 20 53 55 4d  69..SELECT + SUM
33fa0 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30   ( DISTINCT col0
33fb0 20 29 20 2a 20 35 35 20 46 52 4f 4d 20 74 61 62   ) * 55 FROM tab
33fc0 32 0d 0a 2d 2d 2d 2d 0d 0a 31 30 31 37 35 0d 0a  2..----..10175..
33fd0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
33fe0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37 30 20 2a  t..SELECT - 70 *
33ff0 20 31 30 20 2a 20 2d 20 63 6f 6c 31 20 46 52 4f   10 * - col1 FRO
34000 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34  M tab0..----..14
34010 37 30 30 0d 0a 35 36 37 30 30 0d 0a 37 30 30 0d  700..56700..700.
34020 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
34030 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
34040 4e 43 54 20 2b 20 37 35 20 2a 20 63 6f 6c 31 20  NCT + 75 * col1 
34050 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
34060 31 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35 30 0d 0a 33  1..----..1050..3
34070 35 32 35 0d 0a 33 37 35 0d 0a 0d 0a 73 6b 69 70  525..375....skip
34080 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
34090 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
340a0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
340b0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
340c0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
340d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2d  sort..SELECT ( -
340e0 20 2d 20 63 6f 6c 32 20 29 20 2d 20 63 6f 6c 30   - col2 ) - col0
340f0 20 2b 20 2d 20 2b 20 63 6f 6c 31 20 63 6f 6c 32   + - + col1 col2
34100 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
34110 0d 0a 2d 33 31 0d 0a 2d 37 30 0d 0a 33 31 0d 0a  ..-31..-70..31..
34120 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
34130 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
34140 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
34150 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37 33 0d  sort label-1173.
34160 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
34170 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20   - + COUNT( * ) 
34180 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
34190 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
341a0 20 3c 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d   < ( NULL )..---
341b0 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
341c0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
341d0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
341e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37  owsort label-117
341f0 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  3..SELECT DISTIN
34200 43 54 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a  CT - + COUNT ( *
34210 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
34220 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
34230 55 4c 4c 20 3c 20 28 20 4e 55 4c 4c 20 29 0d 0a  ULL < ( NULL )..
34240 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ----..0....query
34250 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
34260 43 54 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2b 20  CT + + col2 + + 
34270 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  col0 AS col0 FRO
34280 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
34290 2d 0d 0a 31 34 34 0d 0a 31 34 37 0d 0a 31 35 39  -..144..147..159
342a0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
342b0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
342c0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
342d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
342e0 61 62 65 6c 2d 31 31 37 35 0d 0a 53 45 4c 45 43  abel-1175..SELEC
342f0 54 20 41 4c 4c 20 2b 20 34 20 2b 20 2b 20 43 41  T ALL + 4 + + CA
34300 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
34310 45 44 20 29 20 2a 20 2d 20 41 56 47 20 28 20 44  ED ) * - AVG ( D
34320 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 29  ISTINCT - col1 )
34330 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
34340 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
34350 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
34360 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
34370 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
34380 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
34390 31 37 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  175..SELECT ALL 
343a0 2b 20 34 20 2b 20 2b 20 43 41 53 54 20 28 20 4e  + 4 + + CAST ( N
343b0 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
343c0 20 2a 20 2d 20 41 56 47 20 28 20 44 49 53 54 49   * - AVG ( DISTI
343d0 4e 43 54 20 2d 20 63 6f 6c 31 20 29 20 41 53 20  NCT - col1 ) AS 
343e0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
343f0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
34400 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  LL....query III 
34410 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
34420 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
34430 74 61 62 30 20 57 48 45 52 45 20 2b 20 2b 20 34  tab0 WHERE + + 4
34440 34 20 2a 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c  4 * col2 IS NULL
34450 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
34460 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
34470 54 20 44 49 53 54 49 4e 43 54 20 2d 20 37 33 20  T DISTINCT - 73 
34480 46 52 4f 4d 20 28 20 74 61 62 32 20 41 53 20 63  FROM ( tab2 AS c
34490 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
344a0 61 62 30 20 41 53 20 63 6f 72 31 20 29 0d 0a 2d  ab0 AS cor1 )..-
344b0 2d 2d 2d 0d 0a 2d 37 33 0d 0a 0d 0a 6f 6e 6c 79  ---..-73....only
344c0 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
344d0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
344e0 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
344f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37  owsort label-117
34500 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 31 35  8..SELECT ALL 15
34510 20 44 49 56 20 2d 20 2b 20 63 6f 6c 32 20 41 53   DIV - + col2 AS
34520 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
34530 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
34540 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
34550 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
34560 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
34570 20 6c 61 62 65 6c 2d 31 31 37 38 0d 0a 53 45 4c   label-1178..SEL
34580 45 43 54 20 41 4c 4c 20 31 35 20 2f 20 2d 20 2b  ECT ALL 15 / - +
34590 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52   col2 AS col2 FR
345a0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab1..----..0
345b0 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ..0..0....query 
345c0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
345d0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
345e0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
345f0 4f 54 20 2d 20 2b 20 63 6f 6c 30 20 49 53 20 4e  OT - + col0 IS N
34600 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
34610 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
34620 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62  6c0a4111b36d04db
34630 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d  c811a11e4d54cad.
34640 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
34650 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
34660 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  ax: DIV for inte
34670 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
34680 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
34690 6c 61 62 65 6c 2d 31 31 38 30 0d 0a 53 45 4c 45  label-1180..SELE
346a0 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT + COUNT( * ) 
346b0 44 49 56 20 2b 20 43 4f 55 4e 54 28 20 63 6f 6c  DIV + COUNT( col
346c0 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  2 ) FROM tab1 AS
346d0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   cor0..----..1..
346e0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
346f0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
34700 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
34710 20 6c 61 62 65 6c 2d 31 31 38 30 0d 0a 53 45 4c   label-1180..SEL
34720 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ECT + COUNT ( * 
34730 29 20 2f 20 2b 20 43 4f 55 4e 54 20 28 20 63 6f  ) / + COUNT ( co
34740 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  l2 ) FROM tab1 A
34750 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  S cor0..----..1.
34760 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
34770 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
34780 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
34790 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 35 35 20   WHERE NOT + 55 
347a0 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
347b0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
347c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
347d0 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  LL * FROM tab2 A
347e0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
347f0 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 2b 20 28 20   - col2 + + + ( 
34800 2d 20 36 33 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  - 63 ) IS NULL..
34810 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
34820 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38  ashing to 75c998
34830 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66  aa53ac83218cbf2f
34840 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75  eb962d0a49....qu
34850 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
34860 45 4c 45 43 54 20 2b 20 28 20 34 31 20 29 20 2a  ELECT + ( 41 ) *
34870 20 37 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   77 AS col1 FROM
34880 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
34890 2d 2d 2d 0d 0a 33 31 35 37 0d 0a 33 31 35 37 0d  ---..3157..3157.
348a0 0a 33 31 35 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .3157....onlyif 
348b0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
348c0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
348d0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
348e0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 34 0d 0a  ort label-1184..
348f0 53 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20 2b  SELECT + CAST( +
34900 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20   col2 AS SIGNED 
34910 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  ) FROM tab1 cor0
34920 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 36 38 0d 0a  ..----..59..68..
34930 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  96....skipif mys
34940 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
34950 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
34960 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 34 0d  sort label-1184.
34970 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28  .SELECT + CAST (
34980 20 2b 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47   + col2 AS INTEG
34990 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63  ER ) FROM tab1 c
349a0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 36  or0..----..59..6
349b0 38 0d 0a 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  8..96....onlyif 
349c0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
349d0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
349e0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
349f0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 35 0d 0a  ort label-1185..
34a00 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 44 49  SELECT + col2 DI
34a10 56 20 2b 20 35 36 20 46 52 4f 4d 20 74 61 62 32  V + 56 FROM tab2
34a20 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
34a30 30 0d 0a 30 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69  0..0..1....skipi
34a40 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
34a50 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
34a60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
34a70 31 31 38 35 0d 0a 53 45 4c 45 43 54 20 2b 20 63  1185..SELECT + c
34a80 6f 6c 32 20 2f 20 2b 20 35 36 20 46 52 4f 4d 20  ol2 / + 56 FROM 
34a90 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
34aa0 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d 0a 71  --..0..0..1....q
34ab0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
34ac0 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2a 20  SELECT - col1 * 
34ad0 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  - - col1 FROM ta
34ae0 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1 cor0..----..-
34af0 31 39 36 0d 0a 2d 32 32 30 39 0d 0a 2d 32 35 0d  196..-2209..-25.
34b00 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
34b10 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
34b20 20 63 6f 6c 32 20 2a 20 2b 20 2d 20 63 6f 6c 32   col2 * + - col2
34b30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
34b40 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
34b50 0d 0a 31 30 30 0d 0a 32 32 30 39 0d 0a 39 38 30  ..100..2209..980
34b60 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
34b70 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
34b80 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
34b90 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
34ba0 38 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  88..SELECT DISTI
34bb0 4e 43 54 20 43 4f 55 4e 54 28 20 2b 20 2d 20 28  NCT COUNT( + - (
34bc0 20 2d 20 2b 20 63 6f 6c 31 20 29 20 29 20 2a 20   - + col1 ) ) * 
34bd0 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b  - - COUNT( * ) +
34be0 20 2b 20 31 35 20 46 52 4f 4d 20 74 61 62 32 0d   + 15 FROM tab2.
34bf0 0a 2d 2d 2d 2d 0d 0a 32 34 0d 0a 0d 0a 73 6b 69  .----..24....ski
34c00 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
34c10 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
34c20 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
34c30 6c 2d 31 31 38 38 0d 0a 53 45 4c 45 43 54 20 44  l-1188..SELECT D
34c40 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20  ISTINCT COUNT ( 
34c50 2b 20 2d 20 28 20 2d 20 2b 20 63 6f 6c 31 20 29  + - ( - + col1 )
34c60 20 29 20 2a 20 2d 20 2d 20 43 4f 55 4e 54 20 28   ) * - - COUNT (
34c70 20 2a 20 29 20 2b 20 2b 20 31 35 20 46 52 4f 4d   * ) + + 15 FROM
34c80 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 34 0d   tab2..----..24.
34c90 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
34ca0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
34cb0 2d 20 63 6f 6c 32 20 2a 20 2d 20 2b 20 34 39 20  - col2 * - + 49 
34cc0 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 31 20 41 53  AS col0, col1 AS
34cd0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
34ce0 0a 2d 2d 2d 2d 0d 0a 32 38 39 31 0d 0a 35 0d 0a  .----..2891..5..
34cf0 33 33 33 32 0d 0a 34 37 0d 0a 34 37 30 34 0d 0a  3332..47..4704..
34d00 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  14....query II r
34d10 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
34d20 4c 4c 20 2b 20 32 38 20 41 53 20 63 6f 6c 30 2c  LL + 28 AS col0,
34d30 20 2d 20 39 32 20 46 52 4f 4d 20 74 61 62 30 2c   - 92 FROM tab0,
34d40 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
34d50 2d 2d 2d 0d 0a 31 38 20 76 61 6c 75 65 73 20 68  ---..18 values h
34d60 61 73 68 69 6e 67 20 74 6f 20 64 31 37 37 33 39  ashing to d17739
34d70 32 35 34 66 61 62 34 63 35 33 38 33 34 66 61 65  254fab4c53834fae
34d80 36 37 38 32 39 64 64 63 38 64 0d 0a 0d 0a 71 75  67829ddc8d....qu
34d90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
34da0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
34db0 6f 6c 30 20 2b 20 2b 20 2d 20 63 6f 6c 31 20 2a  ol0 + + - col1 *
34dc0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
34dd0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
34de0 33 35 34 0d 0a 2d 36 35 34 36 0d 0a 39 36 0d 0a  354..-6546..96..
34df0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34e00 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
34e10 63 6f 6c 30 20 2a 20 2b 20 34 38 20 41 53 20 63  col0 * + 48 AS c
34e20 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
34e30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34   cor0..----..-24
34e40 34 38 0d 0a 2d 34 30 38 30 0d 0a 2d 34 33 36 38  48..-4080..-4368
34e50 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
34e60 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37 39  ort..SELECT + 79
34e70 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
34e80 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
34e90 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3e 3d   NOT ( NULL ) >=
34ea0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
34eb0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
34ec0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
34ed0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34ee0 74 20 6c 61 62 65 6c 2d 31 31 39 34 0d 0a 53 45  t label-1194..SE
34ef0 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 28 20 2d 20  LECT ALL MIN( - 
34f00 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31  col2 ) FROM tab1
34f10 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 36 0d 0a 0d 0a 73  ..----..-96....s
34f20 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
34f30 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
34f40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
34f50 62 65 6c 2d 31 31 39 34 0d 0a 53 45 4c 45 43 54  bel-1194..SELECT
34f60 20 41 4c 4c 20 4d 49 4e 20 28 20 2d 20 63 6f 6c   ALL MIN ( - col
34f70 32 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  2 ) FROM tab1..-
34f80 2d 2d 2d 0d 0a 2d 39 36 0d 0a 0d 0a 71 75 65 72  ---..-96....quer
34f90 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
34fa0 45 43 54 20 2b 20 2d 20 39 20 41 53 20 63 6f 6c  ECT + - 9 AS col
34fb0 31 20 46 52 4f 4d 20 28 20 74 61 62 31 20 41 53  1 FROM ( tab1 AS
34fc0 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
34fd0 20 74 61 62 32 20 41 53 20 63 6f 72 31 20 29 0d   tab2 AS cor1 ).
34fe0 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
34ff0 68 61 73 68 69 6e 67 20 74 6f 20 63 61 66 32 38  hashing to caf28
35000 36 35 37 62 65 62 34 33 30 34 39 37 34 30 66 65  657beb43049740fe
35010 62 65 31 66 61 39 64 65 64 35 61 0d 0a 0d 0a 71  be1fa9ded5a....q
35020 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
35030 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2b 20  SELECT - col1 + 
35040 2b 20 2b 20 36 35 20 46 52 4f 4d 20 74 61 62 32  + + 65 FROM tab2
35050 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
35060 2d 31 32 0d 0a 2d 32 0d 0a 31 34 0d 0a 0d 0a 71  -12..-2..14....q
35070 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
35080 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
35090 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
350a0 52 45 20 4e 55 4c 4c 20 3e 3d 20 2b 20 63 6f 6c  RE NULL >= + col
350b0 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  0..----....query
350c0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
350d0 43 54 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 30  CT col2 * - col0
350e0 20 2b 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d   + + - col1 FROM
350f0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
35100 2d 2d 2d 0d 0a 2d 37 38 36 0d 0a 2d 38 39 31 0d  ---..-786..-891.
35110 0a 2d 39 36 30 34 0d 0a 0d 0a 71 75 65 72 79 20  .-9604....query 
35120 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
35130 54 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 63  T - col2 + + - c
35140 6f 6c 31 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20  ol1 * col1 FROM 
35150 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
35160 2d 2d 0d 0a 2d 32 36 32 34 0d 0a 2d 34 35 34 37  --..-2624..-4547
35170 0d 0a 2d 35 39 36 39 0d 0a 0d 0a 6f 6e 6c 79 69  ..-5969....onlyi
35180 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
35190 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74  yntax: DECIMAL t
351a0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
351b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 30  owsort label-120
351c0 30 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31  0..SELECT + col1
351d0 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   + - CAST( NULL 
351e0 41 53 20 44 45 43 49 4d 41 4c 20 29 20 46 52 4f  AS DECIMAL ) FRO
351f0 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
35200 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
35210 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
35220 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
35230 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
35240 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 30 30  wsort label-1200
35250 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20  ..SELECT + col1 
35260 2b 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + - CAST ( NULL 
35270 41 53 20 52 45 41 4c 20 29 20 46 52 4f 4d 20 74  AS REAL ) FROM t
35280 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
35290 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
352a0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
352b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
352c0 2b 20 35 35 20 46 52 4f 4d 20 74 61 62 30 20 41  + 55 FROM tab0 A
352d0 53 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c  S cor0 WHERE col
352e0 31 20 4e 4f 54 20 49 4e 20 28 20 63 6f 6c 30 20  1 NOT IN ( col0 
352f0 29 0d 0a 2d 2d 2d 2d 0d 0a 35 35 0d 0a 35 35 0d  )..----..55..55.
35300 0a 35 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .55....query I r
35310 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
35320 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   + col2 AS col0 
35330 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
35340 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54  0 WHERE NULL BET
35350 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20  WEEN NULL AND + 
35360 63 6f 6c 31 20 2a 20 2d 20 39 37 20 2b 20 2b 20  col1 * - 97 + + 
35370 34 39 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  49..----....quer
35380 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
35390 45 43 54 20 2b 20 33 20 2b 20 2b 20 63 6f 6c 30  ECT + 3 + + col0
353a0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
353b0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
353c0 0d 0a 34 39 0d 0a 36 37 0d 0a 37 38 0d 0a 0d 0a  ..49..67..78....
353d0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
353e0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
353f0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
35400 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
35410 2d 31 32 30 34 0d 0a 53 45 4c 45 43 54 20 41 4c  -1204..SELECT AL
35420 4c 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 2b 20 43  L - col0 + - + C
35430 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
35440 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20 46 52  NED ) AS col1 FR
35450 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
35460 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
35470 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  L..NULL....skipi
35480 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
35490 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
354a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
354b0 31 32 30 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1204..SELECT ALL
354c0 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 2b 20 43 41   - col0 + - + CA
354d0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
354e0 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20 46  EGER ) AS col1 F
354f0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
35500 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
35510 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
35520 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
35530 45 43 54 20 32 20 2b 20 63 6f 6c 31 20 46 52 4f  ECT 2 + col1 FRO
35540 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 36  M tab1..----..16
35550 0d 0a 34 39 0d 0a 37 0d 0a 0d 0a 71 75 65 72 79  ..49..7....query
35560 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
35570 43 54 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c 30 20  CT ALL - - col0 
35580 2a 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  * col1 FROM tab1
35590 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 2d 20 32   WHERE NOT + - 2
355a0 35 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  5 IS NOT NULL..-
355b0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
355c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39  owsort..SELECT 9
355d0 32 20 2b 20 2d 20 32 33 20 46 52 4f 4d 20 74 61  2 + - 23 FROM ta
355e0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a 36 39  b1..----..69..69
355f0 0d 0a 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..69....query II
35600 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
35610 20 41 4c 4c 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c   ALL col0, + col
35620 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  1 FROM tab1 WHER
35630 45 20 2b 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c  E + col2 IS NULL
35640 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
35650 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
35660 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
35670 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
35680 62 65 6c 2d 31 32 30 39 0d 0a 53 45 4c 45 43 54  bel-1209..SELECT
35690 20 41 4c 4c 20 33 33 20 41 53 20 63 6f 6c 32 2c   ALL 33 AS col2,
356a0 20 2b 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54   + MAX( DISTINCT
356b0 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31 20   col1 ) AS col1 
356c0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
356d0 0a 33 33 0d 0a 37 37 0d 0a 0d 0a 73 6b 69 70 69  .33..77....skipi
356e0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
356f0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
35700 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
35710 2d 31 32 30 39 0d 0a 53 45 4c 45 43 54 20 41 4c  -1209..SELECT AL
35720 4c 20 33 33 20 41 53 20 63 6f 6c 32 2c 20 2b 20  L 33 AS col2, + 
35730 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 63  MAX ( DISTINCT c
35740 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ol1 ) AS col1 FR
35750 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab2..----..3
35760 33 0d 0a 37 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  3..77....onlyif 
35770 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
35780 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
35790 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74  yntax: DECIMAL t
357a0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
357b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31  owsort label-121
357c0 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54  0..SELECT + CAST
357d0 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41  ( NULL AS DECIMA
357e0 4c 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a  L ) * - COUNT( *
357f0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
35800 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab0..----..NULL
35810 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
35820 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
35830 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
35840 72 74 20 6c 61 62 65 6c 2d 31 32 31 30 0d 0a 53  rt label-1210..S
35850 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28 20 4e  ELECT + CAST ( N
35860 55 4c 4c 20 41 53 20 52 45 41 4c 20 29 20 2a 20  ULL AS REAL ) * 
35870 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  - COUNT ( * ) AS
35880 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
35890 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
358a0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
358b0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
358c0 44 20 74 79 70 65 3a 20 44 45 43 49 4d 41 4c 20  D type: DECIMAL 
358d0 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
358e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
358f0 32 31 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  211..SELECT ALL 
35900 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45  CAST( NULL AS DE
35910 43 49 4d 41 4c 20 29 20 41 53 20 63 6f 6c 31 2c  CIMAL ) AS col1,
35920 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
35930 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
35940 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
35950 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
35960 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  L..NULL..NULL..N
35970 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
35980 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
35990 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
359a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31  owsort label-121
359b0 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41  1..SELECT ALL CA
359c0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41  ST ( NULL AS REA
359d0 4c 20 29 20 41 53 20 63 6f 6c 31 2c 20 43 41 53  L ) AS col1, CAS
359e0 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
359f0 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20  GER ) FROM tab0 
35a00 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
35a10 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
35a20 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
35a30 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
35a40 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
35a50 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
35a60 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
35a70 6c 61 62 65 6c 2d 31 32 31 32 0d 0a 53 45 4c 45  label-1212..SELE
35a80 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 32 31  CT DISTINCT + 21
35a90 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20   + + CAST( NULL 
35aa0 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
35ab0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
35ac0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
35ad0 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
35ae0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
35af0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
35b00 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 32 0d 0a  ort label-1212..
35b10 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
35b20 2b 20 32 31 20 2b 20 2b 20 43 41 53 54 20 28 20  + 21 + + CAST ( 
35b30 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
35b40 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
35b50 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
35b60 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
35b70 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
35b80 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
35b90 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
35ba0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 33  wsort label-1213
35bb0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d  ..SELECT ALL - -
35bc0 20 37 31 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 2d   71 + col1 * + -
35bd0 20 63 6f 6c 30 20 2b 20 2b 20 2d 20 35 20 2d 20   col0 + + - 5 - 
35be0 2d 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  - - CAST( NULL A
35bf0 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f  S SIGNED ) AS co
35c00 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l1 FROM tab1 cor
35c10 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
35c20 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
35c30 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
35c40 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
35c50 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
35c60 6c 2d 31 32 31 33 0d 0a 53 45 4c 45 43 54 20 41  l-1213..SELECT A
35c70 4c 4c 20 2d 20 2d 20 37 31 20 2b 20 63 6f 6c 31  LL - - 71 + col1
35c80 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 2b 20   * + - col0 + + 
35c90 2d 20 35 20 2d 20 2d 20 2d 20 43 41 53 54 20 28  - 5 - - - CAST (
35ca0 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
35cb0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
35cc0 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
35cd0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
35ce0 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  L....query III r
35cf0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
35d00 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
35d10 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
35d20 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45  E NULL NOT BETWE
35d30 45 4e 20 2d 20 38 39 20 2b 20 63 6f 6c 31 20 41  EN - 89 + col1 A
35d40 4e 44 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d  ND col0..----...
35d50 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
35d60 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
35d70 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
35d80 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 35 0d 0a  ort label-1215..
35d90 53 45 4c 45 43 54 20 41 4c 4c 20 32 35 20 2a 20  SELECT ALL 25 * 
35da0 2d 20 2b 20 53 55 4d 28 20 44 49 53 54 49 4e 43  - + SUM( DISTINC
35db0 54 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f  T + col1 ) AS co
35dc0 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
35dd0 2d 2d 0d 0a 2d 34 38 37 35 0d 0a 0d 0a 73 6b 69  --..-4875....ski
35de0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
35df0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
35e00 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
35e10 6c 2d 31 32 31 35 0d 0a 53 45 4c 45 43 54 20 41  l-1215..SELECT A
35e20 4c 4c 20 32 35 20 2a 20 2d 20 2b 20 53 55 4d 20  LL 25 * - + SUM 
35e30 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  ( DISTINCT + col
35e40 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  1 ) AS col0 FROM
35e50 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38   tab2..----..-48
35e60 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 49  75....query IIII
35e70 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
35e80 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
35e90 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b1 AS cor0 CROSS
35ea0 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f   JOIN tab0 AS co
35eb0 72 31 20 57 48 45 52 45 20 34 35 20 49 53 20 4e  r1 WHERE 45 IS N
35ec0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
35ed0 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
35ee0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
35ef0 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
35f00 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
35f10 31 37 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20  17..SELECT col0 
35f20 2a 20 63 6f 6c 31 20 44 49 56 20 2d 20 28 20 2b  * col1 DIV - ( +
35f30 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62   col1 ) FROM tab
35f40 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
35f50 0a 2d 35 31 0d 0a 2d 38 35 0d 0a 2d 39 31 0d 0a  .-51..-85..-91..
35f60 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
35f70 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
35f80 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35f90 20 6c 61 62 65 6c 2d 31 32 31 37 0d 0a 53 45 4c   label-1217..SEL
35fa0 45 43 54 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20  ECT col0 * col1 
35fb0 2f 20 2d 20 28 20 2b 20 63 6f 6c 31 20 29 20 46  / - ( + col1 ) F
35fc0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
35fd0 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d 38 35  ..----..-51..-85
35fe0 0d 0a 2d 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-91....onlyif 
35ff0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
36000 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
36010 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
36020 6c 2d 31 32 31 38 0d 0a 53 45 4c 45 43 54 20 2b  l-1218..SELECT +
36030 20 2b 20 4d 49 4e 28 20 2d 20 2d 20 63 6f 6c 30   + MIN( - - col0
36040 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
36050 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a  cor0..----..51..
36060 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
36070 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
36080 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36090 20 6c 61 62 65 6c 2d 31 32 31 38 0d 0a 53 45 4c   label-1218..SEL
360a0 45 43 54 20 2b 20 2b 20 4d 49 4e 20 28 20 2d 20  ECT + + MIN ( - 
360b0 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  - col0 ) FROM ta
360c0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
360d0 0d 0a 35 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ..51....skipif p
360e0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
360f0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
36100 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
36110 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
36120 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36130 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b  ..SELECT ALL - +
36140 20 31 34 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   14 col1 FROM ta
36150 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
36160 0d 0a 2d 31 34 0d 0a 2d 31 34 0d 0a 2d 31 34 0d  ..-14..-14..-14.
36170 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
36180 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
36190 31 20 2b 20 2d 20 38 38 20 46 52 4f 4d 20 74 61  1 + - 88 FROM ta
361a0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
361b0 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 42 45 54 57   NOT + col2 BETW
361c0 45 45 4e 20 2d 20 2b 20 36 30 20 41 4e 44 20 2b  EEN - + 60 AND +
361d0 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 2b 20 63 6f   + col0 * + + co
361e0 6c 31 20 2f 20 2d 20 63 6f 6c 30 20 2b 20 2d 20  l1 / - col0 + - 
361f0 2b 20 31 39 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 32  + 19..----..-102
36200 0d 0a 2d 31 33 35 0d 0a 2d 39 33 0d 0a 0d 0a 71  ..-135..-93....q
36210 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
36220 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
36230 30 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 46 52 4f  0 * - - col2 FRO
36240 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
36250 2d 2d 2d 2d 0d 0a 31 30 35 38 0d 0a 32 35 36 30  ----..1058..2560
36260 0d 0a 34 33 35 30 0d 0a 0d 0a 71 75 65 72 79 20  ..4350....query 
36270 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
36280 43 54 20 35 36 20 41 53 20 63 6f 6c 31 2c 20 2b  CT 56 AS col1, +
36290 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52   col1 AS col1 FR
362a0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
362b0 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c  WHERE NOT NULL <
362c0 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  = NULL..----....
362d0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
362e0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
362f0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
36300 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
36310 20 2d 20 63 6f 6c 31 20 2f 20 63 6f 6c 30 20 2a   - col1 / col0 *
36320 20 2b 20 2d 20 63 6f 6c 32 20 42 45 54 57 45 45   + - col2 BETWEE
36330 4e 20 2d 20 37 35 20 41 4e 44 20 4e 55 4c 4c 0d  N - 75 AND NULL.
36340 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
36350 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
36360 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
36370 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
36380 6c 2d 31 32 32 34 0d 0a 53 45 4c 45 43 54 20 44  l-1224..SELECT D
36390 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 41  ISTINCT COUNT( A
363a0 4c 4c 20 2b 20 34 34 20 29 20 41 53 20 63 6f 6c  LL + 44 ) AS col
363b0 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
363c0 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..3....skipif m
363d0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
363e0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
363f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32  owsort label-122
36400 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
36410 43 54 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2b  CT COUNT ( ALL +
36420 20 34 34 20 29 20 41 53 20 63 6f 6c 31 20 46 52   44 ) AS col1 FR
36430 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab2..----..3
36440 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
36450 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
36460 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
36470 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
36480 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
36490 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
364a0 45 4c 45 43 54 20 2b 20 32 33 2c 20 2d 20 34 33  ELECT + 23, - 43
364b0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
364c0 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 2d 34 33 0d 0a  .----..23..-43..
364d0 32 33 0d 0a 2d 34 33 0d 0a 32 33 0d 0a 2d 34 33  23..-43..23..-43
364e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
364f0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
36500 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
36510 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32  owsort label-122
36520 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 41  6..SELECT ALL MA
36530 58 28 20 41 4c 4c 20 33 39 20 29 20 41 53 20 63  X( ALL 39 ) AS c
36540 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
36550 2d 2d 2d 0d 0a 33 39 0d 0a 0d 0a 73 6b 69 70 69  ---..39....skipi
36560 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
36570 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
36580 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
36590 31 32 32 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1226..SELECT ALL
365a0 20 4d 41 58 20 28 20 41 4c 4c 20 33 39 20 29 20   MAX ( ALL 39 ) 
365b0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
365c0 31 0d 0a 2d 2d 2d 2d 0d 0a 33 39 0d 0a 0d 0a 6f  1..----..39....o
365d0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
365e0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
365f0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
36600 72 74 20 6c 61 62 65 6c 2d 31 32 32 37 0d 0a 53  rt label-1227..S
36610 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a  ELECT + COUNT( *
36620 20 29 20 63 6f 6c 30 2c 20 2b 20 43 4f 55 4e 54   ) col0, + COUNT
36630 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  ( * ) FROM tab2.
36640 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 33 0d 0a 0d 0a 73  .----..3..3....s
36650 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
36660 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
36670 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
36680 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
36690 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
366a0 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
366b0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20  lumns..query II 
366c0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
366d0 32 37 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55  27..SELECT + COU
366e0 4e 54 20 28 20 2a 20 29 20 63 6f 6c 30 2c 20 2b  NT ( * ) col0, +
366f0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
36700 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  M tab2..----..3.
36710 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .3....onlyif mys
36720 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
36730 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
36740 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36750 20 6c 61 62 65 6c 2d 31 32 32 38 0d 0a 53 45 4c   label-1228..SEL
36760 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
36770 6f 6c 32 20 44 49 56 20 2b 20 63 6f 6c 30 20 2a  ol2 DIV + col0 *
36780 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20   - col2 AS col2 
36790 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
367a0 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
367b0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
367c0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
367d0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32 38 0d  sort label-1228.
367e0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
367f0 20 2d 20 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 30   - col2 / + col0
36800 20 2a 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c   * - col2 AS col
36810 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
36820 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..0....query I 
36830 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
36840 41 4c 4c 20 2b 20 33 30 20 2b 20 2d 20 38 31 20  ALL + 30 + - 81 
36850 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
36860 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d 35  0..----..-51..-5
36870 31 0d 0a 2d 35 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  1..-51....onlyif
36880 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
36890 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
368a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
368b0 65 6c 2d 31 32 33 30 0d 0a 53 45 4c 45 43 54 20  el-1230..SELECT 
368c0 41 4c 4c 20 2d 20 38 36 20 2a 20 2d 20 53 55 4d  ALL - 86 * - SUM
368d0 28 20 2d 20 2b 20 34 37 20 29 20 41 53 20 63 6f  ( - + 47 ) AS co
368e0 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
368f0 2d 2d 0d 0a 2d 31 32 31 32 36 0d 0a 0d 0a 73 6b  --..-12126....sk
36900 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
36910 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
36920 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
36930 65 6c 2d 31 32 33 30 0d 0a 53 45 4c 45 43 54 20  el-1230..SELECT 
36940 41 4c 4c 20 2d 20 38 36 20 2a 20 2d 20 53 55 4d  ALL - 86 * - SUM
36950 20 28 20 2d 20 2b 20 34 37 20 29 20 41 53 20 63   ( - + 47 ) AS c
36960 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
36970 2d 2d 2d 0d 0a 2d 31 32 31 32 36 0d 0a 0d 0a 6f  ---..-12126....o
36980 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
36990 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
369a0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
369b0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
369c0 2d 31 32 33 31 0d 0a 53 45 4c 45 43 54 20 41 4c  -1231..SELECT AL
369d0 4c 20 2b 20 37 37 20 2a 20 63 6f 6c 32 20 2a 20  L + 77 * col2 * 
369e0 2d 20 36 36 20 41 53 20 63 6f 6c 31 2c 20 43 41  - 66 AS col1, CA
369f0 53 54 28 20 28 20 2b 20 63 6f 6c 31 20 29 20 41  ST( ( + col1 ) A
36a00 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
36a10 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
36a20 0a 2d 32 39 39 38 33 38 0d 0a 35 0d 0a 2d 33 34  .-299838..5..-34
36a30 35 35 37 36 0d 0a 34 37 0d 0a 2d 34 38 37 38 37  5576..47..-48787
36a40 32 0d 0a 31 34 0d 0a 0d 0a 73 6b 69 70 69 66 20  2..14....skipif 
36a50 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
36a60 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
36a70 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
36a80 32 33 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  231..SELECT ALL 
36a90 2b 20 37 37 20 2a 20 63 6f 6c 32 20 2a 20 2d 20  + 77 * col2 * - 
36aa0 36 36 20 41 53 20 63 6f 6c 31 2c 20 43 41 53 54  66 AS col1, CAST
36ab0 20 28 20 28 20 2b 20 63 6f 6c 31 20 29 20 41 53   ( ( + col1 ) AS
36ac0 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
36ad0 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
36ae0 0a 2d 32 39 39 38 33 38 0d 0a 35 0d 0a 2d 33 34  .-299838..5..-34
36af0 35 35 37 36 0d 0a 34 37 0d 0a 2d 34 38 37 38 37  5576..47..-48787
36b00 32 0d 0a 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49  2..14....query I
36b10 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
36b20 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 32 34   DISTINCT + + 24
36b30 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   + - col1 FROM t
36b40 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
36b50 2d 0d 0a 2d 32 33 0d 0a 31 30 0d 0a 31 39 0d 0a  -..-23..10..19..
36b60 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
36b70 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
36b80 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
36b90 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
36ba0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
36bb0 6c 61 62 65 6c 2d 31 32 33 33 0d 0a 53 45 4c 45  label-1233..SELE
36bc0 43 54 20 41 4c 4c 20 2d 20 4d 49 4e 28 20 41 4c  CT ALL - MIN( AL
36bd0 4c 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  L - CAST( NULL A
36be0 53 20 53 49 47 4e 45 44 20 29 20 29 20 2b 20 2d  S SIGNED ) ) + -
36bf0 20 39 37 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29   97 - COUNT( * )
36c00 20 2f 20 4d 41 58 28 20 2d 20 38 30 20 29 20 41   / MAX( - 80 ) A
36c10 53 20 63 6f 6c 31 2c 20 2b 20 43 4f 55 4e 54 28  S col1, + COUNT(
36c20 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41   * ) FROM tab2 A
36c30 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
36c40 4c 4c 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  LL..3....skipif 
36c50 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
36c60 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
36c70 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
36c80 32 33 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  233..SELECT ALL 
36c90 2d 20 4d 49 4e 20 28 20 41 4c 4c 20 2d 20 43 41  - MIN ( ALL - CA
36ca0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
36cb0 45 47 45 52 20 29 20 29 20 2b 20 2d 20 39 37 20  EGER ) ) + - 97 
36cc0 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20  - COUNT ( * ) / 
36cd0 4d 41 58 20 28 20 2d 20 38 30 20 29 20 41 53 20  MAX ( - 80 ) AS 
36ce0 63 6f 6c 31 2c 20 2b 20 43 4f 55 4e 54 20 28 20  col1, + COUNT ( 
36cf0 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  * ) FROM tab2 AS
36d00 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
36d10 4c 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  L..3....onlyif m
36d20 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
36d30 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
36d40 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
36d50 2d 31 32 33 34 0d 0a 53 45 4c 45 43 54 20 2d 20  -1234..SELECT - 
36d60 39 34 20 2a 20 2d 20 2b 20 43 4f 55 4e 54 28 20  94 * - + COUNT( 
36d70 63 6f 6c 31 20 29 20 2b 20 2d 20 43 4f 55 4e 54  col1 ) + - COUNT
36d80 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  ( * ) FROM tab2.
36d90 0a 2d 2d 2d 2d 0d 0a 32 37 39 0d 0a 0d 0a 73 6b  .----..279....sk
36da0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
36db0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
36dc0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
36dd0 65 6c 2d 31 32 33 34 0d 0a 53 45 4c 45 43 54 20  el-1234..SELECT 
36de0 2d 20 39 34 20 2a 20 2d 20 2b 20 43 4f 55 4e 54  - 94 * - + COUNT
36df0 20 28 20 63 6f 6c 31 20 29 20 2b 20 2d 20 43 4f   ( col1 ) + - CO
36e00 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
36e10 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 37 39 0d 0a  ab2..----..279..
36e20 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
36e30 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
36e40 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
36e50 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 33 35 0d  sort label-1235.
36e60 0a 53 45 4c 45 43 54 20 28 20 2d 20 53 55 4d 28  .SELECT ( - SUM(
36e70 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 29 20 29 20   ALL + col0 ) ) 
36e80 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
36e90 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 37 0d 0a 0d  0..----..-227...
36ea0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
36eb0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
36ec0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
36ed0 6c 61 62 65 6c 2d 31 32 33 35 0d 0a 53 45 4c 45  label-1235..SELE
36ee0 43 54 20 28 20 2d 20 53 55 4d 20 28 20 41 4c 4c  CT ( - SUM ( ALL
36ef0 20 2b 20 63 6f 6c 30 20 29 20 29 20 46 52 4f 4d   + col0 ) ) FROM
36f00 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
36f10 2d 2d 2d 0d 0a 2d 32 32 37 0d 0a 0d 0a 6f 6e 6c  ---..-227....onl
36f20 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
36f30 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
36f40 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
36f50 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
36f60 33 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  36..SELECT DISTI
36f70 4e 43 54 20 2b 20 2d 20 39 36 20 2a 20 2d 20 63  NCT + - 96 * - c
36f80 6f 6c 32 20 2b 20 2b 20 2b 20 31 39 20 2a 20 2d  ol2 + + + 19 * -
36f90 20 43 41 53 54 28 20 32 31 20 41 53 20 53 49 47   CAST( 21 AS SIG
36fa0 4e 45 44 20 29 20 2b 20 2d 20 39 36 20 41 53 20  NED ) + - 96 AS 
36fb0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63  col2 FROM tab0 c
36fc0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 30 31 37 0d  or0..----..4017.
36fd0 0a 34 36 35 0d 0a 39 30 30 39 0d 0a 0d 0a 73 6b  .465..9009....sk
36fe0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
36ff0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
37000 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
37010 65 6c 2d 31 32 33 36 0d 0a 53 45 4c 45 43 54 20  el-1236..SELECT 
37020 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 39 36 20  DISTINCT + - 96 
37030 2a 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 2b 20 31  * - col2 + + + 1
37040 39 20 2a 20 2d 20 43 41 53 54 20 28 20 32 31 20  9 * - CAST ( 21 
37050 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d  AS INTEGER ) + -
37060 20 39 36 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   96 AS col2 FROM
37070 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
37080 0d 0a 34 30 31 37 0d 0a 34 36 35 0d 0a 39 30 30  ..4017..465..900
37090 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
370a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
370b0 54 49 4e 43 54 20 2b 20 28 20 2d 20 63 6f 6c 32  TINCT + ( - col2
370c0 20 29 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 46 52   ) + + + col2 FR
370d0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
370e0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79  .----..0....only
370f0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
37100 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
37110 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
37120 61 62 65 6c 2d 31 32 33 38 0d 0a 53 45 4c 45 43  abel-1238..SELEC
37130 54 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43  T COUNT( DISTINC
37140 54 20 2d 20 2b 20 28 20 2b 20 63 6f 6c 31 20 29  T - + ( + col1 )
37150 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
37160 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
37170 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..3....skipif 
37180 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
37190 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
371a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
371b0 33 38 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  38..SELECT COUNT
371c0 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20   ( DISTINCT - + 
371d0 28 20 2b 20 63 6f 6c 31 20 29 20 29 20 41 53 20  ( + col1 ) ) AS 
371e0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
371f0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
37200 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
37210 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
37220 2d 20 63 6f 6c 31 20 2b 20 38 2c 20 2b 20 63 6f  - col1 + 8, + co
37230 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
37240 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
37250 2d 2d 0d 0a 2d 33 39 0d 0a 36 38 0d 0a 2d 36 0d  --..-39..68..-6.
37260 0a 39 36 0d 0a 33 0d 0a 35 39 0d 0a 0d 0a 71 75  .96..3..59....qu
37270 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
37280 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2d 20 2d  ELECT + col1 - -
37290 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   + col2 AS col0 
372a0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
372b0 0a 31 31 37 0d 0a 31 32 35 0d 0a 37 34 0d 0a 0d  .117..125..74...
372c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
372d0 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20  ..SELECT - col1 
372e0 2a 20 63 6f 6c 32 20 2d 20 2d 20 39 35 20 41 53  * col2 - - 95 AS
372f0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
37300 0a 2d 2d 2d 2d 0d 0a 2d 31 30 37 38 0d 0a 2d 32  .----..-1078..-2
37310 39 38 35 0d 0a 2d 33 37 39 31 0d 0a 0d 0a 73 6b  985..-3791....sk
37320 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
37330 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
37340 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
37350 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
37360 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
37370 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
37380 20 32 39 20 2b 20 2b 20 37 20 2a 20 2b 20 28 20   29 + + 7 * + ( 
37390 2d 20 2d 20 63 6f 6c 31 20 29 20 63 6f 6c 32 20  - - col1 ) col2 
373a0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
373b0 0a 33 38 36 0d 0a 34 39 38 0d 0a 35 36 38 0d 0a  .386..498..568..
373c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
373d0 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a  t..SELECT col1 *
373e0 20 36 20 2b 20 34 31 20 46 52 4f 4d 20 74 61 62   6 + 41 FROM tab
373f0 31 0d 0a 2d 2d 2d 2d 0d 0a 31 32 35 0d 0a 33 32  1..----..125..32
37400 33 0d 0a 37 31 0d 0a 0d 0a 71 75 65 72 79 20 49  3..71....query I
37410 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
37420 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
37430 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
37440 54 20 2b 20 36 31 20 3d 20 2b 20 2b 20 63 6f 6c  T + 61 = + + col
37450 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  0..----..9 value
37460 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63  s hashing to c6c
37470 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38  0a4111b36d04dbc8
37480 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d  11a11e4d54cad...
37490 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
374a0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
374b0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
374c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
374d0 6c 2d 31 32 34 35 0d 0a 53 45 4c 45 43 54 20 44  l-1245..SELECT D
374e0 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2b  ISTINCT + col0 +
374f0 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
37500 20 53 49 47 4e 45 44 20 29 20 2f 20 2b 20 36 31   SIGNED ) / + 61
37510 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
37520 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
37530 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
37540 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
37550 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
37560 62 65 6c 2d 31 32 34 35 0d 0a 53 45 4c 45 43 54  bel-1245..SELECT
37570 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30   DISTINCT + col0
37580 20 2b 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c   + + CAST ( NULL
37590 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2f 20   AS INTEGER ) / 
375a0 2b 20 36 31 20 46 52 4f 4d 20 74 61 62 30 20 63  + 61 FROM tab0 c
375b0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
375c0 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
375d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
375e0 34 31 20 2a 20 2b 20 2d 20 37 33 2c 20 2d 20 63  41 * + - 73, - c
375f0 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol2 AS col1 FROM
37600 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
37610 45 52 45 20 2d 20 39 36 20 2b 20 2d 20 63 6f 6c  ERE - 96 + - col
37620 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  2 IS NOT NULL..-
37630 2d 2d 2d 0d 0a 2d 32 39 39 33 0d 0a 2d 32 33 0d  ---..-2993..-23.
37640 0a 2d 32 39 39 33 0d 0a 2d 34 30 0d 0a 2d 32 39  .-2993..-40..-29
37650 39 33 0d 0a 2d 35 38 0d 0a 0d 0a 6f 6e 6c 79 69  93..-58....onlyi
37660 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
37670 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
37680 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
37690 62 65 6c 2d 31 32 34 37 0d 0a 53 45 4c 45 43 54  bel-1247..SELECT
376a0 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28   DISTINCT COUNT(
376b0 20 41 4c 4c 20 2b 20 2b 20 63 6f 6c 32 20 29 20   ALL + + col2 ) 
376c0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
376d0 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .3....skipif mys
376e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
376f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
37700 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 34 37 0d  sort label-1247.
37710 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
37720 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20 2b   COUNT ( ALL + +
37730 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62   col2 ) FROM tab
37740 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e  1..----..3....on
37750 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
37760 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
37770 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
37780 20 6c 61 62 65 6c 2d 31 32 34 38 0d 0a 53 45 4c   label-1248..SEL
37790 45 43 54 20 2d 20 53 55 4d 28 20 41 4c 4c 20 38  ECT - SUM( ALL 8
377a0 33 20 29 20 46 52 4f 4d 20 74 61 62 31 20 57 48  3 ) FROM tab1 WH
377b0 45 52 45 20 4e 4f 54 20 37 20 4e 4f 54 20 42 45  ERE NOT 7 NOT BE
377c0 54 57 45 45 4e 20 63 6f 6c 32 20 41 4e 44 20 4e  TWEEN col2 AND N
377d0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ULL..----..NULL.
377e0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
377f0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
37800 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
37810 74 20 6c 61 62 65 6c 2d 31 32 34 38 0d 0a 53 45  t label-1248..SE
37820 4c 45 43 54 20 2d 20 53 55 4d 20 28 20 41 4c 4c  LECT - SUM ( ALL
37830 20 38 33 20 29 20 46 52 4f 4d 20 74 61 62 31 20   83 ) FROM tab1 
37840 57 48 45 52 45 20 4e 4f 54 20 37 20 4e 4f 54 20  WHERE NOT 7 NOT 
37850 42 45 54 57 45 45 4e 20 63 6f 6c 32 20 41 4e 44  BETWEEN col2 AND
37860 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   NULL..----..NUL
37870 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  L....skipif post
37880 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
37890 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
378a0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
378b0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
378c0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
378d0 53 45 4c 45 43 54 20 63 6f 6c 32 20 41 53 20 63  SELECT col2 AS c
378e0 6f 6c 30 2c 20 2d 20 39 37 20 2a 20 2b 20 36 39  ol0, - 97 * + 69
378f0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
37900 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
37910 30 0d 0a 2d 36 36 39 33 0d 0a 34 37 0d 0a 2d 36  0..-6693..47..-6
37920 36 39 33 0d 0a 39 39 0d 0a 2d 36 36 39 33 0d 0a  693..99..-6693..
37930 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
37940 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
37950 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
37960 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
37970 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
37980 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
37990 43 54 20 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f  CT col0 col1 FRO
379a0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
379b0 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 3c 3e  HERE NOT col1 <>
379c0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
379d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
379e0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 35 34 20  SELECT ALL - 54 
379f0 2a 20 2d 20 2d 20 63 6f 6c 30 20 2d 20 2d 20 2d  * - - col0 - - -
37a00 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
37a10 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
37a20 0a 2d 2d 2d 2d 0d 0a 2d 32 38 30 35 0d 0a 2d 34  .----..-2805..-4
37a30 36 37 35 0d 0a 2d 35 30 30 35 0d 0a 0d 0a 6f 6e  675..-5005....on
37a40 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
37a50 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
37a60 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
37a70 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
37a80 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
37a90 2d 31 32 35 32 0d 0a 53 45 4c 45 43 54 20 2b 20  -1252..SELECT + 
37aa0 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
37ab0 53 49 47 4e 45 44 20 29 20 2a 20 43 4f 55 4e 54  SIGNED ) * COUNT
37ac0 28 20 2a 20 29 20 2d 20 2d 20 2d 20 43 4f 55 4e  ( * ) - - - COUN
37ad0 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46  T( * ) AS col2 F
37ae0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
37af0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
37b00 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
37b10 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
37b20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
37b30 61 62 65 6c 2d 31 32 35 32 0d 0a 53 45 4c 45 43  abel-1252..SELEC
37b40 54 20 2b 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  T + - CAST ( NUL
37b50 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  L AS INTEGER ) *
37b60 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20 2d   COUNT ( * ) - -
37b70 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
37b80 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
37b90 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
37ba0 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  NULL....skipif p
37bb0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
37bc0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
37bd0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
37be0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
37bf0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
37c00 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
37c10 54 20 2b 20 2b 20 39 34 20 2a 20 2d 20 63 6f 6c  T + + 94 * - col
37c20 31 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 63 6f 6c  1 * - + col1 col
37c30 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
37c40 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 34 32 34  or0..----..18424
37c50 0d 0a 32 30 37 36 34 36 0d 0a 32 33 35 30 0d 0a  ..207646..2350..
37c60 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
37c70 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
37c80 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
37c90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
37ca0 65 6c 2d 31 32 35 34 0d 0a 53 45 4c 45 43 54 20  el-1254..SELECT 
37cb0 41 4c 4c 20 38 38 20 2a 20 2b 20 43 41 53 54 28  ALL 88 * + CAST(
37cc0 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
37cd0 29 20 2a 20 2b 20 2b 20 36 20 63 6f 6c 31 20 46  ) * + + 6 col1 F
37ce0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
37cf0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
37d00 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  LL..NULL....skip
37d10 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
37d20 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
37d30 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
37d40 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
37d50 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
37d60 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
37d70 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
37d80 6f 72 74 20 6c 61 62 65 6c 2d 31 32 35 34 0d 0a  ort label-1254..
37d90 53 45 4c 45 43 54 20 41 4c 4c 20 38 38 20 2a 20  SELECT ALL 88 * 
37da0 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
37db0 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 2b   INTEGER ) * + +
37dc0 20 36 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   6 col1 FROM tab
37dd0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
37de0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
37df0 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  L....query III r
37e00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
37e10 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  LL * FROM tab1 A
37e20 53 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c  S cor0 WHERE col
37e30 30 20 2f 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 2b  0 / + col0 + + +
37e40 20 63 6f 6c 31 20 3d 20 2d 20 63 6f 6c 30 20 2a   col1 = - col0 *
37e50 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   col2..----....q
37e60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
37e70 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
37e80 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  2 FROM tab2 cor0
37e90 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c   WHERE NOT + col
37ea0 30 20 49 4e 20 28 20 63 6f 6c 30 20 29 0d 0a 2d  0 IN ( col0 )..-
37eb0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
37ec0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
37ed0 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20  DISTINCT + col1 
37ee0 41 53 20 63 6f 6c 31 2c 20 63 6f 6c 30 20 46 52  AS col1, col0 FR
37ef0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
37f00 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 39 37 0d 0a 32 31  .----..1..97..21
37f10 0d 0a 38 37 0d 0a 38 31 0d 0a 31 35 0d 0a 0d 0a  ..87..81..15....
37f20 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
37f30 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
37f40 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
37f50 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
37f60 2d 31 32 35 38 0d 0a 53 45 4c 45 43 54 20 44 49  -1258..SELECT DI
37f70 53 54 49 4e 43 54 20 2d 20 28 20 2d 20 2d 20 43  STINCT - ( - - C
37f80 41 53 54 28 20 2b 20 63 6f 6c 31 20 41 53 20 53  AST( + col1 AS S
37f90 49 47 4e 45 44 20 29 20 29 20 41 53 20 63 6f 6c  IGNED ) ) AS col
37fa0 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
37fb0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a  or0..----..-51..
37fc0 2d 36 37 0d 0a 2d 37 37 0d 0a 0d 0a 73 6b 69 70  -67..-77....skip
37fd0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
37fe0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
37ff0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
38000 2d 31 32 35 38 0d 0a 53 45 4c 45 43 54 20 44 49  -1258..SELECT DI
38010 53 54 49 4e 43 54 20 2d 20 28 20 2d 20 2d 20 43  STINCT - ( - - C
38020 41 53 54 20 28 20 2b 20 63 6f 6c 31 20 41 53 20  AST ( + col1 AS 
38030 49 4e 54 45 47 45 52 20 29 20 29 20 41 53 20 63  INTEGER ) ) AS c
38040 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
38050 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   cor0..----..-51
38060 0d 0a 2d 36 37 0d 0a 2d 37 37 0d 0a 0d 0a 6f 6e  ..-67..-77....on
38070 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
38080 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
38090 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
380a0 20 6c 61 62 65 6c 2d 31 32 35 39 0d 0a 53 45 4c   label-1259..SEL
380b0 45 43 54 20 2d 20 53 55 4d 28 20 2d 20 63 6f 6c  ECT - SUM( - col
380c0 32 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2a  2 ) * + COUNT( *
380d0 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2b 20   ) * + COUNT( + 
380e0 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 20 46  col1 ) AS col0 F
380f0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
38100 0d 0a 2d 2d 2d 2d 0d 0a 31 34 30 34 0d 0a 0d 0a  ..----..1404....
38110 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
38120 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
38130 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
38140 61 62 65 6c 2d 31 32 35 39 0d 0a 53 45 4c 45 43  abel-1259..SELEC
38150 54 20 2d 20 53 55 4d 20 28 20 2d 20 63 6f 6c 32  T - SUM ( - col2
38160 20 29 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a   ) * + COUNT ( *
38170 20 29 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2b   ) * + COUNT ( +
38180 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 20   col1 ) AS col0 
38190 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
381a0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 30 34 0d 0a 0d  0..----..1404...
381b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
381c0 0d 0a 53 45 4c 45 43 54 20 2d 20 34 30 20 2b 20  ..SELECT - 40 + 
381d0 2d 20 2d 20 35 36 20 46 52 4f 4d 20 74 61 62 32  - - 56 FROM tab2
381e0 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a 31 36 0d 0a  ..----..16..16..
381f0 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  16....query I ro
38200 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
38210 6c 32 20 2b 20 39 20 46 52 4f 4d 20 74 61 62 31  l2 + 9 FROM tab1
38220 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35 0d 0a 36 38 0d  ..----..105..68.
38230 0a 37 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .77....query I r
38240 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
38250 4c 4c 20 32 38 20 2b 20 2d 20 28 20 2b 20 35 32  LL 28 + - ( + 52
38260 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
38270 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 0d  cor0..----..-24.
38280 0a 2d 32 34 0d 0a 2d 32 34 0d 0a 0d 0a 71 75 65  .-24..-24....que
38290 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
382a0 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
382b0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
382c0 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 3c 3e  HERE NOT col0 <>
382d0 20 28 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d   ( + col2 )..---
382e0 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
382f0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
38300 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
38310 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
38320 20 6c 61 62 65 6c 2d 31 32 36 34 0d 0a 53 45 4c   label-1264..SEL
38330 45 43 54 20 63 6f 6c 30 20 2b 20 63 6f 6c 32 20  ECT col0 + col2 
38340 2a 20 2d 20 28 20 63 6f 6c 30 20 29 20 2b 20 2b  * - ( col0 ) + +
38350 20 2b 20 63 6f 6c 31 20 44 49 56 20 2d 20 2d 20   + col1 DIV - - 
38360 63 6f 6c 30 2c 20 63 6f 6c 32 20 41 53 20 63 6f  col0, col2 AS co
38370 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
38380 2d 2d 0d 0a 2d 34 38 34 35 0d 0a 39 36 0d 0a 2d  --..-4845..96..-
38390 34 39 33 30 0d 0a 35 39 0d 0a 2d 36 30 39 37 0d  4930..59..-6097.
383a0 0a 36 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .68....skipif my
383b0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
383c0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
383d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36  owsort label-126
383e0 34 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2b  4..SELECT col0 +
383f0 20 63 6f 6c 32 20 2a 20 2d 20 28 20 63 6f 6c 30   col2 * - ( col0
38400 20 29 20 2b 20 2b 20 2b 20 63 6f 6c 31 20 2f 20   ) + + + col1 / 
38410 2d 20 2d 20 63 6f 6c 30 2c 20 63 6f 6c 32 20 41  - - col0, col2 A
38420 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
38430 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 34 35 0d 0a 39  ..----..-4845..9
38440 36 0d 0a 2d 34 39 33 30 0d 0a 35 39 0d 0a 2d 36  6..-4930..59..-6
38450 30 39 37 0d 0a 36 38 0d 0a 0d 0a 6f 6e 6c 79 69  097..68....onlyi
38460 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
38470 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
38480 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
38490 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36 35  wsort label-1265
384a0 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20  ..SELECT - col1 
384b0 2b 20 2b 20 36 36 20 2b 20 2b 20 43 41 53 54 28  + + 66 + + CAST(
384c0 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
384d0 29 20 2a 20 37 34 20 2a 20 2b 20 63 6f 6c 32 20  ) * 74 * + col2 
384e0 2a 20 31 34 20 2b 20 2b 20 63 6f 6c 30 20 41 53  * 14 + + col0 AS
384f0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
38500 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
38510 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
38520 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
38530 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
38540 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
38550 61 62 65 6c 2d 31 32 36 35 0d 0a 53 45 4c 45 43  abel-1265..SELEC
38560 54 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 36 36 20  T - col1 + + 66 
38570 2b 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + + CAST ( NULL 
38580 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 37  AS INTEGER ) * 7
38590 34 20 2a 20 2b 20 63 6f 6c 32 20 2a 20 31 34 20  4 * + col2 * 14 
385a0 2b 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  + + col0 AS col0
385b0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
385c0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
385d0 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  L..NULL....onlyi
385e0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
385f0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
38600 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
38610 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36 36  wsort label-1266
38620 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20  ..SELECT - col1 
38630 2b 20 63 6f 6c 32 20 44 49 56 20 2b 20 63 6f 6c  + col2 DIV + col
38640 31 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  1 FROM tab1 cor0
38650 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d 38 0d  ..----..-46..-8.
38660 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .6....skipif mys
38670 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
38680 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
38690 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36 36 0d  sort label-1266.
386a0 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2b  .SELECT - col1 +
386b0 20 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 31 20 46   col2 / + col1 F
386c0 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
386d0 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d 38 0d 0a 36 0d  ---..-46..-8..6.
386e0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
386f0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
38700 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  ax: ..query II r
38710 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36  owsort label-126
38720 37 0d 0a 53 45 4c 45 43 54 20 2b 20 38 34 20 2b  7..SELECT + 84 +
38730 20 33 31 20 2b 20 2b 20 38 37 20 41 53 20 63 6f   31 + + 87 AS co
38740 6c 31 2c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  l1, + COUNT( * )
38750 20 2a 20 2d 20 37 38 20 46 52 4f 4d 20 74 61 62   * - 78 FROM tab
38760 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
38770 0a 32 30 32 0d 0a 2d 32 33 34 0d 0a 0d 0a 73 6b  .202..-234....sk
38780 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
38790 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
387a0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
387b0 62 65 6c 2d 31 32 36 37 0d 0a 53 45 4c 45 43 54  bel-1267..SELECT
387c0 20 2b 20 38 34 20 2b 20 33 31 20 2b 20 2b 20 38   + 84 + 31 + + 8
387d0 37 20 41 53 20 63 6f 6c 31 2c 20 2b 20 43 4f 55  7 AS col1, + COU
387e0 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 37 38 20  NT ( * ) * - 78 
387f0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
38800 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 32 0d 0a 2d 32  0..----..202..-2
38810 33 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  34....query I ro
38820 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
38830 53 54 49 4e 43 54 20 2b 20 32 36 20 2b 20 2b 20  STINCT + 26 + + 
38840 63 6f 6c 31 20 2b 20 33 38 20 41 53 20 63 6f 6c  col1 + 38 AS col
38850 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
38860 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 35 0d 0a  or0..----..145..
38870 36 35 0d 0a 38 35 0d 0a 0d 0a 71 75 65 72 79 20  65..85....query 
38880 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
38890 54 20 63 6f 6c 32 20 2d 20 2d 20 2b 20 63 6f 6c  T col2 - - + col
388a0 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
388b0 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
388c0 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  E NULL IS NOT NU
388d0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
388e0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
388f0 45 43 54 20 41 4c 4c 20 36 30 20 2b 20 2d 20 63  ECT ALL 60 + - c
38900 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol0 AS col1 FROM
38910 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
38920 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 34 0d 0a 31 34  ---..-15..-4..14
38930 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
38940 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
38950 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
38960 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
38970 20 2b 20 63 6f 6c 31 20 3c 20 4e 55 4c 4c 0d 0a   + col1 < NULL..
38980 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
38990 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
389a0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
389b0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
389c0 6c 2d 31 32 37 32 0d 0a 53 45 4c 45 43 54 20 2b  l-1272..SELECT +
389d0 20 2d 20 33 31 2c 20 53 55 4d 28 20 41 4c 4c 20   - 31, SUM( ALL 
389e0 38 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  81 ) AS col2 FRO
389f0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
38a00 48 45 52 45 20 2d 20 63 6f 6c 31 20 49 53 20 4e  HERE - col1 IS N
38a10 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d  OT NULL..----..-
38a20 33 31 0d 0a 32 34 33 0d 0a 0d 0a 73 6b 69 70 69  31..243....skipi
38a30 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
38a40 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
38a50 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
38a60 2d 31 32 37 32 0d 0a 53 45 4c 45 43 54 20 2b 20  -1272..SELECT + 
38a70 2d 20 33 31 2c 20 53 55 4d 20 28 20 41 4c 4c 20  - 31, SUM ( ALL 
38a80 38 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  81 ) AS col2 FRO
38a90 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
38aa0 48 45 52 45 20 2d 20 63 6f 6c 31 20 49 53 20 4e  HERE - col1 IS N
38ab0 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d  OT NULL..----..-
38ac0 33 31 0d 0a 32 34 33 0d 0a 0d 0a 71 75 65 72 79  31..243....query
38ad0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
38ae0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
38af0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
38b00 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f  0 WHERE NOT - co
38b10 6c 32 20 2a 20 2b 20 63 6f 6c 32 20 2b 20 2d 20  l2 * + col2 + - 
38b20 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a  - col2 IS NULL..
38b30 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
38b40 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37  ashing to c4b427
38b50 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30  65dff94eaaa46040
38b60 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75  e537fb43b7....qu
38b70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
38b80 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
38b90 20 31 39 20 2d 20 2d 20 63 6f 6c 32 20 2a 20 63   19 - - col2 * c
38ba0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
38bb0 2d 2d 2d 0d 0a 31 31 39 0d 0a 32 32 32 38 0d 0a  ---..119..2228..
38bc0 39 38 32 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  9820....query II
38bd0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
38be0 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
38bf0 31 20 57 48 45 52 45 20