sqllogictest
Hex Artifact Content
Not logged in

Artifact a8af02ac3a1ac67c4cb942895361552fa95f1b58:


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 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
02d0: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
02e0: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
02f0: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
0300: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
0310: 20 6c 61 62 65 6c 2d 30 0d 0a 53 45 4c 45 43 54   label-0..SELECT
0320: 20 2d 20 2b 20 4d 41 58 28 20 44 49 53 54 49 4e   - + MAX( DISTIN
0330: 43 54 20 2d 20 43 41 53 54 28 20 2b 20 2b 20 63  CT - CAST( + + c
0340: 6f 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol0 AS SIGNED ) 
0350: 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  ) col2 FROM tab0
0360: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
0370: 31 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  15....skipif mys
0380: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
0390: 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
03a0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
03b0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
03c0: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
03d0: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
03e0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
03f0: 62 65 6c 2d 30 0d 0a 53 45 4c 45 43 54 20 2d 20  bel-0..SELECT - 
0400: 2b 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54  + MAX ( DISTINCT
0410: 20 2d 20 43 41 53 54 20 28 20 2b 20 2b 20 63 6f   - CAST ( + + co
0420: 6c 30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  l0 AS INTEGER ) 
0430: 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  ) col2 FROM tab0
0440: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
0450: 31 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  15....onlyif mys
0460: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
0470: 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20  : DECIMAL type: 
0480: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0490: 74 20 6c 61 62 65 6c 2d 31 0d 0a 53 45 4c 45 43  t label-1..SELEC
04a0: 54 20 41 4c 4c 20 2d 20 41 56 47 20 28 20 44 49  T ALL - AVG ( DI
04b0: 53 54 49 4e 43 54 20 2b 20 2b 20 37 38 20 29 20  STINCT + + 78 ) 
04c0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
04d0: 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
04e0: 4e 4f 54 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  NOT + CAST( NULL
04f0: 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2a 20   AS DECIMAL ) * 
0500: 2b 20 2b 20 32 30 20 2f 20 63 6f 6c 31 20 2b 20  + + 20 / col1 + 
0510: 2d 20 38 33 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  - 83 IS NULL..--
0520: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
0530: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
0540: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
0550: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
0560: 2d 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  -1..SELECT ALL -
0570: 20 41 56 47 20 28 20 44 49 53 54 49 4e 43 54 20   AVG ( DISTINCT 
0580: 2b 20 2b 20 37 38 20 29 20 41 53 20 63 6f 6c 30  + + 78 ) AS col0
0590: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
05a0: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 43  r0 WHERE NOT + C
05b0: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45  AST ( NULL AS RE
05c0: 41 4c 20 29 20 2a 20 2b 20 2b 20 32 30 20 2f 20  AL ) * + + 20 / 
05d0: 63 6f 6c 31 20 2b 20 2d 20 38 33 20 49 53 20 4e  col1 + - 83 IS N
05e0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ULL..----..NULL.
05f0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
0600: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
0610: 4e 43 54 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 2d  NCT - col2 + - -
0620: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
0630: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32  AS cor0..----..2
0640: 38 0d 0a 33 37 0d 0a 39 0d 0a 0d 0a 73 6b 69 70  8..37..9....skip
0650: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
0660: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
0670: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
0680: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
0690: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
06a0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
06b0: 20 2d 20 38 32 20 2b 20 63 6f 6c 31 20 2b 20 2b   - 82 + col1 + +
06c0: 20 2d 20 38 38 20 2b 20 2b 20 63 6f 6c 31 20 63   - 88 + + col1 c
06d0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
06e0: 2d 2d 2d 0d 0a 2d 31 34 32 0d 0a 2d 31 36 30 0d  ---..-142..-160.
06f0: 0a 2d 37 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-76....onlyif m
0700: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
0710: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
0720: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
0730: 72 74 20 6c 61 62 65 6c 2d 34 0d 0a 53 45 4c 45  rt label-4..SELE
0740: 43 54 20 2b 20 37 30 20 44 49 56 20 2d 20 63 6f  CT + 70 DIV - co
0750: 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l2 AS col1 FROM 
0760: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab2..----..-1..
0770: 2d 31 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66  -1..-3....skipif
0780: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
0790: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
07a0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
07b0: 0d 0a 53 45 4c 45 43 54 20 2b 20 37 30 20 2f 20  ..SELECT + 70 / 
07c0: 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  - col2 AS col1 F
07d0: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
07e0: 2d 31 0d 0a 2d 31 0d 0a 2d 33 0d 0a 0d 0a 6f 6e  -1..-1..-3....on
07f0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
0800: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
0810: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
0820: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
0830: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32 37 20  ..SELECT ALL 27 
0840: 2a 20 63 6f 6c 30 20 44 49 56 20 2b 20 2b 20 39  * col0 DIV + + 9
0850: 37 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  7 FROM tab1 AS c
0860: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 32  or0..----..14..2
0870: 33 0d 0a 32 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  3..25....skipif 
0880: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
0890: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
08a0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 0d  rowsort label-5.
08b0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 32 37 20 2a  .SELECT ALL 27 *
08c0: 20 63 6f 6c 30 20 2f 20 2b 20 2b 20 39 37 20 46   col0 / + + 97 F
08d0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
08e0: 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 32 33 0d 0a  ..----..14..23..
08f0: 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  25....query I ro
0900: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
0910: 63 6f 6c 32 20 2b 20 2b 20 2d 20 36 20 41 53 20  col2 + + - 6 AS 
0920: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
0930: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37  S cor0..----..17
0940: 0d 0a 33 34 0d 0a 35 32 0d 0a 0d 0a 6f 6e 6c 79  ..34..52....only
0950: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
0960: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
0970: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
0980: 61 62 65 6c 2d 37 0d 0a 53 45 4c 45 43 54 20 2d  abel-7..SELECT -
0990: 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20   COUNT( * ) + - 
09a0: 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
09b0: 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
09c0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 0d 0a  cor0..----..-6..
09d0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
09e0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
09f0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
0a00: 20 6c 61 62 65 6c 2d 37 0d 0a 53 45 4c 45 43 54   label-7..SELECT
0a10: 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b   - COUNT ( * ) +
0a20: 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
0a30: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
0a40: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
0a50: 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  -6....query I ro
0a60: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
0a70: 63 6f 6c 32 20 2b 20 63 6f 6c 30 20 2b 20 33 35  col2 + col0 + 35
0a80: 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   * col1 FROM tab
0a90: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
0aa0: 0a 32 33 31 0d 0a 32 38 39 37 0d 0a 38 33 32 0d  .231..2897..832.
0ab0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
0ac0: 72 74 0d 0a 53 45 4c 45 43 54 20 38 34 20 2b 20  rt..SELECT 84 + 
0ad0: 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  - col0 FROM tab1
0ae0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
0af0: 2d 31 0d 0a 2d 37 0d 0a 33 33 0d 0a 0d 0a 71 75  -1..-7..33....qu
0b00: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
0b10: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31  ELECT ALL + col1
0b20: 20 2b 20 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20   + ( + - col1 ) 
0b30: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
0b40: 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  0..----..0..0..0
0b50: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
0b60: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
0b70: 63 6f 6c 32 20 2a 20 63 6f 6c 30 20 2a 20 63 6f  col2 * col0 * co
0b80: 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
0b90: 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
0ba0: 0a 31 36 33 38 34 30 0d 0a 33 32 36 32 35 30 0d  .163840..326250.
0bb0: 0a 34 38 36 36 38 0d 0a 0d 0a 71 75 65 72 79 20  .48668....query 
0bc0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
0bd0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 32  T DISTINCT - + 2
0be0: 33 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 2d  3 + - col2 * - -
0bf0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
0c00: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
0c10: 34 39 31 39 0d 0a 2d 35 30 33 38 0d 0a 2d 36 32  4919..-5038..-62
0c20: 31 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  11....onlyif mys
0c30: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
0c40: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
0c50: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
0c60: 20 6c 61 62 65 6c 2d 31 33 0d 0a 53 45 4c 45 43   label-13..SELEC
0c70: 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
0c80: 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30  SIGNED ) AS col0
0c90: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
0ca0: 72 30 20 57 48 45 52 45 20 63 6f 6c 32 20 49 53  r0 WHERE col2 IS
0cb0: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73   NULL..----....s
0cc0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
0cd0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
0ce0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
0cf0: 62 65 6c 2d 31 33 0d 0a 53 45 4c 45 43 54 20 43  bel-13..SELECT C
0d00: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
0d10: 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 30 20  TEGER ) AS col0 
0d20: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
0d30: 30 20 57 48 45 52 45 20 63 6f 6c 32 20 49 53 20  0 WHERE col2 IS 
0d40: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
0d50: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
0d60: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
0d70: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
0d80: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
0d90: 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  4..SELECT ALL + 
0da0: 63 6f 6c 32 20 2a 20 2d 20 2d 20 43 41 53 54 28  col2 * - - CAST(
0db0: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
0dc0: 29 20 2a 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 31  ) * + col1 * + 1
0dd0: 38 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  8 + col0 FROM ta
0de0: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b2..----..NULL..
0df0: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
0e00: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
0e10: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
0e20: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
0e30: 65 6c 2d 31 34 0d 0a 53 45 4c 45 43 54 20 41 4c  el-14..SELECT AL
0e40: 4c 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 2d 20 43  L + col2 * - - C
0e50: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
0e60: 54 45 47 45 52 20 29 20 2a 20 2b 20 63 6f 6c 31  TEGER ) * + col1
0e70: 20 2a 20 2b 20 31 38 20 2b 20 63 6f 6c 30 20 46   * + 18 + col0 F
0e80: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
0e90: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
0ea0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
0eb0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 36 35 20  sort..SELECT 65 
0ec0: 41 53 20 63 6f 6c 31 2c 20 2d 20 31 32 20 41 53  AS col1, - 12 AS
0ed0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
0ee0: 0a 2d 2d 2d 2d 0d 0a 36 35 0d 0a 2d 31 32 0d 0a  .----..65..-12..
0ef0: 36 35 0d 0a 2d 31 32 0d 0a 36 35 0d 0a 2d 31 32  65..-12..65..-12
0f00: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
0f10: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
0f20: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
0f30: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 0d  owsort label-16.
0f40: 0a 53 45 4c 45 43 54 20 2d 20 2b 20 4d 49 4e 28  .SELECT - + MIN(
0f50: 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c 30 20 29 20   ALL - - col0 ) 
0f60: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
0f70: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 0d 0a  0..----..-46....
0f80: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
0f90: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
0fa0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
0fb0: 61 62 65 6c 2d 31 36 0d 0a 53 45 4c 45 43 54 20  abel-16..SELECT 
0fc0: 2d 20 2b 20 4d 49 4e 20 28 20 41 4c 4c 20 2d 20  - + MIN ( ALL - 
0fd0: 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  - col0 ) FROM ta
0fe0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
0ff0: 0d 0a 2d 34 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-46....onlyif 
1000: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
1010: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
1020: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
1030: 65 6c 2d 31 37 0d 0a 53 45 4c 45 43 54 20 44 49  el-17..SELECT DI
1040: 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20  STINCT COUNT( * 
1050: 29 20 63 6f 6c 30 2c 20 37 32 20 2a 20 2d 20 32  ) col0, 72 * - 2
1060: 36 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  6 FROM tab0 cor0
1070: 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 31 38 37 32  ..----..3..-1872
1080: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1090: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
10a0: 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
10b0: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
10c0: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
10d0: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
10e0: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
10f0: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
1100: 65 6c 2d 31 37 0d 0a 53 45 4c 45 43 54 20 44 49  el-17..SELECT DI
1110: 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a  STINCT COUNT ( *
1120: 20 29 20 63 6f 6c 30 2c 20 37 32 20 2a 20 2d 20   ) col0, 72 * - 
1130: 32 36 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  26 FROM tab0 cor
1140: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 31 38 37  0..----..3..-187
1150: 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  2....onlyif mysq
1160: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
1170: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
1180: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38  rowsort label-18
1190: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
11a0: 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  T - COUNT( * ) *
11b0: 20 2d 20 2d 20 33 38 20 41 53 20 63 6f 6c 30 20   - - 38 AS col0 
11c0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
11d0: 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
11e0: 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  0 AS cor1..----.
11f0: 0a 2d 33 34 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-342....skipif 
1200: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1210: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1220: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38  rowsort label-18
1230: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1240: 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T - COUNT ( * ) 
1250: 2a 20 2d 20 2d 20 33 38 20 41 53 20 63 6f 6c 30  * - - 38 AS col0
1260: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1270: 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
1280: 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b0 AS cor1..----
1290: 0d 0a 2d 33 34 32 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..-342....onlyif
12a0: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
12b0: 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
12c0: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
12d0: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
12e0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 0d  owsort label-19.
12f0: 0a 53 45 4c 45 43 54 20 43 41 53 54 28 20 4d 41  .SELECT CAST( MA
1300: 58 28 20 2d 20 33 35 20 29 20 41 53 20 53 49 47  X( - 35 ) AS SIG
1310: 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  NED ) FROM tab2.
1320: 0a 2d 2d 2d 2d 0d 0a 2d 33 35 0d 0a 0d 0a 73 6b  .----..-35....sk
1330: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1340: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1350: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1360: 65 6c 2d 31 39 0d 0a 53 45 4c 45 43 54 20 43 41  el-19..SELECT CA
1370: 53 54 20 28 20 4d 41 58 20 28 20 2d 20 33 35 20  ST ( MAX ( - 35 
1380: 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46  ) AS INTEGER ) F
1390: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
13a0: 2d 33 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -35....onlyif my
13b0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
13c0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
13d0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
13e0: 32 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  20..SELECT DISTI
13f0: 4e 43 54 20 2b 20 2d 20 4d 41 58 28 20 41 4c 4c  NCT + - MAX( ALL
1400: 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   + col0 ) FROM t
1410: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
1420: 2d 0d 0a 2d 37 35 0d 0a 0d 0a 73 6b 69 70 69 66  -..-75....skipif
1430: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1440: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1450: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
1460: 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
1470: 43 54 20 2b 20 2d 20 4d 41 58 20 28 20 41 4c 4c  CT + - MAX ( ALL
1480: 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   + col0 ) FROM t
1490: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
14a0: 2d 0d 0a 2d 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  -..-75....onlyif
14b0: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
14c0: 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79  ntax: DECIMAL ty
14d0: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
14e0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31 0d 0a  wsort label-21..
14f0: 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20  SELECT + col2 * 
1500: 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
1510: 44 45 43 49 4d 41 4c 20 29 20 2a 20 2d 20 2b 20  DECIMAL ) * - + 
1520: 63 6f 6c 31 20 2a 20 2d 20 31 33 20 2a 20 2b 20  col1 * - 13 * + 
1530: 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
1540: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
1550: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
1560: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1570: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1580: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31 0d 0a  wsort label-21..
1590: 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20  SELECT + col2 * 
15a0: 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
15b0: 20 52 45 41 4c 20 29 20 2a 20 2d 20 2b 20 63 6f   REAL ) * - + co
15c0: 6c 31 20 2a 20 2d 20 31 33 20 2a 20 2b 20 32 20  l1 * - 13 * + 2 
15d0: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
15e0: 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
15f0: 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  L....query II ro
1600: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
1610: 28 20 2b 20 63 6f 6c 31 20 29 20 2a 20 32 39 20  ( + col1 ) * 29 
1620: 41 53 20 63 6f 6c 30 2c 20 2b 20 38 20 41 53 20  AS col0, + 8 AS 
1630: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
1640: 2d 2d 2d 2d 0d 0a 31 33 36 33 0d 0a 38 0d 0a 31  ----..1363..8..1
1650: 34 35 0d 0a 38 0d 0a 34 30 36 0d 0a 38 0d 0a 0d  45..8..406..8...
1660: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1670: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1680: 54 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  T + + col1 FROM 
1690: 74 61 62 31 20 57 48 45 52 45 20 2b 20 2d 20 63  tab1 WHERE + - c
16a0: 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32 20 2a 20 2b  ol1 * + col2 * +
16b0: 20 34 34 20 2d 20 2d 20 2b 20 38 31 20 49 53 20   44 - - + 81 IS 
16c0: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
16d0: 31 34 0d 0a 34 37 0d 0a 35 0d 0a 0d 0a 6f 6e 6c  14..47..5....onl
16e0: 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
16f0: 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
1700: 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
1710: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34  rowsort label-24
1720: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1730: 54 20 2d 20 33 32 20 2b 20 2d 20 63 6f 6c 30 20  T - 32 + - col0 
1740: 44 49 56 20 28 20 63 6f 6c 31 20 29 20 41 53 20  DIV ( col1 ) AS 
1750: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
1760: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
1770: 32 39 0d 0a 2d 33 32 0d 0a 2d 33 36 0d 0a 0d 0a  29..-32..-36....
1780: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1790: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
17a0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
17b0: 61 62 65 6c 2d 32 34 0d 0a 53 45 4c 45 43 54 20  abel-24..SELECT 
17c0: 44 49 53 54 49 4e 43 54 20 2d 20 33 32 20 2b 20  DISTINCT - 32 + 
17d0: 2d 20 63 6f 6c 30 20 2f 20 28 20 63 6f 6c 31 20  - col0 / ( col1 
17e0: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
17f0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
1800: 2d 0d 0a 2d 31 32 39 0d 0a 2d 33 32 0d 0a 2d 33  -..-129..-32..-3
1810: 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
1820: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1830: 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 2a 20 2d  TINCT + col2 * -
1840: 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 41   col0 * - col0 A
1850: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
1860: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 35   cor0..----..105
1870: 37 35 0d 0a 37 35 36 39 30 0d 0a 39 33 31 34 39  75..75690..93149
1880: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
1890: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  sort..SELECT - +
18a0: 20 38 32 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 2d   82 * - + col1 -
18b0: 20 2d 20 38 31 20 2b 20 2b 20 2d 20 28 20 63 6f   - 81 + + - ( co
18c0: 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l0 ) AS col2 FRO
18d0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
18e0: 2d 2d 2d 2d 0d 0a 31 37 31 36 0d 0a 36 36 0d 0a  ----..1716..66..
18f0: 36 37 30 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49  6708....query II
1900: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1910: 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53  T * FROM tab2 AS
1920: 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20 31 33   cor0 WHERE - 13
1930: 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 63 6f 6c 30   + + col2 + col0
1940: 20 3d 20 2b 20 63 6f 6c 30 20 2b 20 63 6f 6c 32   = + col0 + col2
1950: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
1960: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1970: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63  T DISTINCT - - c
1980: 6f 6c 31 20 2b 20 2b 20 36 30 20 41 53 20 63 6f  ol1 + + 60 AS co
1990: 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
19a0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 37 0d  cor0..----..107.
19b0: 0a 36 35 0d 0a 37 34 0d 0a 0d 0a 6f 6e 6c 79 69  .65..74....onlyi
19c0: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
19d0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
19e0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19f0: 62 65 6c 2d 32 39 0d 0a 53 45 4c 45 43 54 20 44  bel-29..SELECT D
1a00: 49 53 54 49 4e 43 54 20 2b 20 31 36 20 2d 20 2b  ISTINCT + 16 - +
1a10: 20 2d 20 53 55 4d 28 20 41 4c 4c 20 2d 20 63 6f   - SUM( ALL - co
1a20: 6c 30 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74  l0 ) col2 FROM t
1a30: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 39 0d  ab2..----..-169.
1a40: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1a50: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1a60: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
1a70: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
1a80: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
1a90: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
1aa0: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
1ab0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1ac0: 2d 32 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -29..SELECT DIST
1ad0: 49 4e 43 54 20 2b 20 31 36 20 2d 20 2b 20 2d 20  INCT + 16 - + - 
1ae0: 53 55 4d 20 28 20 41 4c 4c 20 2d 20 63 6f 6c 30  SUM ( ALL - col0
1af0: 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
1b00: 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 39 0d 0a 0d  2..----..-169...
1b10: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1b20: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1b30: 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  : DIV for intege
1b40: 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
1b50: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1b60: 62 65 6c 2d 33 30 0d 0a 53 45 4c 45 43 54 20 2b  bel-30..SELECT +
1b70: 20 31 20 44 49 56 20 4d 49 4e 28 20 44 49 53 54   1 DIV MIN( DIST
1b80: 49 4e 43 54 20 2d 20 35 35 20 29 20 46 52 4f 4d  INCT - 55 ) FROM
1b90: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52   tab1 AS cor0 CR
1ba0: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41 53  OSS JOIN tab1 AS
1bb0: 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor1..----..0..
1bc0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1bd0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1be0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1bf0: 20 6c 61 62 65 6c 2d 33 30 0d 0a 53 45 4c 45 43   label-30..SELEC
1c00: 54 20 2b 20 31 20 2f 20 4d 49 4e 20 28 20 44 49  T + 1 / MIN ( DI
1c10: 53 54 49 4e 43 54 20 2d 20 35 35 20 29 20 46 52  STINCT - 55 ) FR
1c20: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
1c30: 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20  CROSS JOIN tab1 
1c40: 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor1..----..0
1c50: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
1c60: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
1c70: 6f 6c 31 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c  ol1, col0 AS col
1c80: 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  2 FROM tab2 WHER
1c90: 45 20 28 20 2b 20 63 6f 6c 32 20 29 20 49 53 20  E ( + col2 ) IS 
1ca0: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
1cb0: 35 31 0d 0a 34 36 0d 0a 36 37 0d 0a 37 35 0d 0a  51..46..67..75..
1cc0: 37 37 0d 0a 36 34 0d 0a 0d 0a 6f 6e 6c 79 69 66  77..64....onlyif
1cd0: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
1ce0: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
1cf0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1d00: 65 6c 2d 33 32 0d 0a 53 45 4c 45 43 54 20 2d 20  el-32..SELECT - 
1d10: 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 4d  COUNT( * ) * + M
1d20: 41 58 28 20 41 4c 4c 20 2b 20 2d 20 35 38 20 29  AX( ALL + - 58 )
1d30: 20 2a 20 2b 20 38 20 2b 20 2b 20 43 4f 55 4e 54   * + 8 + + COUNT
1d40: 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
1d50: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
1d60: 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20  CROSS JOIN tab0 
1d70: 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 34 31 38 35  cor1..----..4185
1d80: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1d90: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1da0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1db0: 72 74 20 6c 61 62 65 6c 2d 33 32 0d 0a 53 45 4c  rt label-32..SEL
1dc0: 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  ECT - COUNT ( * 
1dd0: 29 20 2a 20 2b 20 4d 41 58 20 28 20 41 4c 4c 20  ) * + MAX ( ALL 
1de0: 2b 20 2d 20 35 38 20 29 20 2a 20 2b 20 38 20 2b  + - 58 ) * + 8 +
1df0: 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
1e00: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
1e10: 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
1e20: 4f 49 4e 20 74 61 62 30 20 63 6f 72 31 0d 0a 2d  OIN tab0 cor1..-
1e30: 2d 2d 2d 0d 0a 34 31 38 35 0d 0a 0d 0a 73 6b 69  ---..4185....ski
1e40: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
1e50: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
1e60: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
1e70: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
1e80: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
1e90: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1ea0: 4c 20 2b 20 63 6f 6c 32 20 63 6f 6c 30 20 46 52  L + col2 col0 FR
1eb0: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
1ec0: 57 48 45 52 45 20 4e 4f 54 20 2d 20 34 30 20 49  WHERE NOT - 40 I
1ed0: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
1ee0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1ef0: 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
1f00: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
1f10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1f20: 61 62 65 6c 2d 33 34 0d 0a 53 45 4c 45 43 54 20  abel-34..SELECT 
1f30: 2d 20 39 39 20 44 49 56 20 2b 20 33 37 20 2d 20  - 99 DIV + 37 - 
1f40: 2d 20 2d 20 33 30 20 46 52 4f 4d 20 74 61 62 30  - - 30 FROM tab0
1f50: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1f60: 2d 33 32 0d 0a 2d 33 32 0d 0a 2d 33 32 0d 0a 0d  -32..-32..-32...
1f70: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1f80: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1f90: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1fa0: 6c 61 62 65 6c 2d 33 34 0d 0a 53 45 4c 45 43 54  label-34..SELECT
1fb0: 20 2d 20 39 39 20 2f 20 2b 20 33 37 20 2d 20 2d   - 99 / + 37 - -
1fc0: 20 2d 20 33 30 20 46 52 4f 4d 20 74 61 62 30 20   - 30 FROM tab0 
1fd0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1fe0: 33 32 0d 0a 2d 33 32 0d 0a 2d 33 32 0d 0a 0d 0a  32..-32..-32....
1ff0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2000: 0a 53 45 4c 45 43 54 20 2d 20 39 33 20 2d 20 2b  .SELECT - 93 - +
2010: 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 2b 20 63 6f   - col0 * - + co
2020: 6c 31 20 2d 20 2d 20 63 6f 6c 31 20 2d 20 39 30  l1 - - col1 - 90
2030: 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
2040: 0a 2d 2d 2d 2d 0d 0a 2d 32 34 37 38 0d 0a 2d 35  .----..-2478..-5
2050: 30 33 34 0d 0a 2d 35 31 34 31 0d 0a 0d 0a 71 75  034..-5141....qu
2060: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
2070: 53 45 4c 45 43 54 20 31 38 20 41 53 20 63 6f 6c  SELECT 18 AS col
2080: 32 2c 20 2d 20 33 30 20 46 52 4f 4d 20 74 61 62  2, - 30 FROM tab
2090: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d 0a 2d 33 30  0..----..18..-30
20a0: 0d 0a 31 38 0d 0a 2d 33 30 0d 0a 31 38 0d 0a 2d  ..18..-30..18..-
20b0: 33 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  30....onlyif mys
20c0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
20d0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
20e0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
20f0: 37 0d 0a 53 45 4c 45 43 54 20 28 20 2b 20 2b 20  7..SELECT ( + + 
2100: 53 55 4d 28 20 63 6f 6c 31 20 29 20 29 20 41 53  SUM( col1 ) ) AS
2110: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
2120: 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d 0a 0d 0a 73 6b  .----..103....sk
2130: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2140: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2150: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2160: 65 6c 2d 33 37 0d 0a 53 45 4c 45 43 54 20 28 20  el-37..SELECT ( 
2170: 2b 20 2b 20 53 55 4d 20 28 20 63 6f 6c 31 20 29  + + SUM ( col1 )
2180: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
2190: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d  tab0..----..103.
21a0: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
21b0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  ort..SELECT + - 
21c0: 63 6f 6c 32 20 2b 20 2d 20 39 38 20 41 53 20 63  col2 + - 98 AS c
21d0: 6f 6c 32 2c 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ol2, col2 FROM t
21e0: 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2b 20  ab2 WHERE NOT + 
21f0: 2b 20 32 38 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  + 28 IS NOT NULL
2200: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
2210: 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2220: 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2230: 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
2240: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39 0d 0a 53  sort label-39..S
2250: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 31 30 20 44  ELECT ALL - 10 D
2260: 49 56 20 2b 20 2d 20 34 31 20 41 53 20 63 6f 6c  IV + - 41 AS col
2270: 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
2280: 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b  -..0..0..0....sk
2290: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
22a0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
22b0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
22c0: 65 6c 2d 33 39 0d 0a 53 45 4c 45 43 54 20 41 4c  el-39..SELECT AL
22d0: 4c 20 2d 20 31 30 20 2f 20 2b 20 2d 20 34 31 20  L - 10 / + - 41 
22e0: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
22f0: 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  1..----..0..0..0
2300: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2310: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2320: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2330: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
2340: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2350: 20 6c 61 62 65 6c 2d 34 30 0d 0a 53 45 4c 45 43   label-40..SELEC
2360: 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54  T DISTINCT COUNT
2370: 28 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53  ( DISTINCT - CAS
2380: 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
2390: 44 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  D ) ) FROM tab0.
23a0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
23b0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
23c0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
23d0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
23e0: 2d 34 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -40..SELECT DIST
23f0: 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 44 49 53  INCT COUNT ( DIS
2400: 54 49 4e 43 54 20 2d 20 43 41 53 54 20 28 20 4e  TINCT - CAST ( N
2410: 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
2420: 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
2430: 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
2440: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2450: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2460: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2470: 6c 2d 34 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  l-41..SELECT ALL
2480: 20 2b 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2d 20   + COUNT( ALL - 
2490: 2d 20 36 37 20 29 20 41 53 20 63 6f 6c 32 20 46  - 67 ) AS col2 F
24a0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
24b0: 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..----..3....ski
24c0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
24d0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
24e0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
24f0: 6c 2d 34 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  l-41..SELECT ALL
2500: 20 2b 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2d   + COUNT ( ALL -
2510: 20 2d 20 36 37 20 29 20 41 53 20 63 6f 6c 32 20   - 67 ) AS col2 
2520: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2530: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75  0..----..3....qu
2540: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2550: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
2560: 6f 6c 31 20 2a 20 35 31 20 41 53 20 63 6f 6c 30  ol1 * 51 AS col0
2570: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
2580: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 37 31 0d 0a  r0..----..1071..
2590: 34 31 33 31 0d 0a 35 31 0d 0a 0d 0a 71 75 65 72  4131..51....quer
25a0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
25b0: 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
25c0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
25d0: 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 3c 3d 20  ERE NOT col0 <= 
25e0: 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a  ( NULL )..----..
25f0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2600: 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
2610: 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
2620: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2630: 65 6c 2d 34 34 0d 0a 53 45 4c 45 43 54 20 41 4c  el-44..SELECT AL
2640: 4c 20 35 30 20 44 49 56 20 2d 20 63 6f 6c 30 20  L 50 DIV - col0 
2650: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2660: 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .0..0..0....skip
2670: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2680: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2690: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
26a0: 2d 34 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  -44..SELECT ALL 
26b0: 35 30 20 2f 20 2d 20 63 6f 6c 30 20 46 52 4f 4d  50 / - col0 FROM
26c0: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   tab1..----..0..
26d0: 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  0..0....onlyif m
26e0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
26f0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
2700: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2710: 2d 34 35 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28  -45..SELECT MAX(
2720: 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 30 20 29 20   ALL + - col0 ) 
2730: 2a 20 33 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  * 31 FROM tab0..
2740: 2d 2d 2d 2d 0d 0a 2d 34 36 35 0d 0a 0d 0a 73 6b  ----..-465....sk
2750: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2760: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2770: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2780: 65 6c 2d 34 35 0d 0a 53 45 4c 45 43 54 20 4d 41  el-45..SELECT MA
2790: 58 20 28 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 30  X ( ALL + - col0
27a0: 20 29 20 2a 20 33 31 20 46 52 4f 4d 20 74 61 62   ) * 31 FROM tab
27b0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 35 0d 0a 0d  0..----..-465...
27c0: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
27d0: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
27e0: 43 54 20 2b 20 63 6f 6c 31 2c 20 63 6f 6c 32 20  CT + col1, col2 
27f0: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
2800: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 39 39 0d 0a  0..----..1..99..
2810: 32 31 0d 0a 31 30 0d 0a 38 31 0d 0a 34 37 0d 0a  21..10..81..47..
2820: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2830: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2840: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2850: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 0d 0a 53  sort label-47..S
2860: 45 4c 45 43 54 20 41 4c 4c 20 53 55 4d 28 20 2b  ELECT ALL SUM( +
2870: 20 2d 20 36 30 20 29 20 63 6f 6c 31 20 46 52 4f   - 60 ) col1 FRO
2880: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
2890: 38 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  80....skipif mys
28a0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
28b0: 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
28c0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
28d0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
28e0: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
28f0: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
2900: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2910: 62 65 6c 2d 34 37 0d 0a 53 45 4c 45 43 54 20 41  bel-47..SELECT A
2920: 4c 4c 20 53 55 4d 20 28 20 2b 20 2d 20 36 30 20  LL SUM ( + - 60 
2930: 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  ) col1 FROM tab1
2940: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 30 0d 0a 0d 0a  ..----..-180....
2950: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
2960: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
2970: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
2980: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
2990: 6c 2d 34 38 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  l-48..SELECT + +
29a0: 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 2c 20 2d   col2 AS col2, -
29b0: 20 63 6f 6c 30 20 2a 20 34 32 20 44 49 56 20 2b   col0 * 42 DIV +
29c0: 20 28 20 2d 20 2d 20 34 31 20 29 20 46 52 4f 4d   ( - - 41 ) FROM
29d0: 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
29e0: 0d 0a 35 39 0d 0a 2d 38 37 0d 0a 36 38 0d 0a 2d  ..59..-87..68..-
29f0: 39 33 0d 0a 39 36 0d 0a 2d 35 32 0d 0a 0d 0a 73  93..96..-52....s
2a00: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2a10: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2a20: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
2a30: 61 62 65 6c 2d 34 38 0d 0a 53 45 4c 45 43 54 20  abel-48..SELECT 
2a40: 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32  + + col2 AS col2
2a50: 2c 20 2d 20 63 6f 6c 30 20 2a 20 34 32 20 2f 20  , - col0 * 42 / 
2a60: 2b 20 28 20 2d 20 2d 20 34 31 20 29 20 46 52 4f  + ( - - 41 ) FRO
2a70: 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
2a80: 2d 0d 0a 35 39 0d 0a 2d 38 37 0d 0a 36 38 0d 0a  -..59..-87..68..
2a90: 2d 39 33 0d 0a 39 36 0d 0a 2d 35 32 0d 0a 0d 0a  -93..96..-52....
2aa0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
2ab0: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
2ac0: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
2ad0: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
2ae0: 6c 2d 34 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  l-49..SELECT ALL
2af0: 20 2d 20 34 37 20 41 53 20 63 6f 6c 31 2c 20 43   - 47 AS col1, C
2b00: 41 53 54 28 20 63 6f 6c 32 20 41 53 20 53 49 47  AST( col2 AS SIG
2b10: 4e 45 44 20 29 20 2a 20 2d 20 2b 20 63 6f 6c 32  NED ) * - + col2
2b20: 20 2b 20 2b 20 2d 20 31 38 20 46 52 4f 4d 20 74   + + - 18 FROM t
2b30: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
2b40: 2d 0d 0a 2d 34 37 0d 0a 2d 31 31 38 0d 0a 2d 34  -..-47..-118..-4
2b50: 37 0d 0a 2d 32 32 32 37 0d 0a 2d 34 37 0d 0a 2d  7..-2227..-47..-
2b60: 39 38 31 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  9819....skipif m
2b70: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2b80: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
2b90: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 39  rowsort label-49
2ba0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34  ..SELECT ALL - 4
2bb0: 37 20 41 53 20 63 6f 6c 31 2c 20 43 41 53 54 20  7 AS col1, CAST 
2bc0: 28 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45  ( col2 AS INTEGE
2bd0: 52 20 29 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 2b  R ) * - + col2 +
2be0: 20 2b 20 2d 20 31 38 20 46 52 4f 4d 20 74 61 62   + - 18 FROM tab
2bf0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
2c00: 0a 2d 34 37 0d 0a 2d 31 31 38 0d 0a 2d 34 37 0d  .-47..-118..-47.
2c10: 0a 2d 32 32 32 37 0d 0a 2d 34 37 0d 0a 2d 39 38  .-2227..-47..-98
2c20: 31 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  19....query I ro
2c30: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
2c40: 2b 20 28 20 2b 20 28 20 2b 20 39 39 20 29 20 29  + ( + ( + 99 ) )
2c50: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2c60: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
2c70: 0d 0a 2d 39 39 0d 0a 2d 39 39 0d 0a 2d 39 39 0d  ..-99..-99..-99.
2c80: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
2c90: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2ca0: 2b 20 2d 20 34 20 41 53 20 63 6f 6c 31 2c 20 2d  + - 4 AS col1, -
2cb0: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
2cc0: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
2cd0: 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 31 35 0d 0a  .----..-4..-15..
2ce0: 2d 34 0d 0a 2d 38 37 0d 0a 2d 34 0d 0a 2d 39 37  -4..-87..-4..-97
2cf0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2d00: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2d10: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2d20: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 0d  owsort label-52.
2d30: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37 31 20 2b  .SELECT ALL 71 +
2d40: 20 2b 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2b 20   + COUNT( ALL + 
2d50: 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
2d60: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2d70: 37 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  74....skipif mys
2d80: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2d90: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2da0: 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 0d 0a 53  sort label-52..S
2db0: 45 4c 45 43 54 20 41 4c 4c 20 37 31 20 2b 20 2b  ELECT ALL 71 + +
2dc0: 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20 63   COUNT ( ALL + c
2dd0: 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ol0 ) FROM tab2 
2de0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  AS cor0..----..7
2df0: 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  4....query III r
2e00: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2e10: 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  LL * FROM tab1 A
2e20: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
2e30: 20 2b 20 63 6f 6c 32 20 42 45 54 57 45 45 4e 20   + col2 BETWEEN 
2e40: 2d 20 63 6f 6c 31 20 41 4e 44 20 2b 20 2b 20 33  - col1 AND + + 3
2e50: 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
2e60: 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63  s hashing to c6c
2e70: 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38  0a4111b36d04dbc8
2e80: 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d  11a11e4d54cad...
2e90: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2ea0: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2eb0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2ec0: 6f 72 74 20 6c 61 62 65 6c 2d 35 34 0d 0a 53 45  ort label-54..SE
2ed0: 4c 45 43 54 20 2b 20 2b 20 43 4f 55 4e 54 28 20  LECT + + COUNT( 
2ee0: 33 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  31 ) AS col2 FRO
2ef0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
2f00: 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ----..3....skipi
2f10: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2f20: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2f30: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2f40: 35 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43  54..SELECT + + C
2f50: 4f 55 4e 54 20 28 20 33 31 20 29 20 41 53 20 63  OUNT ( 31 ) AS c
2f60: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
2f70: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   cor0..----..3..
2f80: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
2f90: 72 74 0d 0a 53 45 4c 45 43 54 20 35 30 2c 20 63  rt..SELECT 50, c
2fa0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol2 FROM tab1 co
2fb0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 30 0d 0a 35 39  r0..----..50..59
2fc0: 0d 0a 35 30 0d 0a 36 38 0d 0a 35 30 0d 0a 39 36  ..50..68..50..96
2fd0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
2fe0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
2ff0: 20 37 38 20 41 53 20 63 6f 6c 30 2c 20 63 6f 6c   78 AS col0, col
3000: 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
3010: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 38 0d 0a 35  or0..----..78..5
3020: 31 0d 0a 37 38 0d 0a 38 35 0d 0a 37 38 0d 0a 39  1..78..85..78..9
3030: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  1....query III r
3040: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
3050: 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
3060: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
3070: 45 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 2a 20 38  E NOT - col1 * 8
3080: 33 20 3c 3d 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d  3 <= ( NULL )..-
3090: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
30a0: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
30b0: 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
30c0: 61 62 30 2c 20 74 61 62 30 20 63 6f 72 30 20 57  ab0, tab0 cor0 W
30d0: 48 45 52 45 20 4e 55 4c 4c 20 3e 3d 20 4e 55 4c  HERE NULL >= NUL
30e0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
30f0: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
3100: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
3110: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
3120: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39 0d 0a  wsort label-59..
3130: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 34 20 44  SELECT ALL + 4 D
3140: 49 56 20 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  IV + + col2 FROM
3150: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   tab2..----..0..
3160: 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  0..0....skipif m
3170: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
3180: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
3190: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39 0d  owsort label-59.
31a0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 34 20  .SELECT ALL + 4 
31b0: 2f 20 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20  / + + col2 FROM 
31c0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  tab2..----..0..0
31d0: 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ..0....query III
31e0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
31f0: 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
3200: 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
3210: 28 20 4e 4f 54 20 2d 20 33 39 20 3c 20 2b 20 2d  ( NOT - 39 < + -
3220: 20 39 33 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   93 )..----....q
3230: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
3240: 53 45 4c 45 43 54 20 2b 20 33 39 20 41 53 20 63  SELECT + 39 AS c
3250: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 57 48  ol1 FROM tab0 WH
3260: 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c  ERE NULL IS NULL
3270: 0d 0a 2d 2d 2d 2d 0d 0a 33 39 0d 0a 33 39 0d 0a  ..----..39..39..
3280: 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  39....query I ro
3290: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
32a0: 35 36 20 2b 20 2b 20 2b 20 63 6f 6c 30 20 41 53  56 + + + col0 AS
32b0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
32c0: 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 32 39 0d 0a 33  .----..-5..29..3
32d0: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
32e0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
32f0: 20 2d 20 38 39 20 2b 20 2d 20 63 6f 6c 30 20 46   - 89 + - col0 F
3300: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
3310: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 30 0d 0a 2d 31  ..----..-140..-1
3320: 37 34 0d 0a 2d 31 38 30 0d 0a 0d 0a 71 75 65 72  74..-180....quer
3330: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
3340: 45 43 54 20 41 4c 4c 20 2d 20 36 32 20 46 52 4f  ECT ALL - 62 FRO
3350: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
3360: 48 45 52 45 20 63 6f 6c 31 20 49 53 20 4e 4f 54  HERE col1 IS NOT
3370: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 32   NULL..----..-62
3380: 0d 0a 2d 36 32 0d 0a 2d 36 32 0d 0a 0d 0a 71 75  ..-62..-62....qu
3390: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
33a0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
33b0: 20 2b 20 36 31 20 2b 20 2b 20 2b 20 36 20 41 53   + 61 + + + 6 AS
33c0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
33d0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36  AS cor0..----..6
33e0: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
33f0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
3400: 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 32 20 2b  TINCT - + col2 +
3410: 20 2b 20 35 34 20 41 53 20 63 6f 6c 31 20 46 52   + 54 AS col1 FR
3420: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
3430: 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 31 34 0d 0a 33  .----..-4..14..3
3440: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
3450: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
3460: 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 2b 20 63 6f   + col1 + + + co
3470: 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
3480: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 30 0d  cor0..----..110.
3490: 0a 31 31 35 0d 0a 36 34 0d 0a 0d 0a 71 75 65 72  .115..64....quer
34a0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
34b0: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
34c0: 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
34d0: 4e 55 4c 4c 20 3c 3d 20 63 6f 6c 31 20 2a 20 38  NULL <= col1 * 8
34e0: 30 20 2f 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 39  0 / - col0 * - 9
34f0: 35 20 2b 20 2d 20 28 20 36 37 20 29 20 2a 20 2d  5 + - ( 67 ) * -
3500: 20 2d 20 35 36 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   - 56..----....q
3510: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
3520: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
3530: 74 61 62 31 20 57 48 45 52 45 20 28 20 2d 20 63  tab1 WHERE ( - c
3540: 6f 6c 32 20 29 20 4e 4f 54 20 49 4e 20 28 20 63  ol2 ) NOT IN ( c
3550: 6f 6c 30 20 2b 20 63 6f 6c 31 20 29 20 41 4e 44  ol0 + col1 ) AND
3560: 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3d 20 4e 55 4c   NOT NULL <= NUL
3570: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
3580: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
3590: 45 43 54 20 2d 20 2b 20 31 35 20 2b 20 2d 20 2d  ECT - + 15 + - -
35a0: 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 2c 20   col1 + + col2, 
35b0: 2d 20 35 30 20 2a 20 2b 20 34 30 20 2b 20 2b 20  - 50 * + 40 + + 
35c0: 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 41 53 20 63  col1 + col2 AS c
35d0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol1 FROM tab0 co
35e0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 33 0d 0a 2d  r0..----..113..-
35f0: 31 38 37 32 0d 0a 31 36 0d 0a 2d 31 39 36 39 0d  1872..16..-1969.
3600: 0a 38 35 0d 0a 2d 31 39 30 30 0d 0a 0d 0a 71 75  .85..-1900....qu
3610: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
3620: 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2b 20 2b  ELECT + col1 + +
3630: 20 2b 20 36 37 20 41 53 20 63 6f 6c 30 20 46 52   + 67 AS col0 FR
3640: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
3650: 0a 2d 2d 2d 2d 0d 0a 31 31 38 0d 0a 31 33 34 0d  .----..118..134.
3660: 0a 31 34 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  .144....skipif p
3670: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
3680: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
3690: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
36a0: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
36b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36c0: 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 31 31 20  ..SELECT + + 11 
36d0: 2b 20 2b 20 63 6f 6c 31 20 63 6f 6c 30 20 46 52  + + col1 col0 FR
36e0: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
36f0: 0a 2d 2d 2d 2d 0d 0a 36 32 0d 0a 37 38 0d 0a 38  .----..62..78..8
3700: 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
3710: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
3720: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48  ol2 FROM tab0 WH
3730: 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 49  ERE NOT - col0 I
3740: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
3750: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
3760: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
3770: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
3780: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 0d  owsort label-74.
3790: 0a 53 45 4c 45 43 54 20 2b 20 34 34 20 2a 20 43  .SELECT + 44 * C
37a0: 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74  OUNT( * ) FROM t
37b0: 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  ab0 WHERE NOT NU
37c0: 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
37d0: 2d 2d 2d 2d 0d 0a 31 33 32 0d 0a 0d 0a 73 6b 69  ----..132....ski
37e0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
37f0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
3800: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
3810: 6c 2d 37 34 0d 0a 53 45 4c 45 43 54 20 2b 20 34  l-74..SELECT + 4
3820: 34 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  4 * COUNT ( * ) 
3830: 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
3840: 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20  NOT NULL IS NOT 
3850: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 33 32 0d  NULL..----..132.
3860: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
3870: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
3880: 4e 43 54 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 28  NCT - col1 * - (
3890: 20 2d 20 36 31 20 29 20 41 53 20 63 6f 6c 31 20   - 61 ) AS col1 
38a0: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
38b0: 0a 2d 31 32 38 31 0d 0a 2d 34 39 34 31 0d 0a 2d  .-1281..-4941..-
38c0: 36 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  61....query I ro
38d0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
38e0: 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
38f0: 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 28  tab2 WHERE NOT (
3900: 20 63 6f 6c 32 20 29 20 49 53 20 4e 55 4c 4c 0d   col2 ) IS NULL.
3910: 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34 30 0d 0a 35  .----..23..40..5
3920: 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
3930: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39 39 20  sort..SELECT 99 
3940: 2b 20 63 6f 6c 32 20 2f 20 2b 20 39 33 20 41 53  + col2 / + 93 AS
3950: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
3960: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
3970: 54 20 37 37 20 3e 3d 20 28 20 4e 55 4c 4c 20 29  T 77 >= ( NULL )
3980: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
3990: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
39a0: 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
39b0: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
39c0: 45 20 4e 4f 54 20 63 6f 6c 30 20 2b 20 32 36 20  E NOT col0 + 26 
39d0: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
39e0: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  -....query II ro
39f0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32 39  wsort..SELECT 29
3a00: 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c   * col0 AS col1,
3a10: 20 2b 20 31 36 20 2b 20 63 6f 6c 30 20 46 52 4f   + 16 + col0 FRO
3a20: 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
3a30: 2d 0d 0a 32 35 32 33 0d 0a 31 30 33 0d 0a 32 38  -..2523..103..28
3a40: 31 33 0d 0a 31 31 33 0d 0a 34 33 35 0d 0a 33 31  13..113..435..31
3a50: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
3a60: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37 38  ort..SELECT - 78
3a70: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
3a80: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
3a90: 4c 20 3e 3d 20 2b 20 31 32 20 2b 20 63 6f 6c 30  L >= + 12 + col0
3aa0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
3ab0: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
3ac0: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
3ad0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
3ae0: 65 6c 2d 38 31 0d 0a 53 45 4c 45 43 54 20 2d 20  el-81..SELECT - 
3af0: 35 38 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20  58 + + COUNT( * 
3b00: 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  ) col0 FROM tab1
3b10: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
3b20: 2d 35 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -55....skipif my
3b30: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
3b40: 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
3b50: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
3b60: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
3b70: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
3b80: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
3b90: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
3ba0: 61 62 65 6c 2d 38 31 0d 0a 53 45 4c 45 43 54 20  abel-81..SELECT 
3bb0: 2d 20 35 38 20 2b 20 2b 20 43 4f 55 4e 54 20 28  - 58 + + COUNT (
3bc0: 20 2a 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74   * ) col0 FROM t
3bd0: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
3be0: 2d 0d 0a 2d 35 35 0d 0a 0d 0a 71 75 65 72 79 20  -..-55....query 
3bf0: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
3c00: 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ECT * FROM tab0 
3c10: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
3c20: 54 20 2b 20 63 6f 6c 30 20 3c 3e 20 38 32 20 2b  T + col0 <> 82 +
3c30: 20 2d 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d   - + col0..----.
3c40: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
3c50: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
3c60: 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
3c70: 63 6f 72 30 20 57 48 45 52 45 20 39 37 20 2b 20  cor0 WHERE 97 + 
3c80: 2d 20 2d 20 63 6f 6c 30 20 3e 3d 20 2b 20 63 6f  - - col0 >= + co
3c90: 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  l1..----..9 valu
3ca0: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
3cb0: 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
3cc0: 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
3cd0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
3ce0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
3cf0: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
3d00: 57 48 45 52 45 20 2d 20 35 34 20 3c 20 2d 20 63  WHERE - 54 < - c
3d10: 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d  ol2 + - col1 * -
3d20: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d   col1..----..15.
3d30: 0a 38 31 0d 0a 34 37 0d 0a 38 37 0d 0a 32 31 0d  .81..47..87..21.
3d40: 0a 31 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .10....query I r
3d50: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
3d60: 4c 4c 20 63 6f 6c 32 20 2b 20 38 38 20 46 52 4f  LL col2 + 88 FRO
3d70: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
3d80: 2d 2d 2d 2d 0d 0a 31 31 31 0d 0a 31 32 38 0d 0a  ----..111..128..
3d90: 31 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  146....query I r
3da0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
3db0: 20 2d 20 37 34 20 2a 20 2d 20 35 31 20 46 52 4f   - 74 * - 51 FRO
3dc0: 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
3dd0: 2d 0d 0a 33 37 37 34 0d 0a 33 37 37 34 0d 0a 33  -..3774..3774..3
3de0: 37 37 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  774....onlyif my
3df0: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
3e00: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
3e10: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
3e20: 72 74 20 6c 61 62 65 6c 2d 38 37 0d 0a 53 45 4c  rt label-87..SEL
3e30: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b  ECT DISTINCT - +
3e40: 20 63 6f 6c 32 20 44 49 56 20 2b 20 2d 20 35 33   col2 DIV + - 53
3e50: 20 2b 20 2b 20 63 6f 6c 30 20 63 6f 6c 30 2c 20   + + col0 col0, 
3e60: 2d 20 28 20 2d 20 2d 20 34 30 20 29 20 41 53 20  - ( - - 40 ) AS 
3e70: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
3e80: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 32  S cor0..----..52
3e90: 0d 0a 2d 34 30 0d 0a 38 36 0d 0a 2d 34 30 0d 0a  ..-40..86..-40..
3ea0: 39 32 0d 0a 2d 34 30 0d 0a 0d 0a 73 6b 69 70 69  92..-40....skipi
3eb0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
3ec0: 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
3ed0: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
3ee0: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
3ef0: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
3f00: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
3f10: 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
3f20: 6f 72 74 20 6c 61 62 65 6c 2d 38 37 0d 0a 53 45  ort label-87..SE
3f30: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
3f40: 2b 20 63 6f 6c 32 20 2f 20 2b 20 2d 20 35 33 20  + col2 / + - 53 
3f50: 2b 20 2b 20 63 6f 6c 30 20 63 6f 6c 30 2c 20 2d  + + col0 col0, -
3f60: 20 28 20 2d 20 2d 20 34 30 20 29 20 41 53 20 63   ( - - 40 ) AS c
3f70: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
3f80: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 32 0d   cor0..----..52.
3f90: 0a 2d 34 30 0d 0a 38 36 0d 0a 2d 34 30 0d 0a 39  .-40..86..-40..9
3fa0: 32 0d 0a 2d 34 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  2..-40....onlyif
3fb0: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
3fc0: 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
3fd0: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
3fe0: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
3ff0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 0d  owsort label-88.
4000: 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28  .SELECT - COUNT(
4010: 20 2a 20 29 20 2f 20 2b 20 43 41 53 54 28 20 4e   * ) / + CAST( N
4020: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
4030: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
4040: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
4050: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
4060: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
4070: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38  rowsort label-88
4080: 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
4090: 20 28 20 2a 20 29 20 2f 20 2b 20 43 41 53 54 20   ( * ) / + 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 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  R ) FROM tab0..-
40c0: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ---..NULL....que
40d0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
40e0: 4c 45 43 54 20 28 20 63 6f 6c 32 20 29 20 2a 20  LECT ( col2 ) * 
40f0: 2b 20 2b 20 38 34 20 41 53 20 63 6f 6c 31 20 46  + + 84 AS col1 F
4100: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
4110: 31 39 33 32 0d 0a 33 33 36 30 0d 0a 34 38 37 32  1932..3360..4872
4120: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
4130: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
4140: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
4150: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30 0d  owsort label-90.
4160: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f  .SELECT ALL - CO
4170: 55 4e 54 28 20 36 32 20 29 20 63 6f 6c 32 20 46  UNT( 62 ) col2 F
4180: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
4190: 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
41a0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
41b0: 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
41c0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
41d0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
41e0: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
41f0: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
4200: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
4210: 62 65 6c 2d 39 30 0d 0a 53 45 4c 45 43 54 20 41  bel-90..SELECT A
4220: 4c 4c 20 2d 20 43 4f 55 4e 54 20 28 20 36 32 20  LL - COUNT ( 62 
4230: 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  ) col2 FROM tab2
4240: 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75  ..----..-3....qu
4250: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
4260: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
4270: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
4280: 54 20 4e 55 4c 4c 20 3e 3d 20 2d 20 2d 20 63 6f  T NULL >= - - co
4290: 6c 30 20 2a 20 39 35 0d 0a 2d 2d 2d 2d 0d 0a 0d  l0 * 95..----...
42a0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
42b0: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
42c0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
42d0: 6f 72 74 20 6c 61 62 65 6c 2d 39 32 0d 0a 53 45  ort label-92..SE
42e0: 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  LECT COUNT( * ) 
42f0: 2a 20 2b 20 2b 20 34 32 20 46 52 4f 4d 20 74 61  * + + 42 FROM ta
4300: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32 36 0d 0a 0d  b2..----..126...
4310: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
4320: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
4330: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
4340: 6c 61 62 65 6c 2d 39 32 0d 0a 53 45 4c 45 43 54  label-92..SELECT
4350: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b   COUNT ( * ) * +
4360: 20 2b 20 34 32 20 46 52 4f 4d 20 74 61 62 32 0d   + 42 FROM tab2.
4370: 0a 2d 2d 2d 2d 0d 0a 31 32 36 0d 0a 0d 0a 71 75  .----..126....qu
4380: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
4390: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31  ELECT ALL + col1
43a0: 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
43b0: 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 49 53 20 4e   NOT - col1 IS N
43c0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 31  ULL..----..1..21
43d0: 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..81....query I 
43e0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
43f0: 63 6f 6c 30 20 2b 20 2b 20 2b 20 32 32 20 2d 20  col0 + + + 22 - 
4400: 63 6f 6c 30 20 2b 20 63 6f 6c 32 20 2a 20 2d 20  col0 + col2 * - 
4410: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63  col0 FROM tab2 c
4420: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 33 36  or0..----..-1036
4430: 0d 0a 2d 32 35 33 38 0d 0a 2d 34 33 32 38 0d 0a  ..-2538..-4328..
4440: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
4450: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45   CAST syntax: DE
4460: 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75  CIMAL type: ..qu
4470: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
4480: 6c 61 62 65 6c 2d 39 35 0d 0a 53 45 4c 45 43 54  label-95..SELECT
4490: 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
44a0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
44b0: 45 52 45 20 4e 4f 54 20 2b 20 37 30 20 2a 20 63  ERE NOT + 70 * c
44c0: 6f 6c 32 20 3d 20 2d 20 39 38 20 2a 20 2d 20 43  ol2 = - 98 * - C
44d0: 41 53 54 28 20 2d 20 33 34 20 41 53 20 44 45 43  AST( - 34 AS DEC
44e0: 49 4d 41 4c 20 29 20 2b 20 63 6f 6c 31 20 2b 20  IMAL ) + col1 + 
44f0: 2b 20 28 20 39 32 20 29 20 2b 20 2b 20 34 37 0d  + ( 92 ) + + 47.
4500: 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
4510: 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39  hashing to 75c99
4520: 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32  8aa53ac83218cbf2
4530: 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 73  feb962d0a49....s
4540: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
4550: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
4560: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
4570: 6c 61 62 65 6c 2d 39 35 0d 0a 53 45 4c 45 43 54  label-95..SELECT
4580: 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
4590: 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
45a0: 45 52 45 20 4e 4f 54 20 2b 20 37 30 20 2a 20 63  ERE NOT + 70 * c
45b0: 6f 6c 32 20 3d 20 2d 20 39 38 20 2a 20 2d 20 43  ol2 = - 98 * - C
45c0: 41 53 54 20 28 20 2d 20 33 34 20 41 53 20 52 45  AST ( - 34 AS RE
45d0: 41 4c 20 29 20 2b 20 63 6f 6c 31 20 2b 20 2b 20  AL ) + col1 + + 
45e0: 28 20 39 32 20 29 20 2b 20 2b 20 34 37 0d 0a 2d  ( 92 ) + + 47..-
45f0: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
4600: 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61  shing to 75c998a
4610: 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65  a53ac83218cbf2fe
4620: 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65  b962d0a49....que
4630: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
4640: 4c 45 43 54 20 2d 20 39 36 20 2a 20 2d 20 2d 20  LECT - 96 * - - 
4650: 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 32 20 46 52  col2 * - col2 FR
4660: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
4670: 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3d 20 63 6f  WHERE NULL <= co
4680: 6c 30 20 2f 20 2d 20 2b 20 37 39 20 2f 20 2b 20  l0 / - + 79 / + 
4690: 2b 20 36 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  + 6..----....onl
46a0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
46b0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
46c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
46d0: 6c 61 62 65 6c 2d 39 37 0d 0a 53 45 4c 45 43 54  label-97..SELECT
46e0: 20 41 4c 4c 20 2b 20 53 55 4d 28 20 44 49 53 54   ALL + SUM( DIST
46f0: 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 31 20 29 20  INCT - + col1 ) 
4700: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
4710: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
4720: 0a 2d 31 39 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-195....skipif 
4730: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
4740: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
4750: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37  rowsort label-97
4760: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 53  ..SELECT ALL + S
4770: 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20  UM ( DISTINCT - 
4780: 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31  + col1 ) AS col1
4790: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
47a0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 35 0d 0a  r0..----..-195..
47b0: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
47c0: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 35 20  rt..SELECT + 95 
47d0: 2b 20 2d 20 37 32 20 41 53 20 63 6f 6c 30 2c 20  + - 72 AS col0, 
47e0: 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20 2b 20 2d  + ( - col0 ) + -
47f0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
4800: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a  cor0..----..23..
4810: 2d 31 37 34 0d 0a 32 33 0d 0a 2d 31 39 34 0d 0a  -174..23..-194..
4820: 32 33 0d 0a 2d 33 30 0d 0a 0d 0a 71 75 65 72 79  23..-30....query
4830: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
4840: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
4850: 6c 32 20 2b 20 2d 20 2d 20 35 30 20 41 53 20 63  l2 + - - 50 AS c
4860: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
4870: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
4880: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
4890: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
48a0: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
48b0: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
48c0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
48d0: 20 6c 61 62 65 6c 2d 31 30 30 0d 0a 53 45 4c 45   label-100..SELE
48e0: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
48f0: 6c 31 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20  l1 - CAST( NULL 
4900: 41 53 20 53 49 47 4e 45 44 20 29 20 2f 20 2b 20  AS SIGNED ) / + 
4910: 2d 20 28 20 2b 20 63 6f 6c 31 20 29 20 2d 20 63  - ( + col1 ) - c
4920: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
4930: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
4940: 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
4950: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
4960: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
4970: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 30 0d 0a 53  ort label-100..S
4980: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
4990: 20 63 6f 6c 31 20 2d 20 43 41 53 54 20 28 20 4e   col1 - CAST ( N
49a0: 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
49b0: 20 2f 20 2b 20 2d 20 28 20 2b 20 63 6f 6c 31 20   / + - ( + col1 
49c0: 29 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ) - col2 FROM ta
49d0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
49e0: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
49f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4a00: 54 20 41 4c 4c 20 2b 20 2d 20 28 20 2d 20 2b 20  T ALL + - ( - + 
4a10: 63 6f 6c 32 20 29 20 2d 20 63 6f 6c 32 20 41 53  col2 ) - col2 AS
4a20: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
4a30: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor0..----..0
4a40: 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ..0..0....query 
4a50: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
4a60: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20  CT DISTINCT + + 
4a70: 28 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31  ( col1 ) AS col1
4a80: 2c 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  , col2 AS col1 F
4a90: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
4aa0: 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 39 36 0d 0a  ..----..14..96..
4ab0: 34 37 0d 0a 36 38 0d 0a 35 0d 0a 35 39 0d 0a 0d  47..68..5..59...
4ac0: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
4ad0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
4ae0: 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
4af0: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
4b00: 54 20 2d 20 38 36 20 3e 20 4e 55 4c 4c 0d 0a 2d  T - 86 > NULL..-
4b10: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
4b20: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
4b30: 20 2d 20 38 34 20 2a 20 2d 20 2d 20 63 6f 6c 31   - 84 * - - col1
4b40: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
4b50: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
4b60: 0d 0a 34 32 38 34 0d 0a 35 36 32 38 0d 0a 36 34  ..4284..5628..64
4b70: 36 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  68....onlyif mys
4b80: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
4b90: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
4ba0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
4bb0: 30 35 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55  05..SELECT + COU
4bc0: 4e 54 28 20 2a 20 29 20 2a 20 43 4f 55 4e 54 28  NT( * ) * COUNT(
4bd0: 20 2a 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74   * ) col2 FROM t
4be0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
4bf0: 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..9....skipif m
4c00: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
4c10: 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
4c20: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
4c30: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
4c40: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
4c50: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
4c60: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
4c70: 6c 61 62 65 6c 2d 31 30 35 0d 0a 53 45 4c 45 43  label-105..SELEC
4c80: 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T + COUNT ( * ) 
4c90: 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f  * COUNT ( * ) co
4ca0: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
4cb0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d  cor0..----..9...
4cc0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
4cd0: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
4ce0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
4cf0: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 0d 0a 53  ort label-106..S
4d00: 45 4c 45 43 54 20 36 35 20 2a 20 2b 20 2b 20 28  ELECT 65 * + + (
4d10: 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20   + COUNT( * ) ) 
4d20: 2d 20 38 31 20 46 52 4f 4d 20 74 61 62 31 20 41  - 81 FROM tab1 A
4d30: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31  S cor0..----..11
4d40: 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
4d50: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
4d60: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
4d70: 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 0d 0a 53  ort label-106..S
4d80: 45 4c 45 43 54 20 36 35 20 2a 20 2b 20 2b 20 28  ELECT 65 * + + (
4d90: 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29   + COUNT ( * ) )
4da0: 20 2d 20 38 31 20 46 52 4f 4d 20 74 61 62 31 20   - 81 FROM tab1 
4db0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
4dc0: 31 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  14....query II r
4dd0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
4de0: 20 63 6f 6c 32 2c 20 2d 20 36 36 20 41 53 20 63   col2, - 66 AS c
4df0: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
4e00: 2d 2d 2d 0d 0a 32 33 0d 0a 2d 36 36 0d 0a 34 30  ---..23..-66..40
4e10: 0d 0a 2d 36 36 0d 0a 35 38 0d 0a 2d 36 36 0d 0a  ..-66..58..-66..
4e20: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
4e30: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
4e40: 28 20 2d 20 35 34 20 29 20 41 53 20 63 6f 6c 30  ( - 54 ) AS col0
4e50: 20 46 52 4f 4d 20 74 61 62 32 2c 20 74 61 62 32   FROM tab2, tab2
4e60: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
4e70: 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
4e80: 20 74 6f 20 34 65 63 64 62 30 66 31 62 38 35 66   to 4ecdb0f1b85f
4e90: 30 64 34 66 64 63 33 61 38 32 36 65 66 64 39 66  0d4fdc3a826efd9f
4ea0: 32 33 34 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49  2342....query II
4eb0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4ec0: 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
4ed0: 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 32 20 49  0 WHERE - col2 I
4ee0: 4e 20 28 20 2d 20 2b 20 34 2c 20 63 6f 6c 30 20  N ( - + 4, col0 
4ef0: 2f 20 2d 20 63 6f 6c 32 20 2a 20 63 6f 6c 32 2c  / - col2 * col2,
4f00: 20 28 20 2d 20 38 35 20 29 20 29 0d 0a 2d 2d 2d   ( - 85 ) )..---
4f10: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  -....query II ro
4f20: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
4f30: 63 6f 6c 32 2c 20 63 6f 6c 32 20 2a 20 2d 20 31  col2, col2 * - 1
4f40: 39 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  9 + - col1 FROM 
4f50: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a  tab1..----..59..
4f60: 2d 31 31 32 36 0d 0a 36 38 0d 0a 2d 31 33 33 39  -1126..68..-1339
4f70: 0d 0a 39 36 0d 0a 2d 31 38 33 38 0d 0a 0d 0a 6f  ..96..-1838....o
4f80: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
4f90: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
4fa0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
4fb0: 74 20 6c 61 62 65 6c 2d 31 31 31 0d 0a 53 45 4c  t label-111..SEL
4fc0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 28  ECT DISTINCT - (
4fd0: 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20   + COUNT( * ) ) 
4fe0: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
4ff0: 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20  0 WHERE NULL IS 
5000: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
5010: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
5020: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
5030: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
5040: 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 0d 0a 53  ort label-111..S
5050: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
5060: 20 28 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   ( + COUNT ( * )
5070: 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
5080: 74 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  tab0 WHERE NULL 
5090: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
50a0: 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..0....onlyif m
50b0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
50c0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
50d0: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
50e0: 6c 2d 31 31 32 0d 0a 53 45 4c 45 43 54 20 41 4c  l-112..SELECT AL
50f0: 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 63  L + COUNT( * ) c
5100: 6f 6c 32 2c 20 2d 20 43 4f 55 4e 54 28 20 2a 20  ol2, - COUNT( * 
5110: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
5120: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 33  ab2..----..3..-3
5130: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
5140: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
5150: 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
5160: 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
5170: 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
5180: 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
5190: 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
51a0: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
51b0: 65 6c 2d 31 31 32 0d 0a 53 45 4c 45 43 54 20 41  el-112..SELECT A
51c0: 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  LL + COUNT ( * )
51d0: 20 63 6f 6c 32 2c 20 2d 20 43 4f 55 4e 54 20 28   col2, - COUNT (
51e0: 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
51f0: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  M tab2..----..3.
5200: 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .-3....query I r
5210: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
5220: 49 53 54 49 4e 43 54 20 38 36 20 2a 20 2d 20 63  ISTINCT 86 * - c
5230: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
5240: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32   cor0..----..-12
5250: 39 30 0d 0a 2d 37 34 38 32 0d 0a 2d 38 33 34 32  90..-7482..-8342
5260: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
5270: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
5280: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
5290: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
52a0: 6c 61 62 65 6c 2d 31 31 34 0d 0a 53 45 4c 45 43  label-114..SELEC
52b0: 54 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 2c 20  T col1 AS col0, 
52c0: 43 41 53 54 28 20 2b 20 2b 20 32 32 20 41 53 20  CAST( + + 22 AS 
52d0: 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
52e0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
52f0: 0d 0a 31 0d 0a 32 32 0d 0a 32 31 0d 0a 32 32 0d  ..1..22..21..22.
5300: 0a 38 31 0d 0a 32 32 0d 0a 0d 0a 73 6b 69 70 69  .81..22....skipi
5310: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
5320: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
5330: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
5340: 2d 31 31 34 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  -114..SELECT col
5350: 31 20 41 53 20 63 6f 6c 30 2c 20 43 41 53 54 20  1 AS col0, CAST 
5360: 28 20 2b 20 2b 20 32 32 20 41 53 20 49 4e 54 45  ( + + 22 AS INTE
5370: 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 20  GER ) FROM tab0 
5380: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
5390: 0d 0a 32 32 0d 0a 32 31 0d 0a 32 32 0d 0a 38 31  ..22..21..22..81
53a0: 0d 0a 32 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..22....onlyif m
53b0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
53c0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
53d0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
53e0: 2d 31 31 35 0d 0a 53 45 4c 45 43 54 20 2d 20 36  -115..SELECT - 6
53f0: 36 20 2a 20 53 55 4d 28 20 2d 20 63 6f 6c 31 20  6 * SUM( - col1 
5400: 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
5410: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 38 37 30  or0..----..12870
5420: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
5430: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
5440: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
5450: 72 74 20 6c 61 62 65 6c 2d 31 31 35 0d 0a 53 45  rt label-115..SE
5460: 4c 45 43 54 20 2d 20 36 36 20 2a 20 53 55 4d 20  LECT - 66 * SUM 
5470: 28 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20  ( - col1 ) FROM 
5480: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
5490: 2d 2d 0d 0a 31 32 38 37 30 0d 0a 0d 0a 71 75 65  --..12870....que
54a0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
54b0: 4c 45 43 54 20 41 4c 4c 20 2b 20 37 30 20 2a 20  LECT ALL + 70 * 
54c0: 2b 20 2b 20 31 35 20 46 52 4f 4d 20 74 61 62 32  + + 15 FROM tab2
54d0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
54e0: 31 30 35 30 0d 0a 31 30 35 30 0d 0a 31 30 35 30  1050..1050..1050
54f0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
5500: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
5510: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
5520: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37  owsort label-117
5530: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
5540: 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  T COUNT( * ) AS 
5550: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57  col0 FROM tab1 W
5560: 48 45 52 45 20 28 20 2d 20 28 20 63 6f 6c 30 20  HERE ( - ( col0 
5570: 29 20 29 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63  ) ) NOT IN ( - c
5580: 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  ol0 )..----..0..
5590: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
55a0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
55b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
55c0: 20 6c 61 62 65 6c 2d 31 31 37 0d 0a 53 45 4c 45   label-117..SELE
55d0: 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e  CT DISTINCT COUN
55e0: 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
55f0: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
5600: 28 20 2d 20 28 20 63 6f 6c 30 20 29 20 29 20 4e  ( - ( col0 ) ) N
5610: 4f 54 20 49 4e 20 28 20 2d 20 63 6f 6c 30 20 29  OT IN ( - col0 )
5620: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c  ..----..0....onl
5630: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
5640: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
5650: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
5660: 6c 61 62 65 6c 2d 31 31 38 0d 0a 53 45 4c 45 43  label-118..SELEC
5670: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55  T DISTINCT - COU
5680: 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20  NT( * ) AS col1 
5690: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
56a0: 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 49 53 20  NOT ( NULL ) IS 
56b0: 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
56c0: 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
56d0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
56e0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
56f0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 0d 0a  sort label-118..
5700: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
5710: 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  - COUNT ( * ) AS
5720: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
5730: 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c  WHERE NOT ( NULL
5740: 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
5750: 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79  ----..-3....only
5760: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
5770: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
5780: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
5790: 61 62 65 6c 2d 31 31 39 0d 0a 53 45 4c 45 43 54  abel-119..SELECT
57a0: 20 2d 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54   - MIN( DISTINCT
57b0: 20 2d 20 35 31 20 29 20 46 52 4f 4d 20 74 61 62   - 51 ) FROM tab
57c0: 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a 73  0..----..51....s
57d0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
57e0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
57f0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
5800: 62 65 6c 2d 31 31 39 0d 0a 53 45 4c 45 43 54 20  bel-119..SELECT 
5810: 2d 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54  - MIN ( DISTINCT
5820: 20 2d 20 35 31 20 29 20 46 52 4f 4d 20 74 61 62   - 51 ) FROM tab
5830: 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a 6f  0..----..51....o
5840: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
5850: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
5860: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
5870: 74 20 6c 61 62 65 6c 2d 31 32 30 0d 0a 53 45 4c  t label-120..SEL
5880: 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2b 20 31  ECT - COUNT( + 1
5890: 35 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  5 ) FROM tab1..-
58a0: 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69  ---..-3....skipi
58b0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
58c0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
58d0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
58e0: 31 32 30 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f  120..SELECT - CO
58f0: 55 4e 54 20 28 20 2b 20 31 35 20 29 20 46 52 4f  UNT ( + 15 ) FRO
5900: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab1..----..-3
5910: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
5920: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
5930: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
5940: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31  owsort label-121
5950: 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20 53 55 4d  ..SELECT ( - SUM
5960: 28 20 2b 20 36 30 20 29 20 29 20 46 52 4f 4d 20  ( + 60 ) ) FROM 
5970: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 30  tab0..----..-180
5980: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
5990: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
59a0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
59b0: 72 74 20 6c 61 62 65 6c 2d 31 32 31 0d 0a 53 45  rt label-121..SE
59c0: 4c 45 43 54 20 28 20 2d 20 53 55 4d 20 28 20 2b  LECT ( - SUM ( +
59d0: 20 36 30 20 29 20 29 20 46 52 4f 4d 20 74 61 62   60 ) ) FROM tab
59e0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 30 0d 0a 0d  0..----..-180...
59f0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
5a00: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
5a10: 54 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  T - col1 FROM ta
5a20: 62 32 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  b2 WHERE NOT col
5a30: 31 20 2b 20 2b 20 63 6f 6c 31 20 49 53 20 4e 4f  1 + + col1 IS NO
5a40: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
5a50: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
5a60: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
5a70: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
5a80: 72 74 20 6c 61 62 65 6c 2d 31 32 33 0d 0a 53 45  rt label-123..SE
5a90: 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  LECT COUNT( * ) 
5aa0: 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
5ab0: 4e 55 4c 4c 20 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d  NULL <= NULL..--
5ac0: 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
5ad0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
5ae0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
5af0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
5b00: 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  3..SELECT COUNT 
5b10: 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ( * ) FROM tab0 
5b20: 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3d 20 4e 55  WHERE NULL <= NU
5b30: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71  LL..----..0....q
5b40: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
5b50: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
5b60: 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
5b70: 45 52 45 20 4e 4f 54 20 34 34 20 4e 4f 54 20 49  ERE NOT 44 NOT I
5b80: 4e 20 28 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d  N ( col2 )..----
5b90: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
5ba0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
5bb0: 63 6f 6c 30 20 2b 20 33 34 20 46 52 4f 4d 20 74  col0 + 34 FROM t
5bc0: 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab2 WHERE NOT ( 
5bd0: 4e 55 4c 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20  NULL ) NOT IN ( 
5be0: 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + col2 )..----..
5bf0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
5c00: 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
5c10: 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
5c20: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
5c30: 65 6c 2d 31 32 36 0d 0a 53 45 4c 45 43 54 20 2d  el-126..SELECT -
5c40: 20 34 34 20 44 49 56 20 2d 20 63 6f 6c 32 20 2b   44 DIV - col2 +
5c50: 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   - col1 FROM tab
5c60: 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 30 0d 0a 2d 36  2..----..-50..-6
5c70: 37 0d 0a 2d 37 36 0d 0a 0d 0a 73 6b 69 70 69 66  7..-76....skipif
5c80: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
5c90: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
5ca0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
5cb0: 32 36 0d 0a 53 45 4c 45 43 54 20 2d 20 34 34 20  26..SELECT - 44 
5cc0: 2f 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c  / - col2 + - col
5cd0: 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
5ce0: 2d 0d 0a 2d 35 30 0d 0a 2d 36 37 0d 0a 2d 37 36  -..-50..-67..-76
5cf0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
5d00: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
5d10: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
5d20: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 37  owsort label-127
5d30: 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20  ..SELECT COUNT( 
5d40: 44 49 53 54 49 4e 43 54 20 38 37 20 29 20 2b 20  DISTINCT 87 ) + 
5d50: 36 39 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  69 FROM tab1..--
5d60: 2d 2d 0d 0a 37 30 0d 0a 0d 0a 73 6b 69 70 69 66  --..70....skipif
5d70: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
5d80: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
5d90: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
5da0: 32 37 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  27..SELECT COUNT
5db0: 20 28 20 44 49 53 54 49 4e 43 54 20 38 37 20 29   ( DISTINCT 87 )
5dc0: 20 2b 20 36 39 20 46 52 4f 4d 20 74 61 62 31 0d   + 69 FROM tab1.
5dd0: 0a 2d 2d 2d 2d 0d 0a 37 30 0d 0a 0d 0a 71 75 65  .----..70....que
5de0: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
5df0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
5e00: 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
5e10: 45 20 4e 4f 54 20 63 6f 6c 31 20 2d 20 2d 20 63  E NOT col1 - - c
5e20: 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol1 IS NOT NULL.
5e30: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
5e40: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
5e50: 20 44 49 53 54 49 4e 43 54 20 33 38 20 2d 20 2d   DISTINCT 38 - -
5e60: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
5e70: 0a 2d 2d 2d 2d 0d 0a 34 33 0d 0a 35 32 0d 0a 38  .----..43..52..8
5e80: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
5e90: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
5ea0: 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   + col1 FROM tab
5eb0: 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 31 20 3d  0 WHERE - col1 =
5ec0: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   col1..----....o
5ed0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
5ee0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
5ef0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
5f00: 74 20 6c 61 62 65 6c 2d 31 33 31 0d 0a 53 45 4c  t label-131..SEL
5f10: 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28  ECT ALL + COUNT(
5f20: 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
5f30: 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20 4e  M tab1 WHERE ( N
5f40: 55 4c 4c 20 29 20 4e 4f 54 20 42 45 54 57 45 45  ULL ) NOT BETWEE
5f50: 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e 44 20 2d  N ( NULL ) AND -
5f60: 20 38 36 20 2a 20 2b 20 63 6f 6c 31 0d 0a 2d 2d   86 * + col1..--
5f70: 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
5f80: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
5f90: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
5fa0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33  rowsort label-13
5fb0: 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  1..SELECT ALL + 
5fc0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
5fd0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol2 FROM tab1 WH
5fe0: 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 4e 4f 54  ERE ( NULL ) NOT
5ff0: 20 42 45 54 57 45 45 4e 20 28 20 4e 55 4c 4c 20   BETWEEN ( NULL 
6000: 29 20 41 4e 44 20 2d 20 38 36 20 2a 20 2b 20 63  ) AND - 86 * + c
6010: 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ol1..----..0....
6020: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
6030: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
6040: 20 63 6f 6c 32 20 2a 20 2b 20 32 32 20 46 52 4f   col2 * + 22 FRO
6050: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 32  M tab1..----..12
6060: 39 38 0d 0a 31 34 39 36 0d 0a 32 31 31 32 0d 0a  98..1496..2112..
6070: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
6080: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
6090: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
60a0: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
60b0: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
60c0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
60d0: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
60e0: 6c 30 20 2b 20 63 6f 6c 31 20 63 6f 6c 30 20 46  l0 + col1 col0 F
60f0: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
6100: 31 30 38 0d 0a 39 36 0d 0a 39 38 0d 0a 0d 0a 73  108..96..98....s
6110: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
6120: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
6130: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
6140: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
6150: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
6160: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
6170: 2b 20 63 6f 6c 32 20 2a 20 36 30 20 63 6f 6c 31  + col2 * 60 col1
6180: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
6190: 0d 0a 31 33 38 30 0d 0a 32 34 30 30 0d 0a 33 34  ..1380..2400..34
61a0: 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  80....query I ro
61b0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
61c0: 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  l1 FROM tab2 WHE
61d0: 52 45 20 2d 20 28 20 38 38 20 29 20 2a 20 2d 20  RE - ( 88 ) * - 
61e0: 63 6f 6c 30 20 4e 4f 54 20 42 45 54 57 45 45 4e  col0 NOT BETWEEN
61f0: 20 63 6f 6c 31 20 41 4e 44 20 28 20 2b 20 34 30   col1 AND ( + 40
6200: 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d   + col0 )..----.
6210: 0a 35 31 0d 0a 36 37 0d 0a 37 37 0d 0a 0d 0a 6f  .51..67..77....o
6220: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
6230: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
6240: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6250: 74 20 6c 61 62 65 6c 2d 31 33 36 0d 0a 53 45 4c  t label-136..SEL
6260: 45 43 54 20 2d 20 32 38 20 2b 20 2b 20 4d 41 58  ECT - 28 + + MAX
6270: 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c  ( DISTINCT - col
6280: 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  2 ) AS col2 FROM
6290: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 37   tab1..----..-87
62a0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
62b0: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
62c0: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
62d0: 72 74 20 6c 61 62 65 6c 2d 31 33 36 0d 0a 53 45  rt label-136..SE
62e0: 4c 45 43 54 20 2d 20 32 38 20 2b 20 2b 20 4d 41  LECT - 28 + + MA
62f0: 58 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63  X ( DISTINCT - c
6300: 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ol2 ) AS col2 FR
6310: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
6320: 38 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  87....onlyif mys
6330: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
6340: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
6350: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
6360: 20 6c 61 62 65 6c 2d 31 33 37 0d 0a 53 45 4c 45   label-137..SELE
6370: 43 54 20 2d 20 41 56 47 20 28 20 44 49 53 54 49  CT - AVG ( DISTI
6380: 4e 43 54 20 2b 20 28 20 28 20 63 6f 6c 32 20 29  NCT + ( ( col2 )
6390: 20 29 20 29 20 2a 20 43 41 53 54 28 20 2d 20 43   ) ) * CAST( - C
63a0: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
63b0: 4e 45 44 20 29 20 41 53 20 53 49 47 4e 45 44 20  NED ) AS SIGNED 
63c0: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
63d0: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab2..----..NULL.
63e0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
63f0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
6400: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6410: 74 20 6c 61 62 65 6c 2d 31 33 37 0d 0a 53 45 4c  t label-137..SEL
6420: 45 43 54 20 2d 20 41 56 47 20 28 20 44 49 53 54  ECT - AVG ( DIST
6430: 49 4e 43 54 20 2b 20 28 20 28 20 63 6f 6c 32 20  INCT + ( ( col2 
6440: 29 20 29 20 29 20 2a 20 43 41 53 54 20 28 20 2d  ) ) ) * CAST ( -
6450: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
6460: 49 4e 54 45 47 45 52 20 29 20 41 53 20 49 4e 54  INTEGER ) AS INT
6470: 45 47 45 52 20 29 20 41 53 20 63 6f 6c 30 20 46  EGER ) AS col0 F
6480: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
6490: 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
64a0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
64b0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
64c0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
64d0: 2d 31 33 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  -138..SELECT DIS
64e0: 54 49 4e 43 54 20 2d 20 4d 41 58 28 20 41 4c 4c  TINCT - MAX( ALL
64f0: 20 38 38 20 29 20 2d 20 43 4f 55 4e 54 28 20 41   88 ) - COUNT( A
6500: 4c 4c 20 32 31 20 29 20 46 52 4f 4d 20 74 61 62  LL 21 ) FROM tab
6510: 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 31 0d 0a 0d 0a  2..----..-91....
6520: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
6530: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
6540: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
6550: 61 62 65 6c 2d 31 33 38 0d 0a 53 45 4c 45 43 54  abel-138..SELECT
6560: 20 44 49 53 54 49 4e 43 54 20 2d 20 4d 41 58 20   DISTINCT - MAX 
6570: 28 20 41 4c 4c 20 38 38 20 29 20 2d 20 43 4f 55  ( ALL 88 ) - COU
6580: 4e 54 20 28 20 41 4c 4c 20 32 31 20 29 20 46 52  NT ( ALL 21 ) FR
6590: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
65a0: 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  91....query III 
65b0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
65c0: 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
65d0: 45 20 4e 4f 54 20 28 20 28 20 63 6f 6c 31 20 29  E NOT ( ( col1 )
65e0: 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   ) IS NULL..----
65f0: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
6600: 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
6610: 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
6620: 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69 66  d54cad....onlyif
6630: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
6640: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
6650: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
6660: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 30 0d 0a  sort label-140..
6670: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
6680: 2d 20 31 39 20 2b 20 2d 20 43 41 53 54 28 20 63  - 19 + - CAST( c
6690: 6f 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol1 AS SIGNED ) 
66a0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
66b0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 30 0d 0a 2d  0..----..-100..-
66c0: 32 30 0d 0a 2d 34 30 0d 0a 0d 0a 73 6b 69 70 69  20..-40....skipi
66d0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
66e0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
66f0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
6700: 31 34 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  140..SELECT DIST
6710: 49 4e 43 54 20 2d 20 31 39 20 2b 20 2d 20 43 41  INCT - 19 + - CA
6720: 53 54 20 28 20 63 6f 6c 31 20 41 53 20 49 4e 54  ST ( col1 AS INT
6730: 45 47 45 52 20 29 20 41 53 20 63 6f 6c 30 20 46  EGER ) AS col0 F
6740: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
6750: 2d 31 30 30 0d 0a 2d 32 30 0d 0a 2d 34 30 0d 0a  -100..-20..-40..
6760: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6770: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
6780: 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l1 FROM tab1 WHE
6790: 52 45 20 4e 55 4c 4c 20 3c 3d 20 63 6f 6c 32 0d  RE NULL <= col2.
67a0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
67b0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
67c0: 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
67d0: 31 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30  1 WHERE NOT col0
67e0: 20 2a 20 2b 20 34 37 20 49 53 20 4e 55 4c 4c 0d   * + 47 IS NULL.
67f0: 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 38 35 0d 0a 39  .----..51..85..9
6800: 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
6810: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
6820: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
6830: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34  rowsort label-14
6840: 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f  3..SELECT ALL CO
6850: 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20 31 38 20  UNT( * ) + - 18 
6860: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
6870: 0a 2d 31 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-15....skipif m
6880: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
6890: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
68a0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 33  owsort label-143
68b0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55  ..SELECT ALL COU
68c0: 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20 31 38 20  NT ( * ) + - 18 
68d0: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
68e0: 0a 2d 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-15....query II
68f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
6900: 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
6910: 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 63 6f  2 WHERE NOT ( co
6920: 6c 30 20 29 20 3c 20 34 36 0d 0a 2d 2d 2d 2d 0d  l0 ) < 46..----.
6930: 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
6940: 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61  g to 75c998aa53a
6950: 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32  c83218cbf2feb962
6960: 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49  d0a49....query I
6970: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
6980: 20 63 6f 6c 30 20 2a 20 2d 20 28 20 63 6f 6c 32   col0 * - ( col2
6990: 20 2a 20 37 38 20 29 20 46 52 4f 4d 20 74 61 62   * 78 ) FROM tab
69a0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 34 39 39 30 0d  0..----..-54990.
69b0: 0a 2d 36 37 38 36 30 0d 0a 2d 37 34 39 30 33 34  .-67860..-749034
69c0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
69d0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
69e0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
69f0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 36  owsort label-146
6a00: 0d 0a 53 45 4c 45 43 54 20 36 37 20 2a 20 43 4f  ..SELECT 67 * CO
6a10: 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  UNT( * ) AS col1
6a20: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
6a30: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 31 0d 0a 0d  r0..----..201...
6a40: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
6a50: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
6a60: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
6a70: 6c 61 62 65 6c 2d 31 34 36 0d 0a 53 45 4c 45 43  label-146..SELEC
6a80: 54 20 36 37 20 2a 20 43 4f 55 4e 54 20 28 20 2a  T 67 * COUNT ( *
6a90: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
6aa0: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
6ab0: 2d 2d 0d 0a 32 30 31 0d 0a 0d 0a 71 75 65 72 79  --..201....query
6ac0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
6ad0: 43 54 20 41 4c 4c 20 32 30 20 41 53 20 63 6f 6c  CT ALL 20 AS col
6ae0: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
6af0: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
6b00: 37 30 20 2a 20 2b 20 63 6f 6c 32 20 42 45 54 57  70 * + col2 BETW
6b10: 45 45 4e 20 2d 20 36 31 20 41 4e 44 20 28 20 63  EEN - 61 AND ( c
6b20: 6f 6c 30 20 2a 20 63 6f 6c 30 20 2b 20 63 6f 6c  ol0 * col0 + col
6b30: 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 32 30 0d 0a 32  1 )..----..20..2
6b40: 30 0d 0a 32 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  0..20....skipif 
6b50: 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
6b60: 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
6b70: 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
6b80: 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
6b90: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
6ba0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33 20  t..SELECT ALL 3 
6bb0: 2a 20 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d  * col2 col1 FROM
6bc0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
6bd0: 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 3c 3e 20  ERE ( NULL ) <> 
6be0: 31 33 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  13..----....quer
6bf0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
6c00: 45 43 54 20 41 4c 4c 20 2b 20 34 35 20 46 52 4f  ECT ALL + 45 FRO
6c10: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
6c20: 48 45 52 45 20 4e 55 4c 4c 20 3e 3d 20 63 6f 6c  HERE NULL >= col
6c30: 32 20 2b 20 2b 20 31 32 20 2a 20 63 6f 6c 30 0d  2 + + 12 * col0.
6c40: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
6c50: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
6c60: 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
6c70: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
6c80: 57 48 45 52 45 20 2b 20 63 6f 6c 32 20 2d 20 63  WHERE + col2 - c
6c90: 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol2 IS NULL..---
6ca0: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
6cb0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
6cc0: 54 49 4e 43 54 20 28 20 2b 20 63 6f 6c 31 20 29  TINCT ( + col1 )
6cd0: 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
6ce0: 20 4e 55 4c 4c 20 3c 3d 20 2b 20 63 6f 6c 32 20   NULL <= + col2 
6cf0: 2b 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  + + col1..----..
6d00: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
6d10: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
6d20: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
6d30: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 32 0d 0a  sort label-152..
6d40: 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
6d50: 2a 20 29 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a  * ) - + COUNT( *
6d60: 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
6d70: 2d 2d 0d 0a 2d 36 0d 0a 0d 0a 73 6b 69 70 69 66  --..-6....skipif
6d80: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
6d90: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
6da0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
6db0: 35 32 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  52..SELECT - COU
6dc0: 4e 54 20 28 20 2a 20 29 20 2d 20 2b 20 43 4f 55  NT ( * ) - + COU
6dd0: 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
6de0: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 0d 0a 0d 0a  b0..----..-6....
6df0: 71 75 65 72 79 20 49 49 49 49 49 49 20 72 6f 77  query IIIIII row
6e00: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
6e10: 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
6e20: 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
6e30: 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab2 WHERE NOT N
6e40: 55 4c 4c 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL >= NULL..---
6e50: 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
6e60: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
6e70: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
6e80: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35  rowsort label-15
6e90: 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f  4..SELECT + + CO
6ea0: 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55  UNT( * ) * + COU
6eb0: 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
6ec0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
6ed0: 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .9....skipif mys
6ee0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
6ef0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
6f00: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 35 34 0d 0a  sort label-154..
6f10: 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f 55 4e 54  SELECT + + COUNT
6f20: 20 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55 4e 54   ( * ) * + COUNT
6f30: 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30   ( * ) FROM tab0
6f40: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
6f50: 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  9....skipif post
6f60: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
6f70: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
6f80: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
6f90: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
6fa0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
6fb0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
6fc0: 20 37 31 20 2a 20 2d 20 63 6f 6c 31 20 63 6f 6c   71 * - col1 col
6fd0: 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
6fe0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 36 32 31  or0..----..-3621
6ff0: 0d 0a 2d 34 37 35 37 0d 0a 2d 35 34 36 37 0d 0a  ..-4757..-5467..
7000: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7010: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 63 6f  t..SELECT - + co
7020: 6c 32 20 2a 20 2d 20 34 35 20 46 52 4f 4d 20 74  l2 * - 45 FROM t
7030: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
7040: 2d 0d 0a 32 31 31 35 0d 0a 34 34 35 35 0d 0a 34  -..2115..4455..4
7050: 35 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  50....onlyif mys
7060: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
7070: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
7080: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
7090: 20 6c 61 62 65 6c 2d 31 35 37 0d 0a 53 45 4c 45   label-157..SELE
70a0: 43 54 20 2b 20 37 31 20 44 49 56 20 2d 20 63 6f  CT + 71 DIV - co
70b0: 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  l0 col0 FROM tab
70c0: 31 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  1 cor0 WHERE NOT
70d0: 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 39 37 20 42   - col0 + - 97 B
70e0: 45 54 57 45 45 4e 20 28 20 63 6f 6c 32 20 29 20  ETWEEN ( col2 ) 
70f0: 41 4e 44 20 2d 20 63 6f 6c 32 20 2a 20 36 32 0d  AND - col2 * 62.
7100: 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d 0a 30 0d  .----..-1..0..0.
7110: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
7120: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
7130: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
7140: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
7150: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
7160: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
7170: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
7180: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
7190: 2d 31 35 37 0d 0a 53 45 4c 45 43 54 20 2b 20 37  -157..SELECT + 7
71a0: 31 20 2f 20 2d 20 63 6f 6c 30 20 63 6f 6c 30 20  1 / - col0 col0 
71b0: 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57  FROM tab1 cor0 W
71c0: 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20  HERE NOT - col0 
71d0: 2b 20 2d 20 39 37 20 42 45 54 57 45 45 4e 20 28  + - 97 BETWEEN (
71e0: 20 63 6f 6c 32 20 29 20 41 4e 44 20 2d 20 63 6f   col2 ) AND - co
71f0: 6c 32 20 2a 20 36 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  l2 * 62..----..-
7200: 31 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  1..0..0....onlyi
7210: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
7220: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
7230: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
7240: 62 65 6c 2d 31 35 38 0d 0a 53 45 4c 45 43 54 20  bel-158..SELECT 
7250: 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d  - COUNT( * ) * -
7260: 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
7270: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
7280: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
7290: 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 2b 20  NULL NOT IN ( + 
72a0: 63 6f 6c 32 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d  col2 + col2 )..-
72b0: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
72c0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
72d0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
72e0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
72f0: 35 38 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  58..SELECT - COU
7300: 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 43 4f 55  NT ( * ) * - COU
7310: 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  NT ( * ) AS col0
7320: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
7330: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
7340: 4c 20 4e 4f 54 20 49 4e 20 28 20 2b 20 63 6f 6c  L NOT IN ( + col
7350: 32 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d  2 + col2 )..----
7360: 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..0....onlyif my
7370: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
7380: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
7390: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
73a0: 31 35 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  159..SELECT DIST
73b0: 49 4e 43 54 20 2b 20 2b 20 53 55 4d 28 20 41 4c  INCT + + SUM( AL
73c0: 4c 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32  L col0 ) AS col2
73d0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
73e0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 35 0d 0a 0d  r0..----..185...
73f0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
7400: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
7410: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
7420: 6c 61 62 65 6c 2d 31 35 39 0d 0a 53 45 4c 45 43  label-159..SELEC
7430: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 53  T DISTINCT + + S
7440: 55 4d 20 28 20 41 4c 4c 20 63 6f 6c 30 20 29 20  UM ( ALL col0 ) 
7450: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
7460: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
7470: 0a 31 38 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .185....onlyif m
7480: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
7490: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
74a0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
74b0: 2d 31 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -160..SELECT - C
74c0: 4f 55 4e 54 28 20 2a 20 29 20 2a 20 32 34 20 46  OUNT( * ) * 24 F
74d0: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
74e0: 2d 37 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -72....skipif my
74f0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
7500: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
7510: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 30 0d  wsort label-160.
7520: 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20  .SELECT - COUNT 
7530: 28 20 2a 20 29 20 2a 20 32 34 20 46 52 4f 4d 20  ( * ) * 24 FROM 
7540: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 32 0d  tab1..----..-72.
7550: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
7560: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
7570: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
7580: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 31 0d  wsort label-161.
7590: 0a 53 45 4c 45 43 54 20 2b 20 53 55 4d 28 20 2b  .SELECT + SUM( +
75a0: 20 2d 20 63 6f 6c 30 20 29 20 2a 20 2d 20 34 32   - col0 ) * - 42
75b0: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
75c0: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 39 35 33 34 0d 0a  b1..----..9534..
75d0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
75e0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
75f0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
7600: 20 6c 61 62 65 6c 2d 31 36 31 0d 0a 53 45 4c 45   label-161..SELE
7610: 43 54 20 2b 20 53 55 4d 20 28 20 2b 20 2d 20 63  CT + SUM ( + - c
7620: 6f 6c 30 20 29 20 2a 20 2d 20 34 32 20 41 53 20  ol0 ) * - 42 AS 
7630: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
7640: 2d 2d 2d 2d 0d 0a 39 35 33 34 0d 0a 0d 0a 73 6b  ----..9534....sk
7650: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
7660: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
7670: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
7680: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
7690: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
76a0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
76b0: 4c 4c 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f  LL + col2 * - co
76c0: 6c 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  l1 col0 FROM tab
76d0: 32 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  2 WHERE NOT NULL
76e0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
76f0: 2d 2d 0d 0a 2d 31 31 37 33 0d 0a 2d 33 30 38 30  --..-1173..-3080
7700: 0d 0a 2d 33 38 38 36 0d 0a 0d 0a 71 75 65 72 79  ..-3886....query
7710: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
7720: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
7730: 6c 30 20 2b 20 32 36 20 41 53 20 63 6f 6c 30 20  l0 + 26 AS col0 
7740: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
7750: 2d 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55  - col2 IS NOT NU
7760: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 0d 0a 2d  LL..----..-25..-
7770: 35 39 0d 0a 2d 36 35 0d 0a 0d 0a 71 75 65 72 79  59..-65....query
7780: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
7790: 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
77a0: 74 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  tab0 WHERE NULL 
77b0: 3c 3d 20 28 20 2b 20 36 39 20 2a 20 2d 20 37 38  <= ( + 69 * - 78
77c0: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
77d0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
77e0: 45 43 54 20 34 39 20 41 53 20 63 6f 6c 32 20 46  ECT 49 AS col2 F
77f0: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
7800: 4f 54 20 33 38 20 2b 20 2b 20 63 6f 6c 30 20 4e  OT 38 + + col0 N
7810: 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20  OT BETWEEN NULL 
7820: 41 4e 44 20 39 36 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  AND 96..----....
7830: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
7840: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
7850: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
7860: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
7870: 2d 31 36 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -166..SELECT ALL
7880: 20 2b 20 43 41 53 54 28 20 2b 20 63 6f 6c 31 20   + CAST( + col1 
7890: 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20  AS SIGNED ) * - 
78a0: 33 36 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  36 AS col2 FROM 
78b0: 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
78c0: 0a 2d 31 38 33 36 0d 0a 2d 32 34 31 32 0d 0a 2d  .-1836..-2412..-
78d0: 32 37 37 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  2772....skipif m
78e0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
78f0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
7900: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 36  owsort label-166
7910: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
7920: 41 53 54 20 28 20 2b 20 63 6f 6c 31 20 41 53 20  AST ( + col1 AS 
7930: 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 33 36  INTEGER ) * - 36
7940: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
7950: 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b2 cor0..----..-
7960: 31 38 33 36 0d 0a 2d 32 34 31 32 0d 0a 2d 32 37  1836..-2412..-27
7970: 37 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  72....query I ro
7980: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
7990: 2b 20 63 6f 6c 31 20 2a 20 2d 20 37 31 20 41 53  + col1 * - 71 AS
79a0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
79b0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
79c0: 34 39 31 0d 0a 35 37 35 31 0d 0a 37 31 0d 0a 0d  491..5751..71...
79d0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
79e0: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
79f0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
7a00: 6f 72 74 20 6c 61 62 65 6c 2d 31 36 38 0d 0a 53  ort label-168..S
7a10: 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 28 20 44  ELECT ALL MIN( D
7a20: 49 53 54 49 4e 43 54 20 32 38 20 29 20 41 53 20  ISTINCT 28 ) AS 
7a30: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
7a40: 2d 2d 2d 2d 0d 0a 32 38 0d 0a 0d 0a 73 6b 69 70  ----..28....skip
7a50: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
7a60: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
7a70: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
7a80: 2d 31 36 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -168..SELECT ALL
7a90: 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20   MIN ( DISTINCT 
7aa0: 32 38 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  28 ) AS col2 FRO
7ab0: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 38  M tab2..----..28
7ac0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
7ad0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
7ae0: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
7af0: 28 20 4e 4f 54 20 63 6f 6c 30 20 2b 20 2d 20 63  ( NOT col0 + - c
7b00: 6f 6c 32 20 3d 20 4e 55 4c 4c 20 29 0d 0a 2d 2d  ol2 = NULL )..--
7b10: 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
7b20: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
7b30: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
7b40: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
7b50: 37 30 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  70..SELECT - COU
7b60: 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20  NT( * ) AS col1 
7b70: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
7b80: 28 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 2d 20 2b  ( NOT + col2 - +
7b90: 20 30 20 2a 20 28 20 63 6f 6c 32 20 29 20 49 53   0 * ( col2 ) IS
7ba0: 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d   NULL )..----..-
7bb0: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
7bc0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
7bd0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
7be0: 6f 72 74 20 6c 61 62 65 6c 2d 31 37 30 0d 0a 53  ort label-170..S
7bf0: 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20  ELECT - COUNT ( 
7c00: 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
7c10: 20 74 61 62 31 20 57 48 45 52 45 20 28 20 4e 4f   tab1 WHERE ( NO
7c20: 54 20 2b 20 63 6f 6c 32 20 2d 20 2b 20 30 20 2a  T + col2 - + 0 *
7c30: 20 28 20 63 6f 6c 32 20 29 20 49 53 20 4e 55 4c   ( col2 ) IS NUL
7c40: 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d  L )..----..-3...
7c50: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
7c60: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
7c70: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
7c80: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
7c90: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
7ca0: 62 65 6c 2d 31 37 31 0d 0a 53 45 4c 45 43 54 20  bel-171..SELECT 
7cb0: 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20  DISTINCT COUNT( 
7cc0: 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 43 41 53  DISTINCT + + CAS
7cd0: 54 28 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 53  T( + - col1 AS S
7ce0: 49 47 4e 45 44 20 29 20 29 20 46 52 4f 4d 20 74  IGNED ) ) FROM t
7cf0: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  ab1..----..3....
7d00: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
7d10: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
7d20: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
7d30: 61 62 65 6c 2d 31 37 31 0d 0a 53 45 4c 45 43 54  abel-171..SELECT
7d40: 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20   DISTINCT COUNT 
7d50: 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 43  ( DISTINCT + + C
7d60: 41 53 54 20 28 20 2b 20 2d 20 63 6f 6c 31 20 41  AST ( + - col1 A
7d70: 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 46 52  S INTEGER ) ) FR
7d80: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab1..----..3
7d90: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
7da0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
7db0: 49 4e 43 54 20 2d 20 39 20 41 53 20 63 6f 6c 31  INCT - 9 AS col1
7dc0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
7dd0: 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
7de0: 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b1 AS cor1..----
7df0: 0d 0a 2d 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..-9....onlyif m
7e00: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
7e10: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
7e20: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
7e30: 2d 31 37 33 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -173..SELECT + C
7e40: 4f 55 4e 54 28 20 2a 20 29 20 2b 20 43 4f 55 4e  OUNT( * ) + COUN
7e50: 54 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  T( DISTINCT + co
7e60: 6c 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74  l2 ) col1 FROM t
7e70: 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a  ab0..----..6....
7e80: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
7e90: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
7ea0: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
7eb0: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
7ec0: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
7ed0: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
7ee0: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
7ef0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37  rowsort label-17
7f00: 33 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  3..SELECT + COUN
7f10: 54 20 28 20 2a 20 29 20 2b 20 43 4f 55 4e 54 20  T ( * ) + COUNT 
7f20: 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  ( DISTINCT + col
7f30: 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  2 ) col1 FROM ta
7f40: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 71  b0..----..6....q
7f50: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
7f60: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
7f70: 30 20 2a 20 2b 20 36 34 20 41 53 20 63 6f 6c 32  0 * + 64 AS col2
7f80: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
7f90: 0d 0a 2d 32 39 34 34 0d 0a 2d 34 30 39 36 0d 0a  ..-2944..-4096..
7fa0: 2d 34 38 30 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -4800....onlyif 
7fb0: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
7fc0: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
7fd0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
7fe0: 6c 2d 31 37 35 0d 0a 53 45 4c 45 43 54 20 2b 20  l-175..SELECT + 
7ff0: 38 36 20 2b 20 2d 20 2d 20 28 20 2d 20 33 20 29  86 + - - ( - 3 )
8000: 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   - - COUNT( * ) 
8010: 2a 20 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * 0 AS col2 FROM
8020: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 38 33 0d   tab1..----..83.
8030: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
8040: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
8050: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8060: 74 20 6c 61 62 65 6c 2d 31 37 35 0d 0a 53 45 4c  t label-175..SEL
8070: 45 43 54 20 2b 20 38 36 20 2b 20 2d 20 2d 20 28  ECT + 86 + - - (
8080: 20 2d 20 33 20 29 20 2d 20 2d 20 43 4f 55 4e 54   - 3 ) - - COUNT
8090: 20 28 20 2a 20 29 20 2a 20 30 20 41 53 20 63 6f   ( * ) * 0 AS co
80a0: 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
80b0: 2d 2d 0d 0a 38 33 0d 0a 0d 0a 71 75 65 72 79 20  --..83....query 
80c0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
80d0: 54 20 2b 20 32 39 20 41 53 20 63 6f 6c 30 20 46  T + 29 AS col0 F
80e0: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
80f0: 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31   CROSS JOIN tab1
8100: 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
8110: 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
8120: 20 74 6f 20 31 65 37 31 32 30 62 61 38 65 39 31   to 1e7120ba8e91
8130: 39 31 30 38 34 31 37 32 64 64 63 65 64 31 37 65  91084172ddced17e
8140: 35 65 62 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  5eb2....query I 
8150: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8160: 44 49 53 54 49 4e 43 54 20 31 30 20 46 52 4f 4d  DISTINCT 10 FROM
8170: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
8180: 45 52 45 20 28 20 2b 20 63 6f 6c 32 20 2f 20 2d  ERE ( + col2 / -
8190: 20 63 6f 6c 32 20 2a 20 37 34 20 29 20 3e 20 63   col2 * 74 ) > c
81a0: 6f 6c 32 20 2a 20 33 34 20 2b 20 2b 20 63 6f 6c  ol2 * 34 + + col
81b0: 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  2..----....query
81c0: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
81d0: 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 41  ECT ALL - col0 A
81e0: 53 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 31 20 41  S col0, - col1 A
81f0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
8200: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
8210: 2d 35 31 0d 0a 2d 31 34 0d 0a 2d 38 35 0d 0a 2d  -51..-14..-85..-
8220: 35 0d 0a 2d 39 31 0d 0a 2d 34 37 0d 0a 0d 0a 71  5..-91..-47....q
8230: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
8240: 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20  SELECT ALL col0 
8250: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
8260: 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54  0 WHERE NULL NOT
8270: 20 49 4e 20 28 20 2b 20 37 33 20 29 0d 0a 2d 2d   IN ( + 73 )..--
8280: 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
8290: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
82a0: 2a 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  * FROM tab2 cor0
82b0: 20 57 48 45 52 45 20 63 6f 6c 32 20 2a 20 2b 20   WHERE col2 * + 
82c0: 2b 20 37 36 20 4e 4f 54 20 49 4e 20 28 20 63 6f  + 76 NOT IN ( co
82d0: 6c 31 20 2d 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d  l1 - + col2 )..-
82e0: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
82f0: 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61  shing to 75c998a
8300: 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65  a53ac83218cbf2fe
8310: 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c  b962d0a49....onl
8320: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
8330: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
8340: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
8350: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38  rowsort label-18
8360: 31 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 28 20  1..SELECT + + ( 
8370: 2d 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  - - CAST( NULL A
8380: 53 20 53 49 47 4e 45 44 20 29 20 29 20 46 52 4f  S SIGNED ) ) FRO
8390: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
83a0: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
83b0: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
83c0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
83d0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
83e0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
83f0: 38 31 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 28  81..SELECT + + (
8400: 20 2d 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c   - - CAST ( NULL
8410: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
8420: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
8430: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
8440: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c  ULL..NULL....onl
8450: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
8460: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
8470: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
8480: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
8490: 31 38 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  182..SELECT DIST
84a0: 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  INCT * FROM tab2
84b0: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
84c0: 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 2b 20 43  ULL NOT IN ( + C
84d0: 41 53 54 28 20 2d 20 2b 20 63 6f 6c 30 20 41 53  AST( - + col0 AS
84e0: 20 53 49 47 4e 45 44 20 29 20 2f 20 38 36 20 2b   SIGNED ) / 86 +
84f0: 20 32 34 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73   24 )..----....s
8500: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
8510: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
8520: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
8530: 6c 61 62 65 6c 2d 31 38 32 0d 0a 53 45 4c 45 43  label-182..SELEC
8540: 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
8550: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
8560: 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e  HERE NULL NOT IN
8570: 20 28 20 2b 20 43 41 53 54 20 28 20 2d 20 2b 20   ( + CAST ( - + 
8580: 63 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52 20  col0 AS INTEGER 
8590: 29 20 2f 20 38 36 20 2b 20 32 34 20 29 0d 0a 2d  ) / 86 + 24 )..-
85a0: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
85b0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
85c0: 2b 20 32 36 20 41 53 20 63 6f 6c 32 2c 20 2b 20  + 26 AS col2, + 
85d0: 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 2a 20  col0 * - col0 * 
85e0: 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f  col1 AS col0 FRO
85f0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
8600: 2d 2d 2d 2d 0d 0a 32 36 0d 0a 2d 31 30 37 39 31  ----..26..-10791
8610: 36 0d 0a 32 36 0d 0a 2d 33 31 35 33 39 32 0d 0a  6..26..-315392..
8620: 32 36 0d 0a 2d 33 37 36 38 37 35 0d 0a 0d 0a 6f  26..-376875....o
8630: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
8640: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
8650: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
8660: 72 74 20 6c 61 62 65 6c 2d 31 38 34 0d 0a 53 45  rt label-184..SE
8670: 4c 45 43 54 20 2d 20 2d 20 43 4f 55 4e 54 28 20  LECT - - COUNT( 
8680: 2a 20 29 20 41 53 20 63 6f 6c 32 2c 20 2d 20 32  * ) AS col2, - 2
8690: 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
86a0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
86b0: 2d 0d 0a 33 0d 0a 2d 32 32 0d 0a 0d 0a 73 6b 69  -..3..-22....ski
86c0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
86d0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
86e0: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
86f0: 65 6c 2d 31 38 34 0d 0a 53 45 4c 45 43 54 20 2d  el-184..SELECT -
8700: 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
8710: 53 20 63 6f 6c 32 2c 20 2d 20 32 32 20 41 53 20  S col2, - 22 AS 
8720: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
8730: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
8740: 0a 2d 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-22....query I 
8750: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8760: 41 4c 4c 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  ALL + col0 FROM 
8770: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
8780: 52 45 20 2b 20 63 6f 6c 31 20 42 45 54 57 45 45  RE + col1 BETWEE
8790: 4e 20 35 33 20 2a 20 2b 20 63 6f 6c 32 20 41 4e  N 53 * + col2 AN
87a0: 44 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 28 20 63  D - col2 * + ( c
87b0: 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ol1 )..----....q
87c0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
87d0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
87e0: 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  col1 AS col1 FRO
87f0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
8800: 48 45 52 45 20 4e 4f 54 20 2d 20 28 20 2b 20 2d  HERE NOT - ( + -
8810: 20 63 6f 6c 32 20 29 20 49 53 20 4e 55 4c 4c 0d   col2 ) IS NULL.
8820: 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 31 0d 0a 38 31  .----..1..21..81
8830: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
8840: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
8850: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
8860: 62 30 20 57 48 45 52 45 20 28 20 2d 20 36 38 20  b0 WHERE ( - 68 
8870: 29 20 2a 20 63 6f 6c 30 20 49 4e 20 28 20 2b 20  ) * col0 IN ( + 
8880: 38 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  81 )..----....qu
8890: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
88a0: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
88b0: 61 62 32 20 57 48 45 52 45 20 2b 20 63 6f 6c 30  ab2 WHERE + col0
88c0: 20 2a 20 2d 20 2b 20 63 6f 6c 30 20 3c 20 4e 55   * - + col0 < NU
88d0: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
88e0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
88f0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
8900: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
8910: 61 62 65 6c 2d 31 38 39 0d 0a 53 45 4c 45 43 54  abel-189..SELECT
8920: 20 44 49 53 54 49 4e 43 54 20 2b 20 39 38 20 2d   DISTINCT + 98 -
8930: 20 2d 20 2b 20 43 4f 55 4e 54 28 20 41 4c 4c 20   - + COUNT( ALL 
8940: 2b 20 36 30 20 29 20 41 53 20 63 6f 6c 31 20 46  + 60 ) AS col1 F
8950: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
8960: 31 30 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  101....skipif my
8970: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
8980: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
8990: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38 39 0d  wsort label-189.
89a0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
89b0: 20 2b 20 39 38 20 2d 20 2d 20 2b 20 43 4f 55 4e   + 98 - - + COUN
89c0: 54 20 28 20 41 4c 4c 20 2b 20 36 30 20 29 20 41  T ( ALL + 60 ) A
89d0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
89e0: 0d 0a 2d 2d 2d 2d 0d 0a 31 30 31 0d 0a 0d 0a 71  ..----..101....q
89f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
8a00: 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20 2d 20  SELECT col0 * - 
8a10: 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46  + col2 AS col2 F
8a20: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
8a30: 2d 34 38 39 36 0d 0a 2d 35 30 31 35 0d 0a 2d 36  -4896..-5015..-6
8a40: 31 38 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  188....onlyif my
8a50: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
8a60: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
8a70: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
8a80: 31 39 31 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20  191..SELECT ( - 
8a90: 4d 41 58 28 20 41 4c 4c 20 39 38 20 29 20 29 20  MAX( ALL 98 ) ) 
8aa0: 2d 20 2d 20 31 35 20 46 52 4f 4d 20 74 61 62 31  - - 15 FROM tab1
8ab0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 33 0d 0a 0d 0a 73  ..----..-83....s
8ac0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
8ad0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
8ae0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
8af0: 62 65 6c 2d 31 39 31 0d 0a 53 45 4c 45 43 54 20  bel-191..SELECT 
8b00: 28 20 2d 20 4d 41 58 20 28 20 41 4c 4c 20 39 38  ( - MAX ( ALL 98
8b10: 20 29 20 29 20 2d 20 2d 20 31 35 20 46 52 4f 4d   ) ) - - 15 FROM
8b20: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 33   tab1..----..-83
8b30: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
8b40: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
8b50: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
8b60: 4e 55 4c 4c 20 3e 3d 20 2b 20 28 20 2b 20 2b 20  NULL >= + ( + + 
8b70: 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col0 )..----....
8b80: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
8b90: 0a 53 45 4c 45 43 54 20 36 34 20 2a 20 63 6f 6c  .SELECT 64 * col
8ba0: 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  0 FROM tab1 WHER
8bb0: 45 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c  E - col1 * - col
8bc0: 31 20 4e 4f 54 20 49 4e 20 28 20 2b 20 37 33 20  1 NOT IN ( + 73 
8bd0: 29 0d 0a 2d 2d 2d 2d 0d 0a 33 32 36 34 0d 0a 35  )..----..3264..5
8be0: 34 34 30 0d 0a 35 38 32 34 0d 0a 0d 0a 71 75 65  440..5824....que
8bf0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
8c00: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28 20  LECT DISTINCT ( 
8c10: 2d 20 63 6f 6c 30 20 29 20 2a 20 2b 20 63 6f 6c  - col0 ) * + col
8c20: 32 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  2 * + col0 AS co
8c30: 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
8c40: 2d 2d 0d 0a 2d 31 30 35 37 35 0d 0a 2d 37 35 36  --..-10575..-756
8c50: 39 30 0d 0a 2d 39 33 31 34 39 31 0d 0a 0d 0a 6f  90..-931491....o
8c60: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
8c70: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
8c80: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
8c90: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
8ca0: 31 39 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  195..SELECT ALL 
8cb0: 2b 20 2b 20 32 36 20 44 49 56 20 2b 20 63 6f 6c  + + 26 DIV + col
8cc0: 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  1 FROM tab2 cor0
8cd0: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
8ce0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
8cf0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
8d00: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8d10: 74 20 6c 61 62 65 6c 2d 31 39 35 0d 0a 53 45 4c  t label-195..SEL
8d20: 45 43 54 20 41 4c 4c 20 2b 20 2b 20 32 36 20 2f  ECT ALL + + 26 /
8d30: 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   + col1 FROM tab
8d40: 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  2 cor0..----..0.
8d50: 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .0..0....query I
8d60: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
8d70: 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
8d80: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
8d90: 20 4e 4f 54 20 28 20 63 6f 6c 32 20 3e 20 63 6f   NOT ( col2 > co
8da0: 6c 32 20 2b 20 2b 20 33 20 29 0d 0a 2d 2d 2d 2d  l2 + + 3 )..----
8db0: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
8dc0: 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33  ng to 75c998aa53
8dd0: 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36  ac83218cbf2feb96
8de0: 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  2d0a49....onlyif
8df0: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
8e00: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
8e10: 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72  e: ..query III r
8e20: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 37  owsort label-197
8e30: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
8e40: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
8e50: 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 43 41 53   WHERE NOT - CAS
8e60: 54 28 20 2d 20 63 6f 6c 31 20 41 53 20 53 49 47  T( - col1 AS SIG
8e70: 4e 45 44 20 29 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d  NED ) > NULL..--
8e80: 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
8e90: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
8ea0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
8eb0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 37  owsort label-197
8ec0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
8ed0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
8ee0: 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 43 41 53   WHERE NOT - CAS
8ef0: 54 20 28 20 2d 20 63 6f 6c 31 20 41 53 20 49 4e  T ( - col1 AS IN
8f00: 54 45 47 45 52 20 29 20 3e 20 4e 55 4c 4c 0d 0a  TEGER ) > NULL..
8f10: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
8f20: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8f30: 2d 20 33 31 20 2b 20 2b 20 39 32 20 46 52 4f 4d  - 31 + + 92 FROM
8f40: 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
8f50: 0d 0a 36 31 0d 0a 36 31 0d 0a 36 31 0d 0a 0d 0a  ..61..61..61....
8f60: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
8f70: 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
8f80: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
8f90: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
8fa0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
8fb0: 65 6c 2d 31 39 39 0d 0a 53 45 4c 45 43 54 20 37  el-199..SELECT 7
8fc0: 35 20 2a 20 2d 20 2b 20 4d 49 4e 28 20 41 4c 4c  5 * - + MIN( ALL
8fd0: 20 2b 20 63 6f 6c 30 20 29 20 2b 20 2d 20 4d 49   + col0 ) + - MI
8fe0: 4e 28 20 41 4c 4c 20 2b 20 43 41 53 54 28 20 4e  N( ALL + CAST( N
8ff0: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
9000: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
9010: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
9020: 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  -..NULL....skipi
9030: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
9040: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
9050: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9060: 31 39 39 0d 0a 53 45 4c 45 43 54 20 37 35 20 2a  199..SELECT 75 *
9070: 20 2d 20 2b 20 4d 49 4e 20 28 20 41 4c 4c 20 2b   - + MIN ( ALL +
9080: 20 63 6f 6c 30 20 29 20 2b 20 2d 20 4d 49 4e 20   col0 ) + - MIN 
9090: 28 20 41 4c 4c 20 2b 20 43 41 53 54 20 28 20 4e  ( ALL + CAST ( N
90a0: 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
90b0: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
90c0: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
90d0: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
90e0: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
90f0: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
9100: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
9110: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
9120: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
9130: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  sort..SELECT + -
9140: 20 32 34 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   24 col2 FROM ta
9150: 62 32 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  b2 cor0 CROSS JO
9160: 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d  IN tab0 AS cor1.
9170: 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
9180: 68 61 73 68 69 6e 67 20 74 6f 20 37 39 37 64 30  hashing to 797d0
9190: 66 37 63 31 34 35 66 38 61 63 36 32 33 39 32 34  f7c145f8ac623924
91a0: 34 34 38 63 37 31 34 62 62 63 63 0d 0a 0d 0a 6f  448c714bbcc....o
91b0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
91c0: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
91d0: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
91e0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
91f0: 32 30 31 0d 0a 53 45 4c 45 43 54 20 43 41 53 54  201..SELECT CAST
9200: 28 20 2d 20 2d 20 35 34 20 41 53 20 53 49 47 4e  ( - - 54 AS SIGN
9210: 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  ED ) FROM tab2..
9220: 2d 2d 2d 2d 0d 0a 35 34 0d 0a 35 34 0d 0a 35 34  ----..54..54..54
9230: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
9240: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
9250: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
9260: 72 74 20 6c 61 62 65 6c 2d 32 30 31 0d 0a 53 45  rt label-201..SE
9270: 4c 45 43 54 20 43 41 53 54 20 28 20 2d 20 2d 20  LECT CAST ( - - 
9280: 35 34 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  54 AS INTEGER ) 
9290: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
92a0: 0a 35 34 0d 0a 35 34 0d 0a 35 34 0d 0a 0d 0a 6f  .54..54..54....o
92b0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
92c0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
92d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
92e0: 74 20 6c 61 62 65 6c 2d 32 30 32 0d 0a 53 45 4c  t label-202..SEL
92f0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b  ECT DISTINCT - +
9300: 20 37 35 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29   75 + COUNT( * )
9310: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
9320: 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45  b1 WHERE NULL BE
9330: 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b  TWEEN NULL AND +
9340: 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d   + col1..----..-
9350: 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  75....skipif mys
9360: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
9370: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
9380: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30 32 0d 0a  sort label-202..
9390: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
93a0: 2d 20 2b 20 37 35 20 2b 20 43 4f 55 4e 54 20 28  - + 75 + COUNT (
93b0: 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   * ) AS col0 FRO
93c0: 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 55 4c  M tab1 WHERE NUL
93d0: 4c 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  L BETWEEN NULL A
93e0: 4e 44 20 2b 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d  ND + + col1..---
93f0: 2d 0d 0a 2d 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  -..-75....onlyif
9400: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
9410: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
9420: 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72  e: ..query III r
9430: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30 33  owsort label-203
9440: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
9450: 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab2 WHERE NOT N
9460: 55 4c 4c 20 49 4e 20 28 20 2d 20 2b 20 43 41 53  ULL IN ( - + CAS
9470: 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
9480: 44 20 29 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d  D ) + col2 )..--
9490: 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
94a0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
94b0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
94c0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30 33  owsort label-203
94d0: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
94e0: 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab2 WHERE NOT N
94f0: 55 4c 4c 20 49 4e 20 28 20 2d 20 2b 20 43 41 53  ULL IN ( - + CAS
9500: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
9510: 47 45 52 20 29 20 2b 20 63 6f 6c 32 20 29 0d 0a  GER ) + col2 )..
9520: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
9530: 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
9540: 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
9550: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
9560: 72 74 20 6c 61 62 65 6c 2d 32 30 34 0d 0a 53 45  rt label-204..SE
9570: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
9580: 2d 20 63 6f 6c 32 20 44 49 56 20 2b 20 37 31 20  - col2 DIV + 71 
9590: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
95a0: 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 0d  0..----..0..1...
95b0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
95c0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
95d0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
95e0: 6c 61 62 65 6c 2d 32 30 34 0d 0a 53 45 4c 45 43  label-204..SELEC
95f0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63  T DISTINCT - - c
9600: 6f 6c 32 20 2f 20 2b 20 37 31 20 46 52 4f 4d 20  ol2 / + 71 FROM 
9610: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
9620: 2d 2d 0d 0a 30 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79  --..0..1....only
9630: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
9640: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
9650: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
9660: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30 35  owsort label-205
9670: 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53 54 28  ..SELECT - CAST(
9680: 20 2d 20 63 6f 6c 30 20 41 53 20 53 49 47 4e 45   - col0 AS SIGNE
9690: 44 20 29 20 2d 20 2b 20 39 20 2b 20 63 6f 6c 30  D ) - + 9 + col0
96a0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
96b0: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
96c0: 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 49 53 20 4e   NOT - col1 IS N
96d0: 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
96e0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
96f0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
9700: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
9710: 6c 61 62 65 6c 2d 32 30 35 0d 0a 53 45 4c 45 43  label-205..SELEC
9720: 54 20 2d 20 43 41 53 54 20 28 20 2d 20 63 6f 6c  T - CAST ( - col
9730: 30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2d  0 AS INTEGER ) -
9740: 20 2b 20 39 20 2b 20 63 6f 6c 30 20 41 53 20 63   + 9 + col0 AS c
9750: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
9760: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
9770: 2d 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55  - col1 IS NOT NU
9780: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
9790: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
97a0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
97b0: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
97c0: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 35  r0 WHERE NOT ( 5
97d0: 30 20 2a 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63  0 * + col2 * + c
97e0: 6f 6c 31 20 29 20 42 45 54 57 45 45 4e 20 4e 55  ol1 ) BETWEEN NU
97f0: 4c 4c 20 41 4e 44 20 2d 20 63 6f 6c 30 0d 0a 2d  LL AND - col0..-
9800: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
9810: 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31  shing to c6c0a41
9820: 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31  11b36d04dbc811a1
9830: 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c  1e4d54cad....onl
9840: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
9850: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
9860: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
9870: 6c 61 62 65 6c 2d 32 30 37 0d 0a 53 45 4c 45 43  label-207..SELEC
9880: 54 20 2d 20 43 4f 55 4e 54 28 20 2b 20 63 6f 6c  T - COUNT( + col
9890: 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
98a0: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
98b0: 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69  ---..-3....skipi
98c0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
98d0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
98e0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
98f0: 32 30 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f  207..SELECT - CO
9900: 55 4e 54 20 28 20 2b 20 63 6f 6c 31 20 29 20 41  UNT ( + col1 ) A
9910: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
9920: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
9930: 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  -3....skipif pos
9940: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
9950: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
9960: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
9970: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
9980: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
9990: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
99a0: 54 20 2d 20 37 30 20 63 6f 6c 31 2c 20 2d 20 63  T - 70 col1, - c
99b0: 6f 6c 32 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20  ol2 * + col0 AS 
99c0: 63 6f 6c 31 2c 20 37 38 20 41 53 20 63 6f 6c 32  col1, 78 AS col2
99d0: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
99e0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  r0..----..9 valu
99f0: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 39 33  es hashing to 93
9a00: 61 61 63 63 66 35 62 37 30 30 31 33 33 65 38 34  aaccf5b700133e84
9a10: 62 65 36 62 30 62 37 34 36 32 32 33 30 36 0d 0a  be6b0b74622306..
9a20: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
9a30: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
9a40: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
9a50: 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 63 6f  WHERE NOT ( - co
9a60: 6c 30 20 29 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d  l0 ) < NULL..---
9a70: 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
9a80: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
9a90: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
9aa0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
9ab0: 6c 61 62 65 6c 2d 32 31 30 0d 0a 53 45 4c 45 43  label-210..SELEC
9ac0: 54 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 2b  T DISTINCT ( - +
9ad0: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
9ae0: 49 47 4e 45 44 20 29 20 29 20 2a 20 2b 20 2b 20  IGNED ) ) * + + 
9af0: 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31 20 46 52  col2 + - col1 FR
9b00: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
9b10: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
9b20: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
9b30: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
9b40: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31 30 0d  wsort label-210.
9b50: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
9b60: 20 28 20 2d 20 2b 20 43 41 53 54 20 28 20 4e 55   ( - + CAST ( NU
9b70: 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
9b80: 29 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d  ) * + + col2 + -
9b90: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
9ba0: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
9bb0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
9bc0: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
9bd0: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
9be0: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
9bf0: 2d 32 31 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -211..SELECT ALL
9c00: 20 2d 20 36 35 20 2a 20 2d 20 43 41 53 54 28 20   - 65 * - CAST( 
9c10: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
9c20: 2c 20 28 20 63 6f 6c 31 20 29 20 41 53 20 63 6f  , ( col1 ) AS co
9c30: 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
9c40: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31 34 0d 0a 4e 55  --..NULL..14..NU
9c50: 4c 4c 0d 0a 34 37 0d 0a 4e 55 4c 4c 0d 0a 35 0d  LL..47..NULL..5.
9c60: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
9c70: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
9c80: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
9c90: 72 74 20 6c 61 62 65 6c 2d 32 31 31 0d 0a 53 45  rt label-211..SE
9ca0: 4c 45 43 54 20 41 4c 4c 20 2d 20 36 35 20 2a 20  LECT ALL - 65 * 
9cb0: 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
9cc0: 20 49 4e 54 45 47 45 52 20 29 2c 20 28 20 63 6f   INTEGER ), ( co
9cd0: 6c 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l1 ) AS col2 FRO
9ce0: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab1..----..NU
9cf0: 4c 4c 0d 0a 31 34 0d 0a 4e 55 4c 4c 0d 0a 34 37  LL..14..NULL..47
9d00: 0d 0a 4e 55 4c 4c 0d 0a 35 0d 0a 0d 0a 71 75 65  ..NULL..5....que
9d10: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
9d20: 4c 45 43 54 20 63 6f 6c 31 20 2b 20 2b 20 63 6f  LECT col1 + + co
9d30: 6c 31 20 2a 20 2d 20 63 6f 6c 31 20 46 52 4f 4d  l1 * - col1 FROM
9d40: 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
9d50: 2d 20 38 32 20 2a 20 2b 20 34 30 20 2b 20 2b 20  - 82 * + 40 + + 
9d60: 63 6f 6c 32 20 2d 20 2d 20 34 30 20 3c 20 63 6f  col2 - - 40 < co
9d70: 6c 31 20 2b 20 2d 20 34 31 0d 0a 2d 2d 2d 2d 0d  l1 + - 41..----.
9d80: 0a 0d 0a 71 75 65 72 79 20 49 49 49 49 49 49 20  ...query IIIIII 
9d90: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
9da0: 2a 20 46 52 4f 4d 20 74 61 62 31 2c 20 74 61 62  * FROM tab1, tab
9db0: 32 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e  2 cor0 WHERE ( N
9dc0: 55 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d  ULL ) IS NULL..-
9dd0: 2d 2d 2d 0d 0a 35 34 20 76 61 6c 75 65 73 20 68  ---..54 values h
9de0: 61 73 68 69 6e 67 20 74 6f 20 63 34 31 39 64 63  ashing to c419dc
9df0: 32 61 36 35 33 62 63 63 64 38 34 66 37 61 32 64  2a653bccd84f7a2d
9e00: 61 31 30 33 33 31 35 31 38 37 0d 0a 0d 0a 71 75  a103315187....qu
9e10: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
9e20: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32  ELECT ALL - col2
9e30: 20 2b 20 2d 20 63 6f 6c 31 20 2d 20 39 33 20 2f   + - col1 - 93 /
9e40: 20 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   2 FROM tab2 WHE
9e50: 52 45 20 28 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3e  RE ( NOT NULL <>
9e60: 20 28 20 4e 55 4c 4c 20 29 20 29 0d 0a 2d 2d 2d   ( NULL ) )..---
9e70: 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
9e80: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
9e90: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
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 35 0d 0a 53 45 4c 45 43  label-215..SELEC
9ec0: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53  T DISTINCT + CAS
9ed0: 54 28 20 28 20 2b 20 2b 20 63 6f 6c 30 20 29 20  T( ( + + col0 ) 
9ee0: 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d  AS SIGNED ) FROM
9ef0: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d   tab2..----..46.
9f00: 0a 36 34 0d 0a 37 35 0d 0a 0d 0a 73 6b 69 70 69  .64..75....skipi
9f10: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
9f20: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
9f30: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9f40: 32 31 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  215..SELECT DIST
9f50: 49 4e 43 54 20 2b 20 43 41 53 54 20 28 20 28 20  INCT + CAST ( ( 
9f60: 2b 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 49 4e  + + col0 ) AS IN
9f70: 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62  TEGER ) FROM tab
9f80: 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 36 34 0d  2..----..46..64.
9f90: 0a 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .75....onlyif my
9fa0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
9fb0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
9fc0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9fd0: 32 31 36 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  216..SELECT + + 
9fe0: 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 39 39 20  COUNT( * ) + 99 
9ff0: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
a000: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 32 0d 0a 0d 0a  0..----..102....
a010: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
a020: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
a030: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
a040: 61 62 65 6c 2d 32 31 36 0d 0a 53 45 4c 45 43 54  abel-216..SELECT
a050: 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
a060: 20 2b 20 39 39 20 46 52 4f 4d 20 74 61 62 31 20   + 99 FROM tab1 
a070: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
a080: 30 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  02....query I ro
a090: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
a0a0: 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
a0b0: 74 61 62 32 20 63 6f 72 30 20 57 48 45 52 45 20  tab2 cor0 WHERE 
a0c0: 4e 4f 54 20 28 20 2b 20 63 6f 6c 32 20 2b 20 63  NOT ( + col2 + c
a0d0: 6f 6c 32 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 29  ol2 * - - col0 )
a0e0: 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
a0f0: 35 31 0d 0a 36 37 0d 0a 37 37 0d 0a 0d 0a 71 75  51..67..77....qu
a100: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
a110: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
a120: 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 2b   col0 * - col0 +
a130: 20 2d 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74   - + col0 FROM t
a140: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
a150: 2d 0d 0a 2d 32 34 30 0d 0a 2d 37 36 35 36 0d 0a  -..-240..-7656..
a160: 2d 39 35 30 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  -9506....skipif 
a170: 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
a180: 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
a190: 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
a1a0: 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
a1b0: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
a1c0: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
a1d0: 32 2c 20 2b 20 63 6f 6c 32 20 63 6f 6c 32 20 46  2, + col2 col2 F
a1e0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
a1f0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 35 39 0d  ..----..-59..59.
a200: 0a 2d 36 38 0d 0a 36 38 0d 0a 2d 39 36 0d 0a 39  .-68..68..-96..9
a210: 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
a220: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  sort..SELECT + -
a230: 20 63 6f 6c 30 20 2b 20 2b 20 33 32 20 41 53 20   col0 + + 32 AS 
a240: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
a250: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
a260: 39 0d 0a 2d 35 33 0d 0a 2d 35 39 0d 0a 0d 0a 71  9..-53..-59....q
a270: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
a280: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
a290: 2d 20 2d 20 28 20 63 6f 6c 32 20 29 20 2b 20 2b  - - ( col2 ) + +
a2a0: 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 63 6f 6c 30   col2 + + - col0
a2b0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
a2c0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
a2d0: 0d 0a 30 0d 0a 31 36 0d 0a 34 31 0d 0a 0d 0a 6f  ..0..16..41....o
a2e0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
a2f0: 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d  ST syntax: DECIM
a300: 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  AL type: ..query
a310: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
a320: 2d 32 32 32 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  -222..SELECT + -
a330: 20 39 30 20 2b 20 2b 20 63 6f 6c 30 20 2d 20 39   90 + + col0 - 9
a340: 36 20 2a 20 2b 20 31 33 20 2a 20 2b 20 2d 20 43  6 * + 13 * + - C
a350: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43  AST( NULL AS DEC
a360: 49 4d 41 4c 20 29 20 2a 20 63 6f 6c 30 20 2a 20  IMAL ) * col0 * 
a370: 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  + + col0 FROM ta
a380: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
a390: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
a3a0: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
a3b0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
a3c0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
a3d0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 32 32 0d 0a  sort label-222..
a3e0: 53 45 4c 45 43 54 20 2b 20 2d 20 39 30 20 2b 20  SELECT + - 90 + 
a3f0: 2b 20 63 6f 6c 30 20 2d 20 39 36 20 2a 20 2b 20  + col0 - 96 * + 
a400: 31 33 20 2a 20 2b 20 2d 20 43 41 53 54 20 28 20  13 * + - CAST ( 
a410: 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29 20 2a  NULL AS REAL ) *
a420: 20 63 6f 6c 30 20 2a 20 2b 20 2b 20 63 6f 6c 30   col0 * + + col0
a430: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
a440: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
a450: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
a460: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
a470: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
a480: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
a490: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
a4a0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
a4b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
a4c0: 4c 4c 20 28 20 63 6f 6c 32 20 29 20 2a 20 2d 20  LL ( col2 ) * - 
a4d0: 35 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  51 col0 FROM tab
a4e0: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
a4f0: 0a 2d 31 31 37 33 0d 0a 2d 32 30 34 30 0d 0a 2d  .-1173..-2040..-
a500: 32 39 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  2958....onlyif m
a510: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
a520: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
a530: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
a540: 72 74 20 6c 61 62 65 6c 2d 32 32 34 0d 0a 53 45  rt label-224..SE
a550: 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2b 20  LECT ALL col0 + 
a560: 2d 20 63 6f 6c 31 20 2b 20 43 41 53 54 28 20 4e  - col1 + CAST( N
a570: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
a580: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
a590: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
a5a0: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
a5b0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
a5c0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
a5d0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
a5e0: 6c 2d 32 32 34 0d 0a 53 45 4c 45 43 54 20 41 4c  l-224..SELECT AL
a5f0: 4c 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 31 20  L col0 + - col1 
a600: 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
a610: 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
a620: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
a630: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
a640: 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
a650: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
a660: 63 6f 6c 31 20 2b 20 2b 20 2b 20 63 6f 6c 32 20  col1 + + + col2 
a670: 2d 20 2b 20 36 35 20 2a 20 2b 20 2d 20 63 6f 6c  - + 65 * + - col
a680: 32 20 2b 20 2d 20 63 6f 6c 32 20 2d 20 2b 20 2b  2 + - col2 - + +
a690: 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
a6a0: 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
a6b0: 2d 2d 0d 0a 31 34 39 35 0d 0a 32 36 30 30 0d 0a  --..1495..2600..
a6c0: 33 37 37 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  3770....skipif p
a6d0: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
a6e0: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
a6f0: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
a700: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
a710: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
a720: 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20 63 6f 6c  ..SELECT ( - col
a730: 32 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  2 ) col2 FROM ta
a740: 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
a750: 20 35 30 20 2b 20 2d 20 33 20 3d 20 4e 55 4c 4c   50 + - 3 = NULL
a760: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
a770: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
a780: 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
a790: 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
a7a0: 45 20 63 6f 6c 31 20 2a 20 2b 20 33 31 20 2f 20  E col1 * + 31 / 
a7b0: 2d 20 2b 20 63 6f 6c 30 20 2f 20 63 6f 6c 32 20  - + col0 / col2 
a7c0: 2b 20 63 6f 6c 30 20 3d 20 32 36 0d 0a 2d 2d 2d  + col0 = 26..---
a7d0: 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
a7e0: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
a7f0: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
a800: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 32  rowsort label-22
a810: 38 0d 0a 53 45 4c 45 43 54 20 4d 49 4e 28 20 2d  8..SELECT MIN( -
a820: 20 33 39 20 29 20 2b 20 2d 20 2b 20 37 38 20 46   39 ) + - + 78 F
a830: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
a840: 2d 31 31 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -117....skipif m
a850: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
a860: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
a870: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 32 38  owsort label-228
a880: 0d 0a 53 45 4c 45 43 54 20 4d 49 4e 20 28 20 2d  ..SELECT MIN ( -
a890: 20 33 39 20 29 20 2b 20 2d 20 2b 20 37 38 20 46   39 ) + - + 78 F
a8a0: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
a8b0: 2d 31 31 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -117....query I 
a8c0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
a8d0: 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
a8e0: 2a 20 37 20 2b 20 2b 20 28 20 2b 20 2d 20 63 6f  * 7 + + ( + - co
a8f0: 6c 30 20 29 20 2b 20 2b 20 2b 20 63 6f 6c 31 20  l0 ) + + + col1 
a900: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
a910: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 39 34 0d 0a 2d  1..----..-394..-
a920: 36 37 35 0d 0a 2d 36 38 31 0d 0a 0d 0a 6f 6e 6c  675..-681....onl
a930: 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
a940: 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
a950: 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
a960: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33  rowsort label-23
a970: 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33 37  0..SELECT ALL 37
a980: 20 44 49 56 20 2b 20 2b 20 63 6f 6c 32 20 2d 20   DIV + + col2 - 
a990: 2d 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  - + col2 AS col0
a9a0: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
a9b0: 0d 0a 31 33 0d 0a 34 37 0d 0a 39 39 0d 0a 0d 0a  ..13..47..99....
a9c0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
a9d0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
a9e0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
a9f0: 61 62 65 6c 2d 32 33 30 0d 0a 53 45 4c 45 43 54  abel-230..SELECT
aa00: 20 41 4c 4c 20 33 37 20 2f 20 2b 20 2b 20 63 6f   ALL 37 / + + co
aa10: 6c 32 20 2d 20 2d 20 2b 20 63 6f 6c 32 20 41 53  l2 - - + col2 AS
aa20: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
aa30: 0a 2d 2d 2d 2d 0d 0a 31 33 0d 0a 34 37 0d 0a 39  .----..13..47..9
aa40: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
aa50: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
aa60: 20 63 6f 6c 31 20 2a 20 28 20 2b 20 63 6f 6c 31   col1 * ( + col1
aa70: 20 29 20 2b 20 28 20 63 6f 6c 30 20 29 20 41 53   ) + ( col0 ) AS
aa80: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
aa90: 0a 2d 2d 2d 2d 0d 0a 35 32 38 0d 0a 36 35 37 36  .----..528..6576
aaa0: 0d 0a 39 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..98....onlyif m
aab0: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
aac0: 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
aad0: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
aae0: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
aaf0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 32 0d 0a  sort label-232..
ab00: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
ab10: 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
ab20: 53 49 47 4e 45 44 20 29 20 2a 20 2b 20 37 36 20  SIGNED ) * + 76 
ab30: 2d 20 2d 20 2b 20 33 36 20 2b 20 4d 49 4e 28 20  - - + 36 + MIN( 
ab40: 2d 20 33 20 29 20 2a 20 43 41 53 54 28 20 4e 55  - 3 ) * CAST( NU
ab50: 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41  LL AS SIGNED ) A
ab60: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
ab70: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
ab80: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
ab90: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
aba0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
abb0: 61 62 65 6c 2d 32 33 32 0d 0a 53 45 4c 45 43 54  abel-232..SELECT
abc0: 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53 54   DISTINCT - CAST
abd0: 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
abe0: 45 52 20 29 20 2a 20 2b 20 37 36 20 2d 20 2d 20  ER ) * + 76 - - 
abf0: 2b 20 33 36 20 2b 20 4d 49 4e 20 28 20 2d 20 33  + 36 + MIN ( - 3
ac00: 20 29 20 2a 20 43 41 53 54 20 28 20 4e 55 4c 4c   ) * CAST ( NULL
ac10: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53   AS INTEGER ) AS
ac20: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
ac30: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
ac40: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
ac50: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
ac60: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
ac70: 74 20 6c 61 62 65 6c 2d 32 33 33 0d 0a 53 45 4c  t label-233..SEL
ac80: 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ECT - COUNT( * )
ac90: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
aca0: 62 31 20 57 48 45 52 45 20 2b 20 2d 20 63 6f 6c  b1 WHERE + - col
acb0: 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
acc0: 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
acd0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
ace0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
acf0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 33 0d 0a  sort label-233..
ad00: 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28  SELECT - COUNT (
ad10: 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
ad20: 4d 20 74 61 62 31 20 57 48 45 52 45 20 2b 20 2d  M tab1 WHERE + -
ad30: 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d   col0 IS NULL..-
ad40: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..0....onlyif
ad50: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
ad60: 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
ad70: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
ad80: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
ad90: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 34  owsort label-234
ada0: 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2b 20 43  ..SELECT - ( + C
adb0: 41 53 54 28 20 4d 49 4e 28 20 41 4c 4c 20 35 33  AST( MIN( ALL 53
adc0: 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 29   ) AS SIGNED ) )
add0: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
ade0: 0d 0a 2d 35 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-53....skipif 
adf0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
ae00: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
ae10: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33  rowsort label-23
ae20: 34 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2b 20  4..SELECT - ( + 
ae30: 43 41 53 54 20 28 20 4d 49 4e 20 28 20 41 4c 4c  CAST ( MIN ( ALL
ae40: 20 35 33 20 29 20 41 53 20 49 4e 54 45 47 45 52   53 ) AS INTEGER
ae50: 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a   ) ) FROM tab1..
ae60: 2d 2d 2d 2d 0d 0a 2d 35 33 0d 0a 0d 0a 71 75 65  ----..-53....que
ae70: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
ae80: 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2b 20  LECT ALL col0 + 
ae90: 2d 20 2b 20 35 35 20 41 53 20 63 6f 6c 31 20 46  - + 55 AS col1 F
aea0: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
aeb0: 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
aec0: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
aed0: 2d 0d 0a 2d 34 30 0d 0a 33 32 0d 0a 34 32 0d 0a  -..-40..32..42..
aee0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
aef0: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
af00: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
af10: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
af20: 61 62 65 6c 2d 32 33 36 0d 0a 53 45 4c 45 43 54  abel-236..SELECT
af30: 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30   ALL * FROM tab0
af40: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 63   AS cor0 WHERE c
af50: 6f 6c 32 20 49 4e 20 28 20 63 6f 6c 31 20 2a 20  ol2 IN ( col1 * 
af60: 63 6f 6c 31 20 2b 20 43 41 53 54 28 20 2d 20 2b  col1 + CAST( - +
af70: 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20   col2 AS SIGNED 
af80: 29 20 2a 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d  ) * + col2 )..--
af90: 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
afa0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
afb0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
afc0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 36  owsort label-236
afd0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
afe0: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
aff0: 20 57 48 45 52 45 20 63 6f 6c 32 20 49 4e 20 28   WHERE col2 IN (
b000: 20 63 6f 6c 31 20 2a 20 63 6f 6c 31 20 2b 20 43   col1 * col1 + C
b010: 41 53 54 20 28 20 2d 20 2b 20 63 6f 6c 32 20 41  AST ( - + col2 A
b020: 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b 20  S INTEGER ) * + 
b030: 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col2 )..----....
b040: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
b050: 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 41  .SELECT + col0 A
b060: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
b070: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
b080: 4f 54 20 2b 20 63 6f 6c 32 20 3e 3d 20 4e 55 4c  OT + col2 >= NUL
b090: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
b0a0: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
b0b0: 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
b0c0: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
b0d0: 52 45 20 28 20 2d 20 63 6f 6c 32 20 29 20 49 4e  RE ( - col2 ) IN
b0e0: 20 28 20 2d 20 34 36 20 29 0d 0a 2d 2d 2d 2d 0d   ( - 46 )..----.
b0f0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
b100: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
b110: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
b120: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 39 0d  wsort label-239.
b130: 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a  .SELECT COUNT( *
b140: 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
b150: 31 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  1 cor0 CROSS JOI
b160: 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 0d 0a  N tab1 AS cor1..
b170: 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69  ----..9....skipi
b180: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
b190: 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
b1a0: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
b1b0: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
b1c0: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
b1d0: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
b1e0: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
b1f0: 72 74 20 6c 61 62 65 6c 2d 32 33 39 0d 0a 53 45  rt label-239..SE
b200: 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29  LECT COUNT ( * )
b210: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
b220: 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
b230: 74 61 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab1 AS cor1..--
b240: 2d 2d 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..9....onlyif 
b250: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
b260: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
b270: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
b280: 6c 2d 32 34 30 0d 0a 53 45 4c 45 43 54 20 41 4c  l-240..SELECT AL
b290: 4c 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43  L COUNT( DISTINC
b2a0: 54 20 2b 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f  T + + col2 ) FRO
b2b0: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  M tab1..----..3.
b2c0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
b2d0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
b2e0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
b2f0: 74 20 6c 61 62 65 6c 2d 32 34 30 0d 0a 53 45 4c  t label-240..SEL
b300: 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20  ECT ALL COUNT ( 
b310: 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c  DISTINCT + + col
b320: 32 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  2 ) FROM tab1..-
b330: 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..3....onlyif
b340: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
b350: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
b360: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
b370: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 31 0d 0a  sort label-241..
b380: 53 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20 2b  SELECT + CAST( +
b390: 20 2d 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45   - col2 AS SIGNE
b3a0: 44 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  D ) FROM tab0..-
b3b0: 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d 34 37 0d 0a 2d  ---..-10..-47..-
b3c0: 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  99....skipif mys
b3d0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
b3e0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
b3f0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 31 0d 0a  sort label-241..
b400: 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28 20  SELECT + CAST ( 
b410: 2b 20 2d 20 63 6f 6c 32 20 41 53 20 49 4e 54 45  + - col2 AS INTE
b420: 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  GER ) FROM tab0.
b430: 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d 34 37 0d  .----..-10..-47.
b440: 0a 2d 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-99....onlyif m
b450: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
b460: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
b470: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
b480: 72 74 20 6c 61 62 65 6c 2d 32 34 32 0d 0a 53 45  rt label-242..SE
b490: 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2a 20 2b 20  LECT - col0 * + 
b4a0: 43 41 53 54 28 20 2d 20 37 32 20 41 53 20 53 49  CAST( - 72 AS SI
b4b0: 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20 46  GNED ) AS col0 F
b4c0: 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
b4d0: 2d 2d 2d 0d 0a 33 36 37 32 0d 0a 36 31 32 30 0d  ---..3672..6120.
b4e0: 0a 36 35 35 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  .6552....skipif 
b4f0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
b500: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
b510: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34  rowsort label-24
b520: 32 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30  2..SELECT - col0
b530: 20 2a 20 2b 20 43 41 53 54 20 28 20 2d 20 37 32   * + CAST ( - 72
b540: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53   AS INTEGER ) AS
b550: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
b560: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 36 37 32  cor0..----..3672
b570: 0d 0a 36 31 32 30 0d 0a 36 35 35 32 0d 0a 0d 0a  ..6120..6552....
b580: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
b590: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
b5a0: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
b5b0: 72 74 20 6c 61 62 65 6c 2d 32 34 33 0d 0a 53 45  rt label-243..SE
b5c0: 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  LECT COUNT( * ) 
b5d0: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
b5e0: 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f  0 WHERE NOT - co
b5f0: 6c 32 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  l2 = NULL..----.
b600: 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
b610: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
b620: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
b630: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 33 0d 0a  sort label-243..
b640: 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a  SELECT COUNT ( *
b650: 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
b660: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
b670: 20 63 6f 6c 32 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d   col2 = NULL..--
b680: 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
b690: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
b6a0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
b6b0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
b6c0: 6f 72 74 20 6c 61 62 65 6c 2d 32 34 34 0d 0a 53  ort label-244..S
b6d0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
b6e0: 6f 6c 32 20 2b 20 2d 20 32 39 20 41 53 20 63 6f  ol2 + - 29 AS co
b6f0: 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l1 FROM tab0 WHE
b700: 52 45 20 4e 4f 54 20 2b 20 2b 20 39 38 20 42 45  RE NOT + + 98 BE
b710: 54 57 45 45 4e 20 2d 20 43 41 53 54 28 20 2d 20  TWEEN - CAST( - 
b720: 2d 20 63 6f 6c 30 20 41 53 20 53 49 47 4e 45 44  - col0 AS SIGNED
b730: 20 29 20 41 4e 44 20 28 20 2b 20 2d 20 63 6f 6c   ) AND ( + - col
b740: 31 20 2a 20 2d 20 28 20 2d 20 63 6f 6c 31 20 29  1 * - ( - col1 )
b750: 20 2b 20 2d 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d   + - col0 )..---
b760: 2d 0d 0a 2d 31 39 0d 0a 31 38 0d 0a 37 30 0d 0a  -..-19..18..70..
b770: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
b780: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
b790: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b7a0: 20 6c 61 62 65 6c 2d 32 34 34 0d 0a 53 45 4c 45   label-244..SELE
b7b0: 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32  CT DISTINCT col2
b7c0: 20 2b 20 2d 20 32 39 20 41 53 20 63 6f 6c 31 20   + - 29 AS col1 
b7d0: 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
b7e0: 4e 4f 54 20 2b 20 2b 20 39 38 20 42 45 54 57 45  NOT + + 98 BETWE
b7f0: 45 4e 20 2d 20 43 41 53 54 20 28 20 2d 20 2d 20  EN - CAST ( - - 
b800: 63 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52 20  col0 AS INTEGER 
b810: 29 20 41 4e 44 20 28 20 2b 20 2d 20 63 6f 6c 31  ) AND ( + - col1
b820: 20 2a 20 2d 20 28 20 2d 20 63 6f 6c 31 20 29 20   * - ( - col1 ) 
b830: 2b 20 2d 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d  + - col0 )..----
b840: 0d 0a 2d 31 39 0d 0a 31 38 0d 0a 37 30 0d 0a 0d  ..-19..18..70...
b850: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
b860: 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
b870: 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 55 4c  M tab2 WHERE NUL
b880: 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20  L NOT BETWEEN - 
b890: 39 30 20 2b 20 2d 20 32 32 20 41 4e 44 20 2b 20  90 + - 22 AND + 
b8a0: 2b 20 63 6f 6c 30 20 41 4e 44 20 63 6f 6c 32 20  + col0 AND col2 
b8b0: 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
b8c0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
b8d0: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43  CAST syntax: DEC
b8e0: 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65  IMAL type: ..que
b8f0: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
b900: 62 65 6c 2d 32 34 36 0d 0a 53 45 4c 45 43 54 20  bel-246..SELECT 
b910: 41 4c 4c 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  ALL CAST( NULL A
b920: 53 20 44 45 43 49 4d 41 4c 20 29 20 2a 20 2b 20  S DECIMAL ) * + 
b930: 31 37 20 2f 20 2b 20 36 37 20 63 6f 6c 32 2c 20  17 / + 67 col2, 
b940: 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  col1 AS col1 FRO
b950: 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab0..----..NU
b960: 4c 4c 0d 0a 31 0d 0a 4e 55 4c 4c 0d 0a 32 31 0d  LL..1..NULL..21.
b970: 0a 4e 55 4c 4c 0d 0a 38 31 0d 0a 0d 0a 73 6b 69  .NULL..81....ski
b980: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
b990: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
b9a0: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
b9b0: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
b9c0: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
b9d0: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
b9e0: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
b9f0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 36 0d  wsort label-246.
ba00: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54  .SELECT ALL CAST
ba10: 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20   ( NULL AS REAL 
ba20: 29 20 2a 20 2b 20 31 37 20 2f 20 2b 20 36 37 20  ) * + 17 / + 67 
ba30: 63 6f 6c 32 2c 20 63 6f 6c 31 20 41 53 20 63 6f  col2, col1 AS co
ba40: 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
ba50: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31 0d 0a 4e 55 4c  --..NULL..1..NUL
ba60: 4c 0d 0a 32 31 0d 0a 4e 55 4c 4c 0d 0a 38 31 0d  L..21..NULL..81.
ba70: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
ba80: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
ba90: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
baa0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 37 0d  wsort label-247.
bab0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
bac0: 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
bad0: 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
bae0: 36 32 20 2f 20 2b 20 2b 20 31 31 20 3c 3d 20 2b  62 / + + 11 <= +
baf0: 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 33   - col1..----..3
bb00: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
bb10: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
bb20: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
bb30: 72 74 20 6c 61 62 65 6c 2d 32 34 37 0d 0a 53 45  rt label-247..SE
bb40: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f  LECT DISTINCT CO
bb50: 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
bb60: 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 36 32  ab0 WHERE NOT 62
bb70: 20 2f 20 2b 20 2b 20 31 31 20 3c 3d 20 2b 20 2d   / + + 11 <= + -
bb80: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   col1..----..3..
bb90: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
bba0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
bbb0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  x: ..query II ro
bbc0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 38 0d  wsort label-248.
bbd0: 0a 53 45 4c 45 43 54 20 36 30 20 63 6f 6c 32 2c  .SELECT 60 col2,
bbe0: 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52   + COUNT( * ) FR
bbf0: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 36  OM tab2..----..6
bc00: 30 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  0..3....skipif m
bc10: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
bc20: 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
bc30: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
bc40: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
bc50: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
bc60: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
bc70: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
bc80: 20 6c 61 62 65 6c 2d 32 34 38 0d 0a 53 45 4c 45   label-248..SELE
bc90: 43 54 20 36 30 20 63 6f 6c 32 2c 20 2b 20 43 4f  CT 60 col2, + CO
bca0: 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
bcb0: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 36 30 0d 0a 33  ab2..----..60..3
bcc0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
bcd0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
bce0: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
bcf0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 39  owsort label-249
bd00: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43  ..SELECT ALL - C
bd10: 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 4d 49  OUNT( * ) * + MI
bd20: 4e 28 20 31 32 20 29 20 41 53 20 63 6f 6c 31 20  N( 12 ) AS col1 
bd30: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
bd40: 0a 2d 33 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-36....skipif m
bd50: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
bd60: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
bd70: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 39  owsort label-249
bd80: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43  ..SELECT ALL - C
bd90: 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 4d  OUNT ( * ) * + M
bda0: 49 4e 20 28 20 31 32 20 29 20 41 53 20 63 6f 6c  IN ( 12 ) AS col
bdb0: 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
bdc0: 2d 0d 0a 2d 33 36 0d 0a 0d 0a 71 75 65 72 79 20  -..-36....query 
bdd0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
bde0: 54 20 44 49 53 54 49 4e 43 54 20 41 56 47 20 28  T DISTINCT AVG (
bdf0: 20 2b 20 34 36 20 29 20 41 53 20 63 6f 6c 32 20   + 46 ) AS col2 
be00: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
be10: 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  NULL IS NOT NULL
be20: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
be30: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
be40: 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
be50: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
be60: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
be70: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
be80: 65 6c 2d 32 35 31 0d 0a 53 45 4c 45 43 54 20 43  el-251..SELECT C
be90: 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2b 20  OUNT( * ) * + + 
bea0: 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
beb0: 47 4e 45 44 20 29 20 2a 20 2d 20 2b 20 43 4f 55  GNED ) * - + COU
bec0: 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  NT( * ) AS col2 
bed0: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
bee0: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
bef0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
bf00: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
bf10: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35  rowsort label-25
bf20: 31 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  1..SELECT COUNT 
bf30: 28 20 2a 20 29 20 2a 20 2b 20 2b 20 43 41 53 54  ( * ) * + + CAST
bf40: 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
bf50: 45 52 20 29 20 2a 20 2d 20 2b 20 43 4f 55 4e 54  ER ) * - + COUNT
bf60: 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46   ( * ) AS col2 F
bf70: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
bf80: 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  NULL....skipif p
bf90: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
bfa0: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
bfb0: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
bfc0: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
bfd0: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
bfe0: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30  t..SELECT + col0
bff0: 2c 20 2d 20 63 6f 6c 31 20 63 6f 6c 32 20 46 52  , - col1 col2 FR
c000: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
c010: 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  T NULL IS NOT NU
c020: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 2d 38  LL..----..15..-8
c030: 31 0d 0a 38 37 0d 0a 2d 32 31 0d 0a 39 37 0d 0a  1..87..-21..97..
c040: 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  -1....onlyif mys
c050: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
c060: 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  : aggregate synt
c070: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
c080: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
c090: 72 74 20 6c 61 62 65 6c 2d 32 35 33 0d 0a 53 45  rt label-253..SE
c0a0: 4c 45 43 54 20 2b 20 43 41 53 54 28 20 43 4f 55  LECT + CAST( COU
c0b0: 4e 54 28 20 2b 20 2d 20 28 20 2b 20 2d 20 63 6f  NT( + - ( + - co
c0c0: 6c 30 20 29 20 29 20 41 53 20 53 49 47 4e 45 44  l0 ) ) AS SIGNED
c0d0: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
c0e0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  tab1..----..3...
c0f0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
c100: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
c110: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
c120: 6c 61 62 65 6c 2d 32 35 33 0d 0a 53 45 4c 45 43  label-253..SELEC
c130: 54 20 2b 20 43 41 53 54 20 28 20 43 4f 55 4e 54  T + CAST ( COUNT
c140: 20 28 20 2b 20 2d 20 28 20 2b 20 2d 20 63 6f 6c   ( + - ( + - col
c150: 30 20 29 20 29 20 41 53 20 49 4e 54 45 47 45 52  0 ) ) AS INTEGER
c160: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
c170: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  tab1..----..3...
c180: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
c190: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
c1a0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
c1b0: 6f 72 74 20 6c 61 62 65 6c 2d 32 35 34 0d 0a 53  ort label-254..S
c1c0: 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a  ELECT - COUNT( *
c1d0: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
c1e0: 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2b  tab2 WHERE NOT +
c1f0: 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d   col0 IS NULL..-
c200: 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69  ---..-3....skipi
c210: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
c220: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
c230: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
c240: 32 35 34 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f  254..SELECT - CO
c250: 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
c260: 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  1 FROM tab2 WHER
c270: 45 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 49 53 20  E NOT + col0 IS 
c280: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  NULL..----..-3..
c290: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
c2a0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
c2b0: 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
c2c0: 45 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20  E NULL NOT IN ( 
c2d0: 2b 20 2d 20 36 2c 20 35 20 2a 20 63 6f 6c 30 20  + - 6, 5 * col0 
c2e0: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  )..----....query
c2f0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
c300: 43 54 20 2b 20 31 34 20 2b 20 2b 20 63 6f 6c 30  CT + 14 + + col0
c310: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
c320: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 30 0d 0a 37 38  r0..----..60..78
c330: 0d 0a 38 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..89....onlyif m
c340: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
c350: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
c360: 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
c370: 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
c380: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
c390: 65 6c 2d 32 35 37 0d 0a 53 45 4c 45 43 54 20 2d  el-257..SELECT -
c3a0: 20 63 6f 6c 30 20 44 49 56 20 2b 20 34 36 20 46   col0 DIV + 46 F
c3b0: 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b  ROM tab2 WHERE +
c3c0: 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
c3d0: 20 53 49 47 4e 45 44 20 29 20 49 53 20 4e 55 4c   SIGNED ) IS NUL
c3e0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d  L..----..-1..-1.
c3f0: 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-1....skipif my
c400: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
c410: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
c420: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35 37 0d  wsort label-257.
c430: 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2f  .SELECT - col0 /
c440: 20 2b 20 34 36 20 46 52 4f 4d 20 74 61 62 32 20   + 46 FROM tab2 
c450: 57 48 45 52 45 20 2b 20 2b 20 43 41 53 54 20 28  WHERE + + CAST (
c460: 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
c470: 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   ) IS NULL..----
c480: 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a  ..-1..-1..-1....
c490: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
c4a0: 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 2c 20 33  ..SELECT col1, 3
c4b0: 20 2a 20 2b 20 2b 20 28 20 2d 20 63 6f 6c 31 20   * + + ( - col1 
c4c0: 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
c4d0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 2d  or0..----..51..-
c4e0: 31 35 33 0d 0a 36 37 0d 0a 2d 32 30 31 0d 0a 37  153..67..-201..7
c4f0: 37 0d 0a 2d 32 33 31 0d 0a 0d 0a 71 75 65 72 79  7..-231....query
c500: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
c510: 45 43 54 20 2d 20 32 30 2c 20 2d 20 63 6f 6c 31  ECT - 20, - col1
c520: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
c530: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
c540: 0d 0a 2d 32 30 0d 0a 2d 31 0d 0a 2d 32 30 0d 0a  ..-20..-1..-20..
c550: 2d 32 31 0d 0a 2d 32 30 0d 0a 2d 38 31 0d 0a 0d  -21..-20..-81...
c560: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
c570: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
c580: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
c590: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
c5a0: 65 6c 2d 32 36 30 0d 0a 53 45 4c 45 43 54 20 63  el-260..SELECT c
c5b0: 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20 2b 20 43  ol0 AS col1, + C
c5c0: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
c5d0: 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 30 20  NED ) FROM tab0 
c5e0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
c5f0: 35 0d 0a 4e 55 4c 4c 0d 0a 38 37 0d 0a 4e 55 4c  5..NULL..87..NUL
c600: 4c 0d 0a 39 37 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  L..97..NULL....s
c610: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
c620: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
c630: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
c640: 61 62 65 6c 2d 32 36 30 0d 0a 53 45 4c 45 43 54  abel-260..SELECT
c650: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20 2b   col0 AS col1, +
c660: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
c670: 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74  INTEGER ) FROM t
c680: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
c690: 2d 0d 0a 31 35 0d 0a 4e 55 4c 4c 0d 0a 38 37 0d  -..15..NULL..87.
c6a0: 0a 4e 55 4c 4c 0d 0a 39 37 0d 0a 4e 55 4c 4c 0d  .NULL..97..NULL.
c6b0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
c6c0: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
c6d0: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
c6e0: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
c6f0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
c700: 6c 61 62 65 6c 2d 32 36 31 0d 0a 53 45 4c 45 43  label-261..SELEC
c710: 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 2a  T ALL + COUNT( *
c720: 20 29 20 2a 20 2b 20 2d 20 43 41 53 54 28 20 4e   ) * + - CAST( N
c730: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
c740: 2a 20 2b 20 28 20 2b 20 43 4f 55 4e 54 28 20 2a  * + ( + COUNT( *
c750: 20 29 20 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20   ) ) + - COUNT( 
c760: 2a 20 29 20 2a 20 37 37 20 2b 20 4d 41 58 28 20  * ) * 77 + MAX( 
c770: 38 31 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  81 ) FROM tab0 A
c780: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
c790: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
c7a0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
c7b0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
c7c0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 31 0d 0a  sort label-261..
c7d0: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55  SELECT ALL + COU
c7e0: 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 2d 20 43  NT ( * ) * + - C
c7f0: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
c800: 54 45 47 45 52 20 29 20 2a 20 2b 20 28 20 2b 20  TEGER ) * + ( + 
c810: 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 2b 20  COUNT ( * ) ) + 
c820: 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  - COUNT ( * ) * 
c830: 37 37 20 2b 20 4d 41 58 20 28 20 38 31 20 29 20  77 + MAX ( 81 ) 
c840: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
c850: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
c860: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
c870: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
c880: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
c890: 6f 72 74 20 6c 61 62 65 6c 2d 32 36 32 0d 0a 53  ort label-262..S
c8a0: 45 4c 45 43 54 20 53 55 4d 28 20 44 49 53 54 49  ELECT SUM( DISTI
c8b0: 4e 43 54 20 2d 20 37 37 20 29 20 46 52 4f 4d 20  NCT - 77 ) FROM 
c8c0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
c8d0: 2d 2d 0d 0a 2d 37 37 0d 0a 0d 0a 73 6b 69 70 69  --..-77....skipi
c8e0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
c8f0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
c900: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
c910: 32 36 32 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20  262..SELECT SUM 
c920: 28 20 44 49 53 54 49 4e 43 54 20 2d 20 37 37 20  ( DISTINCT - 77 
c930: 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
c940: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 37 0d 0a  or0..----..-77..
c950: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
c960: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 33 30  t..SELECT + - 30
c970: 20 2d 20 2b 20 35 39 20 41 53 20 63 6f 6c 31 20   - + 59 AS col1 
c980: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
c990: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39 0d 0a 2d 38  0..----..-89..-8
c9a0: 39 0d 0a 2d 38 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  9..-89....onlyif
c9b0: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
c9c0: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
c9d0: 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72  e: ..query III r
c9e0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 34  owsort label-264
c9f0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
ca00: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
ca10: 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20   WHERE ( NULL ) 
ca20: 3e 3d 20 4e 55 4c 4c 20 41 4e 44 20 4e 4f 54 20  >= NULL AND NOT 
ca30: 2d 20 43 41 53 54 28 20 2b 20 2d 20 36 36 20 41  - CAST( + - 66 A
ca40: 53 20 53 49 47 4e 45 44 20 29 20 49 53 20 4e 55  S SIGNED ) IS NU
ca50: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  LL..----....skip
ca60: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
ca70: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
ca80: 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
ca90: 65 6c 2d 32 36 34 0d 0a 53 45 4c 45 43 54 20 41  el-264..SELECT A
caa0: 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  LL * FROM tab2 A
cab0: 53 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e  S cor0 WHERE ( N
cac0: 55 4c 4c 20 29 20 3e 3d 20 4e 55 4c 4c 20 41 4e  ULL ) >= NULL AN
cad0: 44 20 4e 4f 54 20 2d 20 43 41 53 54 20 28 20 2b  D NOT - CAST ( +
cae0: 20 2d 20 36 36 20 41 53 20 49 4e 54 45 47 45 52   - 66 AS INTEGER
caf0: 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   ) IS NULL..----
cb00: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
cb10: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
cb20: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
cb30: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 35  owsort label-265
cb40: 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
cb50: 28 20 2d 20 63 6f 6c 31 20 29 20 2d 20 2b 20 2d  ( - col1 ) - + -
cb60: 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
cb70: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
cb80: 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
cb90: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
cba0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
cbb0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
cbc0: 36 35 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55  65..SELECT - COU
cbd0: 4e 54 20 28 20 2d 20 63 6f 6c 31 20 29 20 2d 20  NT ( - col1 ) - 
cbe0: 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  + - COUNT ( * ) 
cbf0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
cc00: 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e  0..----..0....on
cc10: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
cc20: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
cc30: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
cc40: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
cc50: 36 36 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  66..SELECT + col
cc60: 32 20 2d 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 63  2 - + col2 + - c
cc70: 6f 6c 31 20 2b 20 2d 20 2b 20 43 41 53 54 28 20  ol1 + - + CAST( 
cc80: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
cc90: 20 2f 20 2d 20 36 39 20 41 53 20 63 6f 6c 31 20   / - 69 AS col1 
cca0: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
ccb0: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
ccc0: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
ccd0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
cce0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
ccf0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
cd00: 6c 2d 32 36 36 0d 0a 53 45 4c 45 43 54 20 2b 20  l-266..SELECT + 
cd10: 63 6f 6c 32 20 2d 20 2b 20 63 6f 6c 32 20 2b 20  col2 - + col2 + 
cd20: 2d 20 63 6f 6c 31 20 2b 20 2d 20 2b 20 43 41 53  - col1 + - + CAS
cd30: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
cd40: 47 45 52 20 29 20 2f 20 2d 20 36 39 20 41 53 20  GER ) / - 69 AS 
cd50: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
cd60: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
cd70: 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
cd80: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
cd90: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
cda0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
cdb0: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 44 49 56  SIGNED type: DIV
cdc0: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
cdd0: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
cde0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32   rowsort label-2
cdf0: 36 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  67..SELECT ALL -
ce00: 20 33 33 20 44 49 56 20 2d 20 43 41 53 54 28 20   33 DIV - CAST( 
ce10: 33 33 20 41 53 20 53 49 47 4e 45 44 20 29 20 2d  33 AS SIGNED ) -
ce20: 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   + - COUNT( * ) 
ce30: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
ce40: 31 0d 0a 2d 2d 2d 2d 0d 0a 34 0d 0a 0d 0a 73 6b  1..----..4....sk
ce50: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
ce60: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
ce70: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
ce80: 65 6c 2d 32 36 37 0d 0a 53 45 4c 45 43 54 20 41  el-267..SELECT A
ce90: 4c 4c 20 2d 20 33 33 20 2f 20 2d 20 43 41 53 54  LL - 33 / - CAST
cea0: 20 28 20 33 33 20 41 53 20 49 4e 54 45 47 45 52   ( 33 AS INTEGER
ceb0: 20 29 20 2d 20 2b 20 2d 20 43 4f 55 4e 54 20 28   ) - + - COUNT (
cec0: 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
ced0: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 34 0d  M tab1..----..4.
cee0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
cef0: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  rt..SELECT + col
cf00: 32 20 2d 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20  2 - + + col0 AS 
cf10: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col0 FROM tab2..
cf20: 2d 2d 2d 2d 0d 0a 2d 31 37 0d 0a 2d 32 33 0d 0a  ----..-17..-23..
cf30: 2d 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -24....query I r
cf40: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
cf50: 20 63 6f 6c 31 20 2d 20 2b 20 38 20 46 52 4f 4d   col1 - + 8 FROM
cf60: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 39   tab0..----..-29
cf70: 0d 0a 2d 38 39 0d 0a 2d 39 0d 0a 0d 0a 71 75 65  ..-89..-9....que
cf80: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
cf90: 4c 45 43 54 20 2b 20 2b 20 63 6f 6c 30 20 46 52  LECT + + col0 FR
cfa0: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
cfb0: 54 20 2b 20 32 32 20 49 53 20 4e 4f 54 20 4e 55  T + 22 IS NOT NU
cfc0: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
cfd0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
cfe0: 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2b 20 2d  ECT ALL col0 + -
cff0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
d000: 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 2b 20  WHERE NOT ( - + 
d010: 63 6f 6c 31 20 2f 20 2b 20 63 6f 6c 32 20 2b 20  col1 / + col2 + 
d020: 2b 20 63 6f 6c 32 20 29 20 3e 20 39 33 20 2b 20  + col2 ) > 93 + 
d030: 33 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  32..----..0..0..
d040: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
d050: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 31  sort..SELECT - 1
d060: 31 20 2a 20 63 6f 6c 30 20 2a 20 28 20 2b 20 37  1 * col0 * ( + 7
d070: 38 20 29 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  8 ) + col2 AS co
d080: 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
d090: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33 36  cor0..----..-436
d0a0: 36 32 0d 0a 2d 37 32 38 37 31 0d 0a 2d 37 38 30  62..-72871..-780
d0b0: 31 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  10....query I ro
d0c0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
d0d0: 4c 20 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20  L + col2 * col1 
d0e0: 2a 20 2b 20 2b 20 39 34 20 46 52 4f 4d 20 74 61  * + + 94 FROM ta
d0f0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
d100: 0d 0a 31 31 30 32 36 32 0d 0a 32 38 39 35 32 30  ..110262..289520
d110: 0d 0a 33 36 35 32 38 34 0d 0a 0d 0a 71 75 65 72  ..365284....quer
d120: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
d130: 4c 45 43 54 20 2d 20 2d 20 63 6f 6c 30 20 2a 20  LECT - - col0 * 
d140: 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20 2b 20  col0 AS col1, + 
d150: 37 37 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63  77 + - col1 AS c
d160: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
d170: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31 31   cor0..----..211
d180: 36 0d 0a 32 36 0d 0a 34 30 39 36 0d 0a 30 0d 0a  6..26..4096..0..
d190: 35 36 32 35 0d 0a 31 30 0d 0a 0d 0a 6f 6e 6c 79  5625..10....only
d1a0: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
d1b0: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
d1c0: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
d1d0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 35  owsort label-275
d1e0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
d1f0: 54 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 32 38 20  T + col1 * + 28 
d200: 2b 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  + + - CAST( NULL
d210: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20 2b   AS SIGNED ) + +
d220: 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20   + col1 AS col0 
d230: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
d240: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
d250: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
d260: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
d270: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
d280: 6c 61 62 65 6c 2d 32 37 35 0d 0a 53 45 4c 45 43  label-275..SELEC
d290: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
d2a0: 31 20 2a 20 2b 20 32 38 20 2b 20 2b 20 2d 20 43  1 * + 28 + + - C
d2b0: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
d2c0: 54 45 47 45 52 20 29 20 2b 20 2b 20 2b 20 63 6f  TEGER ) + + + co
d2d0: 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l1 AS col0 FROM 
d2e0: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
d2f0: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
d300: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
d310: 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c  LECT ALL - + col
d320: 31 20 2a 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f  1 * - col1 AS co
d330: 6c 30 2c 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  l0, - col2 AS co
d340: 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
d350: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 36 0d  cor0..----..196.
d360: 0a 2d 39 36 0d 0a 32 32 30 39 0d 0a 2d 36 38 0d  .-96..2209..-68.
d370: 0a 32 35 0d 0a 2d 35 39 0d 0a 0d 0a 6f 6e 6c 79  .25..-59....only
d380: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
d390: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
d3a0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
d3b0: 61 62 65 6c 2d 32 37 37 0d 0a 53 45 4c 45 43 54  abel-277..SELECT
d3c0: 20 4d 49 4e 28 20 41 4c 4c 20 37 37 20 29 20 2a   MIN( ALL 77 ) *
d3d0: 20 2b 20 28 20 2d 20 28 20 2b 20 2d 20 43 4f 55   + ( - ( + - COU
d3e0: 4e 54 28 20 2a 20 29 20 29 20 29 20 41 53 20 63  NT( * ) ) ) AS c
d3f0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
d400: 2d 2d 2d 0d 0a 32 33 31 0d 0a 0d 0a 73 6b 69 70  ---..231....skip
d410: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
d420: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
d430: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
d440: 2d 32 37 37 0d 0a 53 45 4c 45 43 54 20 4d 49 4e  -277..SELECT MIN
d450: 20 28 20 41 4c 4c 20 37 37 20 29 20 2a 20 2b 20   ( ALL 77 ) * + 
d460: 28 20 2d 20 28 20 2b 20 2d 20 43 4f 55 4e 54 20  ( - ( + - COUNT 
d470: 28 20 2a 20 29 20 29 20 29 20 41 53 20 63 6f 6c  ( * ) ) ) AS col
d480: 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
d490: 2d 0d 0a 32 33 31 0d 0a 0d 0a 71 75 65 72 79 20  -..231....query 
d4a0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
d4b0: 54 20 28 20 2d 20 28 20 63 6f 6c 30 20 29 20 29  T ( - ( col0 ) )
d4c0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
d4d0: 62 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  b0 WHERE NOT col
d4e0: 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  2 IS NOT NULL..-
d4f0: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
d500: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
d510: 41 4c 4c 20 2b 20 63 6f 6c 30 2c 20 2d 20 33 20  ALL + col0, - 3 
d520: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
d530: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 2d 33 0d  0..----..15..-3.
d540: 0a 38 37 0d 0a 2d 33 0d 0a 39 37 0d 0a 2d 33 0d  .87..-3..97..-3.
d550: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
d560: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
d570: 4e 43 54 20 2d 20 2b 20 33 31 20 2a 20 2d 20 63  NCT - + 31 * - c
d580: 6f 6c 32 20 2a 20 2b 20 36 33 20 2b 20 63 6f 6c  ol2 * + 63 + col
d590: 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
d5a0: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
d5b0: 2d 0d 0a 31 31 33 33 34 39 0d 0a 34 34 39 36 35  -..113349..44965
d5c0: 0d 0a 37 38 31 38 34 0d 0a 0d 0a 71 75 65 72 79  ..78184....query
d5d0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
d5e0: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 39 30  CT DISTINCT - 90
d5f0: 20 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   * col0 FROM tab
d600: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
d610: 0a 2d 34 35 39 30 0d 0a 2d 37 36 35 30 0d 0a 2d  .-4590..-7650..-
d620: 38 31 39 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  8190....onlyif m
d630: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
d640: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
d650: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
d660: 72 74 20 6c 61 62 65 6c 2d 32 38 32 0d 0a 53 45  rt label-282..SE
d670: 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 43 41 53  LECT ALL - + CAS
d680: 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
d690: 44 20 29 20 2a 20 2d 20 63 6f 6c 31 20 2a 20 2b  D ) * - col1 * +
d6a0: 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20 2d   col1 + + col2 -
d6b0: 20 2b 20 43 41 53 54 28 20 2d 20 35 36 20 41 53   + CAST( - 56 AS
d6c0: 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 34 37   SIGNED ) + + 47
d6d0: 20 2a 20 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 31   * - col0 * col1
d6e0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
d6f0: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
d700: 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
d710: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
d720: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
d730: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
d740: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 38 32 0d 0a  sort label-282..
d750: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 43  SELECT ALL - + C
d760: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
d770: 54 45 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 31  TEGER ) * - col1
d780: 20 2a 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f   * + col1 + + co
d790: 6c 32 20 2d 20 2b 20 43 41 53 54 20 28 20 2d 20  l2 - + CAST ( - 
d7a0: 35 36 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  56 AS INTEGER ) 
d7b0: 2b 20 2b 20 34 37 20 2a 20 2d 20 63 6f 6c 30 20  + + 47 * - col0 
d7c0: 2a 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46  * col1 AS col1 F
d7d0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
d7e0: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
d7f0: 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
d800: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
d810: 4c 45 43 54 20 2d 20 36 31 2c 20 2d 20 63 6f 6c  LECT - 61, - col
d820: 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
d830: 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
d840: 2d 36 31 0d 0a 2d 31 35 0d 0a 2d 36 31 0d 0a 2d  -61..-15..-61..-
d850: 38 37 0d 0a 2d 36 31 0d 0a 2d 39 37 0d 0a 0d 0a  87..-61..-97....
d860: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
d870: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
d880: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
d890: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
d8a0: 2d 32 38 34 0d 0a 53 45 4c 45 43 54 20 2b 20 63  -284..SELECT + c
d8b0: 6f 6c 30 20 2a 20 63 6f 6c 30 20 2b 20 2d 20 31  ol0 * col0 + - 1
d8c0: 35 20 44 49 56 20 2b 20 2b 20 33 39 20 63 6f 6c  5 DIV + + 39 col
d8d0: 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
d8e0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 31 31 36 0d  or0..----..2116.
d8f0: 0a 34 30 39 36 0d 0a 35 36 32 35 0d 0a 0d 0a 73  .4096..5625....s
d900: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
d910: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
d920: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
d930: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
d940: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
d950: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
d960: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
d970: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 38 34  owsort label-284
d980: 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20  ..SELECT + col0 
d990: 2a 20 63 6f 6c 30 20 2b 20 2d 20 31 35 20 2f 20  * col0 + - 15 / 
d9a0: 2b 20 2b 20 33 39 20 63 6f 6c 31 20 46 52 4f 4d  + + 39 col1 FROM
d9b0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
d9c0: 2d 2d 2d 0d 0a 32 31 31 36 0d 0a 34 30 39 36 0d  ---..2116..4096.
d9d0: 0a 35 36 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49  .5625....query I
d9e0: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
d9f0: 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
da00: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
da10: 20 28 20 2b 20 28 20 2b 20 2b 20 63 6f 6c 31 20   ( + ( + + col1 
da20: 29 20 29 20 3d 20 2d 20 31 33 0d 0a 2d 2d 2d 2d  ) ) = - 13..----
da30: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
da40: 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33  ng to 75c998aa53
da50: 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36  ac83218cbf2feb96
da60: 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20  2d0a49....query 
da70: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
da80: 43 54 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c 31 20  CT ALL - - col1 
da90: 41 53 20 63 6f 6c 31 2c 20 2d 20 63 6f 6c 32 20  AS col1, - col2 
daa0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
dab0: 30 20 57 48 45 52 45 20 63 6f 6c 30 20 3e 3d 20  0 WHERE col0 >= 
dac0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
dad0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
dae0: 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
daf0: 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
db00: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
db10: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
db20: 2d 32 38 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -287..SELECT - C
db30: 41 53 54 28 20 2d 20 28 20 4d 41 58 28 20 2d 20  AST( - ( MAX( - 
db40: 2d 20 63 6f 6c 32 20 29 20 29 20 41 53 20 53 49  - col2 ) ) AS SI
db50: 47 4e 45 44 20 29 20 2a 20 2b 20 43 4f 55 4e 54  GNED ) * + COUNT
db60: 28 20 2a 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20  ( * ) col0 FROM 
db70: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
db80: 2d 2d 0d 0a 31 37 34 0d 0a 0d 0a 73 6b 69 70 69  --..174....skipi
db90: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
dba0: 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
dbb0: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
dbc0: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
dbd0: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
dbe0: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
dbf0: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
dc00: 72 74 20 6c 61 62 65 6c 2d 32 38 37 0d 0a 53 45  rt label-287..SE
dc10: 4c 45 43 54 20 2d 20 43 41 53 54 20 28 20 2d 20  LECT - CAST ( - 
dc20: 28 20 4d 41 58 20 28 20 2d 20 2d 20 63 6f 6c 32  ( MAX ( - - col2
dc30: 20 29 20 29 20 41 53 20 49 4e 54 45 47 45 52 20   ) ) AS INTEGER 
dc40: 29 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ) * + COUNT ( * 
dc50: 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  ) col0 FROM tab2
dc60: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
dc70: 31 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  174....query I r
dc80: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
dc90: 49 53 54 49 4e 43 54 20 32 37 20 2b 20 2b 20 63  ISTINCT 27 + + c
dca0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol2 FROM tab2 co
dcb0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 30 0d 0a 36 37  r0..----..50..67
dcc0: 0d 0a 38 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..85....query I 
dcd0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
dce0: 2b 20 63 6f 6c 32 20 2d 20 39 30 20 2f 20 2b 20  + col2 - 90 / + 
dcf0: 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
dd00: 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
dd10: 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d   NULL IS NULL..-
dd20: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
dd30: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
dd40: 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
dd50: 52 45 20 4e 4f 54 20 2d 20 32 37 20 2b 20 2b 20  RE NOT - 27 + + 
dd60: 28 20 63 6f 6c 32 20 29 20 49 53 20 4e 55 4c 4c  ( col2 ) IS NULL
dd70: 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
dd80: 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39   hashing to 75c9
dd90: 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66  98aa53ac83218cbf
dda0: 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a  2feb962d0a49....
ddb0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
ddc0: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
ddd0: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
dde0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
ddf0: 2d 32 39 31 0d 0a 53 45 4c 45 43 54 20 44 49 53  -291..SELECT DIS
de00: 54 49 4e 43 54 20 32 35 20 44 49 56 20 2d 20 63  TINCT 25 DIV - c
de10: 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 63 6f 6c  ol0 * + col0 col
de20: 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
de30: 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
de40: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
de50: 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
de60: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
de70: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
de80: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
de90: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
dea0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
deb0: 6c 61 62 65 6c 2d 32 39 31 0d 0a 53 45 4c 45 43  label-291..SELEC
dec0: 54 20 44 49 53 54 49 4e 43 54 20 32 35 20 2f 20  T DISTINCT 25 / 
ded0: 2d 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30 20  - col0 * + col0 
dee0: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
def0: 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  ----..0....query
df00: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
df10: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
df20: 20 57 48 45 52 45 20 2d 20 28 20 2b 20 31 31 20   WHERE - ( + 11 
df30: 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  ) IS NOT NULL..-
df40: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
df50: 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36  shing to c4b4276
df60: 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65  5dff94eaaa46040e
df70: 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c  537fb43b7....onl
df80: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
df90: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
dfa0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
dfb0: 6c 61 62 65 6c 2d 32 39 33 0d 0a 53 45 4c 45 43  label-293..SELEC
dfc0: 54 20 2d 20 39 32 20 2b 20 2d 20 43 4f 55 4e 54  T - 92 + - COUNT
dfd0: 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
dfe0: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
dff0: 39 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  95....skipif mys
e000: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
e010: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
e020: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 39 33 0d 0a  sort label-293..
e030: 53 45 4c 45 43 54 20 2d 20 39 32 20 2b 20 2d 20  SELECT - 92 + - 
e040: 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
e050: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
e060: 2d 2d 2d 0d 0a 2d 39 35 0d 0a 0d 0a 6f 6e 6c 79  ---..-95....only
e070: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
e080: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
e090: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
e0a0: 61 62 65 6c 2d 32 39 34 0d 0a 53 45 4c 45 43 54  abel-294..SELECT
e0b0: 20 41 4c 4c 20 43 4f 55 4e 54 28 20 41 4c 4c 20   ALL COUNT( ALL 
e0c0: 2b 20 2b 20 38 39 20 29 20 41 53 20 63 6f 6c 31  + + 89 ) AS col1
e0d0: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
e0e0: 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..3....skipif my
e0f0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
e100: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
e110: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 39 34 0d  wsort label-294.
e120: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
e130: 54 20 28 20 41 4c 4c 20 2b 20 2b 20 38 39 20 29  T ( ALL + + 89 )
e140: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
e150: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71  b1..----..3....q
e160: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
e170: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
e180: 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45 20  tab0 cor0 WHERE 
e190: 2d 20 63 6f 6c 30 20 42 45 54 57 45 45 4e 20 2d  - col0 BETWEEN -
e1a0: 20 63 6f 6c 32 20 41 4e 44 20 4e 55 4c 4c 0d 0a   col2 AND NULL..
e1b0: 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ----....skipif p
e1c0: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
e1d0: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
e1e0: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
e1f0: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
e200: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
e210: 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20  ..SELECT - col2 
e220: 2b 20 2b 20 63 6f 6c 30 20 63 6f 6c 30 20 46 52  + + col0 col0 FR
e230: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 55  OM tab1 WHERE NU
e240: 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
e250: 0d 0a 2d 34 35 0d 0a 32 33 0d 0a 32 36 0d 0a 0d  ..-45..23..26...
e260: 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
e270: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
e280: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
e290: 20 28 20 33 32 20 42 45 54 57 45 45 4e 20 4e 55   ( 32 BETWEEN NU
e2a0: 4c 4c 20 41 4e 44 20 2d 20 63 6f 6c 30 20 2a 20  LL AND - col0 * 
e2b0: 2d 20 63 6f 6c 30 20 2f 20 2d 20 2b 20 63 6f 6c  - col0 / - + col
e2c0: 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  2 )..----....que
e2d0: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
e2e0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
e2f0: 62 32 20 57 48 45 52 45 20 63 6f 6c 31 20 4e 4f  b2 WHERE col1 NO
e300: 54 20 49 4e 20 28 20 2b 20 2d 20 31 33 2c 20 63  T IN ( + - 13, c
e310: 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ol1 )..----....o
e320: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
e330: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
e340: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
e350: 74 20 6c 61 62 65 6c 2d 32 39 39 0d 0a 53 45 4c  t label-299..SEL
e360: 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d 41 58  ECT DISTINCT MAX
e370: 28 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 29 20 63  ( ALL + col0 ) c
e380: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
e390: 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a 73 6b 69 70 69  ---..91....skipi
e3a0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
e3b0: 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
e3c0: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
e3d0: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
e3e0: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
e3f0: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
e400: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
e410: 72 74 20 6c 61 62 65 6c 2d 32 39 39 0d 0a 53 45  rt label-299..SE
e420: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d 41  LECT DISTINCT MA
e430: 58 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 29  X ( ALL + col0 )
e440: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
e450: 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a 71 75 65  .----..91....que
e460: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
e470: 4c 45 43 54 20 2b 20 34 35 20 2a 20 2b 20 63 6f  LECT + 45 * + co
e480: 6c 32 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63 6f  l2 - col1 * + co
e490: 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l0 AS col0 FROM 
e4a0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 31  tab2..----..-131
e4b0: 31 0d 0a 2d 32 34 31 35 0d 0a 2d 33 31 32 38 0d  1..-2415..-3128.
e4c0: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
e4d0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
e4e0: 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
e4f0: 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
e500: 4e 4f 54 20 28 20 2d 20 33 20 29 20 49 53 20 4e  NOT ( - 3 ) IS N
e510: 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
e520: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
e530: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
e540: 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
e550: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 32 0d 0a  sort label-302..
e560: 53 45 4c 45 43 54 20 2b 20 2d 20 32 31 20 2b 20  SELECT + - 21 + 
e570: 2d 20 2b 20 28 20 34 20 29 20 41 53 20 63 6f 6c  - + ( 4 ) AS col
e580: 32 2c 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20  2, - COUNT( * ) 
e590: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
e5a0: 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  2 cor0..----..-2
e5b0: 35 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  5..-3....skipif 
e5c0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
e5d0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
e5e0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
e5f0: 30 32 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 32  02..SELECT + - 2
e600: 31 20 2b 20 2d 20 2b 20 28 20 34 20 29 20 41 53  1 + - + ( 4 ) AS
e610: 20 63 6f 6c 32 2c 20 2d 20 43 4f 55 4e 54 20 28   col2, - COUNT (
e620: 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   * ) AS col1 FRO
e630: 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
e640: 2d 0d 0a 2d 32 35 0d 0a 2d 33 0d 0a 0d 0a 71 75  -..-25..-3....qu
e650: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
e660: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 34 36  ELECT ALL - - 46
e670: 20 2a 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 2b 20   * + col1 * + + 
e680: 28 20 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20 29  ( + ( - col0 ) )
e690: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
e6a0: 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
e6b0: 0d 0a 2d 31 39 35 35 30 0d 0a 2d 31 39 36 37 34  ..-19550..-19674
e6c0: 32 0d 0a 2d 33 32 38 34 34 0d 0a 0d 0a 71 75 65  2..-32844....que
e6d0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
e6e0: 4c 45 43 54 20 2b 20 2d 20 63 6f 6c 31 20 2b 20  LECT + - col1 + 
e6f0: 2d 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  - - col0 FROM ta
e700: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
e710: 0d 0a 2d 36 36 0d 0a 36 36 0d 0a 39 36 0d 0a 0d  ..-66..66..96...
e720: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
e730: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
e740: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
e750: 6f 72 74 20 6c 61 62 65 6c 2d 33 30 35 0d 0a 53  ort label-305..S
e760: 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e  ELECT ALL - COUN
e770: 54 28 20 2a 20 29 20 2b 20 2b 20 33 35 20 46 52  T( * ) + + 35 FR
e780: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
e790: 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a 0d 0a 73 6b 69  .----..32....ski
e7a0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
e7b0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
e7c0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
e7d0: 6c 2d 33 30 35 0d 0a 53 45 4c 45 43 54 20 41 4c  l-305..SELECT AL
e7e0: 4c 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  L - COUNT ( * ) 
e7f0: 2b 20 2b 20 33 35 20 46 52 4f 4d 20 74 61 62 32  + + 35 FROM tab2
e800: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
e810: 33 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  32....query III 
e820: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
e830: 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
e840: 6f 72 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 32  or0 WHERE - col2
e850: 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c   NOT BETWEEN NUL
e860: 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  L AND NULL..----
e870: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
e880: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
e890: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
e8a0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 37  owsort label-307
e8b0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b  ..SELECT ALL - +
e8c0: 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
e8d0: 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45   tab0 cor0 WHERE
e8e0: 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3d 20 28 20 4e   NOT NULL <= ( N
e8f0: 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a  ULL )..----..0..
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 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
e930: 20 6c 61 62 65 6c 2d 33 30 37 0d 0a 53 45 4c 45   label-307..SELE
e940: 43 54 20 41 4c 4c 20 2d 20 2b 20 43 4f 55 4e 54  CT ALL - + COUNT
e950: 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30   ( * ) FROM tab0
e960: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
e970: 4e 55 4c 4c 20 3c 3d 20 28 20 4e 55 4c 4c 20 29  NULL <= ( NULL )
e980: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65  ..----..0....que
e990: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
e9a0: 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 2b 20 63  LECT ALL + ( + c
e9b0: 6f 6c 32 20 29 20 2b 20 2b 20 63 6f 6c 32 20 41  ol2 ) + + col2 A
e9c0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
e9d0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36   cor0..----..116
e9e0: 0d 0a 34 36 0d 0a 38 30 0d 0a 0d 0a 6f 6e 6c 79  ..46..80....only
e9f0: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
ea00: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
ea10: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
ea20: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
ea30: 30 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  09..SELECT DISTI
ea40: 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  NCT * FROM tab1 
ea50: 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28 20  AS cor0 WHERE ( 
ea60: 2b 20 35 32 20 29 20 2f 20 2d 20 2d 20 28 20 2d  + 52 ) / - - ( -
ea70: 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
ea80: 20 53 49 47 4e 45 44 20 29 20 29 20 49 53 20 4e   SIGNED ) ) IS N
ea90: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
eaa0: 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
eab0: 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62  6c0a4111b36d04db
eac0: 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d  c811a11e4d54cad.
ead0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
eae0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
eaf0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
eb00: 6f 72 74 20 6c 61 62 65 6c 2d 33 30 39 0d 0a 53  ort label-309..S
eb10: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
eb20: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
eb30: 72 30 20 57 48 45 52 45 20 28 20 2b 20 35 32 20  r0 WHERE ( + 52 
eb40: 29 20 2f 20 2d 20 2d 20 28 20 2d 20 2b 20 43 41  ) / - - ( - + CA
eb50: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
eb60: 45 47 45 52 20 29 20 29 20 49 53 20 4e 55 4c 4c  EGER ) ) IS NULL
eb70: 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
eb80: 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30   hashing to c6c0
eb90: 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31  a4111b36d04dbc81
eba0: 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a  1a11e4d54cad....
ebb0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
ebc0: 0a 53 45 4c 45 43 54 20 2d 20 2d 20 39 38 20 2b  .SELECT - - 98 +
ebd0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
ebe0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
ebf0: 30 38 0d 0a 31 34 35 0d 0a 31 39 37 0d 0a 0d 0a  08..145..197....
ec00: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
ec10: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
ec20: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
ec30: 72 74 20 6c 61 62 65 6c 2d 33 31 31 0d 0a 53 45  rt label-311..SE
ec40: 4c 45 43 54 20 2b 20 4d 49 4e 28 20 41 4c 4c 20  LECT + MIN( ALL 
ec50: 2b 20 37 37 20 29 20 46 52 4f 4d 20 74 61 62 30  + 77 ) FROM tab0
ec60: 0d 0a 2d 2d 2d 2d 0d 0a 37 37 0d 0a 0d 0a 73 6b  ..----..77....sk
ec70: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
ec80: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
ec90: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
eca0: 65 6c 2d 33 31 31 0d 0a 53 45 4c 45 43 54 20 2b  el-311..SELECT +
ecb0: 20 4d 49 4e 20 28 20 41 4c 4c 20 2b 20 37 37 20   MIN ( ALL + 77 
ecc0: 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  ) FROM tab0..---
ecd0: 2d 0d 0a 37 37 0d 0a 0d 0a 71 75 65 72 79 20 49  -..77....query I
ece0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
ecf0: 54 20 41 4c 4c 20 36 32 2c 20 39 31 20 41 53 20  T ALL 62, 91 AS 
ed00: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
ed10: 2d 2d 2d 2d 0d 0a 36 32 0d 0a 39 31 0d 0a 36 32  ----..62..91..62
ed20: 0d 0a 39 31 0d 0a 36 32 0d 0a 39 31 0d 0a 0d 0a  ..91..62..91....
ed30: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
ed40: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
ed50: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
ed60: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
ed70: 6c 2d 33 31 33 0d 0a 53 45 4c 45 43 54 20 2b 20  l-313..SELECT + 
ed80: 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
ed90: 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 2c 20  GNED ) AS col1, 
eda0: 63 6f 6c 30 20 2b 20 39 38 20 46 52 4f 4d 20 74  col0 + 98 FROM t
edb0: 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab0..----..NULL.
edc0: 0a 31 31 33 0d 0a 4e 55 4c 4c 0d 0a 31 38 35 0d  .113..NULL..185.
edd0: 0a 4e 55 4c 4c 0d 0a 31 39 35 0d 0a 0d 0a 73 6b  .NULL..195....sk
ede0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
edf0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
ee00: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
ee10: 62 65 6c 2d 33 31 33 0d 0a 53 45 4c 45 43 54 20  bel-313..SELECT 
ee20: 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
ee30: 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
ee40: 6c 31 2c 20 63 6f 6c 30 20 2b 20 39 38 20 46 52  l1, col0 + 98 FR
ee50: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab0..----..N
ee60: 55 4c 4c 0d 0a 31 31 33 0d 0a 4e 55 4c 4c 0d 0a  ULL..113..NULL..
ee70: 31 38 35 0d 0a 4e 55 4c 4c 0d 0a 31 39 35 0d 0a  185..NULL..195..
ee80: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
ee90: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
eea0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
eeb0: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 34 0d 0a  sort label-314..
eec0: 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d 49 4e  SELECT ALL + MIN
eed0: 28 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 32  ( col1 ) AS col2
eee0: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
eef0: 0d 0a 35 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..51....skipif m
ef00: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
ef10: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
ef20: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 31 34  owsort label-314
ef30: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d  ..SELECT ALL + M
ef40: 49 4e 20 28 20 63 6f 6c 31 20 29 20 41 53 20 63  IN ( col1 ) AS c
ef50: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
ef60: 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a 73 6b 69 70 69  ---..51....skipi
ef70: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
ef80: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
ef90: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
efa0: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
efb0: 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ns..query II row
efc0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
efd0: 20 63 6f 6c 31 20 63 6f 6c 30 2c 20 2b 20 63 6f   col1 col0, + co
efe0: 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
eff0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a  tab1..----..14..
f000: 39 36 0d 0a 34 37 0d 0a 36 38 0d 0a 35 0d 0a 35  96..47..68..5..5
f010: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  9....query II ro
f020: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
f030: 63 6f 6c 31 2c 20 31 30 20 41 53 20 63 6f 6c 31  col1, 10 AS col1
f040: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
f050: 0d 0a 2d 35 31 0d 0a 31 30 0d 0a 2d 36 37 0d 0a  ..-51..10..-67..
f060: 31 30 0d 0a 2d 37 37 0d 0a 31 30 0d 0a 0d 0a 6f  10..-77..10....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 44 45 43 49 4d  ST syntax: DECIM
f090: 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  AL type: ..query
f0a0: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
f0b0: 6c 2d 33 31 37 0d 0a 53 45 4c 45 43 54 20 2d 20  l-317..SELECT - 
f0c0: 63 6f 6c 30 20 41 53 20 63 6f 6c 30 2c 20 34 31  col0 AS col0, 41
f0d0: 20 2a 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   * CAST( NULL AS
f0e0: 20 44 45 43 49 4d 41 4c 20 29 20 46 52 4f 4d 20   DECIMAL ) FROM 
f0f0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d  tab1..----..-51.
f100: 0a 4e 55 4c 4c 0d 0a 2d 38 35 0d 0a 4e 55 4c 4c  .NULL..-85..NULL
f110: 0d 0a 2d 39 31 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  ..-91..NULL....s
f120: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
f130: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
f140: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
f150: 61 62 65 6c 2d 33 31 37 0d 0a 53 45 4c 45 43 54  abel-317..SELECT
f160: 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 2c   - col0 AS col0,
f170: 20 34 31 20 2a 20 43 41 53 54 20 28 20 4e 55 4c   41 * CAST ( NUL
f180: 4c 20 41 53 20 52 45 41 4c 20 29 20 46 52 4f 4d  L AS REAL ) FROM
f190: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   tab1..----..-51
f1a0: 0d 0a 4e 55 4c 4c 0d 0a 2d 38 35 0d 0a 4e 55 4c  ..NULL..-85..NUL
f1b0: 4c 0d 0a 2d 39 31 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  L..-91..NULL....
f1c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
f1d0: 0a 53 45 4c 45 43 54 20 2d 20 38 33 20 2a 20 2d  .SELECT - 83 * -
f1e0: 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 28 20 2d 20   - col2 * + ( - 
f1f0: 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30  col2 ) FROM tab0
f200: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
f210: 31 38 33 33 34 37 0d 0a 38 31 33 34 38 33 0d 0a  183347..813483..
f220: 38 33 30 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  8300....query II
f230: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
f240: 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
f250: 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
f260: 4e 4f 54 20 28 20 2d 20 2b 20 63 6f 6c 32 20 4e  NOT ( - + col2 N
f270: 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 2b 20 35  OT BETWEEN - + 5
f280: 33 20 41 4e 44 20 33 35 20 2a 20 2d 20 38 20 2a  3 AND 35 * - 8 *
f290: 20 2d 20 2d 20 36 33 20 2d 20 2d 20 2d 20 34 31   - - 63 - - - 41
f2a0: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79   )..----....only
f2b0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
f2c0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
f2d0: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
f2e0: 6c 61 62 65 6c 2d 33 32 30 0d 0a 53 45 4c 45 43  label-320..SELEC
f2f0: 54 20 41 4c 4c 20 2d 20 37 39 2c 20 2b 20 43 4f  T ALL - 79, + CO
f300: 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32  UNT( * ) AS col2
f310: 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
f320: 0a 2d 2d 2d 2d 0d 0a 2d 37 39 0d 0a 33 0d 0a 0d  .----..-79..3...
f330: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
f340: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
f350: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
f360: 20 6c 61 62 65 6c 2d 33 32 30 0d 0a 53 45 4c 45   label-320..SELE
f370: 43 54 20 41 4c 4c 20 2d 20 37 39 2c 20 2b 20 43  CT ALL - 79, + C
f380: 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
f390: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l2 FROM tab0 cor
f3a0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 39 0d 0a 33 0d  0..----..-79..3.
f3b0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
f3c0: 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 35  rt..SELECT + - 5
f3d0: 35 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  5 FROM tab1 AS c
f3e0: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
f3f0: 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col2 IS NULL..--
f400: 2d 2d 0d 0a 2d 35 35 0d 0a 2d 35 35 0d 0a 2d 35  --..-55..-55..-5
f410: 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
f420: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
f430: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
f440: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
f450: 74 20 6c 61 62 65 6c 2d 33 32 32 0d 0a 53 45 4c  t label-322..SEL
f460: 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
f470: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
f480: 45 20 4e 4f 54 20 28 20 2d 20 63 6f 6c 31 20 2a  E NOT ( - col1 *
f490: 20 2d 20 2d 20 43 41 53 54 28 20 63 6f 6c 32 20   - - CAST( col2 
f4a0: 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20  AS SIGNED ) * - 
f4b0: 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32 20 49 53  col0 * + col2 IS
f4c0: 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39   NULL )..----..9
f4d0: 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
f4e0: 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34  to c4b42765dff94
f4f0: 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34  eaaa46040e537fb4
f500: 33 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  3b7....skipif my
f510: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
f520: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20  ible..query III 
f530: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 32  rowsort label-32
f540: 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  2..SELECT ALL * 
f550: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
f560: 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20  0 WHERE NOT ( - 
f570: 63 6f 6c 31 20 2a 20 2d 20 2d 20 43 41 53 54 20  col1 * - - CAST 
f580: 28 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45  ( col2 AS INTEGE
f590: 52 20 29 20 2a 20 2d 20 63 6f 6c 30 20 2a 20 2b  R ) * - col0 * +
f5a0: 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 20 29 0d   col2 IS NULL ).
f5b0: 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
f5c0: 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32  hashing to c4b42
f5d0: 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34  765dff94eaaa4604
f5e0: 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71  0e537fb43b7....q
f5f0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
f600: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
f610: 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
f620: 52 45 20 4e 4f 54 20 28 20 2d 20 33 36 20 29 20  RE NOT ( - 36 ) 
f630: 2b 20 2d 20 2d 20 63 6f 6c 32 20 2d 20 2d 20 63  + - - col2 - - c
f640: 6f 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 2a  ol1 * + - col0 *
f650: 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 31   + col2 * - col1
f660: 20 2b 20 2d 20 2d 20 32 31 20 42 45 54 57 45 45   + - - 21 BETWEE
f670: 4e 20 38 30 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d  N 80 AND NULL..-
f680: 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
f690: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
f6a0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
f6b0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
f6c0: 33 32 34 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49  324..SELECT + MI
f6d0: 4e 28 20 2b 20 2b 20 63 6f 6c 30 20 29 20 41 53  N( + + col0 ) AS
f6e0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
f6f0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34  AS cor0..----..4
f700: 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
f710: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
f720: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
f730: 6f 72 74 20 6c 61 62 65 6c 2d 33 32 34 0d 0a 53  ort label-324..S
f740: 45 4c 45 43 54 20 2b 20 4d 49 4e 20 28 20 2b 20  ELECT + MIN ( + 
f750: 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30  + col0 ) AS col0
f760: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
f770: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 0d 0a  r0..----..46....
f780: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
f790: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
f7a0: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
f7b0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
f7c0: 2d 33 32 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  -325..SELECT DIS
f7d0: 54 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 32 20 46  TINCT + - col2 F
f7e0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
f7f0: 20 57 48 45 52 45 20 63 6f 6c 31 20 2b 20 34 30   WHERE col1 + 40
f800: 20 2b 20 63 6f 6c 30 20 2a 20 43 41 53 54 28 20   + col0 * CAST( 
f810: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
f820: 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
f830: 2d 35 39 0d 0a 2d 36 38 0d 0a 2d 39 36 0d 0a 0d  -59..-68..-96...
f840: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
f850: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
f860: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
f870: 6c 61 62 65 6c 2d 33 32 35 0d 0a 53 45 4c 45 43  label-325..SELEC
f880: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 63  T DISTINCT + - c
f890: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
f8a0: 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31   cor0 WHERE col1
f8b0: 20 2b 20 34 30 20 2b 20 63 6f 6c 30 20 2a 20 43   + 40 + col0 * C
f8c0: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
f8d0: 54 45 47 45 52 20 29 20 49 53 20 4e 55 4c 4c 0d  TEGER ) IS NULL.
f8e0: 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d 36 38 0d  .----..-59..-68.
f8f0: 0a 2d 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-96....query I 
f900: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
f910: 41 4c 4c 20 2d 20 28 20 28 20 2d 20 2b 20 63 6f  ALL - ( ( - + co
f920: 6c 31 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46  l1 ) ) AS col0 F
f930: 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d  ROM tab0 cor0..-
f940: 2d 2d 2d 0d 0a 31 0d 0a 32 31 0d 0a 38 31 0d 0a  ---..1..21..81..
f950: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
f960: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
f970: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
f980: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
f990: 65 6c 2d 33 32 37 0d 0a 53 45 4c 45 43 54 20 41  el-327..SELECT A
f9a0: 4c 4c 20 2d 20 30 20 2a 20 63 6f 6c 31 20 2b 20  LL - 0 * col1 + 
f9b0: 2d 20 2b 20 32 36 20 2a 20 2d 20 35 35 20 2b 20  - + 26 * - 55 + 
f9c0: 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
f9d0: 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 63 6f 6c  SIGNED ) + + col
f9e0: 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
f9f0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
fa00: 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
fa10: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
fa20: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
fa30: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
fa40: 62 65 6c 2d 33 32 37 0d 0a 53 45 4c 45 43 54 20  bel-327..SELECT 
fa50: 41 4c 4c 20 2d 20 30 20 2a 20 63 6f 6c 31 20 2b  ALL - 0 * col1 +
fa60: 20 2d 20 2b 20 32 36 20 2a 20 2d 20 35 35 20 2b   - + 26 * - 55 +
fa70: 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   + CAST ( NULL A
fa80: 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20  S INTEGER ) + + 
fa90: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
faa0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
fab0: 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
fac0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
fad0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
fae0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
faf0: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 32 38 0d 0a  sort label-328..
fb00: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 28 20 2b  SELECT ALL - ( +
fb10: 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20   + COUNT( * ) ) 
fb20: 2b 20 2b 20 31 34 20 2a 20 2d 20 4d 41 58 28 20  + + 14 * - MAX( 
fb30: 2b 20 63 6f 6c 32 20 29 20 2a 20 2b 20 2b 20 43  + col2 ) * + + C
fb40: 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74  OUNT( * ) FROM t
fb50: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
fb60: 2d 0d 0a 2d 34 31 36 31 0d 0a 0d 0a 73 6b 69 70  -..-4161....skip
fb70: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
fb80: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
fb90: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
fba0: 2d 33 32 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -328..SELECT ALL
fbb0: 20 2d 20 28 20 2b 20 2b 20 43 4f 55 4e 54 20 28   - ( + + COUNT (
fbc0: 20 2a 20 29 20 29 20 2b 20 2b 20 31 34 20 2a 20   * ) ) + + 14 * 
fbd0: 2d 20 4d 41 58 20 28 20 2b 20 63 6f 6c 32 20 29  - MAX ( + col2 )
fbe0: 20 2a 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a   * + + COUNT ( *
fbf0: 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
fc00: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 31 36  cor0..----..-416
fc10: 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
fc20: 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
fc30: 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
fc40: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 32  rowsort label-32
fc50: 39 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e  9..SELECT - COUN
fc60: 54 28 20 2a 20 29 20 2a 20 2d 20 35 33 20 46 52  T( * ) * - 53 FR
fc70: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
fc80: 35 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  59....skipif mys
fc90: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
fca0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
fcb0: 73 6f 72 74 20 6c 61 62 65 6c 2d 33 32 39 0d 0a  sort label-329..
fcc0: 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28  SELECT - COUNT (
fcd0: 20 2a 20 29 20 2a 20 2d 20 35 33 20 46 52 4f 4d   * ) * - 53 FROM
fce0: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 39   tab0..----..159
fcf0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
fd00: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
fd10: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
fd20: 2b 20 63 6f 6c 31 20 2b 20 2b 20 38 36 20 2b 20  + col1 + + 86 + 
fd30: 2b 20 2b 20 63 6f 6c 31 20 2f 20 2b 20 2b 20 63  + + col1 / + + c
fd40: 6f 6c 31 20 2b 20 2b 20 63 6f 6c 31 20 49 53 20  ol1 + + col1 IS 
fd50: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
fd60: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
fd70: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
fd80: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
fd90: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
fda0: 33 33 31 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  331..SELECT - co
fdb0: 6c 31 20 41 53 20 63 6f 6c 31 2c 20 2d 20 63 6f  l1 AS col1, - co
fdc0: 6c 30 20 2d 20 43 41 53 54 28 20 2d 20 63 6f 6c  l0 - CAST( - col
fdd0: 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52  0 AS SIGNED ) FR
fde0: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
fdf0: 31 34 0d 0a 30 0d 0a 2d 34 37 0d 0a 30 0d 0a 2d  14..0..-47..0..-
fe00: 35 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  5..0....skipif m
fe10: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
fe20: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
fe30: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33  rowsort label-33
fe40: 31 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31  1..SELECT - col1
fe50: 20 41 53 20 63 6f 6c 31 2c 20 2d 20 63 6f 6c 30   AS col1, - col0
fe60: 20 2d 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 30   - CAST ( - col0
fe70: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
fe80: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
fe90: 31 34 0d 0a 30 0d 0a 2d 34 37 0d 0a 30 0d 0a 2d  14..0..-47..0..-
fea0: 35 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  5..0....query I 
feb0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
fec0: 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  + col1 FROM tab0
fed0: 20 57 48 45 52 45 20 28 20 4e 4f 54 20 28 20 4e   WHERE ( NOT ( N
fee0: 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c  ULL ) IS NOT NUL
fef0: 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 31  L )..----..1..21
ff00: 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..81....query II
ff10: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
ff20: 20 63 6f 6c 30 2c 20 33 31 20 41 53 20 63 6f 6c   col0, 31 AS col
ff30: 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
ff40: 2d 0d 0a 35 31 0d 0a 33 31 0d 0a 38 35 0d 0a 33  -..51..31..85..3
ff50: 31 0d 0a 39 31 0d 0a 33 31 0d 0a 0d 0a 71 75 65  1..91..31....que
ff60: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
ff70: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
ff80: 6c 31 20 2a 20 2b 20 28 20 63 6f 6c 30 20 29 20  l1 * + ( col0 ) 
ff90: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
ffa0: 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 34 36 0d 0a 34  2..----..2346..4
ffb0: 39 32 38 0d 0a 35 30 32 35 0d 0a 0d 0a 71 75 65  928..5025....que
ffc0: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
ffd0: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
ffe0: 62 31 20 57 48 45 52 45 20 28 20 4e 4f 54 20 63  b1 WHERE ( NOT c
fff0: 6f 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 49  ol1 * + - col0 I
10000 53 20 4e 4f 54 20 4e 55 4c 4c 20 29 0d 0a 2d 2d  S NOT NULL )..--
10010 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
10020 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
10030 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
10040 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
10050 33 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  36..SELECT DISTI
10060 4e 43 54 20 38 35 20 2b 20 2d 20 2b 20 53 55 4d  NCT 85 + - + SUM
10070 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20  ( DISTINCT col1 
10080 29 20 2b 20 2d 20 2d 20 35 38 20 41 53 20 63 6f  ) + - - 58 AS co
10090 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l0 FROM tab0 cor
100a0 30 0d 0a 2d 2d 2d 2d 0d 0a 34 30 0d 0a 0d 0a 73  0..----..40....s
100b0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
100c0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
100d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
100e0 62 65 6c 2d 33 33 36 0d 0a 53 45 4c 45 43 54 20  bel-336..SELECT 
100f0 44 49 53 54 49 4e 43 54 20 38 35 20 2b 20 2d 20  DISTINCT 85 + - 
10100 2b 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54  + SUM ( DISTINCT
10110 20 63 6f 6c 31 20 29 20 2b 20 2d 20 2d 20 35 38   col1 ) + - - 58
10120 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
10130 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34  b0 cor0..----..4
10140 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
10150 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
10160 20 2b 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20   + ( - - col0 ) 
10170 2b 20 2d 20 36 35 20 2b 20 2b 20 63 6f 6c 32 20  + - 65 + + col2 
10180 2b 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63  + - - col1 * + c
10190 6f 6c 30 20 2a 20 2d 20 2d 20 36 37 20 46 52 4f  ol0 * - - 67 FRO
101a0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
101b0 2d 2d 2d 2d 0d 0a 31 35 37 31 38 36 0d 0a 33 33  ----..157186..33
101c0 30 32 31 35 0d 0a 33 33 36 37 34 33 0d 0a 0d 0a  0215..336743....
101d0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
101e0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
101f0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
10200 72 74 20 6c 61 62 65 6c 2d 33 33 38 0d 0a 53 45  rt label-338..SE
10210 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58 28 20  LECT ALL - MAX( 
10220 44 49 53 54 49 4e 43 54 20 2d 20 34 33 20 29 20  DISTINCT - 43 ) 
10230 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
10240 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
10250 4a 4f 49 4e 20 74 61 62 32 20 63 6f 72 31 0d 0a  JOIN tab2 cor1..
10260 2d 2d 2d 2d 0d 0a 34 33 0d 0a 0d 0a 73 6b 69 70  ----..43....skip
10270 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
10280 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
10290 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
102a0 2d 33 33 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -338..SELECT ALL
102b0 20 2d 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43   - MAX ( DISTINC
102c0 54 20 2d 20 34 33 20 29 20 41 53 20 63 6f 6c 30  T - 43 ) AS col0
102d0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
102e0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
102f0 62 32 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 34  b2 cor1..----..4
10300 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  3....query III r
10310 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
10320 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  LL * FROM tab2 W
10330 48 45 52 45 20 2b 20 2b 20 63 6f 6c 31 20 2d 20  HERE + + col1 - 
10340 2d 20 2d 20 63 6f 6c 32 20 3c 3d 20 63 6f 6c 31  - - col2 <= col1
10350 20 2b 20 2d 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d   + - + col2..---
10360 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
10370 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35  ing to 75c998aa5
10380 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39  3ac83218cbf2feb9
10390 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69  62d0a49....onlyi
103a0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
103b0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
103c0 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
103d0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 30 0d  wsort label-340.
103e0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
103f0 20 2d 20 36 34 20 44 49 56 20 2b 20 28 20 2b 20   - 64 DIV + ( + 
10400 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
10410 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
10420 2d 31 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  -1..0....skipif 
10430 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
10440 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
10450 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34  rowsort label-34
10460 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
10470 43 54 20 2d 20 36 34 20 2f 20 2b 20 28 20 2b 20  CT - 64 / + ( + 
10480 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
10490 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
104a0 2d 31 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -1..0....onlyif 
104b0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
104c0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
104d0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
104e0 6f 72 74 20 6c 61 62 65 6c 2d 33 34 31 0d 0a 53  ort label-341..S
104f0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
10500 20 2d 20 63 6f 6c 32 20 44 49 56 20 2b 20 2b 20   - col2 DIV + + 
10510 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
10520 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
10530 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
10540 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
10550 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
10560 72 74 20 6c 61 62 65 6c 2d 33 34 31 0d 0a 53 45  rt label-341..SE
10570 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
10580 2d 20 63 6f 6c 32 20 2f 20 2b 20 2b 20 63 6f 6c  - col2 / + + col
10590 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
105a0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d  or0..----..-1...
105b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
105c0 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 34 35 20  ..SELECT + - 45 
105d0 2d 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 30 20  - col2 * - col0 
105e0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
105f0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
10600 0a 36 36 30 0d 0a 38 32 35 0d 0a 39 35 35 38 0d  .660..825..9558.
10610 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
10620 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 39  rt..SELECT ALL 9
10630 20 2b 20 2d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20   + - + col2 * + 
10640 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
10650 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  S cor0..----..-4
10660 38 38 37 0d 0a 2d 35 30 30 36 0d 0a 2d 36 31 37  887..-5006..-617
10670 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
10680 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
10690 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
106a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34  rowsort label-34
106b0 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  4..SELECT ALL - 
106c0 2b 20 53 55 4d 28 20 41 4c 4c 20 2b 20 63 6f 6c  + SUM( ALL + col
106d0 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  0 ) AS col1 FROM
106e0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
106f0 2d 2d 2d 0d 0a 2d 31 39 39 0d 0a 0d 0a 73 6b 69  ---..-199....ski
10700 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
10710 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
10720 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
10730 6c 2d 33 34 34 0d 0a 53 45 4c 45 43 54 20 41 4c  l-344..SELECT AL
10740 4c 20 2d 20 2b 20 53 55 4d 20 28 20 41 4c 4c 20  L - + SUM ( ALL 
10750 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31  + col0 ) AS col1
10760 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
10770 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 39 0d 0a  r0..----..-199..
10780 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10790 74 0d 0a 53 45 4c 45 43 54 20 2b 20 41 56 47 20  t..SELECT + AVG 
107a0 28 20 31 30 20 29 20 46 52 4f 4d 20 74 61 62 30  ( 10 ) FROM tab0
107b0 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 32 36 20   WHERE NOT - 26 
107c0 2a 20 63 6f 6c 30 20 3c 20 4e 55 4c 4c 0d 0a 2d  * col0 < NULL..-
107d0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
107e0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
107f0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
10800 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
10810 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
10820 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
10830 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
10840 4c 20 2d 20 2d 20 32 32 20 63 6f 6c 31 20 46 52  L - - 22 col1 FR
10850 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 55  OM tab1 WHERE NU
10860 4c 4c 20 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c  LL BETWEEN - col
10870 30 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  0 AND NULL..----
10880 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
10890 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
108a0 49 4e 43 54 20 2d 20 39 33 20 2a 20 63 6f 6c 30  INCT - 93 * col0
108b0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
108c0 0d 0a 2d 31 33 39 35 0d 0a 2d 38 30 39 31 0d 0a  ..-1395..-8091..
108d0 2d 39 30 32 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -9021....onlyif 
108e0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
108f0 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
10900 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
10910 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
10920 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 38 0d  wsort label-348.
10930 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
10940 20 2d 20 33 36 20 2b 20 2b 20 2b 20 43 41 53 54   - 36 + + + CAST
10950 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
10960 20 29 20 2b 20 2d 20 4d 49 4e 28 20 2b 20 2d 20   ) + - MIN( + - 
10970 33 37 20 29 20 2d 20 2d 20 2d 20 28 20 43 4f 55  37 ) - - - ( COU
10980 4e 54 28 20 2a 20 29 20 29 20 2b 20 2b 20 32 32  NT( * ) ) + + 22
10990 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20   * + COUNT( * ) 
109a0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
109b0 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54  0 WHERE NULL NOT
109c0 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e   BETWEEN NULL AN
109d0 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  D NULL..----..NU
109e0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
109f0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
10a00 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
10a10 73 6f 72 74 20 6c 61 62 65 6c 2d 33 34 38 0d 0a  sort label-348..
10a20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
10a30 2d 20 33 36 20 2b 20 2b 20 2b 20 43 41 53 54 20  - 36 + + + CAST 
10a40 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
10a50 52 20 29 20 2b 20 2d 20 4d 49 4e 20 28 20 2b 20  R ) + - MIN ( + 
10a60 2d 20 33 37 20 29 20 2d 20 2d 20 2d 20 28 20 43  - 37 ) - - - ( C
10a70 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 2b 20 2b  OUNT ( * ) ) + +
10a80 20 32 32 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20   22 * + COUNT ( 
10a90 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
10aa0 20 74 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c   tab0 WHERE NULL
10ab0 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c   NOT BETWEEN NUL
10ac0 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  L AND NULL..----
10ad0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
10ae0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
10af0 54 20 35 33 20 41 53 20 63 6f 6c 31 20 46 52 4f  T 53 AS col1 FRO
10b00 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
10b10 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 4e 55   NULL BETWEEN NU
10b20 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d  LL AND NULL..---
10b30 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
10b40 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
10b50 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
10b60 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35  rowsort label-35
10b70 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
10b80 43 54 20 53 55 4d 28 20 41 4c 4c 20 2b 20 2d 20  CT SUM( ALL + - 
10b90 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  1 ) AS col1 FROM
10ba0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   tab2..----..-3.
10bb0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
10bc0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
10bd0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10be0 74 20 6c 61 62 65 6c 2d 33 35 30 0d 0a 53 45 4c  t label-350..SEL
10bf0 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55 4d  ECT DISTINCT SUM
10c00 20 28 20 41 4c 4c 20 2b 20 2d 20 31 20 29 20 41   ( ALL + - 1 ) A
10c10 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
10c20 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 6f 6e  ..----..-3....on
10c30 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
10c40 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44  regate syntax: D
10c50 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
10c60 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
10c70 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
10c80 2d 33 35 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -351..SELECT ALL
10c90 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56 20   COUNT( * ) DIV 
10ca0 2d 20 34 38 20 46 52 4f 4d 20 74 61 62 32 20 41  - 48 FROM tab2 A
10cb0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S cor0..----..0.
10cc0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
10cd0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
10ce0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10cf0 74 20 6c 61 62 65 6c 2d 33 35 31 0d 0a 53 45 4c  t label-351..SEL
10d00 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20  ECT ALL COUNT ( 
10d10 2a 20 29 20 2f 20 2d 20 34 38 20 46 52 4f 4d 20  * ) / - 48 FROM 
10d20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
10d30 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
10d40 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
10d50 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
10d60 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
10d70 6c 2d 33 35 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-352..SELECT DI
10d80 53 54 49 4e 43 54 20 2d 20 2d 20 53 55 4d 28 20  STINCT - - SUM( 
10d90 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  + col1 ) FROM ta
10da0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
10db0 0d 0a 36 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..66....skipif m
10dc0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
10dd0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
10de0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35 32  owsort label-352
10df0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
10e00 54 20 2d 20 2d 20 53 55 4d 20 28 20 2b 20 63 6f  T - - SUM ( + co
10e10 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  l1 ) FROM tab1 A
10e20 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 36  S cor0..----..66
10e30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
10e40 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
10e50 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
10e60 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
10e70 6c 61 62 65 6c 2d 33 35 33 0d 0a 53 45 4c 45 43  label-353..SELEC
10e80 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
10e90 53 49 47 4e 45 44 20 29 2c 20 2b 20 63 6f 6c 31  SIGNED ), + col1
10ea0 20 2b 20 34 20 2b 20 2d 20 63 6f 6c 31 20 2a 20   + 4 + - col1 * 
10eb0 2b 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  + + col1 AS col2
10ec0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
10ed0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
10ee0 2d 31 36 0d 0a 4e 55 4c 4c 0d 0a 2d 31 37 38 0d  -16..NULL..-178.
10ef0 0a 4e 55 4c 4c 0d 0a 2d 32 31 35 38 0d 0a 0d 0a  .NULL..-2158....
10f00 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
10f10 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
10f20 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
10f30 6c 61 62 65 6c 2d 33 35 33 0d 0a 53 45 4c 45 43  label-353..SELEC
10f40 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  T CAST ( NULL AS
10f50 20 49 4e 54 45 47 45 52 20 29 2c 20 2b 20 63 6f   INTEGER ), + co
10f60 6c 31 20 2b 20 34 20 2b 20 2d 20 63 6f 6c 31 20  l1 + 4 + - col1 
10f70 2a 20 2b 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  * + + col1 AS co
10f80 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
10f90 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
10fa0 0d 0a 2d 31 36 0d 0a 4e 55 4c 4c 0d 0a 2d 31 37  ..-16..NULL..-17
10fb0 38 0d 0a 4e 55 4c 4c 0d 0a 2d 32 31 35 38 0d 0a  8..NULL..-2158..
10fc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
10fd0 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a  t..SELECT col1 *
10fe0 20 2b 20 32 36 20 41 53 20 63 6f 6c 32 20 46 52   + 26 AS col2 FR
10ff0 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d  OM tab1 cor0..--
11000 2d 2d 0d 0a 31 32 32 32 0d 0a 31 33 30 0d 0a 33  --..1222..130..3
11010 36 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  64....onlyif mys
11020 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
11030 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
11040 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11050 20 6c 61 62 65 6c 2d 33 35 35 0d 0a 53 45 4c 45   label-355..SELE
11060 43 54 20 41 4c 4c 20 2b 20 2d 20 39 32 20 44 49  CT ALL + - 92 DI
11070 56 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c  V + col1 + + col
11080 30 20 2a 20 28 20 2b 20 63 6f 6c 30 20 29 20 46  0 * ( + col0 ) F
11090 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
110a0 0d 0a 2d 2d 2d 2d 0d 0a 32 31 31 35 0d 0a 34 30  ..----..2115..40
110b0 39 35 0d 0a 35 36 32 34 0d 0a 0d 0a 73 6b 69 70  95..5624....skip
110c0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
110d0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
110e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
110f0 2d 33 35 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -355..SELECT ALL
11100 20 2b 20 2d 20 39 32 20 2f 20 2b 20 63 6f 6c 31   + - 92 / + col1
11110 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 28 20 2b 20   + + col0 * ( + 
11120 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
11130 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
11140 32 31 31 35 0d 0a 34 30 39 35 0d 0a 35 36 32 34  2115..4095..5624
11150 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
11160 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
11170 49 4e 43 54 20 63 6f 6c 30 20 2b 20 2d 20 39 31  INCT col0 + - 91
11180 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
11190 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 37  r0..----..-4..-7
111a0 36 0d 0a 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49  6..6....query II
111b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
111c0 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53  T * FROM tab2 AS
111d0 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 35 30   cor0 WHERE + 50
111e0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
111f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
11200 74 0d 0a 53 45 4c 45 43 54 20 34 20 2b 20 2b 20  t..SELECT 4 + + 
11210 38 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  87 AS col1 FROM 
11220 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a  tab2..----..91..
11230 39 31 0d 0a 39 31 0d 0a 0d 0a 71 75 65 72 79 20  91..91....query 
11240 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
11250 54 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  T - col0 FROM ta
11260 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  b0 WHERE NULL NO
11270 54 20 42 45 54 57 45 45 4e 20 2d 20 2d 20 63 6f  T BETWEEN - - co
11280 6c 32 20 41 4e 44 20 2b 20 2d 20 63 6f 6c 31 0d  l2 AND + - col1.
11290 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
112a0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
112b0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
112c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
112d0 6c 2d 33 36 30 0d 0a 53 45 4c 45 43 54 20 41 4c  l-360..SELECT AL
112e0 4c 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20  L MIN( DISTINCT 
112f0 36 38 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  68 ) FROM tab2..
11300 2d 2d 2d 2d 0d 0a 36 38 0d 0a 0d 0a 73 6b 69 70  ----..68....skip
11310 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
11320 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
11330 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
11340 2d 33 36 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -360..SELECT ALL
11350 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20   MIN ( DISTINCT 
11360 36 38 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  68 ) FROM tab2..
11370 2d 2d 2d 2d 0d 0a 36 38 0d 0a 0d 0a 73 6b 69 70  ----..68....skip
11380 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
11390 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
113a0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
113b0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
113c0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
113d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
113e0 6c 32 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 2d 20  l2 + + col0 * - 
113f0 28 20 2b 20 28 20 2d 20 2b 20 63 6f 6c 30 20 29  ( + ( - + col0 )
11400 20 29 20 41 53 20 63 6f 6c 31 2c 20 63 6f 6c 32   ) AS col1, col2
11410 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
11420 0a 2d 2d 2d 2d 0d 0a 32 37 32 0d 0a 34 37 0d 0a  .----..272..47..
11430 37 35 37 39 0d 0a 31 30 0d 0a 39 35 30 38 0d 0a  7579..10..9508..
11440 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  99....query I ro
11450 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
11460 53 54 49 4e 43 54 20 2d 20 31 37 20 2a 20 2d 20  STINCT - 17 * - 
11470 63 6f 6c 31 20 2d 20 2d 20 32 38 20 41 53 20 63  col1 - - 28 AS c
11480 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
11490 2d 2d 2d 0d 0a 31 31 36 37 0d 0a 31 33 33 37 0d  ---..1167..1337.
114a0 0a 38 39 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .895....query I 
114b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
114c0 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 2a 20  DISTINCT col0 * 
114d0 2d 20 33 38 20 41 53 20 63 6f 6c 32 20 46 52 4f  - 38 AS col2 FRO
114e0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
114f0 39 33 38 0d 0a 2d 33 32 33 30 0d 0a 2d 33 34 35  938..-3230..-345
11500 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  8....query III r
11510 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
11520 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
11530 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab1 WHERE NOT ( 
11540 2b 20 28 20 2b 20 2d 20 36 32 20 29 20 2a 20 31  + ( + - 62 ) * 1
11550 37 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  7 ) IS NOT NULL.
11560 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
11570 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
11580 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2d 20   DISTINCT + ( - 
11590 2d 20 34 35 20 29 20 2a 20 2b 20 63 6f 6c 32 20  - 45 ) * + col2 
115a0 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  - col0 FROM tab1
115b0 0d 0a 2d 2d 2d 2d 0d 0a 32 35 37 30 0d 0a 32 39  ..----..2570..29
115c0 36 39 0d 0a 34 32 36 39 0d 0a 0d 0a 6f 6e 6c 79  69..4269....only
115d0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
115e0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
115f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
11600 61 62 65 6c 2d 33 36 36 0d 0a 53 45 4c 45 43 54  abel-366..SELECT
11610 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   - COUNT( * ) * 
11620 31 33 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  13 FROM tab2..--
11630 2d 2d 0d 0a 2d 33 39 0d 0a 0d 0a 73 6b 69 70 69  --..-39....skipi
11640 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
11650 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
11660 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
11670 33 36 36 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f  366..SELECT - CO
11680 55 4e 54 20 28 20 2a 20 29 20 2a 20 31 33 20 46  UNT ( * ) * 13 F
11690 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
116a0 2d 33 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -39....onlyif my
116b0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
116c0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
116d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
116e0 74 20 6c 61 62 65 6c 2d 33 36 37 0d 0a 53 45 4c  t label-367..SEL
116f0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 34  ECT DISTINCT - 4
11700 31 20 44 49 56 20 2d 20 39 35 20 46 52 4f 4d 20  1 DIV - 95 FROM 
11710 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
11720 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
11730 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
11740 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
11750 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 36  rowsort label-36
11760 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  7..SELECT DISTIN
11770 43 54 20 2d 20 34 31 20 2f 20 2d 20 39 35 20 46  CT - 41 / - 95 F
11780 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
11790 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65  ..----..0....que
117a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
117b0 4c 45 43 54 20 2b 20 32 32 20 41 53 20 63 6f 6c  LECT + 22 AS col
117c0 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  2 FROM tab0 cor0
117d0 0d 0a 2d 2d 2d 2d 0d 0a 32 32 0d 0a 32 32 0d 0a  ..----..22..22..
117e0 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  22....query II r
117f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
11800 20 63 6f 6c 30 20 2d 20 2d 20 2d 20 33 36 20 2b   col0 - - - 36 +
11810 20 63 6f 6c 30 2c 20 34 30 20 41 53 20 63 6f 6c   col0, 40 AS col
11820 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
11830 2d 0d 0a 2d 33 36 0d 0a 34 30 0d 0a 2d 33 36 0d  -..-36..40..-36.
11840 0a 34 30 0d 0a 2d 33 36 0d 0a 34 30 0d 0a 0d 0a  .40..-36..40....
11850 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
11860 0a 53 45 4c 45 43 54 20 39 35 20 41 53 20 63 6f  .SELECT 95 AS co
11870 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
11880 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
11890 74 61 62 32 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  tab2 cor1..----.
118a0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
118b0 67 20 74 6f 20 65 35 37 64 38 65 64 38 37 39 64  g to e57d8ed879d
118c0 66 64 30 34 64 30 34 61 61 65 38 37 37 32 35 63  fd04d04aae87725c
118d0 39 37 30 64 33 0d 0a 0d 0a 71 75 65 72 79 20 49  970d3....query I
118e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
118f0 20 2b 20 39 33 20 2a 20 39 35 20 46 52 4f 4d 20   + 93 * 95 FROM 
11900 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
11910 0a 38 38 33 35 0d 0a 38 38 33 35 0d 0a 38 38 33  .8835..8835..883
11920 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
11930 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
11940 20 2b 20 36 37 20 2a 20 2d 20 30 20 41 53 20 63   + 67 * - 0 AS c
11950 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
11960 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
11970 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  0..0....query I 
11980 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
11990 44 49 53 54 49 4e 43 54 20 2d 20 28 20 63 6f 6c  DISTINCT - ( col
119a0 32 20 29 20 2a 20 35 33 20 2a 20 2b 20 37 35 20  2 ) * 53 * + 75 
119b0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
119c0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 34 35 32 35  0..----..-234525
119d0 0d 0a 2d 32 37 30 33 30 30 0d 0a 2d 33 38 31 36  ..-270300..-3816
119e0 30 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  00....onlyif mys
119f0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
11a00 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
11a10 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
11a20 37 34 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 41 58  74..SELECT + MAX
11a30 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63  ( DISTINCT + + c
11a40 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ol1 ) FROM tab2 
11a50 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  AS cor0..----..7
11a60 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
11a70 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
11a80 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
11a90 6f 72 74 20 6c 61 62 65 6c 2d 33 37 34 0d 0a 53  ort label-374..S
11aa0 45 4c 45 43 54 20 2b 20 4d 41 58 20 28 20 44 49  ELECT + MAX ( DI
11ab0 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20  STINCT + + col1 
11ac0 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
11ad0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 37 0d 0a 0d  or0..----..77...
11ae0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
11af0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
11b00 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
11b10 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
11b20 6c 2d 33 37 35 0d 0a 53 45 4c 45 43 54 20 2b 20  l-375..SELECT + 
11b30 63 6f 6c 31 20 44 49 56 20 2b 20 2d 20 63 6f 6c  col1 DIV + - col
11b40 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
11b50 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 32 0d 0a 0d  -..-1..-1..-2...
11b60 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
11b70 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
11b80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
11b90 6c 61 62 65 6c 2d 33 37 35 0d 0a 53 45 4c 45 43  label-375..SELEC
11ba0 54 20 2b 20 63 6f 6c 31 20 2f 20 2b 20 2d 20 63  T + col1 / + - c
11bb0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
11bc0 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 32 0d  ---..-1..-1..-2.
11bd0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
11be0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
11bf0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
11c00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
11c10 62 65 6c 2d 33 37 36 0d 0a 53 45 4c 45 43 54 20  bel-376..SELECT 
11c20 41 4c 4c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ALL col0 FROM ta
11c30 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 43  b2 WHERE NOT - C
11c40 41 53 54 28 20 32 31 20 41 53 20 53 49 47 4e 45  AST( 21 AS SIGNE
11c50 44 20 29 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d  D ) <> NULL..---
11c60 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
11c70 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
11c80 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
11c90 6f 72 74 20 6c 61 62 65 6c 2d 33 37 36 0d 0a 53  ort label-376..S
11ca0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 46  ELECT ALL col0 F
11cb0 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
11cc0 4f 54 20 2d 20 43 41 53 54 20 28 20 32 31 20 41  OT - CAST ( 21 A
11cd0 53 20 49 4e 54 45 47 45 52 20 29 20 3c 3e 20 4e  S INTEGER ) <> N
11ce0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
11cf0 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
11d00 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
11d10 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
11d20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37  rowsort label-37
11d30 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  7..SELECT ALL co
11d40 6c 30 20 44 49 56 20 28 20 37 37 20 29 20 46 52  l0 DIV ( 77 ) FR
11d50 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab0..----..0
11d60 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66  ..1..1....skipif
11d70 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
11d80 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
11d90 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
11da0 37 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  77..SELECT ALL c
11db0 6f 6c 30 20 2f 20 28 20 37 37 20 29 20 46 52 4f  ol0 / ( 77 ) FRO
11dc0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab0..----..0.
11dd0 0a 31 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49  .1..1....query I
11de0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
11df0 20 41 4c 4c 20 2d 20 37 34 20 2a 20 2b 20 63 6f   ALL - 74 * + co
11e00 6c 32 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c  l2 + col2 AS col
11e10 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
11e20 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 37 39  or0..----..-1679
11e30 0d 0a 2d 32 39 32 30 0d 0a 2d 34 32 33 34 0d 0a  ..-2920..-4234..
11e40 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
11e50 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
11e60 43 54 20 2d 20 37 32 20 46 52 4f 4d 20 74 61 62  CT - 72 FROM tab
11e70 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37  0 cor0..----..-7
11e80 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
11e90 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
11ea0 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 2b 20 2b   col2 * col1 + +
11eb0 20 2d 20 38 36 20 41 53 20 63 6f 6c 31 20 46 52   - 86 AS col1 FR
11ec0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
11ed0 0a 2d 2d 2d 2d 0d 0a 31 30 38 37 0d 0a 32 39 39  .----..1087..299
11ee0 34 0d 0a 33 38 30 30 0d 0a 0d 0a 6f 6e 6c 79 69  4..3800....onlyi
11ef0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
11f00 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
11f10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
11f20 62 65 6c 2d 33 38 31 0d 0a 53 45 4c 45 43 54 20  bel-381..SELECT 
11f30 2b 20 4d 49 4e 28 20 2d 20 2d 20 63 6f 6c 32 20  + MIN( - - col2 
11f40 29 20 2b 20 2b 20 2d 20 28 20 2b 20 2b 20 32 30  ) + + - ( + + 20
11f50 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
11f60 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..3....skipif 
11f70 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
11f80 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
11f90 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38  rowsort label-38
11fa0 31 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49 4e 20  1..SELECT + MIN 
11fb0 28 20 2d 20 2d 20 63 6f 6c 32 20 29 20 2b 20 2b  ( - - col2 ) + +
11fc0 20 2d 20 28 20 2b 20 2b 20 32 30 20 29 20 46 52   - ( + + 20 ) FR
11fd0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab2..----..3
11fe0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
11ff0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
12000 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
12010 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
12020 61 62 65 6c 2d 33 38 32 0d 0a 53 45 4c 45 43 54  abel-382..SELECT
12030 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 44 49 56 20   ALL + col1 DIV 
12040 38 37 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  87 FROM tab2..--
12050 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73  --..0..0..0....s
12060 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
12070 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
12080 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
12090 62 65 6c 2d 33 38 32 0d 0a 53 45 4c 45 43 54 20  bel-382..SELECT 
120a0 41 4c 4c 20 2b 20 63 6f 6c 31 20 2f 20 38 37 20  ALL + col1 / 87 
120b0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
120c0 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .0..0..0....quer
120d0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
120e0 45 43 54 20 2d 20 2b 20 35 33 20 46 52 4f 4d 20  ECT - + 53 FROM 
120f0 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f  tab0 AS cor0 CRO
12100 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20  SS JOIN tab2 AS 
12110 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  cor1..----..9 va
12120 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
12130 66 65 65 35 63 30 30 61 64 37 31 63 32 33 65 32  fee5c00ad71c23e2
12140 33 36 38 33 61 33 32 63 37 31 66 65 36 65 37 64  3683a32c71fe6e7d
12150 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
12160 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32 30 20 2b  ort..SELECT 20 +
12170 20 2b 20 36 33 20 2a 20 2b 20 2b 20 38 36 20 2a   + 63 * + + 86 *
12180 20 34 32 20 2a 20 2d 20 63 6f 6c 30 20 46 52 4f   42 * - col0 FRO
12190 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
121a0 31 36 30 35 33 33 36 0d 0a 2d 31 39 33 34 32 32  1605336..-193422
121b0 34 30 0d 0a 2d 32 30 37 30 37 35 37 36 0d 0a 0d  40..-20707576...
121c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
121d0 0d 0a 53 45 4c 45 43 54 20 2b 20 38 31 20 2d 20  ..SELECT + 81 - 
121e0 28 20 28 20 2b 20 63 6f 6c 31 20 29 20 29 20 46  ( ( + col1 ) ) F
121f0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
12200 20 57 48 45 52 45 20 28 20 4e 4f 54 20 4e 55 4c   WHERE ( NOT NUL
12210 4c 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  L BETWEEN NULL A
12220 4e 44 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d  ND NULL )..----.
12230 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
12240 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44  # CAST syntax: D
12250 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71  ECIMAL type: ..q
12260 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
12270 61 62 65 6c 2d 33 38 36 0d 0a 53 45 4c 45 43 54  abel-386..SELECT
12280 20 2b 20 2d 20 28 20 2d 20 2d 20 43 41 53 54 28   + - ( - - CAST(
12290 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c   NULL AS DECIMAL
122a0 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   ) ) FROM tab1 A
122b0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
122c0 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
122d0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
122e0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
122f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
12300 20 6c 61 62 65 6c 2d 33 38 36 0d 0a 53 45 4c 45   label-386..SELE
12310 43 54 20 2b 20 2d 20 28 20 2d 20 2d 20 43 41 53  CT + - ( - - CAS
12320 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c  T ( NULL AS REAL
12330 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   ) ) FROM tab1 A
12340 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
12350 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
12360 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
12370 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
12380 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
12390 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 37 0d 0a  sort label-387..
123a0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36 34 20  SELECT ALL + 64 
123b0 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  + COUNT( * ) FRO
123c0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
123d0 2d 2d 2d 2d 0d 0a 36 37 0d 0a 0d 0a 73 6b 69 70  ----..67....skip
123e0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
123f0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
12400 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
12410 2d 33 38 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -387..SELECT ALL
12420 20 2b 20 36 34 20 2b 20 43 4f 55 4e 54 20 28 20   + 64 + COUNT ( 
12430 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  * ) FROM tab1 AS
12440 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 37 0d   cor0..----..67.
12450 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
12460 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
12470 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
12480 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
12490 62 65 6c 2d 33 38 38 0d 0a 53 45 4c 45 43 54 20  bel-388..SELECT 
124a0 41 4c 4c 20 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c  ALL + col1 + col
124b0 30 20 2b 20 2b 20 43 41 53 54 28 20 2b 20 63 6f  0 + + CAST( + co
124c0 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20 46  l1 AS SIGNED ) F
124d0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
124e0 0d 0a 2d 2d 2d 2d 0d 0a 31 34 38 0d 0a 32 30 39  ..----..148..209
124f0 0d 0a 32 31 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..218....skipif 
12500 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
12510 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
12520 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38  rowsort label-38
12530 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  8..SELECT ALL + 
12540 63 6f 6c 31 20 2b 20 63 6f 6c 30 20 2b 20 2b 20  col1 + col0 + + 
12550 43 41 53 54 20 28 20 2b 20 63 6f 6c 31 20 41 53  CAST ( + col1 AS
12560 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
12570 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
12580 2d 2d 0d 0a 31 34 38 0d 0a 32 30 39 0d 0a 32 31  --..148..209..21
12590 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
125a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
125b0 20 2d 20 28 20 2d 20 63 6f 6c 31 20 29 20 2b 20   - ( - col1 ) + 
125c0 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  - col0 FROM tab2
125d0 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a 31 33 0d 0a  ..----..-8..13..
125e0 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  5....query II ro
125f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
12600 53 54 49 4e 43 54 20 39 20 2d 20 2d 20 63 6f 6c  STINCT 9 - - col
12610 31 2c 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c  1, - col0 AS col
12620 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
12630 2d 0d 0a 31 34 0d 0a 2d 38 35 0d 0a 32 33 0d 0a  -..14..-85..23..
12640 2d 35 31 0d 0a 35 36 0d 0a 2d 39 31 0d 0a 0d 0a  -51..56..-91....
12650 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
12660 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
12670 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
12680 6f 72 74 20 6c 61 62 65 6c 2d 33 39 31 0d 0a 53  ort label-391..S
12690 45 4c 45 43 54 20 36 2c 20 43 4f 55 4e 54 28 20  ELECT 6, COUNT( 
126a0 2a 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * ) col2 FROM ta
126b0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 33 0d 0a  b1..----..6..3..
126c0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
126d0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
126e0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
126f0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
12700 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
12710 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
12720 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
12730 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
12740 2d 33 39 31 0d 0a 53 45 4c 45 43 54 20 36 2c 20  -391..SELECT 6, 
12750 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 32  COUNT ( * ) col2
12760 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
12770 0d 0a 36 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..6..3....onlyif
12780 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
12790 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
127a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
127b0 65 6c 2d 33 39 32 0d 0a 53 45 4c 45 43 54 20 44  el-392..SELECT D
127c0 49 53 54 49 4e 43 54 20 2d 20 34 30 20 2a 20 43  ISTINCT - 40 * C
127d0 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c 31 20 46  OUNT( * ) col1 F
127e0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
127f0 2d 31 32 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -120....skipif m
12800 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
12810 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
12820 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
12830 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
12840 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
12850 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
12860 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12870 6c 61 62 65 6c 2d 33 39 32 0d 0a 53 45 4c 45 43  label-392..SELEC
12880 54 20 44 49 53 54 49 4e 43 54 20 2d 20 34 30 20  T DISTINCT - 40 
12890 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f  * COUNT ( * ) co
128a0 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
128b0 2d 2d 0d 0a 2d 31 32 30 0d 0a 0d 0a 71 75 65 72  --..-120....quer
128c0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
128d0 45 43 54 20 32 32 20 2d 20 2b 20 63 6f 6c 30 20  ECT 22 - + col0 
128e0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
128f0 0a 2d 32 34 0d 0a 2d 34 32 0d 0a 2d 35 33 0d 0a  .-24..-42..-53..
12900 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
12910 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
12920 4e 43 54 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c 30  NCT col0, + col0
12930 20 2b 20 2b 20 38 32 20 41 53 20 63 6f 6c 31 20   + + 82 AS col1 
12940 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
12950 0a 34 36 0d 0a 31 32 38 0d 0a 36 34 0d 0a 31 34  .46..128..64..14
12960 36 0d 0a 37 35 0d 0a 31 35 37 0d 0a 0d 0a 71 75  6..75..157....qu
12970 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
12980 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
12990 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 2a 20 63  ol0 * - col0 * c
129a0 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
129b0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36   tab2..----..-16
129c0 33 38 34 30 0d 0a 2d 33 32 36 32 35 30 0d 0a 2d  3840..-326250..-
129d0 34 38 36 36 38 0d 0a 0d 0a 71 75 65 72 79 20 49  48668....query I
129e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
129f0 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32   DISTINCT + col2
12a00 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
12a10 20 4e 4f 54 20 2b 20 28 20 2d 20 2d 20 63 6f 6c   NOT + ( - - col
12a20 30 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  0 ) IS NOT NULL.
12a30 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
12a40 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
12a50 20 2d 20 35 36 20 2d 20 2d 20 28 20 2d 20 38 30   - 56 - - ( - 80
12a60 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
12a70 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 36  tab0..----..-136
12a80 0d 0a 2d 31 33 36 0d 0a 2d 31 33 36 0d 0a 0d 0a  ..-136..-136....
12a90 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
12aa0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
12ab0 6f 6c 31 2c 20 39 36 20 41 53 20 63 6f 6c 32 20  ol1, 96 AS col2 
12ac0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
12ad0 0a 31 34 0d 0a 39 36 0d 0a 34 37 0d 0a 39 36 0d  .14..96..47..96.
12ae0 0a 35 0d 0a 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  .5..96....onlyif
12af0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
12b00 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
12b10 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
12b20 65 6c 2d 33 39 39 0d 0a 53 45 4c 45 43 54 20 2b  el-399..SELECT +
12b30 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e 43 54   COUNT( DISTINCT
12b40 20 2b 20 2b 20 63 6f 6c 32 20 29 20 2b 20 2d 20   + + col2 ) + - 
12b50 2d 20 37 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  - 72 AS col1 FRO
12b60 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
12b70 2d 0d 0a 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..75....skipif 
12b80 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
12b90 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
12ba0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39  rowsort label-39
12bb0 39 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  9..SELECT + COUN
12bc0 54 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  T ( DISTINCT + +
12bd0 20 63 6f 6c 32 20 29 20 2b 20 2d 20 2d 20 37 32   col2 ) + - - 72
12be0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
12bf0 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  b0 cor0..----..7
12c00 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  5....query II ro
12c10 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
12c20 4c 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  L + col1 AS col2
12c30 2c 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 37 36 20  , - col0 + + 76 
12c40 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
12c50 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 2d 32 31 0d  0..----..1..-21.
12c60 0a 32 31 0d 0a 2d 31 31 0d 0a 38 31 0d 0a 36 31  .21..-11..81..61
12c70 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
12c80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
12c90 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2b 20 2d 20  INCT + col0 + - 
12ca0 2b 20 35 36 20 2b 20 2d 20 2d 20 63 6f 6c 31 20  + 56 + - - col1 
12cb0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
12cc0 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a 38 32 0d  0..----..34..82.
12cd0 0a 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .9....query I ro
12ce0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
12cf0 31 20 2b 20 2d 20 2b 20 28 20 2b 20 35 32 20 29  1 + - + ( + 52 )
12d00 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
12d10 0a 2d 2d 2d 2d 0d 0a 2d 35 33 0d 0a 2d 35 33 0d  .----..-53..-53.
12d20 0a 2d 35 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-53....onlyif m
12d30 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
12d40 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
12d50 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
12d60 6c 2d 34 30 33 0d 0a 53 45 4c 45 43 54 20 41 4c  l-403..SELECT AL
12d70 4c 20 2b 20 36 38 20 2b 20 2d 20 4d 41 58 28 20  L + 68 + - MAX( 
12d80 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 29 2c  DISTINCT col0 ),
12d90 20 36 39 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   69 AS col2 FROM
12da0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 39   tab0..----..-29
12db0 0d 0a 36 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..69....skipif m
12dc0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
12dd0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
12de0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30  rowsort label-40
12df0 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  3..SELECT ALL + 
12e00 36 38 20 2b 20 2d 20 4d 41 58 20 28 20 44 49 53  68 + - MAX ( DIS
12e10 54 49 4e 43 54 20 63 6f 6c 30 20 29 2c 20 36 39  TINCT col0 ), 69
12e20 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
12e30 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 39 0d 0a 36  b0..----..-29..6
12e40 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  9....skipif post
12e50 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
12e60 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
12e70 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
12e80 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
12e90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
12ea0 45 4c 45 43 54 20 2d 20 38 35 20 63 6f 6c 32 20  ELECT - 85 col2 
12eb0 46 52 4f 4d 20 74 61 62 30 2c 20 74 61 62 31 20  FROM tab0, tab1 
12ec0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39  AS cor0..----..9
12ed0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
12ee0 74 6f 20 38 65 62 63 38 66 66 61 66 62 31 35 31  to 8ebc8ffafb151
12ef0 37 65 61 30 34 65 33 61 36 66 63 34 30 35 39 64  7ea04e3a6fc4059d
12f00 38 38 61 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  88a....query III
12f10 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
12f20 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
12f30 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63  cor0 WHERE NOT c
12f40 6f 6c 30 20 2f 20 63 6f 6c 30 20 2a 20 2b 20 2d  ol0 / col0 * + -
12f50 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d   col0 IS NULL..-
12f60 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
12f70 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61  shing to 75c998a
12f80 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65  a53ac83218cbf2fe
12f90 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c  b962d0a49....onl
12fa0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
12fb0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
12fc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
12fd0 6c 61 62 65 6c 2d 34 30 36 0d 0a 53 45 4c 45 43  label-406..SELEC
12fe0 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 41  T ALL - COUNT( A
12ff0 4c 4c 20 2d 20 2d 20 63 6f 6c 31 20 29 20 46 52  LL - - col1 ) FR
13000 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
13010 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  .----..-3....ski
13020 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
13030 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
13040 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
13050 6c 2d 34 30 36 0d 0a 53 45 4c 45 43 54 20 41 4c  l-406..SELECT AL
13060 4c 20 2d 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20  L - COUNT ( ALL 
13070 2d 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20  - - col1 ) FROM 
13080 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
13090 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20  --..-3....query 
130a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
130b0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 34 39 20  T DISTINCT + 49 
130c0 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * + col2 FROM ta
130d0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
130e0 20 4e 4f 54 20 4e 55 4c 4c 20 3c 20 4e 55 4c 4c   NOT NULL < NULL
130f0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
13100 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
13110 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
13120 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
13130 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
13140 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
13150 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  rt..SELECT + col
13160 32 20 2a 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 28  2 * - col1 * + (
13170 20 2d 20 31 39 20 29 20 63 6f 6c 31 20 46 52 4f   - 19 ) col1 FRO
13180 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
13190 2d 2d 2d 2d 0d 0a 32 35 35 33 36 0d 0a 35 36 30  ----..25536..560
131a0 35 0d 0a 36 30 37 32 34 0d 0a 0d 0a 71 75 65 72  5..60724....quer
131b0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
131c0 45 43 54 20 2b 20 2b 20 35 34 20 41 53 20 63 6f  ECT + + 54 AS co
131d0 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
131e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 34 0d 0a  cor0..----..54..
131f0 35 34 0d 0a 35 34 0d 0a 0d 0a 6f 6e 6c 79 69 66  54..54....onlyif
13200 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
13210 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
13220 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
13230 65 6c 2d 34 31 30 0d 0a 53 45 4c 45 43 54 20 2d  el-410..SELECT -
13240 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
13250 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
13260 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3d 20  ERE NOT NULL <= 
13270 28 20 39 35 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  ( 95 )..----..0.
13280 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
13290 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
132a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
132b0 74 20 6c 61 62 65 6c 2d 34 31 30 0d 0a 53 45 4c  t label-410..SEL
132c0 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  ECT - COUNT ( * 
132d0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
132e0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
132f0 4c 4c 20 3c 3d 20 28 20 39 35 20 29 0d 0a 2d 2d  LL <= ( 95 )..--
13300 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
13310 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
13320 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
13330 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
13340 6f 72 74 20 6c 61 62 65 6c 2d 34 31 31 0d 0a 53  ort label-411..S
13350 45 4c 45 43 54 20 35 35 20 44 49 56 20 2d 20 63  ELECT 55 DIV - c
13360 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
13370 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
13380 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 35 0d 0a 30 0d 0a  ---..-1..-5..0..
13390 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
133a0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
133b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
133c0 20 6c 61 62 65 6c 2d 34 31 31 0d 0a 53 45 4c 45   label-411..SELE
133d0 43 54 20 35 35 20 2f 20 2d 20 63 6f 6c 32 20 41  CT 55 / - col2 A
133e0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
133f0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
13400 2d 31 0d 0a 2d 35 0d 0a 30 0d 0a 0d 0a 71 75 65  -1..-5..0....que
13410 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
13420 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2a 20 2d 20  LECT - col0 * - 
13430 36 39 20 2a 20 39 32 20 46 52 4f 4d 20 74 61 62  69 * 92 FROM tab
13440 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
13450 0a 33 32 33 37 34 38 0d 0a 35 33 39 35 38 30 0d  .323748..539580.
13460 0a 35 37 37 36 36 38 0d 0a 0d 0a 6f 6e 6c 79 69  .577668....onlyi
13470 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
13480 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
13490 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
134a0 62 65 6c 2d 34 31 33 0d 0a 53 45 4c 45 43 54 20  bel-413..SELECT 
134b0 41 4c 4c 20 28 20 4d 41 58 28 20 44 49 53 54 49  ALL ( MAX( DISTI
134c0 4e 43 54 20 2b 20 2b 20 63 6f 6c 32 20 29 20 29  NCT + + col2 ) )
134d0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
134e0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
134f0 0d 0a 35 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..58....skipif m
13500 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
13510 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
13520 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 31 33  owsort label-413
13530 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 4d  ..SELECT ALL ( M
13540 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  AX ( DISTINCT + 
13550 2b 20 63 6f 6c 32 20 29 20 29 20 41 53 20 63 6f  + col2 ) ) AS co
13560 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
13570 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a  cor0..----..58..
13580 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
13590 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 33 34  t..SELECT ALL 34
135a0 20 2a 20 2b 20 36 20 41 53 20 63 6f 6c 30 20 46   * + 6 AS col0 F
135b0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
135c0 32 30 34 0d 0a 32 30 34 0d 0a 32 30 34 0d 0a 0d  204..204..204...
135d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
135e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28  ..SELECT ALL + (
135f0 20 63 6f 6c 32 20 29 20 2a 20 2d 20 2b 20 31 33   col2 ) * - + 13
13600 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
13610 0d 0a 2d 31 32 34 38 0d 0a 2d 37 36 37 0d 0a 2d  ..-1248..-767..-
13620 38 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  884....query I r
13630 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
13640 49 53 54 49 4e 43 54 20 30 20 2a 20 2d 20 2d 20  ISTINCT 0 * - - 
13650 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
13660 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab0..----..0.
13670 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
13680 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
13690 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
136a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
136b0 62 65 6c 2d 34 31 37 0d 0a 53 45 4c 45 43 54 20  bel-417..SELECT 
136c0 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20  DISTINCT + col0 
136d0 2a 20 28 20 2d 20 43 41 53 54 28 20 2d 20 63 6f  * ( - CAST( - co
136e0 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 29  l0 AS SIGNED ) )
136f0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
13700 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 35 0d 0a 37  b0..----..225..7
13710 35 36 39 0d 0a 39 34 30 39 0d 0a 0d 0a 73 6b 69  569..9409....ski
13720 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
13730 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
13740 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
13750 6c 2d 34 31 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-417..SELECT DI
13760 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20  STINCT + col0 * 
13770 28 20 2d 20 43 41 53 54 20 28 20 2d 20 63 6f 6c  ( - CAST ( - col
13780 30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29  0 AS INTEGER ) )
13790 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
137a0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 35 0d 0a 37  b0..----..225..7
137b0 35 36 39 0d 0a 39 34 30 39 0d 0a 0d 0a 71 75 65  569..9409....que
137c0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
137d0 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
137e0 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  b1 WHERE NOT + c
137f0 6f 6c 31 20 4e 4f 54 20 49 4e 20 28 20 2b 20 63  ol1 NOT IN ( + c
13800 6f 6c 32 2c 20 2d 20 63 6f 6c 31 20 29 0d 0a 2d  ol2, - col1 )..-
13810 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ---....skipif po
13820 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
13830 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
13840 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
13850 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
13860 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
13870 0a 53 45 4c 45 43 54 20 2b 20 28 20 2d 20 2d 20  .SELECT + ( - - 
13880 63 6f 6c 31 20 29 20 63 6f 6c 32 20 46 52 4f 4d  col1 ) col2 FROM
13890 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   tab0..----..1..
138a0 32 31 0d 0a 38 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  21..81....onlyif
138b0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
138c0 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
138d0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
138e0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
138f0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 32  rowsort label-42
13900 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  0..SELECT ALL - 
13910 43 4f 55 4e 54 28 20 2a 20 29 2c 20 53 55 4d 28  COUNT( * ), SUM(
13920 20 2b 20 43 41 53 54 28 20 2d 20 63 6f 6c 30 20   + CAST( - col0 
13930 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 2a 20  AS SIGNED ) ) * 
13940 36 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  68 AS col1 FROM 
13950 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
13960 2d 2d 0d 0a 2d 33 0d 0a 2d 31 32 35 38 30 0d 0a  --..-3..-12580..
13970 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
13980 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
13990 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
139a0 74 20 6c 61 62 65 6c 2d 34 32 30 0d 0a 53 45 4c  t label-420..SEL
139b0 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 20  ECT ALL - COUNT 
139c0 28 20 2a 20 29 2c 20 53 55 4d 20 28 20 2b 20 43  ( * ), SUM ( + C
139d0 41 53 54 20 28 20 2d 20 63 6f 6c 30 20 41 53 20  AST ( - col0 AS 
139e0 49 4e 54 45 47 45 52 20 29 20 29 20 2a 20 36 38  INTEGER ) ) * 68
139f0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
13a00 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
13a10 0d 0a 2d 33 0d 0a 2d 31 32 35 38 30 0d 0a 0d 0a  ..-3..-12580....
13a20 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
13a30 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
13a40 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
13a50 72 74 20 6c 61 62 65 6c 2d 34 32 31 0d 0a 53 45  rt label-421..SE
13a60 4c 45 43 54 20 4d 49 4e 28 20 63 6f 6c 30 20 29  LECT MIN( col0 )
13a70 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
13a80 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35  AS cor0..----..5
13a90 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
13aa0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
13ab0 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
13ac0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
13ad0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
13ae0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
13af0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
13b00 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
13b10 65 6c 2d 34 32 31 0d 0a 53 45 4c 45 43 54 20 4d  el-421..SELECT M
13b20 49 4e 20 28 20 63 6f 6c 30 20 29 20 63 6f 6c 31  IN ( col0 ) col1
13b30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
13b40 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a  r0..----..51....
13b50 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
13b60 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
13b70 20 32 34 20 46 52 4f 4d 20 74 61 62 31 20 63 6f   24 FROM tab1 co
13b80 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
13b90 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b1 AS cor1..----
13ba0 0d 0a 32 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..24....onlyif m
13bb0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
13bc0 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79 70 65  ax: DECIMAL type
13bd0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
13be0 6f 72 74 20 6c 61 62 65 6c 2d 34 32 33 0d 0a 53  ort label-423..S
13bf0 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d 20 28 20  ELECT ALL ( - ( 
13c00 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
13c10 44 45 43 49 4d 41 4c 20 29 20 29 20 29 20 2a 20  DECIMAL ) ) ) * 
13c20 63 6f 6c 30 20 2f 20 2d 20 35 30 20 2a 20 63 6f  col0 / - 50 * co
13c30 6c 32 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c  l2 + col1 AS col
13c40 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
13c50 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
13c60 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....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 32 33 0d 0a 53 45 4c 45 43 54 20  bel-423..SELECT 
13cb0 41 4c 4c 20 28 20 2d 20 28 20 2d 20 43 41 53 54  ALL ( - ( - CAST
13cc0 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20   ( NULL AS REAL 
13cd0 29 20 29 20 29 20 2a 20 63 6f 6c 30 20 2f 20 2d  ) ) ) * col0 / -
13ce0 20 35 30 20 2a 20 63 6f 6c 32 20 2b 20 63 6f 6c   50 * col2 + col
13cf0 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
13d00 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
13d10 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
13d20 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
13d30 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
13d40 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
13d50 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
13d60 34 32 34 0d 0a 53 45 4c 45 43 54 20 33 34 20 2b  424..SELECT 34 +
13d70 20 4d 41 58 28 20 41 4c 4c 20 2d 20 36 32 20 29   MAX( ALL - 62 )
13d80 20 2a 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54   * SUM( DISTINCT
13d90 20 2d 20 36 35 20 29 20 46 52 4f 4d 20 74 61 62   - 65 ) FROM tab
13da0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
13db0 0a 34 30 36 34 0d 0a 0d 0a 73 6b 69 70 69 66 20  .4064....skipif 
13dc0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
13dd0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
13de0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 32  rowsort label-42
13df0 34 0d 0a 53 45 4c 45 43 54 20 33 34 20 2b 20 4d  4..SELECT 34 + M
13e00 41 58 20 28 20 41 4c 4c 20 2d 20 36 32 20 29 20  AX ( ALL - 62 ) 
13e10 2a 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43 54  * SUM ( DISTINCT
13e20 20 2d 20 36 35 20 29 20 46 52 4f 4d 20 74 61 62   - 65 ) FROM tab
13e30 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
13e40 0a 34 30 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49  .4064....query I
13e50 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
13e60 20 2b 20 34 32 20 2b 20 63 6f 6c 30 20 46 52 4f   + 42 + col0 FRO
13e70 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
13e80 2d 2d 2d 2d 0d 0a 31 32 37 0d 0a 31 33 33 0d 0a  ----..127..133..
13e90 39 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  93....query I ro
13ea0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
13eb0 4c 20 63 6f 6c 30 20 2b 20 2b 20 2d 20 63 6f 6c  L col0 + + - col
13ec0 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
13ed0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
13ee0 2d 0d 0a 31 37 0d 0a 32 33 0d 0a 32 34 0d 0a 0d  -..17..23..24...
13ef0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
13f00 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f 6c  ..SELECT - - col
13f10 30 20 2b 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 63  0 + + col1 * - c
13f20 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
13f30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33   cor0..----..-23
13f40 30 30 0d 0a 2d 34 38 36 34 0d 0a 2d 34 39 35 30  00..-4864..-4950
13f50 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
13f60 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
13f70 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
13f80 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 32 38  owsort label-428
13f90 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
13fa0 54 20 2d 20 32 33 20 2b 20 43 4f 55 4e 54 28 20  T - 23 + COUNT( 
13fb0 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  * ) FROM tab1 AS
13fc0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30   cor0..----..-20
13fd0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
13fe0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
13ff0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
14000 72 74 20 6c 61 62 65 6c 2d 34 32 38 0d 0a 53 45  rt label-428..SE
14010 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
14020 32 33 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29  23 + COUNT ( * )
14030 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
14040 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 0d  r0..----..-20...
14050 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14060 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 34 33 20  ..SELECT + - 43 
14070 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  + - col1 FROM ta
14080 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
14090 0d 0a 2d 31 31 30 0d 0a 2d 31 32 30 0d 0a 2d 39  ..-110..-120..-9
140a0 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
140b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
140c0 20 2d 20 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c 30   - + col1 + col0
140d0 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63   * + + col2 AS c
140e0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
140f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 38 38   cor0..----..488
14100 32 0d 0a 35 30 31 30 0d 0a 36 31 34 31 0d 0a 0d  2..5010..6141...
14110 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
14120 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
14130 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
14140 48 45 52 45 20 2d 20 34 31 20 3c 3d 20 2b 20 63  HERE - 41 <= + c
14150 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ol2..----..9 val
14160 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
14170 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61  4b42765dff94eaaa
14180 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d  46040e537fb43b7.
14190 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
141a0 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 31 38 20  rt..SELECT ( 18 
141b0 29 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61 62  ) FROM tab0, tab
141c0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
141d0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
141e0 67 20 74 6f 20 62 39 35 62 61 66 61 37 33 33 36  g to b95bafa7336
141f0 36 36 64 66 33 39 63 35 64 33 66 39 34 37 36 30  66df39c5d3f94760
14200 64 30 31 30 66 0d 0a 0d 0a 71 75 65 72 79 20 49  d010f....query I
14210 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
14220 20 41 4c 4c 20 2d 20 28 20 2d 20 63 6f 6c 31 20   ALL - ( - col1 
14230 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
14240 61 62 32 20 57 48 45 52 45 20 2b 20 28 20 2d 20  ab2 WHERE + ( - 
14250 63 6f 6c 32 20 29 20 3e 20 4e 55 4c 4c 0d 0a 2d  col2 ) > NULL..-
14260 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
14270 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
14280 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
14290 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
142a0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
142b0 6f 72 74 20 6c 61 62 65 6c 2d 34 33 34 0d 0a 53  ort label-434..S
142c0 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
142d0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
142e0 62 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  b2 WHERE NULL NO
142f0 54 20 49 4e 20 28 20 2d 20 2d 20 63 6f 6c 32 2c  T IN ( - - col2,
14300 20 2d 20 36 34 20 2d 20 2b 20 63 6f 6c 32 2c 20   - 64 - + col2, 
14310 2d 20 2b 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c 31  - + col1, + col1
14320 20 2b 20 2b 20 43 41 53 54 28 20 2d 20 63 6f 6c   + + CAST( - col
14330 32 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20  2 AS SIGNED ) + 
14340 63 6f 6c 32 2c 20 2d 20 63 6f 6c 32 2c 20 2b 20  col2, - col2, + 
14350 2b 20 63 6f 6c 30 20 2b 20 63 6f 6c 31 20 29 0d  + col0 + col1 ).
14360 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
14370 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
14380 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
14390 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
143a0 2d 34 33 34 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -434..SELECT COU
143b0 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  NT ( * ) AS col0
143c0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
143d0 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 2d   NULL NOT IN ( -
143e0 20 2d 20 63 6f 6c 32 2c 20 2d 20 36 34 20 2d 20   - col2, - 64 - 
143f0 2b 20 63 6f 6c 32 2c 20 2d 20 2b 20 63 6f 6c 31  + col2, - + col1
14400 2c 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 43 41 53  , + col1 + + CAS
14410 54 20 28 20 2d 20 63 6f 6c 32 20 41 53 20 49 4e  T ( - col2 AS IN
14420 54 45 47 45 52 20 29 20 2b 20 63 6f 6c 32 2c 20  TEGER ) + col2, 
14430 2d 20 63 6f 6c 32 2c 20 2b 20 2b 20 63 6f 6c 30  - col2, + + col0
14440 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d   + col1 )..----.
14450 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
14460 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
14470 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
14480 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
14490 33 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  35..SELECT ALL +
144a0 20 37 39 20 2d 20 2b 20 2d 20 31 39 20 2a 20 2b   79 - + - 19 * +
144b0 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c 31   COUNT( * ) col1
144c0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
144d0 0d 0a 31 33 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..136....skipif 
144e0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
144f0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
14500 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
14510 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
14520 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
14530 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
14540 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14550 20 6c 61 62 65 6c 2d 34 33 35 0d 0a 53 45 4c 45   label-435..SELE
14560 43 54 20 41 4c 4c 20 2b 20 37 39 20 2d 20 2b 20  CT ALL + 79 - + 
14570 2d 20 31 39 20 2a 20 2b 20 43 4f 55 4e 54 20 28  - 19 * + COUNT (
14580 20 2a 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74   * ) col1 FROM t
14590 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 33 36 0d 0a  ab2..----..136..
145a0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
145b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
145c0 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
145d0 45 20 63 6f 6c 32 20 2b 20 2d 20 39 36 20 49 53  E col2 + - 96 IS
145e0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
145f0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
14600 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
14610 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
14620 74 20 6c 61 62 65 6c 2d 34 33 37 0d 0a 53 45 4c  t label-437..SEL
14630 45 43 54 20 2b 20 4d 41 58 28 20 44 49 53 54 49  ECT + MAX( DISTI
14640 4e 43 54 20 2b 20 63 6f 6c 30 20 29 20 41 53 20  NCT + col0 ) AS 
14650 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
14660 2d 2d 2d 2d 0d 0a 39 37 0d 0a 0d 0a 73 6b 69 70  ----..97....skip
14670 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
14680 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
14690 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
146a0 2d 34 33 37 0d 0a 53 45 4c 45 43 54 20 2b 20 4d  -437..SELECT + M
146b0 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  AX ( DISTINCT + 
146c0 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46  col0 ) AS col0 F
146d0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
146e0 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  97....skipif pos
146f0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
14700 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
14710 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
14720 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
14730 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
14740 53 45 4c 45 43 54 20 38 33 20 2a 20 37 33 20 63  SELECT 83 * 73 c
14750 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
14760 2d 2d 2d 0d 0a 36 30 35 39 0d 0a 36 30 35 39 0d  ---..6059..6059.
14770 0a 36 30 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49  .6059....query I
14780 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
14790 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31   DISTINCT - col1
147a0 20 2d 20 2d 20 2b 20 63 6f 6c 31 20 46 52 4f 4d   - - + col1 FROM
147b0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
147c0 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ---..0....query 
147d0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
147e0 43 54 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c  CT - col1 AS col
147f0 31 2c 20 2d 20 36 36 20 41 53 20 63 6f 6c 32 20  1, - 66 AS col2 
14800 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
14810 0a 2d 31 34 0d 0a 2d 36 36 0d 0a 2d 34 37 0d 0a  .-14..-66..-47..
14820 2d 36 36 0d 0a 2d 35 0d 0a 2d 36 36 0d 0a 0d 0a  -66..-5..-66....
14830 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
14840 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
14850 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
14860 72 74 20 6c 61 62 65 6c 2d 34 34 31 0d 0a 53 45  rt label-441..SE
14870 4c 45 43 54 20 43 4f 55 4e 54 28 20 41 4c 4c 20  LECT COUNT( ALL 
14880 2d 20 63 6f 6c 30 20 29 20 2a 20 2b 20 36 32 20  - col0 ) * + 62 
14890 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
148a0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
148b0 0a 31 38 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .186....skipif m
148c0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
148d0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
148e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34 31  owsort label-441
148f0 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28  ..SELECT COUNT (
14900 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 29 20 2a 20   ALL - col0 ) * 
14910 2b 20 36 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 62 AS col2 FRO
14920 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
14930 2d 2d 2d 2d 0d 0a 31 38 36 0d 0a 0d 0a 6f 6e 6c  ----..186....onl
14940 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
14950 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
14960 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
14970 6c 61 62 65 6c 2d 34 34 32 0d 0a 53 45 4c 45 43  label-442..SELEC
14980 54 20 2d 20 53 55 4d 28 20 44 49 53 54 49 4e 43  T - SUM( DISTINC
14990 54 20 2d 20 28 20 2d 20 35 38 20 29 20 29 20 41  T - ( - 58 ) ) A
149a0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
149b0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
149c0 2d 35 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -58....skipif my
149d0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
149e0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
149f0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 34 32 0d  wsort label-442.
14a00 0a 53 45 4c 45 43 54 20 2d 20 53 55 4d 20 28 20  .SELECT - SUM ( 
14a10 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2d 20 35  DISTINCT - ( - 5
14a20 38 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52  8 ) ) AS col0 FR
14a30 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
14a40 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 0d 0a 71 75  .----..-58....qu
14a50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
14a60 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
14a70 20 28 20 2b 20 2d 20 36 32 20 29 20 41 53 20 63   ( + - 62 ) AS c
14a80 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
14a90 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 32   cor0..----..-62
14aa0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
14ab0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
14ac0 6f 6c 31 20 41 53 20 63 6f 6c 32 2c 20 2b 20 63  ol1 AS col2, + c
14ad0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
14ae0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   cor0..----..-51
14af0 0d 0a 34 36 0d 0a 2d 36 37 0d 0a 37 35 0d 0a 2d  ..46..-67..75..-
14b00 37 37 0d 0a 36 34 0d 0a 0d 0a 73 6b 69 70 69 66  77..64....skipif
14b10 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
14b20 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
14b30 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
14b40 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
14b50 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
14b60 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
14b70 4e 43 54 20 63 6f 6c 30 20 63 6f 6c 32 20 46 52  NCT col0 col2 FR
14b80 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
14b90 57 48 45 52 45 20 63 6f 6c 32 20 3e 3d 20 4e 55  WHERE col2 >= NU
14ba0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
14bb0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
14bc0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
14bd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
14be0 61 62 65 6c 2d 34 34 36 0d 0a 53 45 4c 45 43 54  abel-446..SELECT
14bf0 20 41 4c 4c 20 2d 20 36 30 20 2a 20 2d 20 43 4f   ALL - 60 * - CO
14c00 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 36 37 20  UNT( * ) * - 67 
14c10 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
14c20 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
14c30 0a 2d 31 32 30 36 30 0d 0a 0d 0a 73 6b 69 70 69  .-12060....skipi
14c40 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
14c50 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
14c60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
14c70 34 34 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  446..SELECT ALL 
14c80 2d 20 36 30 20 2a 20 2d 20 43 4f 55 4e 54 20 28  - 60 * - COUNT (
14c90 20 2a 20 29 20 2a 20 2d 20 36 37 20 41 53 20 63   * ) * - 67 AS c
14ca0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
14cb0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32   cor0..----..-12
14cc0 30 36 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  060....onlyif my
14cd0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
14ce0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
14cf0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
14d00 34 34 37 0d 0a 53 45 4c 45 43 54 20 2d 20 34 33  447..SELECT - 43
14d10 20 2a 20 2d 20 4d 49 4e 28 20 2d 20 2d 20 63 6f   * - MIN( - - co
14d20 6c 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l0 ) AS col1 FRO
14d30 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 36 34  M tab0..----..64
14d40 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
14d50 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
14d60 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
14d70 6f 72 74 20 6c 61 62 65 6c 2d 34 34 37 0d 0a 53  ort label-447..S
14d80 45 4c 45 43 54 20 2d 20 34 33 20 2a 20 2d 20 4d  ELECT - 43 * - M
14d90 49 4e 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20  IN ( - - col0 ) 
14da0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
14db0 30 0d 0a 2d 2d 2d 2d 0d 0a 36 34 35 0d 0a 0d 0a  0..----..645....
14dc0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
14dd0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
14de0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
14df0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
14e00 2d 34 34 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  -448..SELECT DIS
14e10 54 49 4e 43 54 20 43 41 53 54 28 20 2b 20 31 34  TINCT CAST( + 14
14e20 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
14e30 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
14e40 2d 2d 2d 2d 0d 0a 31 34 0d 0a 0d 0a 73 6b 69 70  ----..14....skip
14e50 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
14e60 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
14e70 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
14e80 2d 34 34 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  -448..SELECT DIS
14e90 54 49 4e 43 54 20 43 41 53 54 20 28 20 2b 20 31  TINCT CAST ( + 1
14ea0 34 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  4 AS INTEGER ) A
14eb0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
14ec0 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 0d 0a 6f 6e  ..----..14....on
14ed0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
14ee0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
14ef0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14f00 20 6c 61 62 65 6c 2d 34 34 39 0d 0a 53 45 4c 45   label-449..SELE
14f10 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT + COUNT( * ) 
14f20 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  * + COUNT( * ) *
14f30 20 2d 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20   - ( - COUNT( * 
14f40 29 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ) ) FROM tab0..-
14f50 2d 2d 2d 0d 0a 32 37 0d 0a 0d 0a 73 6b 69 70 69  ---..27....skipi
14f60 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
14f70 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
14f80 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
14f90 34 34 39 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  449..SELECT + CO
14fa0 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 43 4f  UNT ( * ) * + CO
14fb0 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 28 20  UNT ( * ) * - ( 
14fc0 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20  - COUNT ( * ) ) 
14fd0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
14fe0 0a 32 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .27....query III
14ff0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
15000 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
15010 20 74 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c   tab1 WHERE NULL
15020 20 3c 3e 20 2b 20 35 30 0d 0a 2d 2d 2d 2d 0d 0a   <> + 50..----..
15030 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
15040 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
15050 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  INCT * FROM tab0
15060 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28   AS cor0 WHERE (
15070 20 4e 55 4c 4c 20 29 20 3c 3d 20 36 33 0d 0a 2d   NULL ) <= 63..-
15080 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
15090 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
150a0 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
150b0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
150c0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
150d0 6f 72 74 20 6c 61 62 65 6c 2d 34 35 32 0d 0a 53  ort label-452..S
150e0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
150f0 20 43 41 53 54 28 20 2b 20 2d 20 36 32 20 41 53   CAST( + - 62 AS
15100 20 53 49 47 4e 45 44 20 29 20 2b 20 4d 41 58 28   SIGNED ) + MAX(
15110 20 2b 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d   + - col0 ) FROM
15120 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
15130 2d 2d 2d 0d 0a 31 36 0d 0a 0d 0a 73 6b 69 70 69  ---..16....skipi
15140 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
15150 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
15160 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
15170 34 35 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  452..SELECT DIST
15180 49 4e 43 54 20 2d 20 43 41 53 54 20 28 20 2b 20  INCT - CAST ( + 
15190 2d 20 36 32 20 41 53 20 49 4e 54 45 47 45 52 20  - 62 AS INTEGER 
151a0 29 20 2b 20 4d 41 58 20 28 20 2b 20 2d 20 63 6f  ) + MAX ( + - co
151b0 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  l0 ) FROM tab2 A
151c0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36  S cor0..----..16
151d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
151e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  ort..SELECT col1
151f0 20 2b 20 2d 20 2d 20 63 6f 6c 30 20 41 53 20 63   + - - col0 AS c
15200 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
15210 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 30   cor0 WHERE col0
15220 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
15230 2d 2d 0d 0a 31 34 31 0d 0a 31 34 32 0d 0a 39 37  --..141..142..97
15240 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
15250 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
15260 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 32 20 46 52  INCT - - col2 FR
15270 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
15280 54 20 2b 20 28 20 2b 20 2b 20 36 36 20 29 20 3e  T + ( + + 66 ) >
15290 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  = NULL..----....
152a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
152b0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
152c0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
152d0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
152e0 2d 34 35 35 0d 0a 53 45 4c 45 43 54 20 2b 20 41  -455..SELECT + A
152f0 56 47 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20  VG ( DISTINCT - 
15300 35 39 20 29 20 2b 20 38 37 20 2d 20 2d 20 43 41  59 ) + 87 - - CA
15310 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
15320 45 44 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  ED ) AS col2 FRO
15330 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab1..----..NU
15340 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
15350 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
15360 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
15370 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35 35 0d 0a  sort label-455..
15380 53 45 4c 45 43 54 20 2b 20 41 56 47 20 28 20 44  SELECT + AVG ( D
15390 49 53 54 49 4e 43 54 20 2d 20 35 39 20 29 20 2b  ISTINCT - 59 ) +
153a0 20 38 37 20 2d 20 2d 20 43 41 53 54 20 28 20 4e   87 - - CAST ( N
153b0 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
153c0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
153d0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b1..----..NULL..
153e0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
153f0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
15400 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
15410 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35 36 0d 0a  sort label-456..
15420 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
15430 2b 20 2b 20 28 20 2d 20 31 35 20 29 20 2a 20 2d  + + ( - 15 ) * -
15440 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
15450 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
15460 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d   cor0..----..45.
15470 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
15480 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
15490 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
154a0 74 20 6c 61 62 65 6c 2d 34 35 36 0d 0a 53 45 4c  t label-456..SEL
154b0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  ECT DISTINCT + +
154c0 20 28 20 2d 20 31 35 20 29 20 2a 20 2d 20 43 4f   ( - 15 ) * - CO
154d0 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
154e0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
154f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 0d  or0..----..45...
15500 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
15510 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
15520 54 20 2d 20 34 37 20 2a 20 2b 20 35 38 20 2b 20  T - 47 * + 58 + 
15530 2b 20 38 36 20 2b 20 63 6f 6c 31 20 41 53 20 63  + 86 + col1 AS c
15540 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
15550 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35   cor0..----..-25
15560 35 39 0d 0a 2d 32 36 31 39 0d 0a 2d 32 36 33 39  59..-2619..-2639
15570 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
15580 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
15590 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
155a0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
155b0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
155c0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
155d0 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c  LECT ALL - + col
155e0 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  0 col1 FROM tab0
155f0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28   AS cor0 WHERE (
15600 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d   NULL ) IS NULL.
15610 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 2d 38 37 0d  .----..-15..-87.
15620 0a 2d 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-97....query II
15630 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
15640 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
15650 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f   cor0 WHERE + co
15660 6c 30 20 2b 20 2b 20 2d 20 32 32 20 49 53 20 4e  l0 + + - 22 IS N
15670 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39  OT NULL..----..9
15680 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
15690 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34  to c4b42765dff94
156a0 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34  eaaa46040e537fb4
156b0 33 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  3b7....skipif po
156c0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
156d0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
156e0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
156f0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
15700 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
15710 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
15720 20 2d 20 2d 20 37 31 20 2b 20 2b 20 2d 20 38 37   - - 71 + + - 87
15730 20 2b 20 2b 20 63 6f 6c 30 20 63 6f 6c 32 20 46   + + col0 col2 F
15740 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
15750 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 37 31 0d 0a  ..----..-1..71..
15760 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  81....query I ro
15770 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
15780 53 54 49 4e 43 54 20 2d 20 2d 20 32 33 20 2a 20  STINCT - - 23 * 
15790 63 6f 6c 32 20 2d 20 2b 20 2d 20 63 6f 6c 32 20  col2 - + - col2 
157a0 2a 20 63 6f 6c 30 20 2d 20 2d 20 2d 20 63 6f 6c  * col0 - - - col
157b0 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
157c0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 33 36 37 0d  or0..----..6367.
157d0 0a 37 30 39 30 0d 0a 37 37 30 35 0d 0a 0d 0a 71  .7090..7705....q
157e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
157f0 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 37  SELECT ALL - - 7
15800 36 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  6 + + col0 AS co
15810 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
15820 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 32 0d  cor0..----..122.
15830 0a 31 34 30 0d 0a 31 35 31 0d 0a 0d 0a 6f 6e 6c  .140..151....onl
15840 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
15850 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
15860 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
15870 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36  rowsort label-46
15880 33 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 2b 20  3..SELECT + ( + 
15890 2b 20 43 41 53 54 28 20 2d 20 2b 20 33 38 20 41  + CAST( - + 38 A
158a0 53 20 53 49 47 4e 45 44 20 29 20 29 20 63 6f 6c  S SIGNED ) ) col
158b0 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
158c0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38 0d 0a  or0..----..-38..
158d0 2d 33 38 0d 0a 2d 33 38 0d 0a 0d 0a 73 6b 69 70  -38..-38....skip
158e0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
158f0 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
15900 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
15910 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
15920 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
15930 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
15940 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
15950 6f 72 74 20 6c 61 62 65 6c 2d 34 36 33 0d 0a 53  ort label-463..S
15960 45 4c 45 43 54 20 2b 20 28 20 2b 20 2b 20 43 41  ELECT + ( + + CA
15970 53 54 20 28 20 2d 20 2b 20 33 38 20 41 53 20 49  ST ( - + 38 AS I
15980 4e 54 45 47 45 52 20 29 20 29 20 63 6f 6c 30 20  NTEGER ) ) col0 
15990 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
159a0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38 0d 0a 2d 33  0..----..-38..-3
159b0 38 0d 0a 2d 33 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  8..-38....onlyif
159c0 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
159d0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
159e0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
159f0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 34 0d 0a  sort label-464..
15a00 53 45 4c 45 43 54 20 63 6f 6c 32 20 44 49 56 20  SELECT col2 DIV 
15a10 33 20 2a 20 2d 20 63 6f 6c 32 20 2d 20 2b 20 2b  3 * - col2 - + +
15a20 20 63 6f 6c 30 20 44 49 56 20 2d 20 63 6f 6c 32   col0 DIV - col2
15a30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
15a40 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 2d  b0..----..-22..-
15a50 33 32 36 37 0d 0a 2d 37 30 35 0d 0a 0d 0a 73 6b  3267..-705....sk
15a60 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
15a70 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
15a80 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
15a90 65 6c 2d 34 36 34 0d 0a 53 45 4c 45 43 54 20 63  el-464..SELECT c
15aa0 6f 6c 32 20 2f 20 33 20 2a 20 2d 20 63 6f 6c 32  ol2 / 3 * - col2
15ab0 20 2d 20 2b 20 2b 20 63 6f 6c 30 20 2f 20 2d 20   - + + col0 / - 
15ac0 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
15ad0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab0..----..-2
15ae0 32 0d 0a 2d 33 32 36 37 0d 0a 2d 37 30 35 0d 0a  2..-3267..-705..
15af0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
15b00 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31  t..SELECT + col1
15b10 20 2a 20 2d 20 2b 20 35 31 20 2d 20 2b 20 63 6f   * - + 51 - + co
15b20 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
15b30 2d 2d 0d 0a 2d 31 30 39 32 0d 0a 2d 34 32 31 32  --..-1092..-4212
15b40 0d 0a 2d 35 32 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-52....query I
15b50 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
15b60 54 20 2b 20 2b 20 36 35 20 2b 20 63 6f 6c 30 20  T + + 65 + col0 
15b70 41 53 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c 31 20  AS col2, + col1 
15b80 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
15b90 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
15ba0 0a 31 31 31 0d 0a 35 31 0d 0a 31 32 39 0d 0a 37  .111..51..129..7
15bb0 37 0d 0a 31 34 30 0d 0a 36 37 0d 0a 0d 0a 71 75  7..140..67....qu
15bc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
15bd0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
15be0 20 2d 20 28 20 2d 20 2d 20 34 39 20 29 20 41 53   - ( - - 49 ) AS
15bf0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
15c00 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34  AS cor0..----..4
15c10 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  9....query III r
15c20 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
15c30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
15c40 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e  r0 WHERE NOT ( N
15c50 4f 54 20 28 20 2b 20 36 20 49 53 20 4e 55 4c 4c  OT ( + 6 IS NULL
15c60 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75   ) )..----....qu
15c70 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
15c80 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
15c90 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
15ca0 45 20 4e 4f 54 20 28 20 4e 4f 54 20 28 20 4e 4f  E NOT ( NOT ( NO
15cb0 54 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 31 20  T col2 * + col1 
15cc0 49 53 20 4e 55 4c 4c 20 29 20 29 0d 0a 2d 2d 2d  IS NULL ) )..---
15cd0 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
15ce0 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31  ing to c6c0a4111
15cf0 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65  b36d04dbc811a11e
15d00 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69  4d54cad....onlyi
15d10 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
15d20 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
15d30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
15d40 62 65 6c 2d 34 37 30 0d 0a 53 45 4c 45 43 54 20  bel-470..SELECT 
15d50 44 49 53 54 49 4e 43 54 20 4d 41 58 28 20 44 49  DISTINCT MAX( DI
15d60 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 32 20  STINCT - - col2 
15d70 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
15d80 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 0d  or0..----..99...
15d90 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
15da0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
15db0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
15dc0 6c 61 62 65 6c 2d 34 37 30 0d 0a 53 45 4c 45 43  label-470..SELEC
15dd0 54 20 44 49 53 54 49 4e 43 54 20 4d 41 58 20 28  T DISTINCT MAX (
15de0 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f   DISTINCT - - co
15df0 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41  l2 ) FROM tab0 A
15e00 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39  S cor0..----..99
15e10 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
15e20 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
15e30 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
15e40 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 31  owsort label-471
15e50 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
15e60 28 20 41 4c 4c 20 2b 20 32 30 20 29 20 41 53 20  ( ALL + 20 ) AS 
15e70 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
15e80 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
15e90 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
15ea0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
15eb0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
15ec0 74 20 6c 61 62 65 6c 2d 34 37 31 0d 0a 53 45 4c  t label-471..SEL
15ed0 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 41 4c  ECT + COUNT ( AL
15ee0 4c 20 2b 20 32 30 20 29 20 41 53 20 63 6f 6c 31  L + 20 ) AS col1
15ef0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
15f00 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71  r0..----..3....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 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
15f30 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
15f40 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 3d 20 28  RE NOT NULL >= (
15f50 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d   + col2 )..----.
15f60 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
15f70 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
15f80 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
15f90 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 33 0d  wsort label-473.
15fa0 0a 53 45 4c 45 43 54 20 2d 20 28 20 53 55 4d 28  .SELECT - ( SUM(
15fb0 20 63 6f 6c 32 20 29 20 29 20 46 52 4f 4d 20 74   col2 ) ) FROM t
15fc0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
15fd0 2d 0d 0a 2d 32 32 33 0d 0a 0d 0a 73 6b 69 70 69  -..-223....skipi
15fe0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
15ff0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
16000 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
16010 34 37 33 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20  473..SELECT - ( 
16020 53 55 4d 20 28 20 63 6f 6c 32 20 29 20 29 20 46  SUM ( col2 ) ) F
16030 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
16040 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 33 0d 0a 0d 0a  ..----..-223....
16050 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
16060 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
16070 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
16080 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
16090 2d 34 37 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -474..SELECT ALL
160a0 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   - CAST( NULL AS
160b0 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20 34 38   SIGNED ) * - 48
160c0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
160d0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
160e0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
160f0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
16100 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
16110 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
16120 65 6c 2d 34 37 34 0d 0a 53 45 4c 45 43 54 20 41  el-474..SELECT A
16130 4c 4c 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c  LL - CAST ( NULL
16140 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20   AS INTEGER ) * 
16150 2d 20 34 38 20 46 52 4f 4d 20 74 61 62 32 20 41  - 48 FROM tab2 A
16160 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
16170 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
16180 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
16190 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
161a0 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45  OM tab2 cor0 WHE
161b0 52 45 20 4e 4f 54 20 2b 20 28 20 2b 20 36 34 20  RE NOT + ( + 64 
161c0 29 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 2d  ) * + - col1 + -
161d0 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55 4c   col1 IS NOT NUL
161e0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
161f0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
16200 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
16210 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16220 62 65 6c 2d 34 37 36 0d 0a 53 45 4c 45 43 54 20  bel-476..SELECT 
16230 28 20 2b 20 2d 20 53 55 4d 28 20 41 4c 4c 20 63  ( + - SUM( ALL c
16240 6f 6c 30 20 29 20 29 20 46 52 4f 4d 20 74 61 62  ol0 ) ) FROM tab
16250 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  1 cor0..----..-2
16260 32 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  27....skipif mys
16270 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
16280 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
16290 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 36 0d 0a  sort label-476..
162a0 53 45 4c 45 43 54 20 28 20 2b 20 2d 20 53 55 4d  SELECT ( + - SUM
162b0 20 28 20 41 4c 4c 20 63 6f 6c 30 20 29 20 29 20   ( ALL col0 ) ) 
162c0 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
162d0 2d 2d 2d 2d 0d 0a 2d 32 32 37 0d 0a 0d 0a 6f 6e  ----..-227....on
162e0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
162f0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
16300 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16310 20 6c 61 62 65 6c 2d 34 37 37 0d 0a 53 45 4c 45   label-477..SELE
16320 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e  CT DISTINCT COUN
16330 54 28 20 2b 20 2b 20 33 35 20 29 20 46 52 4f 4d  T( + + 35 ) FROM
16340 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   tab2..----..3..
16350 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
16360 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
16370 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16380 20 6c 61 62 65 6c 2d 34 37 37 0d 0a 53 45 4c 45   label-477..SELE
16390 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e  CT DISTINCT COUN
163a0 54 20 28 20 2b 20 2b 20 33 35 20 29 20 46 52 4f  T ( + + 35 ) FRO
163b0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  M tab2..----..3.
163c0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
163d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
163e0 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
163f0 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f  1 WHERE NOT + co
16400 6c 30 20 2a 20 2b 20 63 6f 6c 32 20 49 53 20 4e  l0 * + col2 IS N
16410 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
16420 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
16430 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62  6c0a4111b36d04db
16440 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d  c811a11e4d54cad.
16450 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
16460 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 32 36 20  rt..SELECT - 26 
16470 2b 20 2b 20 63 6f 6c 32 20 2a 20 39 35 20 41 53  + + col2 * 95 AS
16480 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
16490 0a 2d 2d 2d 2d 0d 0a 32 31 35 39 0d 0a 33 37 37  .----..2159..377
164a0 34 0d 0a 35 34 38 34 0d 0a 0d 0a 71 75 65 72 79  4..5484....query
164b0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
164c0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
164d0 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
164e0 4e 55 4c 4c 20 3e 20 2d 20 28 20 2b 20 63 6f 6c  NULL > - ( + col
164f0 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  2 )..----....que
16500 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
16510 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
16520 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 2b  b0 WHERE NOT - +
16530 20 63 6f 6c 31 20 2a 20 2b 20 38 37 20 3c 20 4e   col1 * + 87 < N
16540 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
16550 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
16560 45 4c 45 43 54 20 2b 20 2b 20 63 6f 6c 31 20 41  ELECT + + col1 A
16570 53 20 63 6f 6c 31 2c 20 34 39 20 41 53 20 63 6f  S col1, 49 AS co
16580 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l0 FROM tab0 WHE
16590 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 2a 20  RE NOT + col2 * 
165a0 2b 20 63 6f 6c 32 20 3d 20 63 6f 6c 32 0d 0a 2d  + col2 = col2..-
165b0 2d 2d 2d 0d 0a 31 0d 0a 34 39 0d 0a 32 31 0d 0a  ---..1..49..21..
165c0 34 39 0d 0a 38 31 0d 0a 34 39 0d 0a 0d 0a 6f 6e  49..81..49....on
165d0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
165e0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
165f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
16600 20 6c 61 62 65 6c 2d 34 38 33 0d 0a 53 45 4c 45   label-483..SELE
16610 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20  CT COUNT( * ) + 
16620 2b 20 28 20 43 4f 55 4e 54 28 20 2a 20 29 20 29  + ( COUNT( * ) )
16630 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
16640 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..6....skipif my
16650 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
16660 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
16670 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38 33 0d  wsort label-483.
16680 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20  .SELECT COUNT ( 
16690 2a 20 29 20 2b 20 2b 20 28 20 43 4f 55 4e 54 20  * ) + + ( COUNT 
166a0 28 20 2a 20 29 20 29 20 46 52 4f 4d 20 74 61 62  ( * ) ) FROM tab
166b0 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 6f 6e  0..----..6....on
166c0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
166d0 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
166e0 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
166f0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
16700 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
16710 2d 34 38 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  -484..SELECT + +
16720 20 36 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20   6 + CAST( NULL 
16730 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20  AS SIGNED ) * - 
16740 4d 41 58 28 20 41 4c 4c 20 37 37 20 29 20 46 52  MAX( ALL 77 ) FR
16750 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
16760 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
16770 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
16780 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
16790 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
167a0 62 65 6c 2d 34 38 34 0d 0a 53 45 4c 45 43 54 20  bel-484..SELECT 
167b0 2b 20 2b 20 36 20 2b 20 43 41 53 54 20 28 20 4e  + + 6 + CAST ( N
167c0 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
167d0 20 2a 20 2d 20 4d 41 58 20 28 20 41 4c 4c 20 37   * - MAX ( ALL 7
167e0 37 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  7 ) FROM tab2 AS
167f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
16800 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
16810 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
16820 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
16830 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
16840 74 20 6c 61 62 65 6c 2d 34 38 35 0d 0a 53 45 4c  t label-485..SEL
16850 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
16860 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
16870 20 57 48 45 52 45 20 43 41 53 54 28 20 2b 20 2b   WHERE CAST( + +
16880 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20   col2 AS SIGNED 
16890 29 20 3e 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d  ) > ( NULL )..--
168a0 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
168b0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
168c0 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
168d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38 35  owsort label-485
168e0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
168f0 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  T * FROM tab1 AS
16900 20 63 6f 72 30 20 57 48 45 52 45 20 43 41 53 54   cor0 WHERE CAST
16910 20 28 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 49   ( + + col2 AS I
16920 4e 54 45 47 45 52 20 29 20 3e 20 28 20 4e 55 4c  NTEGER ) > ( NUL
16930 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  L )..----....que
16940 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
16950 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20  LECT ALL + col1 
16960 2a 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31 20  * col2 + - col1 
16970 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
16980 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
16990 0a 31 33 33 30 0d 0a 32 39 30 0d 0a 33 31 34 39  .1330..290..3149
169a0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
169b0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
169c0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
169d0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
169e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
169f0 20 6c 61 62 65 6c 2d 34 38 37 0d 0a 53 45 4c 45   label-487..SELE
16a00 43 54 20 41 4c 4c 20 38 33 20 2a 20 39 32 20 2b  CT ALL 83 * 92 +
16a10 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
16a20 49 47 4e 45 44 20 29 20 2b 20 2d 20 43 4f 55 4e  IGNED ) + - COUN
16a30 54 28 20 2a 20 29 20 2a 20 2d 20 36 36 20 41 53  T( * ) * - 66 AS
16a40 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
16a50 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
16a60 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
16a70 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
16a80 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
16a90 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38 37 0d  wsort label-487.
16aa0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 33 20 2a  .SELECT ALL 83 *
16ab0 20 39 32 20 2b 20 43 41 53 54 20 28 20 4e 55 4c   92 + CAST ( NUL
16ac0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b  L AS INTEGER ) +
16ad0 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   - COUNT ( * ) *
16ae0 20 2d 20 36 36 20 41 53 20 63 6f 6c 30 20 46 52   - 66 AS col0 FR
16af0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
16b00 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .----..NULL....q
16b10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
16b20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
16b30 2b 20 2b 20 36 34 20 46 52 4f 4d 20 74 61 62 32  + + 64 FROM tab2
16b40 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
16b50 39 38 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 36  98 NOT BETWEEN 6
16b60 31 20 41 4e 44 20 2d 20 2d 20 63 6f 6c 31 0d 0a  1 AND - - col1..
16b70 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
16b80 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
16b90 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
16ba0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
16bb0 2d 34 38 39 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -489..SELECT COU
16bc0 4e 54 28 20 44 49 53 54 49 4e 43 54 20 30 20 29  NT( DISTINCT 0 )
16bd0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
16be0 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b2 AS cor0 CROSS
16bf0 20 4a 4f 49 4e 20 74 61 62 30 20 63 6f 72 31 0d   JOIN tab0 cor1.
16c00 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70  .----..1....skip
16c10 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
16c20 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
16c30 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
16c40 2d 34 38 39 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -489..SELECT COU
16c50 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20 30 20  NT ( DISTINCT 0 
16c60 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
16c70 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
16c80 53 20 4a 4f 49 4e 20 74 61 62 30 20 63 6f 72 31  S JOIN tab0 cor1
16c90 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69  ..----..1....ski
16ca0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
16cb0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
16cc0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
16cd0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
16ce0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
16cf0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
16d00 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 2a 20  STINCT - col0 * 
16d10 2d 20 2b 20 28 20 32 33 20 29 20 63 6f 6c 32 20  - + ( 23 ) col2 
16d20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
16d30 0a 31 30 35 38 0d 0a 31 34 37 32 0d 0a 31 37 32  .1058..1472..172
16d40 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
16d50 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
16d60 20 2b 20 28 20 2b 20 2b 20 63 6f 6c 32 20 29 20   + ( + + col2 ) 
16d70 2a 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  * + col1 FROM ta
16d80 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 34 34 0d 0a  b1..----..1344..
16d90 32 39 35 0d 0a 33 31 39 36 0d 0a 0d 0a 71 75 65  295..3196....que
16da0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
16db0 4c 45 43 54 20 2b 20 63 6f 6c 30 20 41 53 20 63  LECT + col0 AS c
16dc0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol1 FROM tab2 WH
16dd0 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54  ERE NULL NOT BET
16de0 57 45 45 4e 20 2b 20 2d 20 63 6f 6c 30 20 41 4e  WEEN + - col0 AN
16df0 44 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63  D + - col1 * + c
16e00 6f 6c 32 20 2b 20 2d 20 2b 20 63 6f 6c 32 0d 0a  ol2 + - + col2..
16e10 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
16e20 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
16e30 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
16e40 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
16e50 2d 34 39 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -493..SELECT ALL
16e60 20 28 20 2d 20 39 37 20 29 20 2a 20 2d 20 43 4f   ( - 97 ) * - CO
16e70 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2b 20 53  UNT( * ) * + + S
16e80 55 4d 28 20 2d 20 2d 20 31 20 29 20 41 53 20 63  UM( - - 1 ) AS c
16e90 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
16ea0 2d 2d 2d 0d 0a 38 37 33 0d 0a 0d 0a 73 6b 69 70  ---..873....skip
16eb0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
16ec0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
16ed0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
16ee0 2d 34 39 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -493..SELECT ALL
16ef0 20 28 20 2d 20 39 37 20 29 20 2a 20 2d 20 43 4f   ( - 97 ) * - CO
16f00 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 2b 20  UNT ( * ) * + + 
16f10 53 55 4d 20 28 20 2d 20 2d 20 31 20 29 20 41 53  SUM ( - - 1 ) AS
16f20 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
16f30 0a 2d 2d 2d 2d 0d 0a 38 37 33 0d 0a 0d 0a 71 75  .----..873....qu
16f40 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
16f50 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
16f60 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
16f70 45 20 2b 20 63 6f 6c 32 20 2d 20 2d 20 63 6f 6c  E + col2 - - col
16f80 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
16f90 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
16fa0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
16fb0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
16fc0 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 44 49   SIGNED type: DI
16fd0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
16fe0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
16ff0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
17000 34 39 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  495..SELECT ALL 
17010 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 44  + + COUNT( * ) D
17020 49 56 20 2b 20 38 33 20 2b 20 2d 20 43 41 53 54  IV + 83 + - CAST
17030 28 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20  ( SUM( DISTINCT 
17040 63 6f 6c 32 20 29 20 41 53 20 53 49 47 4e 45 44  col2 ) AS SIGNED
17050 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
17060 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31  cor0..----..-121
17070 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
17080 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
17090 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
170a0 72 74 20 6c 61 62 65 6c 2d 34 39 35 0d 0a 53 45  rt label-495..SE
170b0 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20 43 4f 55  LECT ALL + + COU
170c0 4e 54 20 28 20 2a 20 29 20 2f 20 2b 20 38 33 20  NT ( * ) / + 83 
170d0 2b 20 2d 20 43 41 53 54 20 28 20 53 55 4d 20 28  + - CAST ( SUM (
170e0 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 29   DISTINCT col2 )
170f0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
17100 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
17110 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 0d 0a 0d 0a 71  .----..-121....q
17120 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
17130 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
17140 2d 20 63 6f 6c 32 20 2b 20 2d 20 2d 20 63 6f 6c  - col2 + - - col
17150 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
17160 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
17170 2d 0d 0a 31 37 0d 0a 32 33 0d 0a 32 34 0d 0a 0d  -..17..23..24...
17180 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17190 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
171a0 54 20 2b 20 33 37 20 2a 20 2d 20 2d 20 38 37 20  T + 37 * - - 87 
171b0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
171c0 30 0d 0a 2d 2d 2d 2d 0d 0a 33 32 31 39 0d 0a 0d  0..----..3219...
171d0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
171e0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
171f0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
17200 6f 72 74 20 6c 61 62 65 6c 2d 34 39 38 0d 0a 53  ort label-498..S
17210 45 4c 45 43 54 20 2b 20 2b 20 37 33 20 2b 20 2b  ELECT + + 73 + +
17220 20 4d 49 4e 28 20 2d 20 63 6f 6c 31 20 29 20 41   MIN( - col1 ) A
17230 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
17240 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d   cor0..----..-8.
17250 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
17260 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
17270 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
17280 74 20 6c 61 62 65 6c 2d 34 39 38 0d 0a 53 45 4c  t label-498..SEL
17290 45 43 54 20 2b 20 2b 20 37 33 20 2b 20 2b 20 4d  ECT + + 73 + + M
172a0 49 4e 20 28 20 2d 20 63 6f 6c 31 20 29 20 41 53  IN ( - col1 ) AS
172b0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
172c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a  cor0..----..-8..
172d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
172e0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
172f0 43 54 20 39 37 20 2b 20 2d 20 63 6f 6c 31 20 46  CT 97 + - col1 F
17300 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d  ROM tab0 cor0..-
17310 2d 2d 2d 0d 0a 31 36 0d 0a 37 36 0d 0a 39 36 0d  ---..16..76..96.
17320 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
17330 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
17340 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  ax: ..query II r
17350 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 30 30  owsort label-500
17360 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20  ..SELECT COUNT( 
17370 2a 20 29 20 41 53 20 63 6f 6c 31 2c 20 2b 20 35  * ) AS col1, + 5
17380 33 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  3 FROM tab1..---
17390 2d 0d 0a 33 0d 0a 35 33 0d 0a 0d 0a 73 6b 69 70  -..3..53....skip
173a0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
173b0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
173c0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
173d0 6c 2d 35 30 30 0d 0a 53 45 4c 45 43 54 20 43 4f  l-500..SELECT CO
173e0 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
173f0 31 2c 20 2b 20 35 33 20 46 52 4f 4d 20 74 61 62  1, + 53 FROM tab
17400 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 35 33 0d 0a  1..----..3..53..
17410 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
17420 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
17430 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
17440 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
17450 62 65 6c 2d 35 30 31 0d 0a 53 45 4c 45 43 54 20  bel-501..SELECT 
17460 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28  DISTINCT + CAST(
17470 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
17480 29 20 41 53 20 63 6f 6c 32 2c 20 2b 20 43 41 53  ) AS col2, + CAS
17490 54 28 20 2d 20 63 6f 6c 32 20 41 53 20 53 49 47  T( - col2 AS SIG
174a0 4e 45 44 20 29 20 2a 20 63 6f 6c 32 20 2f 20 2d  NED ) * col2 / -
174b0 20 2d 20 37 33 20 2a 20 2b 20 38 32 20 2a 20 2d   - 73 * + 82 * -
174c0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
174d0 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f  WHERE NULL IS NO
174e0 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
174f0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
17500 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
17510 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
17520 6c 61 62 65 6c 2d 35 30 31 0d 0a 53 45 4c 45 43  label-501..SELEC
17530 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53  T DISTINCT + CAS
17540 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
17550 47 45 52 20 29 20 41 53 20 63 6f 6c 32 2c 20 2b  GER ) AS col2, +
17560 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 32 20 41   CAST ( - col2 A
17570 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 63 6f  S INTEGER ) * co
17580 6c 32 20 2f 20 2d 20 2d 20 37 33 20 2a 20 2b 20  l2 / - - 73 * + 
17590 38 32 20 2a 20 2d 20 63 6f 6c 32 20 46 52 4f 4d  82 * - col2 FROM
175a0 20 74 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c   tab1 WHERE NULL
175b0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
175c0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
175d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
175e0 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
175f0 45 20 33 39 20 2f 20 2d 20 31 36 20 2d 20 2d 20  E 39 / - 16 - - 
17600 37 31 20 2a 20 2b 20 63 6f 6c 32 20 3c 20 2d 20  71 * + col2 < - 
17610 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col1..----....qu
17620 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
17630 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32  ELECT ALL + col2
17640 20 2d 20 35 20 46 52 4f 4d 20 74 61 62 30 0d 0a   - 5 FROM tab0..
17650 2d 2d 2d 2d 0d 0a 34 32 0d 0a 35 0d 0a 39 34 0d  ----..42..5..94.
17660 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
17670 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
17680 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
17690 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
176a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
176b0 6c 61 62 65 6c 2d 35 30 34 0d 0a 53 45 4c 45 43  label-504..SELEC
176c0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53  T DISTINCT + CAS
176d0 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
176e0 44 20 29 20 2a 20 43 4f 55 4e 54 28 20 38 30 20  D ) * COUNT( 80 
176f0 29 20 2a 20 28 20 38 31 20 29 20 41 53 20 63 6f  ) * ( 81 ) AS co
17700 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
17710 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
17720 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
17730 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
17740 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
17750 2d 35 30 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -504..SELECT DIS
17760 54 49 4e 43 54 20 2b 20 43 41 53 54 20 28 20 4e  TINCT + CAST ( N
17770 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
17780 20 2a 20 43 4f 55 4e 54 20 28 20 38 30 20 29 20   * COUNT ( 80 ) 
17790 2a 20 28 20 38 31 20 29 20 41 53 20 63 6f 6c 30  * ( 81 ) AS col0
177a0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
177b0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..NULL....onlyif
177c0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
177d0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
177e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
177f0 65 6c 2d 35 30 35 0d 0a 53 45 4c 45 43 54 20 2d  el-505..SELECT -
17800 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 2d   MAX( DISTINCT -
17810 20 28 20 2b 20 2b 20 28 20 2d 20 63 6f 6c 31 20   ( + + ( - col1 
17820 29 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ) ) ) AS col0 FR
17830 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
17840 34 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  47....skipif mys
17850 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
17860 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
17870 73 6f 72 74 20 6c 61 62 65 6c 2d 35 30 35 0d 0a  sort label-505..
17880 53 45 4c 45 43 54 20 2d 20 4d 41 58 20 28 20 44  SELECT - MAX ( D
17890 49 53 54 49 4e 43 54 20 2d 20 28 20 2b 20 2b 20  ISTINCT - ( + + 
178a0 28 20 2d 20 63 6f 6c 31 20 29 20 29 20 29 20 41  ( - col1 ) ) ) A
178b0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
178c0 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 37 0d 0a 0d 0a 73  ..----..-47....s
178d0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
178e0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
178f0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
17900 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
17910 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
17920 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
17930 20 41 4c 4c 20 2b 20 2b 20 63 6f 6c 30 2c 20 2b   ALL + + col0, +
17940 20 63 6f 6c 30 20 63 6f 6c 32 20 46 52 4f 4d 20   col0 col2 FROM 
17950 74 61 62 32 20 57 48 45 52 45 20 2d 20 63 6f 6c  tab2 WHERE - col
17960 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2b 20  2 NOT BETWEEN + 
17970 2b 20 33 32 20 41 4e 44 20 2b 20 2b 20 37 30 0d  + 32 AND + + 70.
17980 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 34 36 0d 0a 36  .----..46..46..6
17990 34 0d 0a 36 34 0d 0a 37 35 0d 0a 37 35 0d 0a 0d  4..64..75..75...
179a0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
179b0 74 0d 0a 53 45 4c 45 43 54 20 35 35 20 41 53 20  t..SELECT 55 AS 
179c0 63 6f 6c 32 2c 20 39 39 20 2a 20 2d 20 2d 20 32  col2, 99 * - - 2
179d0 34 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  4 AS col1 FROM t
179e0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 35 35 0d 0a 32  ab0..----..55..2
179f0 33 37 36 0d 0a 35 35 0d 0a 32 33 37 36 0d 0a 35  376..55..2376..5
17a00 35 0d 0a 32 33 37 36 0d 0a 0d 0a 71 75 65 72 79  5..2376....query
17a10 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
17a20 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
17a30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c   WHERE NOT - col
17a40 32 20 2b 20 2b 20 2d 20 31 34 20 49 53 20 4e 4f  2 + + - 14 IS NO
17a50 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
17a60 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
17a70 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
17a80 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
17a90 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
17aa0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
17ab0 65 6c 2d 35 30 39 0d 0a 53 45 4c 45 43 54 20 41  el-509..SELECT A
17ac0 4c 4c 20 2d 20 43 41 53 54 28 20 2d 20 43 41 53  LL - CAST( - CAS
17ad0 54 28 20 2d 20 4d 41 58 28 20 2d 20 63 6f 6c 32  T( - MAX( - col2
17ae0 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 41   ) AS SIGNED ) A
17af0 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f  S SIGNED ) AS co
17b00 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
17b10 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a  cor0..----..23..
17b20 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
17b30 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
17b40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17b50 20 6c 61 62 65 6c 2d 35 30 39 0d 0a 53 45 4c 45   label-509..SELE
17b60 43 54 20 41 4c 4c 20 2d 20 43 41 53 54 20 28 20  CT ALL - CAST ( 
17b70 2d 20 43 41 53 54 20 28 20 2d 20 4d 41 58 20 28  - CAST ( - MAX (
17b80 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 49 4e 54   - col2 ) AS INT
17b90 45 47 45 52 20 29 20 41 53 20 49 4e 54 45 47 45  EGER ) AS INTEGE
17ba0 52 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  R ) AS col0 FROM
17bb0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
17bc0 2d 2d 2d 0d 0a 32 33 0d 0a 0d 0a 6f 6e 6c 79 69  ---..23....onlyi
17bd0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
17be0 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20  ate syntax: DIV 
17bf0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
17c00 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49  sion: ..query II
17c10 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
17c20 31 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  10..SELECT ALL -
17c30 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56 20   COUNT( * ) DIV 
17c40 2b 20 53 55 4d 28 20 2d 20 63 6f 6c 30 20 29 20  + SUM( - col0 ) 
17c50 41 53 20 63 6f 6c 31 2c 20 4d 41 58 28 20 41 4c  AS col1, MAX( AL
17c60 4c 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  L - col2 ) AS co
17c70 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
17c80 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 2d  cor0..----..0..-
17c90 32 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  23....skipif mys
17ca0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
17cb0 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  ble..query II ro
17cc0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 30 0d  wsort label-510.
17cd0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f  .SELECT ALL - CO
17ce0 55 4e 54 20 28 20 2a 20 29 20 2f 20 2b 20 53 55  UNT ( * ) / + SU
17cf0 4d 20 28 20 2d 20 63 6f 6c 30 20 29 20 41 53 20  M ( - col0 ) AS 
17d00 63 6f 6c 31 2c 20 4d 41 58 20 28 20 41 4c 4c 20  col1, MAX ( ALL 
17d10 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31  - col2 ) AS col1
17d20 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
17d30 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 2d 32 33  r0..----..0..-23
17d40 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
17d50 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
17d60 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
17d70 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 31  owsort label-511
17d80 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
17d90 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
17da0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol0 FROM tab2 co
17db0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
17dc0 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b0 AS cor1..----
17dd0 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-9....skipif m
17de0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
17df0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
17e00 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 31  owsort label-511
17e10 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d  ..SELECT ALL + -
17e20 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20   COUNT ( * ) AS 
17e30 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63  col0 FROM tab2 c
17e40 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
17e50 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab0 AS cor1..---
17e60 2d 0d 0a 2d 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..-9....onlyif 
17e70 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
17e80 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
17e90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
17ea0 6c 2d 35 31 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-512..SELECT DI
17eb0 53 54 49 4e 43 54 20 2b 20 2b 20 4d 49 4e 28 20  STINCT + + MIN( 
17ec0 2d 20 36 32 20 29 20 46 52 4f 4d 20 74 61 62 31  - 62 ) FROM tab1
17ed0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
17ee0 2d 36 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -62....skipif my
17ef0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
17f00 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
17f10 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 32 0d  wsort label-512.
17f20 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
17f30 20 2b 20 2b 20 4d 49 4e 20 28 20 2d 20 36 32 20   + + MIN ( - 62 
17f40 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
17f50 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 32 0d 0a  or0..----..-62..
17f60 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
17f70 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
17f80 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
17f90 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 33 0d 0a  sort label-513..
17fa0 53 45 4c 45 43 54 20 2b 20 53 55 4d 28 20 2b 20  SELECT + SUM( + 
17fb0 2d 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31  - col0 ) AS col1
17fc0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
17fd0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 39 0d 0a  r0..----..-199..
17fe0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
17ff0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
18000 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
18010 20 6c 61 62 65 6c 2d 35 31 33 0d 0a 53 45 4c 45   label-513..SELE
18020 43 54 20 2b 20 53 55 4d 20 28 20 2b 20 2d 20 63  CT + SUM ( + - c
18030 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ol0 ) AS col1 FR
18040 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
18050 0a 2d 2d 2d 2d 0d 0a 2d 31 39 39 0d 0a 0d 0a 6f  .----..-199....o
18060 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
18070 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
18080 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18090 74 20 6c 61 62 65 6c 2d 35 31 34 0d 0a 53 45 4c  t label-514..SEL
180a0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  ECT DISTINCT + +
180b0 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   ( - COUNT( * ) 
180c0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
180d0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
180e0 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-3....skipif 
180f0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
18100 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
18110 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31  rowsort label-51
18120 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
18130 43 54 20 2b 20 2b 20 28 20 2d 20 43 4f 55 4e 54  CT + + ( - COUNT
18140 20 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 32   ( * ) ) AS col2
18150 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
18160 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a  r0..----..-3....
18170 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
18180 0a 53 45 4c 45 43 54 20 38 20 2a 20 28 20 2b 20  .SELECT 8 * ( + 
18190 32 37 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  27 ) AS col0 FRO
181a0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 31  M tab2..----..21
181b0 36 0d 0a 32 31 36 0d 0a 32 31 36 0d 0a 0d 0a 71  6..216..216....q
181c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
181d0 53 45 4c 45 43 54 20 32 36 20 2a 20 2d 20 63 6f  SELECT 26 * - co
181e0 6c 32 20 2a 20 2d 20 2b 20 32 31 20 41 53 20 63  l2 * - + 21 AS c
181f0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
18200 2d 2d 2d 0d 0a 32 35 36 36 32 0d 0a 35 34 30 35  ---..25662..5405
18210 34 0d 0a 35 34 36 30 0d 0a 0d 0a 71 75 65 72 79  4..5460....query
18220 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
18230 43 54 20 2b 20 28 20 36 30 20 29 20 41 53 20 63  CT + ( 60 ) AS c
18240 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
18250 2d 2d 2d 0d 0a 36 30 0d 0a 36 30 0d 0a 36 30 0d  ---..60..60..60.
18260 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
18270 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
18280 4e 43 54 20 2b 20 35 30 20 46 52 4f 4d 20 74 61  NCT + 50 FROM ta
18290 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b0 WHERE NOT NUL
182a0 4c 20 3c 20 28 20 2b 20 63 6f 6c 31 20 29 0d 0a  L < ( + col1 )..
182b0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
182c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
182d0 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 2c   + col2 AS col2,
182e0 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   - col0 FROM tab
182f0 30 20 57 48 45 52 45 20 2b 20 2d 20 63 6f 6c 31  0 WHERE + - col1
18300 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20 63   NOT BETWEEN - c
18310 6f 6c 31 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d  ol1 AND NULL..--
18320 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
18330 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
18340 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
18350 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
18360 32 30 0d 0a 53 45 4c 45 43 54 20 2d 20 35 32 20  20..SELECT - 52 
18370 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  * COUNT( * ) FRO
18380 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
18390 35 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  56....skipif mys
183a0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
183b0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
183c0 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 30 0d 0a  sort label-520..
183d0 53 45 4c 45 43 54 20 2d 20 35 32 20 2a 20 43 4f  SELECT - 52 * CO
183e0 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
183f0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 36 0d  ab0..----..-156.
18400 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
18410 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
18420 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
18430 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
18440 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
18450 6c 61 62 65 6c 2d 35 32 31 0d 0a 53 45 4c 45 43  label-521..SELEC
18460 54 20 28 20 43 4f 55 4e 54 28 20 2a 20 29 20 29  T ( COUNT( * ) )
18470 20 2a 20 2d 20 43 41 53 54 28 20 2b 20 39 38 20   * - CAST( + 98 
18480 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
18490 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
184a0 2d 2d 2d 0d 0a 2d 32 39 34 0d 0a 0d 0a 73 6b 69  ---..-294....ski
184b0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
184c0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
184d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
184e0 6c 2d 35 32 31 0d 0a 53 45 4c 45 43 54 20 28 20  l-521..SELECT ( 
184f0 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 2a 20  COUNT ( * ) ) * 
18500 2d 20 43 41 53 54 20 28 20 2b 20 39 38 20 41 53  - CAST ( + 98 AS
18510 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
18520 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
18530 2d 2d 0d 0a 2d 32 39 34 0d 0a 0d 0a 6f 6e 6c 79  --..-294....only
18540 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
18550 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
18560 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
18570 61 62 65 6c 2d 35 32 32 0d 0a 53 45 4c 45 43 54  abel-522..SELECT
18580 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20   ALL + COUNT( * 
18590 29 20 2a 20 2d 20 31 37 20 41 53 20 63 6f 6c 30  ) * - 17 AS col0
185a0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
185b0 0d 0a 2d 35 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-51....skipif 
185c0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
185d0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
185e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32  rowsort label-52
185f0 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  2..SELECT ALL + 
18600 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20  COUNT ( * ) * - 
18610 31 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  17 AS col0 FROM 
18620 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d  tab1..----..-51.
18630 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
18640 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
18650 4e 43 54 20 33 32 20 2b 20 63 6f 6c 32 20 2b 20  NCT 32 + col2 + 
18660 2b 20 63 6f 6c 30 20 2a 20 28 20 28 20 63 6f 6c  + col0 * ( ( col
18670 31 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  1 ) ) FROM tab0.
18680 0a 2d 2d 2d 2d 0d 0a 31 32 39 34 0d 0a 31 38 36  .----..1294..186
18690 39 0d 0a 32 32 38 0d 0a 0d 0a 71 75 65 72 79 20  9..228....query 
186a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
186b0 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 63 6f 6c  T ALL col2 + col
186c0 30 20 2d 20 2b 20 2d 20 63 6f 6c 32 20 2f 20 63  0 - + - col2 / c
186d0 6f 6c 30 20 2b 20 2d 20 2d 20 32 32 20 2a 20 2d  ol0 + - - 22 * -
186e0 20 36 34 20 2f 20 2b 20 63 6f 6c 32 20 2a 20 2d   64 / + col2 * -
186f0 20 63 6f 6c 31 20 2a 20 2d 20 2b 20 39 31 20 2a   col1 * - + 91 *
18700 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   - col1 FROM tab
18710 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
18720 28 20 36 32 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  ( 62 ) IS NULL..
18730 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
18740 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
18750 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 39 20 2b  DISTINCT + - 9 +
18760 20 2d 20 2b 20 36 20 41 53 20 63 6f 6c 32 20 46   - + 6 AS col2 F
18770 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
18780 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d 0a 0d 0a 73  ..----..-15....s
18790 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
187a0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
187b0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
187c0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
187d0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
187e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
187f0 41 4c 4c 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 63  ALL - col0 + - c
18800 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ol2 col2 FROM ta
18810 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
18820 0d 0a 2d 31 39 36 0d 0a 2d 36 32 0d 0a 2d 39 37  ..-196..-62..-97
18830 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
18840 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
18850 2d 20 33 31 20 2b 20 2d 20 63 6f 6c 32 20 41 53  - 31 + - col2 AS
18860 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
18870 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 30  cor0..----..-130
18880 0d 0a 2d 34 31 0d 0a 2d 37 38 0d 0a 0d 0a 71 75  ..-41..-78....qu
18890 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
188a0 45 4c 45 43 54 20 2b 20 31 38 20 2b 20 35 31 20  ELECT + 18 + 51 
188b0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
188c0 0a 36 39 0d 0a 36 39 0d 0a 36 39 0d 0a 0d 0a 71  .69..69..69....q
188d0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
188e0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
188f0 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  T * FROM tab1 AS
18900 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
18910 2b 20 63 6f 6c 30 20 42 45 54 57 45 45 4e 20 2b  + col0 BETWEEN +
18920 20 2d 20 63 6f 6c 31 20 41 4e 44 20 4e 55 4c 4c   - col1 AND NULL
18930 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
18940 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
18950 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
18960 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
18970 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 30 0d 0a  sort label-530..
18980 53 45 4c 45 43 54 20 2b 20 2b 20 37 30 20 2a 20  SELECT + + 70 * 
18990 43 41 53 54 28 20 2d 20 63 6f 6c 32 20 41 53 20  CAST( - col2 AS 
189a0 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
189b0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
189c0 0d 0a 2d 33 32 39 30 0d 0a 2d 36 39 33 30 0d 0a  ..-3290..-6930..
189d0 2d 37 30 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -700....skipif m
189e0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
189f0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
18a00 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 30  owsort label-530
18a10 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 37 30 20  ..SELECT + + 70 
18a20 2a 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 32 20  * CAST ( - col2 
18a30 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
18a40 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
18a50 2d 2d 2d 2d 0d 0a 2d 33 32 39 30 0d 0a 2d 36 39  ----..-3290..-69
18a60 33 30 0d 0a 2d 37 30 30 0d 0a 0d 0a 71 75 65 72  30..-700....quer
18a70 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
18a80 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2a 20 2d  ECT ALL col0 * -
18a90 20 37 31 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f   71 * + col2 FRO
18aa0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
18ab0 2d 2d 2d 2d 0d 0a 2d 33 34 37 36 31 36 0d 0a 2d  ----..-347616..-
18ac0 33 35 36 30 36 35 0d 0a 2d 34 33 39 33 34 38 0d  356065..-439348.
18ad0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
18ae0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
18af0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
18b00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 32 0d  wsort label-532.
18b10 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a  .SELECT COUNT( *
18b20 20 29 20 2a 20 2b 20 34 33 20 2d 20 2d 20 2d 20   ) * + 43 - - - 
18b30 32 36 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  26 FROM tab2 AS 
18b40 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d  cor0..----..103.
18b50 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
18b60 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
18b70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18b80 74 20 6c 61 62 65 6c 2d 35 33 32 0d 0a 53 45 4c  t label-532..SEL
18b90 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ECT COUNT ( * ) 
18ba0 2a 20 2b 20 34 33 20 2d 20 2d 20 2d 20 32 36 20  * + 43 - - - 26 
18bb0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
18bc0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d 0a 0d 0a  0..----..103....
18bd0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
18be0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
18bf0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
18c00 45 52 45 20 2b 20 35 35 20 2a 20 31 36 20 49 53  ERE + 55 * 16 IS
18c10 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
18c20 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
18c30 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33  g to c6c0a4111b3
18c40 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64  6d04dbc811a11e4d
18c50 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49  54cad....query I
18c60 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
18c70 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30   DISTINCT - col0
18c80 20 2b 20 2b 20 2b 20 33 36 20 2a 20 2b 20 34 30   + + + 36 * + 40
18c90 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
18ca0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 34 39 0d 0a  r0..----..1349..
18cb0 31 33 35 35 0d 0a 31 33 38 39 0d 0a 0d 0a 71 75  1355..1389....qu
18cc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
18cd0 45 4c 45 43 54 20 2b 20 2d 20 28 20 2d 20 2d 20  ELECT + - ( - - 
18ce0 63 6f 6c 30 20 29 20 2d 20 2d 20 2b 20 63 6f 6c  col0 ) - - + col
18cf0 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
18d00 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
18d10 2d 0d 0a 2d 31 37 0d 0a 2d 32 33 0d 0a 2d 32 34  -..-17..-23..-24
18d20 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
18d30 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
18d40 2b 20 63 6f 6c 31 20 2a 20 2b 20 38 31 20 46 52  + col1 * + 81 FR
18d50 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab2..----..4
18d60 31 33 31 0d 0a 35 34 32 37 0d 0a 36 32 33 37 0d  131..5427..6237.
18d70 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
18d80 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
18d90 4e 43 54 20 32 34 20 2a 20 2b 20 63 6f 6c 31 20  NCT 24 * + col1 
18da0 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  * col0 FROM tab0
18db0 0d 0a 2d 2d 2d 2d 0d 0a 32 33 32 38 0d 0a 32 39  ..----..2328..29
18dc0 31 36 30 0d 0a 34 33 38 34 38 0d 0a 0d 0a 71 75  160..43848....qu
18dd0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
18de0 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
18df0 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2b 20  ab2 WHERE NOT + 
18e00 34 39 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  49 IS NOT NULL..
18e10 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
18e20 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
18e30 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
18e40 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
18e50 2d 35 33 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  -539..SELECT DIS
18e60 54 49 4e 43 54 20 53 55 4d 28 20 41 4c 4c 20 39  TINCT SUM( ALL 9
18e70 38 20 29 20 2a 20 2d 20 2d 20 39 32 20 46 52 4f  8 ) * - - 92 FRO
18e80 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
18e90 2d 2d 2d 2d 0d 0a 32 37 30 34 38 0d 0a 0d 0a 73  ----..27048....s
18ea0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
18eb0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
18ec0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
18ed0 62 65 6c 2d 35 33 39 0d 0a 53 45 4c 45 43 54 20  bel-539..SELECT 
18ee0 44 49 53 54 49 4e 43 54 20 53 55 4d 20 28 20 41  DISTINCT SUM ( A
18ef0 4c 4c 20 39 38 20 29 20 2a 20 2d 20 2d 20 39 32  LL 98 ) * - - 92
18f00 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
18f10 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 37 30 34 38 0d  r0..----..27048.
18f20 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
18f30 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
18f40 4e 43 54 20 2b 20 2d 20 36 38 20 41 53 20 63 6f  NCT + - 68 AS co
18f50 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
18f60 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
18f70 20 4e 55 4c 4c 20 29 20 3c 3e 20 2b 20 63 6f 6c   NULL ) <> + col
18f80 31 20 2b 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 2b  1 + + - col0 + +
18f90 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 31 0d 0a   col0 * + col1..
18fa0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
18fb0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
18fc0 44 49 53 54 49 4e 43 54 20 2b 20 31 38 20 46 52  DISTINCT + 18 FR
18fd0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
18fe0 57 48 45 52 45 20 63 6f 6c 30 20 2f 20 2d 20 32  WHERE col0 / - 2
18ff0 35 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  5 IS NOT NULL..-
19000 2d 2d 2d 0d 0a 31 38 0d 0a 0d 0a 73 6b 69 70 69  ---..18....skipi
19010 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
19020 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
19030 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
19040 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
19050 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
19060 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
19070 6c 30 20 2a 20 2d 20 2b 20 63 6f 6c 30 20 63 6f  l0 * - + col0 co
19080 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
19090 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 30  cor0..----..-260
190a0 31 0d 0a 2d 37 32 32 35 0d 0a 2d 38 32 38 31 0d  1..-7225..-8281.
190b0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
190c0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
190d0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
190e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
190f0 62 65 6c 2d 35 34 33 0d 0a 53 45 4c 45 43 54 20  bel-543..SELECT 
19100 41 4c 4c 20 2d 20 2b 20 43 41 53 54 28 20 4e 55  ALL - + CAST( NU
19110 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b  LL AS SIGNED ) +
19120 20 2d 20 2b 20 31 32 20 46 52 4f 4d 20 74 61 62   - + 12 FROM tab
19130 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
19140 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
19150 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
19160 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
19170 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
19180 6f 72 74 20 6c 61 62 65 6c 2d 35 34 33 0d 0a 53  ort label-543..S
19190 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 43 41  ELECT ALL - + CA
191a0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
191b0 45 47 45 52 20 29 20 2b 20 2d 20 2b 20 31 32 20  EGER ) + - + 12 
191c0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
191d0 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
191e0 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ULL..NULL....que
191f0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
19200 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
19210 62 32 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  b2 cor0 WHERE NO
19220 54 20 28 20 4e 4f 54 20 2d 20 36 39 20 49 53 20  T ( NOT - 69 IS 
19230 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  NULL )..----....
19240 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
19250 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32  .SELECT ALL col2
19260 20 2a 20 2d 20 2b 20 39 20 41 53 20 63 6f 6c 31   * - + 9 AS col1
19270 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
19280 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32 33 0d 0a  r0..----..-423..
19290 2d 38 39 31 0d 0a 2d 39 30 0d 0a 0d 0a 6f 6e 6c  -891..-90....onl
192a0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
192b0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
192c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
192d0 6c 61 62 65 6c 2d 35 34 36 0d 0a 53 45 4c 45 43  label-546..SELEC
192e0 54 20 41 4c 4c 20 2b 20 32 33 20 2b 20 2b 20 4d  T ALL + 23 + + M
192f0 49 4e 28 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f  IN( + col2 ) FRO
19300 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
19310 2d 2d 2d 2d 0d 0a 38 32 0d 0a 0d 0a 73 6b 69 70  ----..82....skip
19320 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
19330 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
19340 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
19350 2d 35 34 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -546..SELECT ALL
19360 20 2b 20 32 33 20 2b 20 2b 20 4d 49 4e 20 28 20   + 23 + + MIN ( 
19370 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61  + col2 ) FROM ta
19380 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
19390 0d 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..82....query I 
193a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
193b0 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2b 20 2d  DISTINCT + ( + -
193c0 20 63 6f 6c 31 20 29 20 2a 20 63 6f 6c 30 20 41   col1 ) * col0 A
193d0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
193e0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
193f0 2d 31 32 31 35 0d 0a 2d 31 38 32 37 0d 0a 2d 39  -1215..-1827..-9
19400 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
19410 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
19420 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
19430 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
19440 6c 61 62 65 6c 2d 35 34 38 0d 0a 53 45 4c 45 43  label-548..SELEC
19450 54 20 2d 20 36 31 20 2b 20 2d 20 33 34 20 2d 20  T - 61 + - 34 - 
19460 2b 20 2d 20 63 6f 6c 32 20 44 49 56 20 63 6f 6c  + - col2 DIV col
19470 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
19480 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
19490 2d 0d 0a 2d 39 34 0d 0a 2d 39 35 0d 0a 2d 39 35  -..-94..-95..-95
194a0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
194b0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
194c0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
194d0 72 74 20 6c 61 62 65 6c 2d 35 34 38 0d 0a 53 45  rt label-548..SE
194e0 4c 45 43 54 20 2d 20 36 31 20 2b 20 2d 20 33 34  LECT - 61 + - 34
194f0 20 2d 20 2b 20 2d 20 63 6f 6c 32 20 2f 20 63 6f   - + - col2 / co
19500 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
19510 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
19520 2d 2d 0d 0a 2d 39 34 0d 0a 2d 39 35 0d 0a 2d 39  --..-94..-95..-9
19530 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  5....query III r
19540 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
19550 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
19560 20 4e 55 4c 4c 20 49 4e 20 28 20 28 20 2d 20 2d   NULL IN ( ( - -
19570 20 63 6f 6c 31 20 29 2c 20 63 6f 6c 30 2c 20 63   col1 ), col0, c
19580 6f 6c 31 20 2a 20 28 20 2d 20 63 6f 6c 30 20 29  ol1 * ( - col0 )
19590 20 2a 20 2d 20 63 6f 6c 31 2c 20 63 6f 6c 31 20   * - col1, col1 
195a0 2b 20 2b 20 63 6f 6c 30 2c 20 2b 20 33 36 20 29  + + col0, + 36 )
195b0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
195c0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
195d0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
195e0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
195f0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
19600 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
19610 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
19620 20 31 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   12 col1 FROM ta
19630 62 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b1 WHERE NOT NUL
19640 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  L IS NOT NULL..-
19650 2d 2d 2d 0d 0a 2d 31 32 0d 0a 2d 31 32 0d 0a 2d  ---..-12..-12..-
19660 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  12....query III 
19670 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
19680 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
19690 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  tab0 WHERE NOT -
196a0 20 36 31 20 2a 20 63 6f 6c 32 20 49 53 20 4e 4f   61 * col2 IS NO
196b0 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
196c0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
196d0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
196e0 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
196f0 6f 72 74 20 6c 61 62 65 6c 2d 35 35 32 0d 0a 53  ort label-552..S
19700 45 4c 45 43 54 20 41 4c 4c 20 2d 20 28 20 43 4f  ELECT ALL - ( CO
19710 55 4e 54 28 20 2a 20 29 20 29 20 63 6f 6c 32 2c  UNT( * ) ) col2,
19720 20 2d 20 39 20 46 52 4f 4d 20 74 61 62 31 0d 0a   - 9 FROM tab1..
19730 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 39 0d 0a 0d 0a  ----..-3..-9....
19740 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
19750 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
19760 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
19770 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
19780 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
19790 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
197a0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
197b0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
197c0 35 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  52..SELECT ALL -
197d0 20 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29   ( COUNT ( * ) )
197e0 20 63 6f 6c 32 2c 20 2d 20 39 20 46 52 4f 4d 20   col2, - 9 FROM 
197f0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  tab1..----..-3..
19800 2d 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  -9....query III 
19810 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
19820 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
19830 74 61 62 31 20 57 48 45 52 45 20 2d 20 31 32 20  tab1 WHERE - 12 
19840 2b 20 35 39 20 42 45 54 57 45 45 4e 20 2d 20 2d  + 59 BETWEEN - -
19850 20 63 6f 6c 30 20 41 4e 44 20 4e 55 4c 4c 0d 0a   col0 AND NULL..
19860 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
19870 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
19880 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
19890 45 52 45 20 2b 20 38 36 20 49 53 20 4e 4f 54 20  ERE + 86 IS NOT 
198a0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  NULL..----..9 va
198b0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
198c0 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
198d0 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
198e0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
198f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
19900 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57  FROM tab1 cor0 W
19910 48 45 52 45 20 34 31 20 3e 3d 20 31 35 20 2b 20  HERE 41 >= 15 + 
19920 2d 20 63 6f 6c 32 20 2d 20 2d 20 63 6f 6c 32 20  - col2 - - col2 
19930 2a 20 2b 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  * + - col0..----
19940 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
19950 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62  ng to c6c0a4111b
19960 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34  36d04dbc811a11e4
19970 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20  d54cad....query 
19980 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
19990 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
199a0 30 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 41 53 20  0 * + + col1 AS 
199b0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57  col2 FROM tab2 W
199c0 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 3d 20  HERE NOT col1 = 
199d0 2b 20 2d 20 37 31 20 2d 20 2b 20 63 6f 6c 30 0d  + - 71 - + col0.
199e0 0a 2d 2d 2d 2d 0d 0a 32 33 34 36 0d 0a 34 39 32  .----..2346..492
199f0 38 0d 0a 35 30 32 35 0d 0a 0d 0a 6f 6e 6c 79 69  8..5025....onlyi
19a00 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
19a10 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
19a20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19a30 62 65 6c 2d 35 35 37 0d 0a 53 45 4c 45 43 54 20  bel-557..SELECT 
19a40 2b 20 4d 41 58 28 20 2b 20 63 6f 6c 30 20 29 20  + MAX( + col0 ) 
19a50 2a 20 2d 20 4d 41 58 28 20 2b 20 63 6f 6c 32 20  * - MAX( + col2 
19a60 29 20 2b 20 2b 20 4d 49 4e 28 20 44 49 53 54 49  ) + + MIN( DISTI
19a70 4e 43 54 20 2b 20 32 31 20 29 20 41 53 20 63 6f  NCT + 21 ) AS co
19a80 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
19a90 2d 2d 0d 0a 2d 39 35 38 32 0d 0a 0d 0a 73 6b 69  --..-9582....ski
19aa0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
19ab0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
19ac0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
19ad0 6c 2d 35 35 37 0d 0a 53 45 4c 45 43 54 20 2b 20  l-557..SELECT + 
19ae0 4d 41 58 20 28 20 2b 20 63 6f 6c 30 20 29 20 2a  MAX ( + col0 ) *
19af0 20 2d 20 4d 41 58 20 28 20 2b 20 63 6f 6c 32 20   - MAX ( + col2 
19b00 29 20 2b 20 2b 20 4d 49 4e 20 28 20 44 49 53 54  ) + + MIN ( DIST
19b10 49 4e 43 54 20 2b 20 32 31 20 29 20 41 53 20 63  INCT + 21 ) AS c
19b20 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
19b30 2d 2d 2d 0d 0a 2d 39 35 38 32 0d 0a 0d 0a 73 6b  ---..-9582....sk
19b40 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
19b50 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
19b60 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
19b70 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
19b80 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
19b90 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32  owsort..SELECT 2
19ba0 30 20 2b 20 63 6f 6c 31 20 63 6f 6c 30 20 46 52  0 + col1 col0 FR
19bb0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
19bc0 30 31 0d 0a 32 31 0d 0a 34 31 0d 0a 0d 0a 71 75  01..21..41....qu
19bd0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
19be0 45 4c 45 43 54 20 2b 20 2d 20 63 6f 6c 32 20 2a  ELECT + - col2 *
19bf0 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 30 20 2b   col2 + - col0 +
19c00 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20   + col2 AS col1 
19c10 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
19c20 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 37 0d 0a 2d  0..----..-177..-
19c30 32 31 37 37 0d 0a 2d 39 37 39 39 0d 0a 0d 0a 6f  2177..-9799....o
19c40 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
19c50 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
19c60 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
19c70 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
19c80 35 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  560..SELECT - + 
19c90 35 39 20 44 49 56 20 63 6f 6c 30 20 2b 20 2d 20  59 DIV col0 + - 
19ca0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63  col1 FROM tab2 c
19cb0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 32 0d 0a  or0..----..-52..
19cc0 2d 36 37 0d 0a 2d 37 37 0d 0a 0d 0a 73 6b 69 70  -67..-77....skip
19cd0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
19ce0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
19cf0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
19d00 2d 35 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  -560..SELECT - +
19d10 20 35 39 20 2f 20 63 6f 6c 30 20 2b 20 2d 20 63   59 / col0 + - c
19d20 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol1 FROM tab2 co
19d30 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 32 0d 0a 2d  r0..----..-52..-
19d40 36 37 0d 0a 2d 37 37 0d 0a 0d 0a 6f 6e 6c 79 69  67..-77....onlyi
19d50 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
19d60 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
19d70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19d80 62 65 6c 2d 35 36 31 0d 0a 53 45 4c 45 43 54 20  bel-561..SELECT 
19d90 41 4c 4c 20 2b 20 4d 41 58 28 20 41 4c 4c 20 2d  ALL + MAX( ALL -
19da0 20 33 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52   31 ) AS col1 FR
19db0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
19dc0 0a 2d 2d 2d 2d 0d 0a 2d 33 31 0d 0a 0d 0a 73 6b  .----..-31....sk
19dd0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
19de0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
19df0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
19e00 65 6c 2d 35 36 31 0d 0a 53 45 4c 45 43 54 20 41  el-561..SELECT A
19e10 4c 4c 20 2b 20 4d 41 58 20 28 20 41 4c 4c 20 2d  LL + MAX ( ALL -
19e20 20 33 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52   31 ) AS col1 FR
19e30 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
19e40 0a 2d 2d 2d 2d 0d 0a 2d 33 31 0d 0a 0d 0a 71 75  .----..-31....qu
19e50 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
19e60 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
19e70 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
19e80 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
19e90 20 2b 20 2d 20 63 6f 6c 32 20 29 20 49 53 20 4e   + - col2 ) IS N
19ea0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
19eb0 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
19ec0 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62  6c0a4111b36d04db
19ed0 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d  c811a11e4d54cad.
19ee0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
19ef0 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20  rt..SELECT col0 
19f00 2b 20 63 6f 6c 30 20 2b 20 2d 20 34 37 20 41 53  + col0 + - 47 AS
19f10 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
19f20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
19f30 31 37 0d 0a 31 32 37 0d 0a 31 34 37 0d 0a 0d 0a  17..127..147....
19f40 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
19f50 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 36 37 2c  ..SELECT - - 67,
19f60 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
19f70 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
19f80 0a 36 37 0d 0a 35 39 0d 0a 36 37 0d 0a 36 38 0d  .67..59..67..68.
19f90 0a 36 37 0d 0a 39 36 0d 0a 0d 0a 71 75 65 72 79  .67..96....query
19fa0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
19fb0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20  CT DISTINCT + + 
19fc0 28 20 2d 20 28 20 2d 20 32 32 20 29 20 29 20 41  ( - ( - 22 ) ) A
19fd0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
19fe0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
19ff0 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  22....query III 
1a000 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1a010 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
1a020 74 61 62 30 20 57 48 45 52 45 20 2d 20 39 39 20  tab0 WHERE - 99 
1a030 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
1a040 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
1a050 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35 64  ing to c4b42765d
1a060 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35 33  ff94eaaa46040e53
1a070 37 66 62 34 33 62 37 0d 0a 0d 0a 73 6b 69 70 69  7fb43b7....skipi
1a080 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
1a090 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
1a0a0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
1a0b0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
1a0c0 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ns..query II row
1a0d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
1a0e0 31 20 63 6f 6c 32 2c 20 37 31 20 46 52 4f 4d 20  1 col2, 71 FROM 
1a0f0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 37  tab0..----..1..7
1a100 31 0d 0a 32 31 0d 0a 37 31 0d 0a 38 31 0d 0a 37  1..21..71..81..7
1a110 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
1a120 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
1a130 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1a140 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1a150 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1a160 74 20 6c 61 62 65 6c 2d 35 36 38 0d 0a 53 45 4c  t label-568..SEL
1a170 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2d 20 43  ECT - COUNT( - C
1a180 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
1a190 4e 45 44 20 29 20 29 20 41 53 20 63 6f 6c 32 20  NED ) ) AS col2 
1a1a0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
1a1b0 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
1a1c0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1a1d0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1a1e0 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 38 0d 0a  sort label-568..
1a1f0 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28  SELECT - COUNT (
1a200 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
1a210 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 41 53  S INTEGER ) ) AS
1a220 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
1a230 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79  .----..0....only
1a240 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
1a250 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
1a260 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
1a270 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 39  owsort label-569
1a280 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1a290 54 20 2d 20 33 39 20 2a 20 2d 20 63 6f 6c 31 20  T - 39 * - col1 
1a2a0 2a 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  * + CAST( NULL A
1a2b0 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
1a2c0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab2..----..NULL
1a2d0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1a2e0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1a2f0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1a300 72 74 20 6c 61 62 65 6c 2d 35 36 39 0d 0a 53 45  rt label-569..SE
1a310 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
1a320 33 39 20 2a 20 2d 20 63 6f 6c 31 20 2a 20 2b 20  39 * - col1 * + 
1a330 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
1a340 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61  NTEGER ) FROM ta
1a350 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b2..----..NULL..
1a360 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
1a370 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1a380 4e 43 54 20 2d 20 34 37 2c 20 2d 20 63 6f 6c 30  NCT - 47, - col0
1a390 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20   * col0 AS col1 
1a3a0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
1a3b0 0a 2d 34 37 0d 0a 2d 32 36 30 31 0d 0a 2d 34 37  .-47..-2601..-47
1a3c0 0d 0a 2d 37 32 32 35 0d 0a 2d 34 37 0d 0a 2d 38  ..-7225..-47..-8
1a3d0 32 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  281....query I r
1a3e0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
1a3f0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol2 FROM tab2 co
1a400 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 37  r0 WHERE NOT + 7
1a410 31 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  1 IS NOT NULL..-
1a420 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ---....skipif po
1a430 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
1a440 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
1a450 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
1a460 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
1a470 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1a480 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1a490 20 32 39 20 2a 20 2b 20 63 6f 6c 31 20 63 6f 6c   29 * + col1 col
1a4a0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
1a4b0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
1a4c0 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
1a4d0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
1a4e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
1a4f0 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57  FROM tab1 cor0 W
1a500 48 45 52 45 20 4e 4f 54 20 35 33 20 3e 3d 20 2d  HERE NOT 53 >= -
1a510 20 38 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65   82..----....que
1a520 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1a530 4c 45 43 54 20 63 6f 6c 32 20 2b 20 2d 20 63 6f  LECT col2 + - co
1a540 6c 32 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 2a 20  l2 * - - col0 * 
1a550 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  - col2 FROM tab0
1a560 0d 0a 2d 2d 2d 2d 0d 0a 33 33 31 38 32 0d 0a 38  ..----..33182..8
1a570 37 31 30 0d 0a 39 35 30 37 39 36 0d 0a 0d 0a 71  710..950796....q
1a580 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1a590 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20  SELECT ALL col0 
1a5a0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
1a5b0 30 20 57 48 45 52 45 20 28 20 39 37 20 29 20 49  0 WHERE ( 97 ) I
1a5c0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
1a5d0 0d 0a 31 35 0d 0a 38 37 0d 0a 39 37 0d 0a 0d 0a  ..15..87..97....
1a5e0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
1a5f0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1a600 54 20 2d 20 63 6f 6c 30 20 2b 20 37 35 20 41 53  T - col0 + 75 AS
1a610 20 63 6f 6c 31 2c 20 2b 20 63 6f 6c 32 20 46 52   col1, + col2 FR
1a620 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
1a630 2d 2d 0d 0a 30 0d 0a 35 38 0d 0a 31 31 0d 0a 34  --..0..58..11..4
1a640 30 0d 0a 32 39 0d 0a 32 33 0d 0a 0d 0a 71 75 65  0..29..23....que
1a650 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1a660 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1a670 38 36 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  86 AS col1 FROM 
1a680 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
1a690 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20 2a 20  RE NOT - col0 * 
1a6a0 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col2 IS NOT NULL
1a6b0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
1a6c0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1a6d0 54 20 41 4c 4c 20 34 35 20 2b 20 2d 20 63 6f 6c  T ALL 45 + - col
1a6e0 32 20 2b 20 63 6f 6c 30 20 2a 20 32 38 20 46 52  2 + col0 * 28 FR
1a6f0 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
1a700 2d 2d 0d 0a 32 34 37 31 0d 0a 32 36 36 32 0d 0a  --..2471..2662..
1a710 34 31 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  418....skipif po
1a720 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
1a730 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
1a740 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
1a750 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
1a760 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1a770 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1a780 20 2d 20 31 36 20 2b 20 2b 20 34 20 2a 20 2b 20   - 16 + + 4 * + 
1a790 2d 20 31 36 20 2a 20 63 6f 6c 30 20 2a 20 2d 20  - 16 * col0 * - 
1a7a0 2d 20 33 39 20 63 6f 6c 32 20 46 52 4f 4d 20 74  - 39 col2 FROM t
1a7b0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
1a7c0 2d 0d 0a 2d 31 32 37 33 31 32 0d 0a 2d 32 31 32  -..-127312..-212
1a7d0 31 37 36 0d 0a 2d 32 32 37 31 35 32 0d 0a 0d 0a  176..-227152....
1a7e0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1a7f0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
1a800 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
1a810 30 20 57 48 45 52 45 20 32 38 20 2f 20 2d 20 39  0 WHERE 28 / - 9
1a820 36 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  6 IS NOT NULL..-
1a830 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
1a840 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31  shing to c6c0a41
1a850 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31  11b36d04dbc811a1
1a860 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c  1e4d54cad....onl
1a870 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1a880 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1a890 74 79 70 65 3a 20 44 45 43 49 4d 41 4c 20 74 79  type: DECIMAL ty
1a8a0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
1a8b0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38 31 0d  wsort label-581.
1a8c0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1a8d0 20 2d 20 43 41 53 54 28 20 2b 20 2d 20 63 6f 6c   - CAST( + - col
1a8e0 31 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2b  1 AS DECIMAL ) +
1a8f0 20 2b 20 2b 20 39 20 2b 20 2d 20 2b 20 35 37 20   + + 9 + - + 57 
1a900 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
1a910 53 49 47 4e 45 44 20 29 20 2a 20 2d 20 2d 20 63  SIGNED ) * - - c
1a920 6f 6c 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ol0 col2 FROM ta
1a930 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
1a940 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
1a950 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1a960 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
1a970 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
1a980 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
1a990 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
1a9a0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
1a9b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1a9c0 74 20 6c 61 62 65 6c 2d 35 38 31 0d 0a 53 45 4c  t label-581..SEL
1a9d0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
1a9e0 41 53 54 20 28 20 2b 20 2d 20 63 6f 6c 31 20 41  AST ( + - col1 A
1a9f0 53 20 52 45 41 4c 20 29 20 2b 20 2b 20 2b 20 39  S REAL ) + + + 9
1aa00 20 2b 20 2d 20 2b 20 35 37 20 2b 20 43 41 53 54   + - + 57 + CAST
1aa10 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
1aa20 45 52 20 29 20 2a 20 2d 20 2d 20 63 6f 6c 30 20  ER ) * - - col0 
1aa30 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
1aa40 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
1aa50 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  LL....query I ro
1aa60 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
1aa70 2b 20 31 33 20 2a 20 2d 20 2d 20 37 39 20 2a 20  + 13 * - - 79 * 
1aa80 36 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  60 FROM tab1 AS 
1aa90 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
1aaa0 4e 4f 54 20 42 45 54 57 45 45 4e 20 63 6f 6c 31  NOT BETWEEN col1
1aab0 20 41 4e 44 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d   AND col0..----.
1aac0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1aad0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
1aae0 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  ax: DIV for inte
1aaf0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
1ab00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1ab10 6c 61 62 65 6c 2d 35 38 33 0d 0a 53 45 4c 45 43  label-583..SELEC
1ab20 54 20 41 4c 4c 20 2d 20 38 36 20 44 49 56 20 2d  T ALL - 86 DIV -
1ab30 20 4d 41 58 28 20 41 4c 4c 20 28 20 2b 20 63 6f   MAX( ALL ( + co
1ab40 6c 31 20 29 20 29 20 2b 20 2d 20 43 4f 55 4e 54  l1 ) ) + - COUNT
1ab50 28 20 32 32 20 29 20 46 52 4f 4d 20 74 61 62 30  ( 22 ) FROM tab0
1ab60 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d   cor0..----..-2.
1ab70 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1ab80 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1ab90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1aba0 74 20 6c 61 62 65 6c 2d 35 38 33 0d 0a 53 45 4c  t label-583..SEL
1abb0 45 43 54 20 41 4c 4c 20 2d 20 38 36 20 2f 20 2d  ECT ALL - 86 / -
1abc0 20 4d 41 58 20 28 20 41 4c 4c 20 28 20 2b 20 63   MAX ( ALL ( + c
1abd0 6f 6c 31 20 29 20 29 20 2b 20 2d 20 43 4f 55 4e  ol1 ) ) + - COUN
1abe0 54 20 28 20 32 32 20 29 20 46 52 4f 4d 20 74 61  T ( 22 ) FROM ta
1abf0 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0 cor0..----..-
1ac00 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  2....query I row
1ac10 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1ac20 20 63 6f 6c 31 20 2b 20 2d 20 31 34 20 2a 20 63   col1 + - 14 * c
1ac30 6f 6c 31 20 2a 20 2d 20 28 20 2b 20 2d 20 63 6f  ol1 * - ( + - co
1ac40 6c 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l1 ) AS col0 FRO
1ac50 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
1ac60 33 0d 0a 2d 36 31 35 33 0d 0a 2d 39 31 37 37 33  3..-6153..-91773
1ac70 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1ac80 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
1ac90 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
1aca0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1acb0 20 6c 61 62 65 6c 2d 35 38 35 0d 0a 53 45 4c 45   label-585..SELE
1acc0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
1acd0 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45  HERE NULL NOT BE
1ace0 54 57 45 45 4e 20 43 41 53 54 28 20 2b 20 35 20  TWEEN CAST( + 5 
1acf0 41 53 20 53 49 47 4e 45 44 20 29 20 41 4e 44 20  AS SIGNED ) AND 
1ad00 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
1ad10 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1ad20 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1ad30 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
1ad40 61 62 65 6c 2d 35 38 35 0d 0a 53 45 4c 45 43 54  abel-585..SELECT
1ad50 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
1ad60 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57  RE NULL NOT BETW
1ad70 45 45 4e 20 43 41 53 54 20 28 20 2b 20 35 20 41  EEN CAST ( + 5 A
1ad80 53 20 49 4e 54 45 47 45 52 20 29 20 41 4e 44 20  S INTEGER ) AND 
1ad90 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
1ada0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
1adb0 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
1adc0 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
1add0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1ade0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1adf0 2d 35 38 36 0d 0a 53 45 4c 45 43 54 20 28 20 43  -586..SELECT ( C
1ae00 4f 55 4e 54 28 20 2a 20 29 20 29 20 2a 20 2d 20  OUNT( * ) ) * - 
1ae10 43 41 53 54 28 20 43 4f 55 4e 54 28 20 2a 20 29  CAST( COUNT( * )
1ae20 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
1ae30 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col1 FROM tab0..
1ae40 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70  ----..-9....skip
1ae50 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1ae60 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1ae70 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1ae80 2d 35 38 36 0d 0a 53 45 4c 45 43 54 20 28 20 43  -586..SELECT ( C
1ae90 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 2a 20 2d  OUNT ( * ) ) * -
1aea0 20 43 41 53 54 20 28 20 43 4f 55 4e 54 20 28 20   CAST ( COUNT ( 
1aeb0 2a 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29  * ) AS INTEGER )
1aec0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1aed0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a  b0..----..-9....
1aee0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1aef0 0a 53 45 4c 45 43 54 20 39 35 20 41 53 20 63 6f  .SELECT 95 AS co
1af00 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  l0 FROM tab2 WHE
1af10 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d  RE NULL IS NULL.
1af20 0a 2d 2d 2d 2d 0d 0a 39 35 0d 0a 39 35 0d 0a 39  .----..95..95..9
1af30 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
1af40 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
1af50 6f 6c 30 20 2d 20 2b 20 39 34 20 2b 20 2b 20 63  ol0 - + 94 + + c
1af60 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol0 AS col1 FROM
1af70 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d   tab1..----..76.
1af80 0a 38 0d 0a 38 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  .8..88....onlyif
1af90 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
1afa0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
1afb0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1afc0 65 6c 2d 35 38 39 0d 0a 53 45 4c 45 43 54 20 41  el-589..SELECT A
1afd0 4c 4c 20 2d 20 4d 41 58 28 20 41 4c 4c 20 2b 20  LL - MAX( ALL + 
1afe0 34 36 20 29 20 2a 20 2b 20 4d 49 4e 28 20 2d 20  46 ) * + MIN( - 
1aff0 2d 20 33 34 20 29 20 41 53 20 63 6f 6c 31 20 46  - 34 ) AS col1 F
1b000 52 4f 4d 20 74 61 62 30 2c 20 74 61 62 31 20 41  ROM tab0, tab1 A
1b010 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
1b020 35 36 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  564....skipif my
1b030 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1b040 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1b050 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38 39 0d  wsort label-589.
1b060 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 4d 41  .SELECT ALL - MA
1b070 58 20 28 20 41 4c 4c 20 2b 20 34 36 20 29 20 2a  X ( ALL + 46 ) *
1b080 20 2b 20 4d 49 4e 20 28 20 2d 20 2d 20 33 34 20   + MIN ( - - 34 
1b090 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
1b0a0 61 62 30 2c 20 74 61 62 31 20 41 53 20 63 6f 72  ab0, tab1 AS cor
1b0b0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 36 34 0d 0a  0..----..-1564..
1b0c0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1b0d0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
1b0e0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
1b0f0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1b100 65 6c 2d 35 39 30 0d 0a 53 45 4c 45 43 54 20 2b  el-590..SELECT +
1b110 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 43 41 53 54   col2 + + - CAST
1b120 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
1b130 20 29 20 2b 20 2d 20 2d 20 43 41 53 54 28 20 4e   ) + - - CAST( N
1b140 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
1b150 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1b160 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
1b170 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
1b180 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
1b190 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1b1a0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1b1b0 6f 72 74 20 6c 61 62 65 6c 2d 35 39 30 0d 0a 53  ort label-590..S
1b1c0 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2b 20 2b  ELECT + col2 + +
1b1d0 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
1b1e0 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d 20  S INTEGER ) + - 
1b1f0 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
1b200 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
1b210 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
1b220 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
1b230 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
1b240 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1b250 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2b  .SELECT - col0 +
1b260 20 2d 20 2d 20 36 30 20 46 52 4f 4d 20 74 61 62   - - 60 FROM tab
1b270 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
1b280 0a 2d 32 35 0d 0a 2d 33 31 0d 0a 39 0d 0a 0d 0a  .-25..-31..9....
1b290 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1b2a0 0a 53 45 4c 45 43 54 20 2b 20 28 20 63 6f 6c 30  .SELECT + ( col0
1b2b0 20 29 20 2b 20 35 31 20 2a 20 63 6f 6c 30 20 46   ) + 51 * col0 F
1b2c0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1b2d0 0d 0a 2d 2d 2d 2d 0d 0a 32 33 39 32 0d 0a 33 33  ..----..2392..33
1b2e0 32 38 0d 0a 33 39 30 30 0d 0a 0d 0a 71 75 65 72  28..3900....quer
1b2f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1b300 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 36  ECT DISTINCT + 6
1b310 35 20 2f 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  5 / col0 FROM ta
1b320 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e  b1 WHERE NOT ( N
1b330 55 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d  ULL ) IS NULL..-
1b340 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
1b350 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1b360 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
1b370 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
1b380 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1b390 6f 72 74 20 6c 61 62 65 6c 2d 35 39 34 0d 0a 53  ort label-594..S
1b3a0 45 4c 45 43 54 20 32 31 20 44 49 56 20 2d 20 43  ELECT 21 DIV - C
1b3b0 4f 55 4e 54 28 20 2a 20 29 20 2b 20 38 32 20 41  OUNT( * ) + 82 A
1b3c0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
1b3d0 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 33 33 20   WHERE NOT + 33 
1b3e0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 37  IS NULL..----..7
1b3f0 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
1b400 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1b410 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1b420 6f 72 74 20 6c 61 62 65 6c 2d 35 39 34 0d 0a 53  ort label-594..S
1b430 45 4c 45 43 54 20 32 31 20 2f 20 2d 20 43 4f 55  ELECT 21 / - COU
1b440 4e 54 20 28 20 2a 20 29 20 2b 20 38 32 20 41 53  NT ( * ) + 82 AS
1b450 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
1b460 57 48 45 52 45 20 4e 4f 54 20 2b 20 33 33 20 49  WHERE NOT + 33 I
1b470 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 37 35  S NULL..----..75
1b480 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1b490 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
1b4a0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1b4b0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 44  : SIGNED type: D
1b4c0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
1b4d0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
1b4e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1b4f0 2d 35 39 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -595..SELECT ALL
1b500 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56 20   COUNT( * ) DIV 
1b510 43 41 53 54 28 20 2b 20 32 33 20 41 53 20 53 49  CAST( + 23 AS SI
1b520 47 4e 45 44 20 29 20 63 6f 6c 30 20 46 52 4f 4d  GNED ) col0 FROM
1b530 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   tab0..----..0..
1b540 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1b550 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1b560 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
1b570 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
1b580 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
1b590 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
1b5a0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
1b5b0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1b5c0 35 39 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  595..SELECT ALL 
1b5d0 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20 43 41  COUNT ( * ) / CA
1b5e0 53 54 20 28 20 2b 20 32 33 20 41 53 20 49 4e 54  ST ( + 23 AS INT
1b5f0 45 47 45 52 20 29 20 63 6f 6c 30 20 46 52 4f 4d  EGER ) col0 FROM
1b600 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   tab0..----..0..
1b610 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1b620 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1b630 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1b640 73 6f 72 74 20 6c 61 62 65 6c 2d 35 39 36 0d 0a  sort label-596..
1b650 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1b660 4d 41 58 28 20 63 6f 6c 32 20 29 20 2a 20 34 34  MAX( col2 ) * 44
1b670 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1b680 62 31 0d 0a 2d 2d 2d 2d 0d 0a 34 32 32 34 0d 0a  b1..----..4224..
1b690 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1b6a0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1b6b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1b6c0 20 6c 61 62 65 6c 2d 35 39 36 0d 0a 53 45 4c 45   label-596..SELE
1b6d0 43 54 20 44 49 53 54 49 4e 43 54 20 4d 41 58 20  CT DISTINCT MAX 
1b6e0 28 20 63 6f 6c 32 20 29 20 2a 20 34 34 20 41 53  ( col2 ) * 44 AS
1b6f0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
1b700 0a 2d 2d 2d 2d 0d 0a 34 32 32 34 0d 0a 0d 0a 6f  .----..4224....o
1b710 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
1b720 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
1b730 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
1b740 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1b750 35 39 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  597..SELECT DIST
1b760 49 4e 43 54 20 63 6f 6c 32 20 44 49 56 20 2b 20  INCT col2 DIV + 
1b770 37 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  7 FROM tab0..---
1b780 2d 0d 0a 31 0d 0a 31 34 0d 0a 36 0d 0a 0d 0a 73  -..1..14..6....s
1b790 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1b7a0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1b7b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1b7c0 62 65 6c 2d 35 39 37 0d 0a 53 45 4c 45 43 54 20  bel-597..SELECT 
1b7d0 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2f 20  DISTINCT col2 / 
1b7e0 2b 20 37 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  + 7 FROM tab0..-
1b7f0 2d 2d 2d 0d 0a 31 0d 0a 31 34 0d 0a 36 0d 0a 0d  ---..1..14..6...
1b800 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1b810 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1b820 54 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  T col0 FROM tab2
1b830 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
1b840 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44  BETWEEN NULL AND
1b850 20 28 20 2d 20 28 20 2b 20 28 20 63 6f 6c 30 20   ( - ( + ( col0 
1b860 29 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ) ) )..----....o
1b870 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1b880 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1b890 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1b8a0 74 20 6c 61 62 65 6c 2d 35 39 39 0d 0a 53 45 4c  t label-599..SEL
1b8b0 45 43 54 20 2d 20 53 55 4d 28 20 2b 20 36 36 20  ECT - SUM( + 66 
1b8c0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
1b8d0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 38 0d  ab1..----..-198.
1b8e0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1b8f0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1b900 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1b910 74 20 6c 61 62 65 6c 2d 35 39 39 0d 0a 53 45 4c  t label-599..SEL
1b920 45 43 54 20 2d 20 53 55 4d 20 28 20 2b 20 36 36  ECT - SUM ( + 66
1b930 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
1b940 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 38  tab1..----..-198
1b950 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1b960 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
1b970 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
1b980 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1b990 61 62 65 6c 2d 36 30 30 0d 0a 53 45 4c 45 43 54  abel-600..SELECT
1b9a0 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32   DISTINCT - col2
1b9b0 20 44 49 56 20 2b 20 28 20 2d 20 63 6f 6c 31 20   DIV + ( - col1 
1b9c0 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
1b9d0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ab2..----..0....
1b9e0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1b9f0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1ba00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1ba10 61 62 65 6c 2d 36 30 30 0d 0a 53 45 4c 45 43 54  abel-600..SELECT
1ba20 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32   DISTINCT - col2
1ba30 20 2f 20 2b 20 28 20 2d 20 63 6f 6c 31 20 29 20   / + ( - col1 ) 
1ba40 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1ba50 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  2..----..0....qu
1ba60 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1ba70 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
1ba80 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
1ba90 54 20 28 20 37 35 20 2b 20 2d 20 63 6f 6c 31 20  T ( 75 + - col1 
1baa0 29 20 49 4e 20 28 20 2d 20 63 6f 6c 30 20 29 0d  ) IN ( - col0 ).
1bab0 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
1bac0 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61  hashing to c6c0a
1bad0 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31  4111b36d04dbc811
1bae0 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71  a11e4d54cad....q
1baf0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1bb00 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
1bb10 74 61 62 30 20 57 48 45 52 45 20 2d 20 63 6f 6c  tab0 WHERE - col
1bb20 32 20 2a 20 31 32 20 49 53 20 4e 4f 54 20 4e 55  2 * 12 IS NOT NU
1bb30 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
1bb40 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
1bb50 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
1bb60 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
1bb70 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1bb80 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
1bb90 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1bba0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
1bbb0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1bbc0 61 62 65 6c 2d 36 30 33 0d 0a 53 45 4c 45 43 54  abel-603..SELECT
1bbd0 20 44 49 53 54 49 4e 43 54 20 2d 20 4d 49 4e 28   DISTINCT - MIN(
1bbe0 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 29 20 2b 20   ALL - col2 ) + 
1bbf0 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
1bc00 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30  SIGNED ) AS col0
1bc10 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1bc20 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
1bc30 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1bc40 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1bc50 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1bc60 30 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  03..SELECT DISTI
1bc70 4e 43 54 20 2d 20 4d 49 4e 20 28 20 41 4c 4c 20  NCT - MIN ( ALL 
1bc80 2d 20 63 6f 6c 32 20 29 20 2b 20 2b 20 43 41 53  - col2 ) + + CAS
1bc90 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
1bca0 47 45 52 20 29 20 41 53 20 63 6f 6c 30 20 46 52  GER ) AS col0 FR
1bcb0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
1bcc0 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ULL....query III
1bcd0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1bce0 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
1bcf0 52 45 20 28 20 63 6f 6c 32 20 29 20 4e 4f 54 20  RE ( col2 ) NOT 
1bd00 49 4e 20 28 20 2d 20 63 6f 6c 31 20 2b 20 63 6f  IN ( - col1 + co
1bd10 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  l2 )..----..9 va
1bd20 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
1bd30 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64  c6c0a4111b36d04d
1bd40 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64  bc811a11e4d54cad
1bd50 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
1bd60 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1bd70 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1bd80 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1bd90 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1bda0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1bdb0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
1bdc0 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l2 col1 FROM tab
1bdd0 32 20 57 48 45 52 45 20 63 6f 6c 30 20 42 45 54  2 WHERE col0 BET
1bde0 57 45 45 4e 20 28 20 63 6f 6c 32 20 29 20 41 4e  WEEN ( col2 ) AN
1bdf0 44 20 28 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d  D ( col2 )..----
1be00 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1be10 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1be20 49 4e 43 54 20 32 39 20 2a 20 2d 20 31 32 20 2b  INCT 29 * - 12 +
1be30 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 35 36 20 46   - col0 * - 56 F
1be40 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
1be50 32 35 30 38 0d 0a 34 34 31 32 0d 0a 34 37 34 38  2508..4412..4748
1be60 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1be70 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1be80 2b 20 39 31 20 2a 20 63 6f 6c 31 20 2b 20 38 35  + 91 * col1 + 85
1be90 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
1bea0 0d 0a 31 37 36 0d 0a 31 39 39 36 0d 0a 37 34 35  ..176..1996..745
1beb0 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
1bec0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
1bed0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
1bee0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1bef0 6c 61 62 65 6c 2d 36 30 38 0d 0a 53 45 4c 45 43  label-608..SELEC
1bf00 54 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c  T - col0 + - col
1bf10 30 20 44 49 56 20 33 30 20 41 53 20 63 6f 6c 31  0 DIV 30 AS col1
1bf20 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1bf30 0d 0a 2d 35 32 0d 0a 2d 38 37 0d 0a 2d 39 34 0d  ..-52..-87..-94.
1bf40 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1bf50 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1bf60 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1bf70 74 20 6c 61 62 65 6c 2d 36 30 38 0d 0a 53 45 4c  t label-608..SEL
1bf80 45 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 63  ECT - col0 + - c
1bf90 6f 6c 30 20 2f 20 33 30 20 41 53 20 63 6f 6c 31  ol0 / 30 AS col1
1bfa0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1bfb0 0d 0a 2d 35 32 0d 0a 2d 38 37 0d 0a 2d 39 34 0d  ..-52..-87..-94.
1bfc0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1bfd0 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20  rt..SELECT col1 
1bfe0 2a 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 32 20  * col0 + - col2 
1bff0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1c000 31 0d 0a 2d 2d 2d 2d 0d 0a 33 36 36 0d 0a 34 32  1..----..366..42
1c010 30 39 0d 0a 36 31 38 0d 0a 0d 0a 6f 6e 6c 79 69  09..618....onlyi
1c020 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
1c030 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
1c040 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1c050 62 65 6c 2d 36 31 30 0d 0a 53 45 4c 45 43 54 20  bel-610..SELECT 
1c060 41 4c 4c 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b  ALL COUNT( * ) +
1c070 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
1c080 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
1c090 2d 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 31 20  - col1 + - col1 
1c0a0 42 45 54 57 45 45 4e 20 63 6f 6c 31 20 2b 20 63  BETWEEN col1 + c
1c0b0 6f 6c 31 20 41 4e 44 20 2b 20 36 36 0d 0a 2d 2d  ol1 AND + 66..--
1c0c0 2d 2d 0d 0a 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..6....skipif 
1c0d0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1c0e0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1c0f0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31  rowsort label-61
1c100 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f  0..SELECT ALL CO
1c110 55 4e 54 20 28 20 2a 20 29 20 2b 20 43 4f 55 4e  UNT ( * ) + COUN
1c120 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  T ( * ) FROM tab
1c130 31 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f  1 WHERE NOT - co
1c140 6c 31 20 2b 20 2d 20 63 6f 6c 31 20 42 45 54 57  l1 + - col1 BETW
1c150 45 45 4e 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20  EEN col1 + col1 
1c160 41 4e 44 20 2b 20 36 36 0d 0a 2d 2d 2d 2d 0d 0a  AND + 66..----..
1c170 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
1c180 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
1c190 6f 6c 31 20 2a 20 2b 20 63 6f 6c 30 20 41 53 20  ol1 * + col0 AS 
1c1a0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57  col0 FROM tab0 W
1c1b0 48 45 52 45 20 4e 4f 54 20 28 20 33 39 20 2a 20  HERE NOT ( 39 * 
1c1c0 63 6f 6c 30 20 29 20 3e 20 63 6f 6c 30 0d 0a 2d  col0 ) > col0..-
1c1d0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
1c1e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1c1f0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
1c200 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
1c210 2b 20 63 6f 6c 31 20 2f 20 2d 20 63 6f 6c 31 20  + col1 / - col1 
1c220 49 4e 20 28 20 63 6f 6c 32 20 2a 20 37 39 20 2b  IN ( col2 * 79 +
1c230 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d   + col0 )..----.
1c240 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
1c250 67 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66  g to c4b42765dff
1c260 39 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66  94eaaa46040e537f
1c270 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49  b43b7....query I
1c280 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1c290 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31   DISTINCT + col1
1c2a0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1c2b0 62 32 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  b2 WHERE NOT col
1c2c0 32 20 2a 20 2d 20 35 38 20 4e 4f 54 20 49 4e 20  2 * - 58 NOT IN 
1c2d0 28 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d  ( + col0 )..----
1c2e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1c2f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  ort..SELECT col0
1c300 20 2a 20 39 33 20 41 53 20 63 6f 6c 30 20 46 52   * 93 AS col0 FR
1c310 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
1c320 0a 2d 2d 2d 2d 0d 0a 31 33 39 35 0d 0a 38 30 39  .----..1395..809
1c330 31 0d 0a 39 30 32 31 0d 0a 0d 0a 71 75 65 72 79  1..9021....query
1c340 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1c350 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
1c360 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
1c370 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
1c380 4e 4f 54 20 49 4e 20 28 20 63 6f 6c 32 20 29 0d  NOT IN ( col2 ).
1c390 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
1c3a0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
1c3b0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
1c3c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1c3d0 6c 2d 36 31 36 0d 0a 53 45 4c 45 43 54 20 44 49  l-616..SELECT DI
1c3e0 53 54 49 4e 43 54 20 31 36 20 2a 20 2d 20 43 4f  STINCT 16 * - CO
1c3f0 55 4e 54 28 20 2a 20 29 20 63 6f 6c 32 20 46 52  UNT( * ) col2 FR
1c400 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1c410 0a 2d 2d 2d 2d 0d 0a 2d 34 38 0d 0a 0d 0a 73 6b  .----..-48....sk
1c420 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1c430 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
1c440 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
1c450 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
1c460 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
1c470 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
1c480 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
1c490 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 36 0d  wsort label-616.
1c4a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1c4b0 20 31 36 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20   16 * - COUNT ( 
1c4c0 2a 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * ) col2 FROM ta
1c4d0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
1c4e0 0d 0a 2d 34 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-48....onlyif 
1c4f0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
1c500 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
1c510 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1c520 6c 2d 36 31 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-617..SELECT DI
1c530 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20  STINCT - COUNT( 
1c540 2a 20 29 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29  * ) * COUNT( * )
1c550 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
1c560 57 48 45 52 45 20 4e 4f 54 20 33 34 20 42 45 54  WHERE NOT 34 BET
1c570 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 36 34  WEEN NULL AND 64
1c580 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
1c590 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1c5a0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1c5b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1c5c0 6c 2d 36 31 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-617..SELECT DI
1c5d0 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28  STINCT - COUNT (
1c5e0 20 2a 20 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a   * ) * COUNT ( *
1c5f0 20 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72   ) FROM tab0 cor
1c600 30 20 57 48 45 52 45 20 4e 4f 54 20 33 34 20 42  0 WHERE NOT 34 B
1c610 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
1c620 36 34 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f  64..----..0....o
1c630 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1c640 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1c650 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1c660 74 20 6c 61 62 65 6c 2d 36 31 38 0d 0a 53 45 4c  t label-618..SEL
1c670 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a  ECT ALL COUNT( *
1c680 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
1c690 74 61 62 31 20 63 6f 72 30 20 43 52 4f 53 53 20  tab1 cor0 CROSS 
1c6a0 4a 4f 49 4e 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  JOIN tab1..----.
1c6b0 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .9....skipif mys
1c6c0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1c6d0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1c6e0 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 38 0d 0a  sort label-618..
1c6f0 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54  SELECT ALL COUNT
1c700 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46   ( * ) AS col1 F
1c710 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 43 52  ROM tab1 cor0 CR
1c720 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 0d 0a 2d  OSS JOIN tab1..-
1c730 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79 20  ---..9....query 
1c740 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1c750 54 20 63 6f 6c 31 20 2a 20 28 20 32 36 20 2a 20  T col1 * ( 26 * 
1c760 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  + col1 ) FROM ta
1c770 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36 37 31 34  b2..----..116714
1c780 0d 0a 31 35 34 31 35 34 0d 0a 36 37 36 32 36 0d  ..154154..67626.
1c790 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
1c7a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1c7b0 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
1c7c0 63 6f 72 30 20 57 48 45 52 45 20 38 37 20 2a 20  cor0 WHERE 87 * 
1c7d0 34 34 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  44 >= NULL..----
1c7e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1c7f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1c800 2b 20 2b 20 28 20 36 31 20 29 20 2b 20 63 6f 6c  + + ( 61 ) + col
1c810 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  1 AS col1 FROM t
1c820 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
1c830 2d 0d 0a 31 31 32 0d 0a 31 32 38 0d 0a 31 33 38  -..112..128..138
1c840 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1c850 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
1c860 53 49 47 4e 45 44 20 74 79 70 65 3a 20 44 49 56  SIGNED type: DIV
1c870 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
1c880 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
1c890 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1c8a0 32 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  22..SELECT DISTI
1c8b0 4e 43 54 20 2d 20 43 41 53 54 28 20 2d 20 39 35  NCT - CAST( - 95
1c8c0 20 41 53 20 53 49 47 4e 45 44 20 29 20 44 49 56   AS SIGNED ) DIV
1c8d0 20 28 20 2d 20 28 20 2d 20 63 6f 6c 31 20 29 20   ( - ( - col1 ) 
1c8e0 29 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  ) + - col2 AS co
1c8f0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
1c900 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30 0d  cor0..----..-40.
1c910 0a 2d 36 36 0d 0a 2d 39 30 0d 0a 0d 0a 73 6b 69  .-66..-90....ski
1c920 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1c930 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1c940 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1c950 6c 2d 36 32 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-622..SELECT DI
1c960 53 54 49 4e 43 54 20 2d 20 43 41 53 54 20 28 20  STINCT - CAST ( 
1c970 2d 20 39 35 20 41 53 20 49 4e 54 45 47 45 52 20  - 95 AS INTEGER 
1c980 29 20 2f 20 28 20 2d 20 28 20 2d 20 63 6f 6c 31  ) / ( - ( - col1
1c990 20 29 20 29 20 2b 20 2d 20 63 6f 6c 32 20 41 53   ) ) + - col2 AS
1c9a0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
1c9b0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1c9c0 34 30 0d 0a 2d 36 36 0d 0a 2d 39 30 0d 0a 0d 0a  40..-66..-90....
1c9d0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
1c9e0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
1c9f0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
1ca00 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1ca10 2d 36 32 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -623..SELECT ALL
1ca20 20 31 36 20 2b 20 37 20 44 49 56 20 2d 20 37 39   16 + 7 DIV - 79
1ca30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1ca40 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a 31 36  r0..----..16..16
1ca50 0d 0a 31 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..16....skipif m
1ca60 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1ca70 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1ca80 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 32 33  owsort label-623
1ca90 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 31 36 20  ..SELECT ALL 16 
1caa0 2b 20 37 20 2f 20 2d 20 37 39 20 46 52 4f 4d 20  + 7 / - 79 FROM 
1cab0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
1cac0 2d 2d 0d 0a 31 36 0d 0a 31 36 0d 0a 31 36 0d 0a  --..16..16..16..
1cad0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1cae0 74 0d 0a 53 45 4c 45 43 54 20 33 35 20 2b 20 2d  t..SELECT 35 + -
1caf0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
1cb00 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d  cor0..----..-11.
1cb10 0a 2d 32 39 0d 0a 2d 34 30 0d 0a 0d 0a 6f 6e 6c  .-29..-40....onl
1cb20 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1cb30 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1cb40 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1cb50 6c 61 62 65 6c 2d 36 32 35 0d 0a 53 45 4c 45 43  label-625..SELEC
1cb60 54 20 44 49 53 54 49 4e 43 54 20 2b 20 36 39 20  T DISTINCT + 69 
1cb70 2b 20 2d 20 35 31 20 2a 20 43 4f 55 4e 54 28 20  + - 51 * COUNT( 
1cb80 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
1cb90 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1cba0 2d 2d 2d 0d 0a 2d 38 34 0d 0a 0d 0a 73 6b 69 70  ---..-84....skip
1cbb0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1cbc0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1cbd0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1cbe0 2d 36 32 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  -625..SELECT DIS
1cbf0 54 49 4e 43 54 20 2b 20 36 39 20 2b 20 2d 20 35  TINCT + 69 + - 5
1cc00 31 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  1 * COUNT ( * ) 
1cc10 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1cc20 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
1cc30 0a 2d 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-84....query I 
1cc40 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1cc50 41 4c 4c 20 38 30 20 41 53 20 63 6f 6c 32 20 46  ALL 80 AS col2 F
1cc60 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1cc70 20 57 48 45 52 45 20 2d 20 63 6f 6c 31 20 2b 20   WHERE - col1 + 
1cc80 2d 20 33 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  - 31 IS NULL..--
1cc90 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
1cca0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
1ccb0 2d 20 28 20 2d 20 63 6f 6c 30 20 29 20 2b 20 39  - ( - col0 ) + 9
1ccc0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1ccd0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
1cce0 0d 0a 31 30 36 0d 0a 32 34 0d 0a 39 36 0d 0a 0d  ..106..24..96...
1ccf0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1cd00 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43  CAST syntax: DEC
1cd10 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65  IMAL type: ..que
1cd20 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1cd30 65 6c 2d 36 32 38 0d 0a 53 45 4c 45 43 54 20 41  el-628..SELECT A
1cd40 4c 4c 20 2b 20 28 20 2b 20 2d 20 63 6f 6c 30 20  LL + ( + - col0 
1cd50 29 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  ) + + CAST( NULL
1cd60 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 46 52   AS DECIMAL ) FR
1cd70 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
1cd80 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
1cd90 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1cda0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1cdb0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1cdc0 74 20 6c 61 62 65 6c 2d 36 32 38 0d 0a 53 45 4c  t label-628..SEL
1cdd0 45 43 54 20 41 4c 4c 20 2b 20 28 20 2b 20 2d 20  ECT ALL + ( + - 
1cde0 63 6f 6c 30 20 29 20 2b 20 2b 20 43 41 53 54 20  col0 ) + + CAST 
1cdf0 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29  ( NULL AS REAL )
1ce00 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1ce10 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
1ce20 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  LL....skipif pos
1ce30 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
1ce40 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
1ce50 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
1ce60 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
1ce70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1ce80 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1ce90 2b 20 39 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74  + 92 col1 FROM t
1cea0 61 62 32 20 57 48 45 52 45 20 2b 20 63 6f 6c 31  ab2 WHERE + col1
1ceb0 20 2a 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e   * col2 IS NOT N
1cec0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 32 0d 0a 0d  ULL..----..92...
1ced0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1cee0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37 20 2b  ..SELECT ALL 7 +
1cef0 20 2b 20 39 36 20 2b 20 35 30 20 41 53 20 63 6f   + 96 + 50 AS co
1cf00 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
1cf10 2d 2d 0d 0a 31 35 33 0d 0a 31 35 33 0d 0a 31 35  --..153..153..15
1cf20 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
1cf30 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1cf40 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 2a 20 2d  TINCT - col0 * -
1cf50 20 34 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   41 AS col0 FROM
1cf60 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
1cf70 63 6f 6c 30 20 2b 20 63 6f 6c 32 20 49 53 20 4e  col0 + col2 IS N
1cf80 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 35 36 37 0d  ULL..----..3567.
1cf90 0a 33 39 37 37 0d 0a 36 31 35 0d 0a 0d 0a 71 75  .3977..615....qu
1cfa0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1cfb0 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 41 53 20  ELECT + col0 AS 
1cfc0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57  col0 FROM tab2 W
1cfd0 48 45 52 45 20 2d 20 63 6f 6c 32 20 2b 20 31 31  HERE - col2 + 11
1cfe0 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   <> NULL..----..
1cff0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1d000 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
1d010 43 54 20 32 39 20 46 52 4f 4d 20 74 61 62 30 20  CT 29 FROM tab0 
1d020 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42  WHERE NULL NOT B
1d030 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
1d040 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
1d050 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1d060 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
1d070 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
1d080 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
1d090 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
1d0a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1d0b0 4c 4c 20 2b 20 63 6f 6c 32 20 2d 20 2b 20 63 6f  LL + col2 - + co
1d0c0 6c 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  l1 col2 FROM tab
1d0d0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 0d 0a 2d 33  0..----..-11..-3
1d0e0 34 0d 0a 39 38 0d 0a 0d 0a 71 75 65 72 79 20 49  4..98....query I
1d0f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1d100 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 2b 20 36 30   - col1 * - + 60
1d110 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1d120 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 38 32 30 0d 0a  b1..----..2820..
1d130 33 30 30 0d 0a 38 34 30 0d 0a 0d 0a 71 75 65 72  300..840....quer
1d140 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
1d150 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
1d160 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
1d170 20 33 38 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d   38 IS NULL..---
1d180 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
1d190 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
1d1a0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
1d1b0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33  rowsort label-63
1d1c0 37 0d 0a 53 45 4c 45 43 54 20 2d 20 37 20 2a 20  7..SELECT - 7 * 
1d1d0 43 4f 55 4e 54 28 20 41 4c 4c 20 2d 20 28 20 63  COUNT( ALL - ( c
1d1e0 6f 6c 32 20 29 20 29 20 63 6f 6c 31 20 46 52 4f  ol2 ) ) col1 FRO
1d1f0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab1..----..-2
1d200 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
1d210 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1d220 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
1d230 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1d240 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1d250 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1d260 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1d270 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1d280 65 6c 2d 36 33 37 0d 0a 53 45 4c 45 43 54 20 2d  el-637..SELECT -
1d290 20 37 20 2a 20 43 4f 55 4e 54 20 28 20 41 4c 4c   7 * COUNT ( ALL
1d2a0 20 2d 20 28 20 63 6f 6c 32 20 29 20 29 20 63 6f   - ( col2 ) ) co
1d2b0 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
1d2c0 2d 2d 0d 0a 2d 32 31 0d 0a 0d 0a 71 75 65 72 79  --..-21....query
1d2d0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1d2e0 43 54 20 2d 20 39 37 20 46 52 4f 4d 20 74 61 62  CT - 97 FROM tab
1d2f0 32 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32  2 WHERE NOT col2
1d300 20 3c 3e 20 28 20 2d 20 37 35 20 2f 20 35 37 20   <> ( - 75 / 57 
1d310 29 20 4f 52 20 4e 4f 54 20 28 20 4e 55 4c 4c 20  ) OR NOT ( NULL 
1d320 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 28 20  ) NOT BETWEEN ( 
1d330 4e 55 4c 4c 20 29 20 41 4e 44 20 2b 20 63 6f 6c  NULL ) AND + col
1d340 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  1..----....query
1d350 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1d360 43 54 20 35 38 20 2d 20 2b 20 34 38 20 2b 20 2d  CT 58 - + 48 + -
1d370 20 32 39 20 46 52 4f 4d 20 74 61 62 31 20 41 53   29 FROM tab1 AS
1d380 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39   cor0..----..-19
1d390 0d 0a 2d 31 39 0d 0a 2d 31 39 0d 0a 0d 0a 71 75  ..-19..-19....qu
1d3a0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1d3b0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1d3c0 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   * FROM tab1 AS 
1d3d0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
1d3e0 20 4e 55 4c 4c 20 29 20 3c 20 2d 20 63 6f 6c 32   NULL ) < - col2
1d3f0 20 2a 20 2d 20 36 20 2b 20 63 6f 6c 32 20 2f 20   * - 6 + col2 / 
1d400 31 30 20 41 4e 44 20 28 20 63 6f 6c 30 20 29 20  10 AND ( col0 ) 
1d410 2b 20 2d 20 31 34 20 49 53 20 4e 55 4c 4c 0d 0a  + - 14 IS NULL..
1d420 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
1d430 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1d440 41 4c 4c 20 2d 20 36 20 46 52 4f 4d 20 74 61 62  ALL - 6 FROM tab
1d450 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
1d460 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72  JOIN tab0 AS cor
1d470 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
1d480 73 20 68 61 73 68 69 6e 67 20 74 6f 20 65 39 32  s hashing to e92
1d490 62 32 36 37 39 66 61 61 63 37 62 65 36 33 37 30  b2679faac7be6370
1d4a0 31 39 36 37 65 33 66 30 63 30 39 33 34 0d 0a 0d  1967e3f0c0934...
1d4b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1d4c0 0d 0a 53 45 4c 45 43 54 20 2b 20 32 35 20 2a 20  ..SELECT + 25 * 
1d4d0 33 34 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  34 FROM tab0 AS 
1d4e0 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
1d4f0 74 61 62 31 20 41 53 20 63 6f 72 31 20 57 48 45  tab1 AS cor1 WHE
1d500 52 45 20 28 20 4e 55 4c 4c 20 29 20 3c 3d 20 38  RE ( NULL ) <= 8
1d510 33 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  3..----....query
1d520 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
1d530 45 43 54 20 63 6f 6c 30 2c 20 2d 20 28 20 2d 20  ECT col0, - ( - 
1d540 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31  + col2 ) AS col1
1d550 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1d560 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 39 36  r0..----..51..96
1d570 0d 0a 38 35 0d 0a 35 39 0d 0a 39 31 0d 0a 36 38  ..85..59..91..68
1d580 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
1d590 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1d5a0 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  L * FROM tab0 AS
1d5b0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
1d5c0 4e 55 4c 4c 20 3e 3d 20 28 20 2d 20 34 35 20 29  NULL >= ( - 45 )
1d5d0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
1d5e0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1d5f0 43 54 20 41 4c 4c 20 63 6f 6c 32 20 41 53 20 63  CT ALL col2 AS c
1d600 6f 6c 30 2c 20 2b 20 36 36 20 41 53 20 63 6f 6c  ol0, + 66 AS col
1d610 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
1d620 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 36  or0..----..10..6
1d630 36 0d 0a 34 37 0d 0a 36 36 0d 0a 39 39 0d 0a 36  6..47..66..99..6
1d640 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
1d650 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 38  sort..SELECT - 8
1d660 20 2a 20 28 20 63 6f 6c 30 20 29 20 41 53 20 63   * ( col0 ) AS c
1d670 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
1d680 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 36   cor0..----..-36
1d690 38 0d 0a 2d 35 31 32 0d 0a 2d 36 30 30 0d 0a 0d  8..-512..-600...
1d6a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1d6b0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
1d6c0 6f 6c 30 20 2a 20 63 6f 6c 30 20 41 53 20 63 6f  ol0 * col0 AS co
1d6d0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
1d6e0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
1d6f0 20 63 6f 6c 31 20 49 4e 20 28 20 63 6f 6c 31 20   col1 IN ( col1 
1d700 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 31 36 0d 0a  )..----..-2116..
1d710 2d 34 30 39 36 0d 0a 2d 35 36 32 35 0d 0a 0d 0a  -4096..-5625....
1d720 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1d730 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49  AST syntax: DECI
1d740 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  MAL type: ..quer
1d750 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
1d760 65 6c 2d 36 34 38 0d 0a 53 45 4c 45 43 54 20 41  el-648..SELECT A
1d770 4c 4c 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53  LL CAST( NULL AS
1d780 20 44 45 43 49 4d 41 4c 20 29 20 41 53 20 63 6f   DECIMAL ) AS co
1d790 6c 32 2c 20 2d 20 31 20 41 53 20 63 6f 6c 31 20  l2, - 1 AS col1 
1d7a0 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
1d7b0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 2d 31 0d 0a  ----..NULL..-1..
1d7c0 4e 55 4c 4c 0d 0a 2d 31 0d 0a 4e 55 4c 4c 0d 0a  NULL..-1..NULL..
1d7d0 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -1....skipif mys
1d7e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1d7f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  ble..query II ro
1d800 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 38 0d  wsort label-648.
1d810 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54  .SELECT ALL CAST
1d820 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20   ( NULL AS REAL 
1d830 29 20 41 53 20 63 6f 6c 32 2c 20 2d 20 31 20 41  ) AS col2, - 1 A
1d840 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
1d850 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
1d860 4c 0d 0a 2d 31 0d 0a 4e 55 4c 4c 0d 0a 2d 31 0d  L..-1..NULL..-1.
1d870 0a 4e 55 4c 4c 0d 0a 2d 31 0d 0a 0d 0a 6f 6e 6c  .NULL..-1....onl
1d880 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1d890 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49  egate syntax: DI
1d8a0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
1d8b0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
1d8c0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1d8d0 36 34 39 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  649..SELECT - + 
1d8e0 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56 20 34  COUNT( * ) DIV 4
1d8f0 39 20 2b 20 2b 20 37 34 20 46 52 4f 4d 20 74 61  9 + + 74 FROM ta
1d900 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
1d910 0d 0a 37 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..74....skipif m
1d920 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1d930 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1d940 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 39  owsort label-649
1d950 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55  ..SELECT - + COU
1d960 4e 54 20 28 20 2a 20 29 20 2f 20 34 39 20 2b 20  NT ( * ) / 49 + 
1d970 2b 20 37 34 20 46 52 4f 4d 20 74 61 62 31 20 41  + 74 FROM tab1 A
1d980 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 34  S cor0..----..74
1d990 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1d9a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1d9b0 2d 20 63 6f 6c 32 20 2a 20 63 6f 6c 30 20 41 53  - col2 * col0 AS
1d9c0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
1d9d0 57 48 45 52 45 20 38 33 20 49 53 20 4e 55 4c 4c  WHERE 83 IS NULL
1d9e0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
1d9f0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1da00 54 20 44 49 53 54 49 4e 43 54 20 28 20 2b 20 28  T DISTINCT ( + (
1da10 20 2d 20 63 6f 6c 31 20 29 20 29 20 41 53 20 63   - col1 ) ) AS c
1da20 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
1da30 2d 2d 2d 0d 0a 2d 31 34 0d 0a 2d 34 37 0d 0a 2d  ---..-14..-47..-
1da40 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  5....query III r
1da50 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
1da60 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
1da70 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 2b 20 2b 20   NOT + col2 + + 
1da80 63 6f 6c 32 20 2f 20 36 34 20 3c 3d 20 4e 55 4c  col2 / 64 <= NUL
1da90 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
1daa0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
1dab0 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20  ate syntax: DIV 
1dac0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
1dad0 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
1dae0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35  rowsort label-65
1daf0 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28  3..SELECT COUNT(
1db00 20 2a 20 29 20 44 49 56 20 2b 20 53 55 4d 28 20   * ) DIV + SUM( 
1db10 44 49 53 54 49 4e 43 54 20 2b 20 32 32 20 29 20  DISTINCT + 22 ) 
1db20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
1db30 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
1db40 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1db50 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1db60 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 33 0d 0a  sort label-653..
1db70 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a  SELECT COUNT ( *
1db80 20 29 20 2f 20 2b 20 53 55 4d 20 28 20 44 49 53   ) / + SUM ( DIS
1db90 54 49 4e 43 54 20 2b 20 32 32 20 29 20 46 52 4f  TINCT + 22 ) FRO
1dba0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab0..----..0.
1dbb0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1dbc0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
1dbd0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
1dbe0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 34 0d  wsort label-654.
1dbf0 0a 53 45 4c 45 43 54 20 2b 20 4d 41 58 28 20 41  .SELECT + MAX( A
1dc00 4c 4c 20 28 20 63 6f 6c 30 20 29 20 29 20 41 53  LL ( col0 ) ) AS
1dc10 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
1dc20 0a 2d 2d 2d 2d 0d 0a 39 37 0d 0a 0d 0a 73 6b 69  .----..97....ski
1dc30 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1dc40 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1dc50 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1dc60 6c 2d 36 35 34 0d 0a 53 45 4c 45 43 54 20 2b 20  l-654..SELECT + 
1dc70 4d 41 58 20 28 20 41 4c 4c 20 28 20 63 6f 6c 30  MAX ( ALL ( col0
1dc80 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   ) ) AS col1 FRO
1dc90 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39 37  M tab0..----..97
1dca0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1dcb0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1dcc0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1dcd0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 35  owsort label-655
1dce0 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20  ..SELECT COUNT( 
1dcf0 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 57 48  * ) FROM tab1 WH
1dd00 45 52 45 20 4e 4f 54 20 2b 20 2b 20 36 38 20 42  ERE NOT + + 68 B
1dd10 45 54 57 45 45 4e 20 2d 20 31 39 20 2b 20 2b 20  ETWEEN - 19 + + 
1dd20 63 6f 6c 30 20 41 4e 44 20 37 30 20 2a 20 63 6f  col0 AND 70 * co
1dd30 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73  l1..----..1....s
1dd40 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1dd50 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1dd60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1dd70 62 65 6c 2d 36 35 35 0d 0a 53 45 4c 45 43 54 20  bel-655..SELECT 
1dd80 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
1dd90 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
1dda0 2b 20 2b 20 36 38 20 42 45 54 57 45 45 4e 20 2d  + + 68 BETWEEN -
1ddb0 20 31 39 20 2b 20 2b 20 63 6f 6c 30 20 41 4e 44   19 + + col0 AND
1ddc0 20 37 30 20 2a 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d   70 * col1..----
1ddd0 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..1....onlyif my
1dde0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1ddf0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1de00 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1de10 36 35 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  656..SELECT DIST
1de20 49 4e 43 54 20 2d 20 4d 41 58 28 20 44 49 53 54  INCT - MAX( DIST
1de30 49 4e 43 54 20 2b 20 38 30 20 29 20 2a 20 2d 20  INCT + 80 ) * - 
1de40 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
1de50 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
1de60 0a 32 34 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .240....skipif m
1de70 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1de80 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1de90 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 36  owsort label-656
1dea0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1deb0 54 20 2d 20 4d 41 58 20 28 20 44 49 53 54 49 4e  T - MAX ( DISTIN
1dec0 43 54 20 2b 20 38 30 20 29 20 2a 20 2d 20 43 4f  CT + 80 ) * - CO
1ded0 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
1dee0 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
1def0 32 34 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  240....query I r
1df00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1df10 49 53 54 49 4e 43 54 20 34 36 20 2a 20 2d 20 28  ISTINCT 46 * - (
1df20 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74   - col1 ) FROM t
1df30 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 34 36 0d  ab2..----..2346.
1df40 0a 33 30 38 32 0d 0a 33 35 34 32 0d 0a 0d 0a 71  .3082..3542....q
1df50 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1df60 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1df70 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
1df80 45 52 45 20 4e 4f 54 20 2d 20 37 20 2a 20 2b 20  ERE NOT - 7 * + 
1df90 2d 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30 20  - col1 * - col0 
1dfa0 2d 20 2d 20 28 20 2d 20 63 6f 6c 30 20 2b 20 2d  - - ( - col0 + -
1dfb0 20 63 6f 6c 32 20 29 20 49 53 20 4e 4f 54 20 4e   col2 ) IS NOT N
1dfc0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
1dfd0 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
1dfe0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
1dff0 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
1e000 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35  rowsort label-65
1e010 39 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 44  9..SELECT col1 D
1e020 49 56 20 2b 20 63 6f 6c 31 20 2b 20 33 36 20 41  IV + col1 + 36 A
1e030 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
1e040 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a 33 37 0d 0a  ..----..37..37..
1e050 33 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  37....skipif mys
1e060 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1e070 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1e080 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 39 0d 0a  sort label-659..
1e090 53 45 4c 45 43 54 20 63 6f 6c 31 20 2f 20 2b 20  SELECT col1 / + 
1e0a0 63 6f 6c 31 20 2b 20 33 36 20 41 53 20 63 6f 6c  col1 + 36 AS col
1e0b0 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
1e0c0 2d 0d 0a 33 37 0d 0a 33 37 0d 0a 33 37 0d 0a 0d  -..37..37..37...
1e0d0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
1e0e0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
1e0f0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
1e100 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1e110 6c 2d 36 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20  l-660..SELECT - 
1e120 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 44 49 56 20  col1 + col2 DIV 
1e130 2d 20 37 33 20 2a 20 2b 20 63 6f 6c 30 20 63 6f  - 73 * + col0 co
1e140 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
1e150 2d 2d 0d 0a 2d 35 31 0d 0a 2d 36 37 0d 0a 2d 37  --..-51..-67..-7
1e160 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
1e170 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1e180 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
1e190 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
1e1a0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
1e1b0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
1e1c0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
1e1d0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1e1e0 65 6c 2d 36 36 30 0d 0a 53 45 4c 45 43 54 20 2d  el-660..SELECT -
1e1f0 20 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 2f 20 2d   col1 + col2 / -
1e200 20 37 33 20 2a 20 2b 20 63 6f 6c 30 20 63 6f 6c   73 * + col0 col
1e210 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
1e220 2d 0d 0a 2d 35 31 0d 0a 2d 36 37 0d 0a 2d 37 37  -..-51..-67..-77
1e230 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1e240 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1e250 49 4e 43 54 20 63 6f 6c 30 20 2b 20 63 6f 6c 30  INCT col0 + col0
1e260 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 2d 20   * + - col1 + - 
1e270 2d 20 36 37 20 2a 20 2d 20 34 36 20 46 52 4f 4d  - 67 * - 46 FROM
1e280 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1e290 2d 2d 2d 0d 0a 2d 33 30 38 32 0d 0a 2d 34 32 38  ---..-3082..-428
1e2a0 32 0d 0a 2d 34 38 32 32 0d 0a 0d 0a 71 75 65 72  2..-4822....quer
1e2b0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1e2c0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  ECT DISTINCT + +
1e2d0 20 36 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53   61 FROM tab2 AS
1e2e0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
1e2f0 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20 3c 3d 20  + ( - col0 ) <= 
1e300 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  col1..----....on
1e310 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1e320 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1e330 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1e340 20 6c 61 62 65 6c 2d 36 36 33 0d 0a 53 45 4c 45   label-663..SELE
1e350 43 54 20 2d 20 2d 20 28 20 2b 20 2b 20 43 4f 55  CT - - ( + + COU
1e360 4e 54 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c  NT( * ) ) AS col
1e370 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
1e380 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
1e390 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1e3a0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1e3b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1e3c0 61 62 65 6c 2d 36 36 33 0d 0a 53 45 4c 45 43 54  abel-663..SELECT
1e3d0 20 2d 20 2d 20 28 20 2b 20 2b 20 43 4f 55 4e 54   - - ( + + COUNT
1e3e0 20 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 32   ( * ) ) AS col2
1e3f0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1e400 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71  r0..----..3....q
1e410 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1e420 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
1e430 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
1e440 52 45 20 63 6f 6c 30 20 2a 20 34 32 20 49 53 20  RE col0 * 42 IS 
1e450 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
1e460 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1e470 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
1e480 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
1e490 45 20 28 20 35 39 20 29 20 49 53 20 4e 4f 54 20  E ( 59 ) IS NOT 
1e4a0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  NULL..----..9 va
1e4b0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
1e4c0 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
1e4d0 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
1e4e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1e4f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1e500 49 4e 43 54 20 2d 20 37 37 20 2d 20 63 6f 6c 32  INCT - 77 - col2
1e510 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1e520 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 34 0d 0a  r0..----..-124..
1e530 2d 31 37 36 0d 0a 2d 38 37 0d 0a 0d 0a 71 75 65  -176..-87....que
1e540 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1e550 4c 45 43 54 20 41 4c 4c 20 2b 20 32 39 20 2b 20  LECT ALL + 29 + 
1e560 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  - col0 FROM tab0
1e570 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d 0a 2d 36 38  ..----..-58..-68
1e580 0d 0a 31 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..14....onlyif m
1e590 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
1e5a0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
1e5b0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1e5c0 72 74 20 6c 61 62 65 6c 2d 36 36 38 0d 0a 53 45  rt label-668..SE
1e5d0 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20  LECT ALL + col0 
1e5e0 2d 20 2d 20 2b 20 38 36 20 2b 20 2d 20 2b 20 36  - - + 86 + - + 6
1e5f0 36 20 44 49 56 20 32 36 20 41 53 20 63 6f 6c 32  6 DIV 26 AS col2
1e600 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
1e610 0d 0a 31 33 30 0d 0a 31 34 38 0d 0a 31 35 39 0d  ..130..148..159.
1e620 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
1e630 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
1e640 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e650 74 20 6c 61 62 65 6c 2d 36 36 38 0d 0a 53 45 4c  t label-668..SEL
1e660 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 2d  ECT ALL + col0 -
1e670 20 2d 20 2b 20 38 36 20 2b 20 2d 20 2b 20 36 36   - + 86 + - + 66
1e680 20 2f 20 32 36 20 41 53 20 63 6f 6c 32 20 46 52   / 26 AS col2 FR
1e690 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
1e6a0 33 30 0d 0a 31 34 38 0d 0a 31 35 39 0d 0a 0d 0a  30..148..159....
1e6b0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
1e6c0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
1e6d0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
1e6e0 72 74 20 6c 61 62 65 6c 2d 36 36 39 0d 0a 53 45  rt label-669..SE
1e6f0 4c 45 43 54 20 2d 20 4d 49 4e 28 20 41 4c 4c 20  LECT - MIN( ALL 
1e700 2d 20 39 38 20 29 20 41 53 20 63 6f 6c 31 20 46  - 98 ) AS col1 F
1e710 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
1e720 39 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  98....skipif mys
1e730 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1e740 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1e750 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 39 0d 0a  sort label-669..
1e760 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20 28 20 41  SELECT - MIN ( A
1e770 4c 4c 20 2d 20 39 38 20 29 20 41 53 20 63 6f 6c  LL - 98 ) AS col
1e780 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
1e790 2d 0d 0a 39 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..98....onlyif 
1e7a0 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
1e7b0 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
1e7c0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1e7d0 6f 72 74 20 6c 61 62 65 6c 2d 36 37 30 0d 0a 53  ort label-670..S
1e7e0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
1e7f0 6f 6c 31 20 2b 20 63 6f 6c 31 20 44 49 56 20 2d  ol1 + col1 DIV -
1e800 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52   col2 AS col1 FR
1e810 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab2..----..4
1e820 39 0d 0a 36 36 0d 0a 37 36 0d 0a 0d 0a 73 6b 69  9..66..76....ski
1e830 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1e840 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1e850 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1e860 6c 2d 36 37 30 0d 0a 53 45 4c 45 43 54 20 44 49  l-670..SELECT DI
1e870 53 54 49 4e 43 54 20 63 6f 6c 31 20 2b 20 63 6f  STINCT col1 + co
1e880 6c 31 20 2f 20 2d 20 63 6f 6c 32 20 41 53 20 63  l1 / - col2 AS c
1e890 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
1e8a0 2d 2d 2d 0d 0a 34 39 0d 0a 36 36 0d 0a 37 36 0d  ---..49..66..76.
1e8b0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1e8c0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
1e8d0 6f 6c 31 20 2d 20 2d 20 34 30 20 2b 20 39 37 20  ol1 - - 40 + 97 
1e8e0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
1e8f0 0a 31 38 38 0d 0a 32 30 34 0d 0a 32 31 34 0d 0a  .188..204..214..
1e900 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1e910 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1e920 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1e930 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37 32 0d 0a  sort label-672..
1e940 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20  SELECT COUNT( * 
1e950 29 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2d 20 2d  ) - + COUNT( - -
1e960 20 63 6f 6c 32 20 29 20 2d 20 2d 20 2b 20 28 20   col2 ) - - + ( 
1e970 2d 20 36 39 20 29 20 41 53 20 63 6f 6c 30 20 46  - 69 ) AS col0 F
1e980 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
1e990 2d 36 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -69....skipif my
1e9a0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1e9b0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1e9c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37 32 0d  wsort label-672.
1e9d0 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20  .SELECT COUNT ( 
1e9e0 2a 20 29 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20  * ) - + COUNT ( 
1e9f0 2d 20 2d 20 63 6f 6c 32 20 29 20 2d 20 2d 20 2b  - - col2 ) - - +
1ea00 20 28 20 2d 20 36 39 20 29 20 41 53 20 63 6f 6c   ( - 69 ) AS col
1ea10 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  0 FROM tab0..---
1ea20 2d 0d 0a 2d 36 39 0d 0a 0d 0a 73 6b 69 70 69 66  -..-69....skipif
1ea30 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
1ea40 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
1ea50 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
1ea60 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
1ea70 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
1ea80 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
1ea90 20 28 20 63 6f 6c 31 20 29 20 63 6f 6c 32 20 46   ( col1 ) col2 F
1eaa0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
1eab0 4f 54 20 2b 20 2b 20 63 6f 6c 32 20 49 53 20 4e  OT + + col2 IS N
1eac0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d 0a  ULL..----..-14..
1ead0 2d 34 37 0d 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79 69  -47..-5....onlyi
1eae0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
1eaf0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1eb00 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
1eb10 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37 34 0d  wsort label-674.
1eb20 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2b 20 2d  .SELECT col2 + -
1eb30 20 2b 20 32 34 20 2b 20 2d 20 63 6f 6c 32 20 2a   + 24 + - col2 *
1eb40 20 2b 20 31 32 20 2b 20 2d 20 34 20 2b 20 34 33   + 12 + - 4 + 43
1eb50 20 2a 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20   * + CAST( NULL 
1eb60 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
1eb70 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
1eb80 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
1eb90 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
1eba0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1ebb0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1ebc0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37  rowsort label-67
1ebd0 34 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2b  4..SELECT col2 +
1ebe0 20 2d 20 2b 20 32 34 20 2b 20 2d 20 63 6f 6c 32   - + 24 + - col2
1ebf0 20 2a 20 2b 20 31 32 20 2b 20 2d 20 34 20 2b 20   * + 12 + - 4 + 
1ec00 34 33 20 2a 20 2b 20 43 41 53 54 20 28 20 4e 55  43 * + CAST ( NU
1ec10 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
1ec20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1ec30 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
1ec40 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c  ULL..NULL....onl
1ec50 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1ec60 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1ec70 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1ec80 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37  rowsort label-67
1ec90 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  5..SELECT ALL - 
1eca0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
1ecb0 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32  GNED ) FROM tab2
1ecc0 20 57 48 45 52 45 20 4e 4f 54 20 28 20 63 6f 6c   WHERE NOT ( col
1ecd0 32 20 4e 4f 54 20 49 4e 20 28 20 2d 20 63 6f 6c  2 NOT IN ( - col
1ece0 31 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 31 35 20  1 + - col2 * 15 
1ecf0 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ) )..----....ski
1ed00 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1ed10 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1ed20 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1ed30 6c 2d 36 37 35 0d 0a 53 45 4c 45 43 54 20 41 4c  l-675..SELECT AL
1ed40 4c 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  L - CAST ( NULL 
1ed50 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
1ed60 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
1ed70 20 28 20 63 6f 6c 32 20 4e 4f 54 20 49 4e 20 28   ( col2 NOT IN (
1ed80 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 32   - col1 + - col2
1ed90 20 2a 20 31 35 20 29 20 29 0d 0a 2d 2d 2d 2d 0d   * 15 ) )..----.
1eda0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1edb0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 38 20  rt..SELECT + 98 
1edc0 2b 20 36 36 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 66 AS col2 FRO
1edd0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36  M tab0..----..16
1ede0 34 0d 0a 31 36 34 0d 0a 31 36 34 0d 0a 0d 0a 6f  4..164..164....o
1edf0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1ee00 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1ee10 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1ee20 74 20 6c 61 62 65 6c 2d 36 37 37 0d 0a 53 45 4c  t label-677..SEL
1ee30 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
1ee40 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 2b 20  OUNT( * ) * - + 
1ee50 4d 41 58 28 20 41 4c 4c 20 33 36 20 29 20 2a 20  MAX( ALL 36 ) * 
1ee60 2d 20 2b 20 38 31 20 63 6f 6c 32 20 46 52 4f 4d  - + 81 col2 FROM
1ee70 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 37   tab2..----..-87
1ee80 34 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  48....skipif mys
1ee90 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1eea0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
1eeb0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
1eec0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
1eed0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
1eee0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
1eef0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1ef00 62 65 6c 2d 36 37 37 0d 0a 53 45 4c 45 43 54 20  bel-677..SELECT 
1ef10 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
1ef20 20 28 20 2a 20 29 20 2a 20 2d 20 2b 20 4d 41 58   ( * ) * - + MAX
1ef30 20 28 20 41 4c 4c 20 33 36 20 29 20 2a 20 2d 20   ( ALL 36 ) * - 
1ef40 2b 20 38 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74  + 81 col2 FROM t
1ef50 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 37 34 38  ab2..----..-8748
1ef60 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1ef70 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1ef80 2b 20 35 36 20 2a 20 2d 20 63 6f 6c 31 20 46 52  + 56 * - col1 FR
1ef90 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1efa0 0a 2d 2d 2d 2d 0d 0a 2d 32 36 33 32 0d 0a 2d 32  .----..-2632..-2
1efb0 38 30 0d 0a 2d 37 38 34 0d 0a 0d 0a 6f 6e 6c 79  80..-784....only
1efc0 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
1efd0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
1efe0 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ion: ..query II 
1eff0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37  rowsort label-67
1f000 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  9..SELECT ALL + 
1f010 2d 20 35 32 20 2b 20 2b 20 2d 20 32 39 20 41 53  - 52 + + - 29 AS
1f020 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c 30 20 44 49   col2, - col0 DI
1f030 56 20 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  V - - col1 FROM 
1f040 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
1f050 2d 2d 0d 0a 2d 38 31 0d 0a 2d 34 0d 0a 2d 38 31  --..-81..-4..-81
1f060 0d 0a 2d 39 37 0d 0a 2d 38 31 0d 0a 30 0d 0a 0d  ..-97..-81..0...
1f070 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1f080 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1f090 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
1f0a0 20 6c 61 62 65 6c 2d 36 37 39 0d 0a 53 45 4c 45   label-679..SELE
1f0b0 43 54 20 41 4c 4c 20 2b 20 2d 20 35 32 20 2b 20  CT ALL + - 52 + 
1f0c0 2b 20 2d 20 32 39 20 41 53 20 63 6f 6c 32 2c 20  + - 29 AS col2, 
1f0d0 2d 20 63 6f 6c 30 20 2f 20 2d 20 2d 20 63 6f 6c  - col0 / - - col
1f0e0 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
1f0f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 31 0d 0a  or0..----..-81..
1f100 2d 34 0d 0a 2d 38 31 0d 0a 2d 39 37 0d 0a 2d 38  -4..-81..-97..-8
1f110 31 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  1..0....query II
1f120 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1f130 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
1f140 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31   cor0 WHERE col1
1f150 20 2a 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 30   * col0 * + col0
1f160 20 2a 20 2b 20 35 38 20 49 53 20 4e 55 4c 4c 0d   * + 58 IS NULL.
1f170 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
1f180 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1f190 54 20 2b 20 2d 20 63 6f 6c 32 2c 20 2b 20 36 31  T + - col2, + 61
1f1a0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1f1b0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
1f1c0 0d 0a 2d 32 33 0d 0a 36 31 0d 0a 2d 34 30 0d 0a  ..-23..61..-40..
1f1d0 36 31 0d 0a 2d 35 38 0d 0a 36 31 0d 0a 0d 0a 71  61..-58..61....q
1f1e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1f1f0 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2d 20  SELECT + col1 - 
1f200 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  - col2 AS col1 F
1f210 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1f220 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c   WHERE NOT + col
1f230 32 20 2b 20 2b 20 63 6f 6c 31 20 49 53 20 4e 4f  2 + + col1 IS NO
1f240 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
1f250 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1f260 0a 53 45 4c 45 43 54 20 2d 20 37 32 20 2a 20 2d  .SELECT - 72 * -
1f270 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 30 20 2d   col1 + + col0 -
1f280 20 2d 20 34 35 20 46 52 4f 4d 20 74 61 62 31 20   - 45 FROM tab1 
1f290 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
1f2a0 31 30 34 0d 0a 33 35 32 30 0d 0a 34 39 30 0d 0a  104..3520..490..
1f2b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f2c0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30  t..SELECT + col0
1f2d0 20 2a 20 2d 20 35 30 20 41 53 20 63 6f 6c 31 20   * - 50 AS col1 
1f2e0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
1f2f0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 35 30 0d 0a  0..----..-2550..
1f300 2d 34 32 35 30 0d 0a 2d 34 35 35 30 0d 0a 0d 0a  -4250..-4550....
1f310 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1f320 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1f330 20 28 20 2b 20 2d 20 38 38 20 29 20 46 52 4f 4d   ( + - 88 ) FROM
1f340 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1f350 2d 2d 2d 0d 0a 2d 38 38 0d 0a 0d 0a 6f 6e 6c 79  ---..-88....only
1f360 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
1f370 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
1f380 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
1f390 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 38 36  owsort label-686
1f3a0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1f3b0 54 20 2d 20 2d 20 32 33 20 2a 20 63 6f 6c 30 20  T - - 23 * col0 
1f3c0 44 49 56 20 36 33 20 46 52 4f 4d 20 74 61 62 32  DIV 63 FROM tab2
1f3d0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
1f3e0 31 36 0d 0a 32 33 0d 0a 32 37 0d 0a 0d 0a 73 6b  16..23..27....sk
1f3f0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1f400 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1f410 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1f420 65 6c 2d 36 38 36 0d 0a 53 45 4c 45 43 54 20 44  el-686..SELECT D
1f430 49 53 54 49 4e 43 54 20 2d 20 2d 20 32 33 20 2a  ISTINCT - - 23 *
1f440 20 63 6f 6c 30 20 2f 20 36 33 20 46 52 4f 4d 20   col0 / 63 FROM 
1f450 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
1f460 2d 2d 0d 0a 31 36 0d 0a 32 33 0d 0a 32 37 0d 0a  --..16..23..27..
1f470 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1f480 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1f490 2a 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  * FROM tab0 cor0
1f4a0 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c   WHERE NOT + col
1f4b0 32 20 3c 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  2 <= NULL..----.
1f4c0 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
1f4d0 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
1f4e0 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
1f4f0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
1f500 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
1f510 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1f520 45 43 54 20 41 4c 4c 20 37 35 20 63 6f 6c 30 20  ECT ALL 75 col0 
1f530 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1f540 30 0d 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 37 35 0d  0..----..75..75.
1f550 0a 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .75....query I r
1f560 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
1f570 20 28 20 34 30 20 29 20 41 53 20 63 6f 6c 30 20   ( 40 ) AS col0 
1f580 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
1f590 0a 2d 34 30 0d 0a 2d 34 30 0d 0a 2d 34 30 0d 0a  .-40..-40..-40..
1f5a0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1f5b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1f5c0 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  * FROM tab1 WHER
1f5d0 45 20 4e 4f 54 20 28 20 2d 20 2b 20 63 6f 6c 31  E NOT ( - + col1
1f5e0 20 2b 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 2b 20   + + - col0 + + 
1f5f0 2b 20 36 37 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  + 67 ) IS NULL..
1f600 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
1f610 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34  ashing to c6c0a4
1f620 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61  111b36d04dbc811a
1f630 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75  11e4d54cad....qu
1f640 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1f650 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1f660 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
1f670 52 45 20 4e 4f 54 20 28 20 2d 20 63 6f 6c 30 20  RE NOT ( - col0 
1f680 29 20 3e 20 2d 20 2b 20 35 36 0d 0a 2d 2d 2d 2d  ) > - + 56..----
1f690 0d 0a 38 35 0d 0a 35 0d 0a 35 39 0d 0a 39 31 0d  ..85..5..59..91.
1f6a0 0a 34 37 0d 0a 36 38 0d 0a 0d 0a 6f 6e 6c 79 69  .47..68....onlyi
1f6b0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
1f6c0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
1f6d0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
1f6e0 61 62 65 6c 2d 36 39 32 0d 0a 53 45 4c 45 43 54  abel-692..SELECT
1f6f0 20 41 4c 4c 20 37 32 20 63 6f 6c 32 2c 20 2d 20   ALL 72 col2, - 
1f700 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
1f710 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
1f720 2d 2d 0d 0a 37 32 0d 0a 2d 33 0d 0a 0d 0a 73 6b  --..72..-3....sk
1f730 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1f740 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
1f750 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
1f760 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
1f770 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
1f780 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
1f790 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
1f7a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 32  owsort label-692
1f7b0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37 32 20  ..SELECT ALL 72 
1f7c0 63 6f 6c 32 2c 20 2d 20 43 4f 55 4e 54 20 28 20  col2, - COUNT ( 
1f7d0 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
1f7e0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 37 32 0d   tab0..----..72.
1f7f0 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .-3....query III
1f800 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1f810 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
1f820 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20  RE NOT NULL NOT 
1f830 49 4e 20 28 20 63 6f 6c 32 2c 20 2d 20 28 20 63  IN ( col2, - ( c
1f840 6f 6c 32 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d  ol2 ) )..----...
1f850 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1f860 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f 6c  ..SELECT + + col
1f870 31 20 2a 20 2d 20 35 35 20 46 52 4f 4d 20 74 61  1 * - 55 FROM ta
1f880 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1 cor0..----..-
1f890 32 35 38 35 0d 0a 2d 32 37 35 0d 0a 2d 37 37 30  2585..-275..-770
1f8a0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1f8b0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1f8c0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1f8d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 35  owsort label-695
1f8e0 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 4d 49 4e  ..SELECT - - MIN
1f8f0 28 20 44 49 53 54 49 4e 43 54 20 2b 20 33 20 29  ( DISTINCT + 3 )
1f900 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1f910 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  r0..----..3....s
1f920 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1f930 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1f940 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1f950 62 65 6c 2d 36 39 35 0d 0a 53 45 4c 45 43 54 20  bel-695..SELECT 
1f960 2d 20 2d 20 4d 49 4e 20 28 20 44 49 53 54 49 4e  - - MIN ( DISTIN
1f970 43 54 20 2b 20 33 20 29 20 46 52 4f 4d 20 74 61  CT + 3 ) FROM ta
1f980 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
1f990 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..3....onlyif my
1f9a0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
1f9b0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1f9c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f9d0 74 20 6c 61 62 65 6c 2d 36 39 36 0d 0a 53 45 4c  t label-696..SEL
1f9e0 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41 53  ECT DISTINCT CAS
1f9f0 54 28 20 2b 20 63 6f 6c 31 20 41 53 20 53 49 47  T( + col1 AS SIG
1fa00 4e 45 44 20 29 20 2a 20 2d 20 2d 20 28 20 38 20  NED ) * - - ( 8 
1fa10 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
1fa20 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 30 38 0d 0a  or0..----..408..
1fa30 35 33 36 0d 0a 36 31 36 0d 0a 0d 0a 73 6b 69 70  536..616....skip
1fa40 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1fa50 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1fa60 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1fa70 2d 36 39 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -696..SELECT DIS
1fa80 54 49 4e 43 54 20 43 41 53 54 20 28 20 2b 20 63  TINCT CAST ( + c
1fa90 6f 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol1 AS INTEGER )
1faa0 20 2a 20 2d 20 2d 20 28 20 38 20 29 20 46 52 4f   * - - ( 8 ) FRO
1fab0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
1fac0 2d 2d 2d 2d 0d 0a 34 30 38 0d 0a 35 33 36 0d 0a  ----..408..536..
1fad0 36 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  616....query II 
1fae0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1faf0 44 49 53 54 49 4e 43 54 20 36 34 20 2b 20 63 6f  DISTINCT 64 + co
1fb00 6c 30 2c 20 2b 20 35 32 20 41 53 20 63 6f 6c 30  l0, + 52 AS col0
1fb10 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1fb20 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 35 0d 0a 35  r0..----..115..5
1fb30 32 0d 0a 31 34 39 0d 0a 35 32 0d 0a 31 35 35 0d  2..149..52..155.
1fb40 0a 35 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .52....onlyif my
1fb50 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1fb60 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1fb70 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1fb80 36 39 38 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  698..SELECT + + 
1fb90 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
1fba0 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45 20  tab0 cor0 WHERE 
1fbb0 2d 20 63 6f 6c 31 20 2f 20 63 6f 6c 31 20 49 53  - col1 / col1 IS
1fbc0 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
1fbd0 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .3....skipif mys
1fbe0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1fbf0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1fc00 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 38 0d 0a  sort label-698..
1fc10 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f 55 4e 54  SELECT + + COUNT
1fc20 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30   ( * ) FROM tab0
1fc30 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20 63 6f   cor0 WHERE - co
1fc40 6c 31 20 2f 20 63 6f 6c 31 20 49 53 20 4e 4f 54  l1 / col1 IS NOT
1fc50 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   NULL..----..3..
1fc60 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1fc70 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1fc80 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1fc90 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 39 0d 0a  sort label-699..
1fca0 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
1fcb0 2a 20 29 20 2b 20 2b 20 2d 20 35 38 20 46 52 4f  * ) + + - 58 FRO
1fcc0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
1fcd0 2d 2d 2d 2d 0d 0a 2d 36 31 0d 0a 0d 0a 73 6b 69  ----..-61....ski
1fce0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1fcf0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1fd00 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1fd10 6c 2d 36 39 39 0d 0a 53 45 4c 45 43 54 20 2d 20  l-699..SELECT - 
1fd20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20  COUNT ( * ) + + 
1fd30 2d 20 35 38 20 46 52 4f 4d 20 74 61 62 31 20 41  - 58 FROM tab1 A
1fd40 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  S cor0..----..-6
1fd50 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
1fd60 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1fd70 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 2b 20 2d  TINCT + col1 + -
1fd80 20 38 36 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   86 AS col0 FROM
1fd90 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1fda0 2d 2d 2d 0d 0a 2d 35 0d 0a 2d 36 35 0d 0a 2d 38  ---..-5..-65..-8
1fdb0 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
1fdc0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
1fdd0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
1fde0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1fdf0 6c 61 62 65 6c 2d 37 30 31 0d 0a 53 45 4c 45 43  label-701..SELEC
1fe00 54 20 2b 20 2b 20 37 30 20 44 49 56 20 2b 20 63  T + + 70 DIV + c
1fe10 6f 6c 31 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 2b  ol1 + + + col2 +
1fe20 20 2b 20 28 20 2d 20 2d 20 63 6f 6c 31 20 29 20   + ( - - col1 ) 
1fe30 2a 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  * + + col0 AS co
1fe40 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
1fe50 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 36 32  cor0..----..1262
1fe60 0d 0a 31 38 34 30 0d 0a 32 36 36 0d 0a 0d 0a 73  ..1840..266....s
1fe70 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1fe80 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1fe90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1fea0 62 65 6c 2d 37 30 31 0d 0a 53 45 4c 45 43 54 20  bel-701..SELECT 
1feb0 2b 20 2b 20 37 30 20 2f 20 2b 20 63 6f 6c 31 20  + + 70 / + col1 
1fec0 2b 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 28  + + + col2 + + (
1fed0 20 2d 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2b 20   - - col1 ) * + 
1fee0 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46  + col0 AS col0 F
1fef0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1ff00 0d 0a 2d 2d 2d 2d 0d 0a 31 32 36 32 0d 0a 31 38  ..----..1262..18
1ff10 34 30 0d 0a 32 36 36 0d 0a 0d 0a 6f 6e 6c 79 69  40..266....onlyi
1ff20 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
1ff30 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
1ff40 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
1ff50 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 32 0d  wsort label-702.
1ff60 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20  .SELECT ALL - + 
1ff70 38 33 20 2d 20 2d 20 39 35 20 44 49 56 20 63 6f  83 - - 95 DIV co
1ff80 6c 32 20 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74  l2 * col0 FROM t
1ff90 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
1ffa0 2d 0d 0a 2d 38 33 0d 0a 32 0d 0a 38 0d 0a 0d 0a  -..-83..2..8....
1ffb0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1ffc0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1ffd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1ffe0 61 62 65 6c 2d 37 30 32 0d 0a 53 45 4c 45 43 54  abel-702..SELECT
1fff0 20 41 4c 4c 20 2d 20 2b 20 38 33 20 2d 20 2d 20   ALL - + 83 - - 
20000 39 35 20 2f 20 63 6f 6c 32 20 2a 20 63 6f 6c 30  95 / col2 * col0
20010 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
20020 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 33 0d 0a 32  r0..----..-83..2
20030 0d 0a 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..8....query I r
20040 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
20050 4c 4c 20 32 39 20 2d 20 2b 20 33 32 20 46 52 4f  LL 29 - + 32 FRO
20060 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab1..----..-3
20070 0d 0a 2d 33 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79  ..-3..-3....only
20080 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
20090 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
200a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
200b0 61 62 65 6c 2d 37 30 34 0d 0a 53 45 4c 45 43 54  abel-704..SELECT
200c0 20 41 4c 4c 20 2b 20 36 39 20 2b 20 53 55 4d 28   ALL + 69 + SUM(
200d0 20 2b 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63   + + col0 ) AS c
200e0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
200f0 2d 2d 2d 0d 0a 32 36 38 0d 0a 0d 0a 73 6b 69 70  ---..268....skip
20100 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
20110 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
20120 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
20130 2d 37 30 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -704..SELECT ALL
20140 20 2b 20 36 39 20 2b 20 53 55 4d 20 28 20 2b 20   + 69 + SUM ( + 
20150 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31  + col0 ) AS col1
20160 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
20170 0d 0a 32 36 38 0d 0a 0d 0a 71 75 65 72 79 20 49  ..268....query I
20180 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
20190 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
201a0 48 45 52 45 20 4e 55 4c 4c 20 42 45 54 57 45 45  HERE NULL BETWEE
201b0 4e 20 2d 20 32 38 20 41 4e 44 20 2d 20 63 6f 6c  N - 28 AND - col
201c0 31 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  1 + col1..----..
201d0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
201e0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
201f0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
20200 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 36 0d 0a  sort label-706..
20210 53 45 4c 45 43 54 20 28 20 2d 20 43 4f 55 4e 54  SELECT ( - COUNT
20220 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 32 20  ( * ) ) AS col2 
20230 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
20240 2d 20 34 36 20 4e 4f 54 20 42 45 54 57 45 45 4e  - 46 NOT BETWEEN
20250 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a   NULL AND NULL..
20260 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  ----..0....skipi
20270 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
20280 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
20290 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
202a0 37 30 36 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20  706..SELECT ( - 
202b0 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 41 53  COUNT ( * ) ) AS
202c0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
202d0 57 48 45 52 45 20 2d 20 34 36 20 4e 4f 54 20 42  WHERE - 46 NOT B
202e0 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
202f0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  NULL..----..0...
20300 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
20310 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
20320 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
20330 6f 72 74 20 6c 61 62 65 6c 2d 37 30 37 0d 0a 53  ort label-707..S
20340 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 31  ELECT DISTINCT 1
20350 34 20 2d 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a  4 - - - COUNT( *
20360 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
20370 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 0d 0a 0d 0a 73  0..----..11....s
20380 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
20390 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b  t compatible..sk
203a0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
203b0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
203c0 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
203d0 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
203e0 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
203f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 37  owsort label-707
20400 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
20410 54 20 31 34 20 2d 20 2d 20 2d 20 43 4f 55 4e 54  T 14 - - - COUNT
20420 20 28 20 2a 20 29 20 63 6f 6c 31 20 46 52 4f 4d   ( * ) col1 FROM
20430 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 0d   tab0..----..11.
20440 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
20450 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
20460 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
20470 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
20480 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
20490 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
204a0 45 43 54 20 2d 20 36 37 20 63 6f 6c 32 20 46 52  ECT - 67 col2 FR
204b0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 63 6f  OM tab2 WHERE co
204c0 6c 30 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  l0 < NULL..----.
204d0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
204e0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
204f0 32 20 2a 20 28 20 63 6f 6c 32 20 29 20 2a 20 2b  2 * ( col2 ) * +
20500 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
20510 0a 2d 2d 2d 2d 0d 0a 2d 33 33 31 33 35 0d 0a 2d  .----..-33135..-
20520 38 37 30 30 0d 0a 2d 39 35 30 36 39 37 0d 0a 0d  8700..-950697...
20530 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20540 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
20550 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ol2 AS col1 FROM
20560 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
20570 28 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20  ( col1 + + col2 
20580 2b 20 2d 20 63 6f 6c 30 20 29 20 49 53 20 4e 55  + - col0 ) IS NU
20590 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d  LL..----..-59..-
205a0 36 38 0d 0a 2d 39 36 0d 0a 0d 0a 71 75 65 72 79  68..-96....query
205b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
205c0 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2d 20  CT ALL + col2 - 
205d0 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  + col2 AS col1 F
205e0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
205f0 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  0..0..0....onlyi
20600 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
20610 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
20620 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
20630 62 65 6c 2d 37 31 32 0d 0a 53 45 4c 45 43 54 20  bel-712..SELECT 
20640 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54  DISTINCT + COUNT
20650 28 20 44 49 53 54 49 4e 43 54 20 37 31 20 29 20  ( DISTINCT 71 ) 
20660 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
20670 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b  0..----..1....sk
20680 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
20690 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
206a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
206b0 65 6c 2d 37 31 32 0d 0a 53 45 4c 45 43 54 20 44  el-712..SELECT D
206c0 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20  ISTINCT + COUNT 
206d0 28 20 44 49 53 54 49 4e 43 54 20 37 31 20 29 20  ( DISTINCT 71 ) 
206e0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
206f0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 6f 6e  0..----..1....on
20700 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
20710 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
20720 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20730 20 6c 61 62 65 6c 2d 37 31 33 0d 0a 53 45 4c 45   label-713..SELE
20740 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f  CT DISTINCT + CO
20750 55 4e 54 28 20 2b 20 63 6f 6c 30 20 29 20 41 53  UNT( + col0 ) AS
20760 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
20770 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
20780 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
20790 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
207a0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
207b0 72 74 20 6c 61 62 65 6c 2d 37 31 33 0d 0a 53 45  rt label-713..SE
207c0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
207d0 43 4f 55 4e 54 20 28 20 2b 20 63 6f 6c 30 20 29  COUNT ( + col0 )
207e0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
207f0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
20800 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..3....onlyif my
20810 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
20820 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
20830 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
20840 37 31 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  714..SELECT ALL 
20850 2d 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20  - MAX( DISTINCT 
20860 2d 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63 6f  - - col0 ) AS co
20870 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
20880 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 37 0d  cor0..----..-97.
20890 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
208a0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
208b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
208c0 74 20 6c 61 62 65 6c 2d 37 31 34 0d 0a 53 45 4c  t label-714..SEL
208d0 45 43 54 20 41 4c 4c 20 2d 20 4d 41 58 20 28 20  ECT ALL - MAX ( 
208e0 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c  DISTINCT - - col
208f0 30 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  0 ) AS col1 FROM
20900 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
20910 2d 2d 2d 0d 0a 2d 39 37 0d 0a 0d 0a 6f 6e 6c 79  ---..-97....only
20920 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
20930 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
20940 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
20950 61 62 65 6c 2d 37 31 35 0d 0a 53 45 4c 45 43 54  abel-715..SELECT
20960 20 41 4c 4c 20 28 20 2b 20 2b 20 33 38 20 29 20   ALL ( + + 38 ) 
20970 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  * + COUNT( * ) F
20980 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
20990 31 31 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  114....skipif my
209a0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
209b0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
209c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 31 35 0d  wsort label-715.
209d0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20  .SELECT ALL ( + 
209e0 2b 20 33 38 20 29 20 2a 20 2b 20 43 4f 55 4e 54  + 38 ) * + COUNT
209f0 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30   ( * ) FROM tab0
20a00 0d 0a 2d 2d 2d 2d 0d 0a 31 31 34 0d 0a 0d 0a 6f  ..----..114....o
20a10 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
20a20 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
20a30 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
20a40 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
20a50 37 31 36 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  716..SELECT + + 
20a60 63 6f 6c 30 20 2b 20 28 20 2b 20 34 31 20 29 20  col0 + ( + 41 ) 
20a70 2f 20 2d 20 63 6f 6c 31 20 63 6f 6c 30 20 46 52  / - col1 col0 FR
20a80 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
20a90 54 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 2b 20 63  T + col0 + + + c
20aa0 6f 6c 32 20 3e 20 2b 20 39 32 20 2f 20 2b 20 2b  ol2 > + 92 / + +
20ab0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
20ac0 49 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d  IGNED )..----...
20ad0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
20ae0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
20af0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
20b00 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
20b10 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
20b20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
20b30 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
20b40 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
20b50 31 36 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63  16..SELECT + + c
20b60 6f 6c 30 20 2b 20 28 20 2b 20 34 31 20 29 20 2f  ol0 + ( + 41 ) /
20b70 20 2d 20 63 6f 6c 31 20 63 6f 6c 30 20 46 52 4f   - col1 col0 FRO
20b80 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
20b90 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 2b 20 63 6f   + col0 + + + co
20ba0 6c 32 20 3e 20 2b 20 39 32 20 2f 20 2b 20 2b 20  l2 > + 92 / + + 
20bb0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
20bc0 4e 54 45 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a  NTEGER )..----..
20bd0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
20be0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
20bf0 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67  x: DIV for integ
20c00 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
20c10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
20c20 61 62 65 6c 2d 37 31 37 0d 0a 53 45 4c 45 43 54  abel-717..SELECT
20c30 20 44 49 53 54 49 4e 43 54 20 34 37 20 44 49 56   DISTINCT 47 DIV
20c40 20 2b 20 28 20 2b 20 4d 49 4e 28 20 2b 20 31 33   + ( + MIN( + 13
20c50 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a   ) ) FROM tab2..
20c60 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ----..3....skipi
20c70 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
20c80 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
20c90 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
20ca0 37 31 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  717..SELECT DIST
20cb0 49 4e 43 54 20 34 37 20 2f 20 2b 20 28 20 2b 20  INCT 47 / + ( + 
20cc0 4d 49 4e 20 28 20 2b 20 31 33 20 29 20 29 20 46  MIN ( + 13 ) ) F
20cd0 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
20ce0 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
20cf0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28  sort..SELECT - (
20d00 20 2d 20 2d 20 63 6f 6c 32 20 29 20 2b 20 2b 20   - - col2 ) + + 
20d10 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 31 20 46 52  col1 * - col1 FR
20d20 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
20d30 54 20 2b 20 2b 20 63 6f 6c 31 20 2f 20 2b 20 63  T + + col1 / + c
20d40 6f 6c 32 20 2a 20 63 6f 6c 31 20 49 4e 20 28 20  ol2 * col1 IN ( 
20d50 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a  - col2 )..----..
20d60 2d 31 30 30 0d 0a 2d 34 35 31 0d 0a 2d 36 36 30  -100..-451..-660
20d70 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  8....query I row
20d80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63  sort..SELECT + c
20d90 6f 6c 32 20 2a 20 28 20 2b 20 63 6f 6c 31 20 29  ol2 * ( + col1 )
20da0 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
20db0 0a 2d 2d 2d 2d 0d 0a 31 33 34 34 0d 0a 32 39 35  .----..1344..295
20dc0 0d 0a 33 31 39 36 0d 0a 0d 0a 71 75 65 72 79 20  ..3196....query 
20dd0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
20de0 54 20 2b 20 28 20 2b 20 37 30 20 29 20 41 53 20  T + ( + 70 ) AS 
20df0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
20e00 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 30  S cor0..----..70
20e10 0d 0a 37 30 0d 0a 37 30 0d 0a 0d 0a 71 75 65 72  ..70..70....quer
20e20 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
20e30 4c 45 43 54 20 2b 20 2b 20 33 37 20 41 53 20 63  LECT + + 37 AS c
20e40 6f 6c 32 2c 20 2b 20 63 6f 6c 31 20 41 53 20 63  ol2, + col1 AS c
20e50 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
20e60 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d   cor0..----..37.
20e70 0a 31 34 0d 0a 33 37 0d 0a 34 37 0d 0a 33 37 0d  .14..37..47..37.
20e80 0a 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  .5....query II r
20e90 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
20ea0 20 33 38 20 41 53 20 63 6f 6c 32 2c 20 33 20 46   38 AS col2, 3 F
20eb0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
20ec0 0d 0a 2d 2d 2d 2d 0d 0a 33 38 0d 0a 33 0d 0a 33  ..----..38..3..3
20ed0 38 0d 0a 33 0d 0a 33 38 0d 0a 33 0d 0a 0d 0a 71  8..3..38..3....q
20ee0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
20ef0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
20f00 20 2d 20 37 32 2c 20 2d 20 63 6f 6c 31 20 41 53   - 72, - col1 AS
20f10 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
20f20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
20f30 37 32 0d 0a 2d 31 34 0d 0a 2d 37 32 0d 0a 2d 34  72..-14..-72..-4
20f40 37 0d 0a 2d 37 32 0d 0a 2d 35 0d 0a 0d 0a 71 75  7..-72..-5....qu
20f50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
20f60 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
20f70 20 36 35 20 46 52 4f 4d 20 74 61 62 32 20 41 53   65 FROM tab2 AS
20f80 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55   cor0 WHERE ( NU
20f90 4c 4c 20 29 20 4e 4f 54 20 42 45 54 57 45 45 4e  LL ) NOT BETWEEN
20fa0 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 2b 20 39 33   NULL AND + + 93
20fb0 20 2b 20 2d 20 32 37 20 2a 20 2b 20 2b 20 35 37   + - 27 * + + 57
20fc0 20 2a 20 2b 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d   * + - col2..---
20fd0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
20fe0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
20ff0 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 31 20 2b  TINCT - - col1 +
21000 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 41   col0 * - col1 A
21010 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
21020 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32   cor0..----..-22
21030 39 35 0d 0a 2d 34 38 35 31 0d 0a 2d 34 39 35 38  95..-4851..-4958
21040 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
21050 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
21060 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
21070 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
21080 61 62 65 6c 2d 37 32 36 0d 0a 53 45 4c 45 43 54  abel-726..SELECT
21090 20 41 4c 4c 20 2b 20 31 36 20 2a 20 43 41 53 54   ALL + 16 * CAST
210a0 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
210b0 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
210c0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
210d0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
210e0 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....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 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
21110 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
21120 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
21130 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
21140 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
21150 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
21160 65 6c 2d 37 32 36 0d 0a 53 45 4c 45 43 54 20 41  el-726..SELECT A
21170 4c 4c 20 2b 20 31 36 20 2a 20 43 41 53 54 20 28  LL + 16 * CAST (
21180 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
21190 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
211a0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
211b0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
211c0 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
211d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  sort..SELECT + +
211e0 20 28 20 2d 20 63 6f 6c 32 20 29 20 2a 20 2d 20   ( - col2 ) * - 
211f0 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  col0 AS col0 FRO
21200 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
21210 2d 2d 2d 2d 0d 0a 31 30 35 38 0d 0a 32 35 36 30  ----..1058..2560
21220 0d 0a 34 33 35 30 0d 0a 0d 0a 71 75 65 72 79 20  ..4350....query 
21230 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
21240 54 20 41 4c 4c 20 63 6f 6c 31 20 2b 20 2b 20 2b  T ALL col1 + + +
21250 20 38 36 20 46 52 4f 4d 20 74 61 62 31 20 63 6f   86 FROM tab1 co
21260 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 0d 0a 31  r0..----..100..1
21270 33 33 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  33..91....onlyif
21280 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
21290 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
212a0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
212b0 73 6f 72 74 20 6c 61 62 65 6c 2d 37 32 39 0d 0a  sort label-729..
212c0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 37 37 20  SELECT ALL + 77 
212d0 44 49 56 20 28 20 2b 20 63 6f 6c 30 20 29 20 46  DIV ( + col0 ) F
212e0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
212f0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 35 0d  ..----..0..0..5.
21300 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
21310 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
21320 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21330 74 20 6c 61 62 65 6c 2d 37 32 39 0d 0a 53 45 4c  t label-729..SEL
21340 45 43 54 20 41 4c 4c 20 2b 20 37 37 20 2f 20 28  ECT ALL + 77 / (
21350 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   + col0 ) FROM t
21360 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
21370 2d 0d 0a 30 0d 0a 30 0d 0a 35 0d 0a 0d 0a 6f 6e  -..0..0..5....on
21380 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
21390 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
213a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
213b0 20 6c 61 62 65 6c 2d 37 33 30 0d 0a 53 45 4c 45   label-730..SELE
213c0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 4d 49  CT DISTINCT + MI
213d0 4e 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  N( DISTINCT col1
213e0 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a 20   ) * - COUNT( * 
213f0 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  ) FROM tab0..---
21400 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-3....skipif 
21410 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
21420 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
21430 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33  rowsort label-73
21440 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
21450 43 54 20 2b 20 4d 49 4e 20 28 20 44 49 53 54 49  CT + MIN ( DISTI
21460 4e 43 54 20 63 6f 6c 31 20 29 20 2a 20 2d 20 43  NCT col1 ) * - C
21470 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
21480 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  tab0..----..-3..
21490 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
214a0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
214b0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
214c0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
214d0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
214e0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
214f0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 34 36  CT DISTINCT + 46
21500 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
21510 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 4f 54 20  WHERE NOT ( NOT 
21520 33 36 20 2a 20 2b 20 2d 20 63 6f 6c 31 20 49 4e  36 * + - col1 IN
21530 20 28 20 2d 20 2d 20 35 34 20 29 20 29 0d 0a 2d   ( - - 54 ) )..-
21540 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
21550 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
21560 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
21570 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21580 74 20 6c 61 62 65 6c 2d 37 33 32 0d 0a 53 45 4c  t label-732..SEL
21590 45 43 54 20 2b 20 43 41 53 54 28 20 63 6f 6c 30  ECT + CAST( col0
215a0 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2b   AS SIGNED ) * +
215b0 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 2b 20 2b   col2 * col1 + +
215c0 20 2d 20 33 30 20 46 52 4f 4d 20 74 61 62 32 0d   - 30 FROM tab2.
215d0 0a 2d 2d 2d 2d 0d 0a 31 39 37 30 39 30 0d 0a 32  .----..197090..2
215e0 39 31 34 32 30 0d 0a 35 33 39 32 38 0d 0a 0d 0a  91420..53928....
215f0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
21600 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
21610 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
21620 61 62 65 6c 2d 37 33 32 0d 0a 53 45 4c 45 43 54  abel-732..SELECT
21630 20 2b 20 43 41 53 54 20 28 20 63 6f 6c 30 20 41   + CAST ( col0 A
21640 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b 20  S INTEGER ) * + 
21650 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 2b 20 2b 20  col2 * col1 + + 
21660 2d 20 33 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  - 30 FROM tab2..
21670 2d 2d 2d 2d 0d 0a 31 39 37 30 39 30 0d 0a 32 39  ----..197090..29
21680 31 34 32 30 0d 0a 35 33 39 32 38 0d 0a 0d 0a 6f  1420..53928....o
21690 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
216a0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
216b0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
216c0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
216d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
216e0 6c 2d 37 33 33 0d 0a 53 45 4c 45 43 54 20 34 37  l-733..SELECT 47
216f0 20 44 49 56 20 43 4f 55 4e 54 28 20 2a 20 29 20   DIV COUNT( * ) 
21700 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  * COUNT( * ) FRO
21710 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35  M tab2..----..45
21720 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
21730 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
21740 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
21750 72 74 20 6c 61 62 65 6c 2d 37 33 33 0d 0a 53 45  rt label-733..SE
21760 4c 45 43 54 20 34 37 20 2f 20 43 4f 55 4e 54 20  LECT 47 / COUNT 
21770 28 20 2a 20 29 20 2a 20 43 4f 55 4e 54 20 28 20  ( * ) * COUNT ( 
21780 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  * ) FROM tab2..-
21790 2d 2d 2d 0d 0a 34 35 0d 0a 0d 0a 71 75 65 72 79  ---..45....query
217a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
217b0 43 54 20 2b 20 37 34 20 41 53 20 63 6f 6c 32 20  CT + 74 AS col2 
217c0 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
217d0 4e 4f 54 20 28 20 2b 20 33 20 29 20 49 53 20 4e  NOT ( + 3 ) IS N
217e0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 37 34 0d 0a 37  ULL..----..74..7
217f0 34 0d 0a 37 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  4..74....onlyif 
21800 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
21810 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f  e syntax: DIV fo
21820 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
21830 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
21840 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 35 0d  wsort label-735.
21850 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
21860 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20   - COUNT( * ) + 
21870 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56  + COUNT( * ) DIV
21880 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20   + + COUNT( * ) 
21890 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
218a0 2d 2d 2d 2d 0d 0a 2d 32 0d 0a 0d 0a 73 6b 69 70  ----..-2....skip
218b0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
218c0 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
218d0 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
218e0 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
218f0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
21900 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
21910 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
21920 6f 72 74 20 6c 61 62 65 6c 2d 37 33 35 0d 0a 53  ort label-735..S
21930 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
21940 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2b   COUNT ( * ) + +
21950 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20 2b   COUNT ( * ) / +
21960 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 63   + COUNT ( * ) c
21970 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
21980 2d 2d 2d 0d 0a 2d 32 0d 0a 0d 0a 71 75 65 72 79  ---..-2....query
21990 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
219a0 43 54 20 44 49 53 54 49 4e 43 54 20 39 34 20 2b  CT DISTINCT 94 +
219b0 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20   + col0 AS col1 
219c0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
219d0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 39 0d 0a 31 38  0..----..109..18
219e0 31 0d 0a 31 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  1..191....onlyif
219f0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
21a00 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
21a10 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
21a20 65 6c 2d 37 33 37 0d 0a 53 45 4c 45 43 54 20 2d  el-737..SELECT -
21a30 20 2b 20 43 4f 55 4e 54 28 20 44 49 53 54 49 4e   + COUNT( DISTIN
21a40 43 54 20 2d 20 63 6f 6c 30 20 29 20 2b 20 2d 20  CT - col0 ) + - 
21a50 2d 20 36 32 20 2b 20 2b 20 35 36 20 41 53 20 63  - 62 + + 56 AS c
21a60 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
21a70 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 35   cor0..----..115
21a80 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
21a90 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
21aa0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
21ab0 72 74 20 6c 61 62 65 6c 2d 37 33 37 0d 0a 53 45  rt label-737..SE
21ac0 4c 45 43 54 20 2d 20 2b 20 43 4f 55 4e 54 20 28  LECT - + COUNT (
21ad0 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30   DISTINCT - col0
21ae0 20 29 20 2b 20 2d 20 2d 20 36 32 20 2b 20 2b 20   ) + - - 62 + + 
21af0 35 36 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  56 AS col0 FROM 
21b00 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
21b10 2d 2d 0d 0a 31 31 35 0d 0a 0d 0a 6f 6e 6c 79 69  --..115....onlyi
21b20 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
21b30 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
21b40 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
21b50 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 38 0d  wsort label-738.
21b60 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2b 20 28  .SELECT col2 + (
21b70 20 2b 20 28 20 2d 20 33 31 20 29 20 29 20 2d 20   + ( - 31 ) ) - 
21b80 2d 20 2d 20 33 39 20 44 49 56 20 2d 20 63 6f 6c  - - 39 DIV - col
21b90 30 20 2a 20 63 6f 6c 32 20 2b 20 28 20 37 39 20  0 * col2 + ( 79 
21ba0 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
21bb0 2d 0d 0a 31 30 37 0d 0a 31 31 36 0d 0a 31 34 34  -..107..116..144
21bc0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
21bd0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
21be0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
21bf0 72 74 20 6c 61 62 65 6c 2d 37 33 38 0d 0a 53 45  rt label-738..SE
21c00 4c 45 43 54 20 63 6f 6c 32 20 2b 20 28 20 2b 20  LECT col2 + ( + 
21c10 28 20 2d 20 33 31 20 29 20 29 20 2d 20 2d 20 2d  ( - 31 ) ) - - -
21c20 20 33 39 20 2f 20 2d 20 63 6f 6c 30 20 2a 20 63   39 / - col0 * c
21c30 6f 6c 32 20 2b 20 28 20 37 39 20 29 20 46 52 4f  ol2 + ( 79 ) FRO
21c40 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab1..----..10
21c50 37 0d 0a 31 31 36 0d 0a 31 34 34 0d 0a 0d 0a 71  7..116..144....q
21c60 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
21c70 0a 53 45 4c 45 43 54 20 2b 20 2d 20 63 6f 6c 31  .SELECT + - col1
21c80 2c 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  , - col1 AS col0
21c90 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
21ca0 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d   NULL IS NULL..-
21cb0 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 32 31  ---..-1..-1..-21
21cc0 0d 0a 2d 32 31 0d 0a 2d 38 31 0d 0a 2d 38 31 0d  ..-21..-81..-81.
21cd0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
21ce0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
21cf0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
21d00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 30 0d  wsort label-740.
21d10 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d 41  .SELECT ALL + MA
21d20 58 28 20 36 30 20 29 20 41 53 20 63 6f 6c 32 20  X( 60 ) AS col2 
21d30 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
21d40 0a 36 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .60....skipif my
21d50 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
21d60 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
21d70 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 30 0d  wsort label-740.
21d80 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d 41  .SELECT ALL + MA
21d90 58 20 28 20 36 30 20 29 20 41 53 20 63 6f 6c 32  X ( 60 ) AS col2
21da0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
21db0 0d 0a 36 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..60....query I 
21dc0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
21dd0 41 4c 4c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ALL col0 FROM ta
21de0 62 30 20 57 48 45 52 45 20 2d 20 2b 20 63 6f 6c  b0 WHERE - + col
21df0 30 20 2b 20 63 6f 6c 31 20 42 45 54 57 45 45 4e  0 + col1 BETWEEN
21e00 20 4e 55 4c 4c 20 41 4e 44 20 2d 20 2d 20 63 6f   NULL AND - - co
21e10 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  l1..----....only
21e20 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
21e30 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
21e40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
21e50 61 62 65 6c 2d 37 34 32 0d 0a 53 45 4c 45 43 54  abel-742..SELECT
21e60 20 44 49 53 54 49 4e 43 54 20 2d 20 53 55 4d 28   DISTINCT - SUM(
21e70 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 30 20 29 20   ALL + - col0 ) 
21e80 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
21e90 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 39 0d 0a 0d 0a  0..----..199....
21ea0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
21eb0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
21ec0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
21ed0 61 62 65 6c 2d 37 34 32 0d 0a 53 45 4c 45 43 54  abel-742..SELECT
21ee0 20 44 49 53 54 49 4e 43 54 20 2d 20 53 55 4d 20   DISTINCT - SUM 
21ef0 28 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 30 20 29  ( ALL + - col0 )
21f00 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
21f10 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 39 0d 0a 0d  r0..----..199...
21f20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
21f30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
21f40 54 20 2d 20 2d 20 39 30 20 2b 20 2d 20 2d 20 31  T - - 90 + - - 1
21f50 39 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  9 FROM tab2 cor0
21f60 0d 0a 2d 2d 2d 2d 0d 0a 31 30 39 0d 0a 0d 0a 71  ..----..109....q
21f70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
21f80 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
21f90 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32 20 41 53  col0 + + col2 AS
21fa0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
21fb0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
21fc0 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
21fd0 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ----....skipif p
21fe0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
21ff0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
22000 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
22010 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
22020 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
22030 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
22040 43 54 20 63 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f  CT col1 * - - co
22050 6c 30 20 63 6f 6c 32 2c 20 28 20 2b 20 2d 20 63  l0 col2, ( + - c
22060 6f 6c 31 20 29 20 2a 20 63 6f 6c 30 20 46 52 4f  ol1 ) * col0 FRO
22070 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
22080 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45  HERE NOT NULL BE
22090 54 57 45 45 4e 20 28 20 4e 55 4c 4c 20 29 20 41  TWEEN ( NULL ) A
220a0 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  ND NULL..----...
220b0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
220c0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
220d0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
220e0 63 6f 72 30 20 57 48 45 52 45 20 28 20 63 6f 6c  cor0 WHERE ( col
220f0 32 20 2b 20 2b 20 31 35 20 29 20 49 53 20 4e 55  2 + + 15 ) IS NU
22100 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
22110 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
22120 45 43 54 20 63 6f 6c 32 20 2d 20 2d 20 63 6f 6c  ECT col2 - - col
22130 31 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 2b  1 + - col0 + + +
22140 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d   col2 FROM tab1.
22150 0a 2d 2d 2d 2d 0d 0a 31 35 35 0d 0a 33 38 0d 0a  .----..155..38..
22160 39 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  92....onlyif mys
22170 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
22180 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69  yntax: DIV for i
22190 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
221a0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
221b0 72 74 20 6c 61 62 65 6c 2d 37 34 38 0d 0a 53 45  rt label-748..SE
221c0 4c 45 43 54 20 2b 20 4d 49 4e 28 20 37 34 20 29  LECT + MIN( 74 )
221d0 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20   + + COUNT( * ) 
221e0 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 44  + - COUNT( * ) D
221f0 49 56 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53  IV COUNT( * ) AS
22200 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d   col1 FROM tab0.
22210 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 0d 0a 73 6b 69  .----..76....ski
22220 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
22230 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
22240 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
22250 6c 2d 37 34 38 0d 0a 53 45 4c 45 43 54 20 2b 20  l-748..SELECT + 
22260 4d 49 4e 20 28 20 37 34 20 29 20 2b 20 2b 20 43  MIN ( 74 ) + + C
22270 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20 43  OUNT ( * ) + - C
22280 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20 43 4f 55  OUNT ( * ) / COU
22290 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  NT ( * ) AS col1
222a0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
222b0 0d 0a 37 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..76....onlyif m
222c0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
222d0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
222e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
222f0 2d 37 34 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  -749..SELECT DIS
22300 54 49 4e 43 54 20 31 37 20 2a 20 2d 20 43 4f 55  TINCT 17 * - COU
22310 4e 54 28 20 2a 20 29 20 2b 20 2b 20 43 4f 55 4e  NT( * ) + + COUN
22320 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46  T( * ) AS col2 F
22330 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
22340 2d 34 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -48....skipif my
22350 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
22360 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
22370 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 39 0d  wsort label-749.
22380 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
22390 20 31 37 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20   17 * - COUNT ( 
223a0 2a 20 29 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20  * ) + + COUNT ( 
223b0 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
223c0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38   tab1..----..-48
223d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
223e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
223f0 63 6f 6c 30 20 2d 20 2b 20 2d 20 63 6f 6c 30 20  col0 - + - col0 
22400 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
22410 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 34 0d 0a 31 39  0..----..174..19
22420 34 0d 0a 33 30 0d 0a 0d 0a 71 75 65 72 79 20 49  4..30....query I
22430 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
22440 20 41 4c 4c 20 2b 20 28 20 2b 20 63 6f 6c 30 20   ALL + ( + col0 
22450 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
22460 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38  ab0..----..15..8
22470 37 0d 0a 39 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  7..97....onlyif 
22480 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
22490 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
224a0 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
224b0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 32 0d  wsort label-752.
224c0 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
224d0 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  ab1 WHERE NOT NU
224e0 4c 4c 20 49 4e 20 28 20 63 6f 6c 30 20 2a 20 36  LL IN ( col0 * 6
224f0 37 2c 20 31 31 2c 20 2d 20 63 6f 6c 32 20 2b 20  7, 11, - col2 + 
22500 63 6f 6c 32 20 2b 20 63 6f 6c 32 20 2a 20 2d 20  col2 + col2 * - 
22510 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
22520 47 4e 45 44 20 29 20 2a 20 2b 20 28 20 37 33 20  GNED ) * + ( 73 
22530 29 20 2a 20 2b 20 63 6f 6c 30 20 2f 20 2b 20 2d  ) * + col0 / + -
22540 20 63 6f 6c 30 20 2f 20 2d 20 2b 20 28 20 2d 20   col0 / - + ( - 
22550 63 6f 6c 30 20 29 20 2b 20 63 6f 6c 30 20 29 0d  col0 ) + col0 ).
22560 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
22570 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
22580 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
22590 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
225a0 37 35 32 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  752..SELECT * FR
225b0 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
225c0 54 20 4e 55 4c 4c 20 49 4e 20 28 20 63 6f 6c 30  T NULL IN ( col0
225d0 20 2a 20 36 37 2c 20 31 31 2c 20 2d 20 63 6f 6c   * 67, 11, - col
225e0 32 20 2b 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 20  2 + col2 + col2 
225f0 2a 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  * - CAST ( NULL 
22600 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b  AS INTEGER ) * +
22610 20 28 20 37 33 20 29 20 2a 20 2b 20 63 6f 6c 30   ( 73 ) * + col0
22620 20 2f 20 2b 20 2d 20 63 6f 6c 30 20 2f 20 2d 20   / + - col0 / - 
22630 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20 2b 20 63  + ( - col0 ) + c
22640 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ol0 )..----....q
22650 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
22660 53 45 4c 45 43 54 20 38 38 20 2a 20 2b 20 2d 20  SELECT 88 * + - 
22670 63 6f 6c 32 20 2d 20 63 6f 6c 32 20 46 52 4f 4d  col2 - col2 FROM
22680 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
22690 2d 2d 2d 0d 0a 2d 34 31 38 33 0d 0a 2d 38 38 31  ---..-4183..-881
226a0 31 0d 0a 2d 38 39 30 0d 0a 0d 0a 71 75 65 72 79  1..-890....query
226b0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
226c0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
226d0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
226e0 4f 54 20 4e 55 4c 4c 20 3c 3d 20 37 35 0d 0a 2d  OT NULL <= 75..-
226f0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
22700 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
22710 4c 4c 20 2d 20 33 30 20 2a 20 2d 20 37 39 20 2a  LL - 30 * - 79 *
22720 20 2d 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74   - - col0 FROM t
22730 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 36 31 39  ab0..----..20619
22740 30 0d 0a 32 32 39 38 39 30 0d 0a 33 35 35 35 30  0..229890..35550
22750 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
22760 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
22770 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
22780 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 36  owsort label-756
22790 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
227a0 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b  T COUNT( * ) * +
227b0 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20   COUNT( * ) * + 
227c0 36 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  67 AS col1 FROM 
227d0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 36 30 33 0d  tab2..----..603.
227e0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
227f0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
22800 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
22810 74 20 6c 61 62 65 6c 2d 37 35 36 0d 0a 53 45 4c  t label-756..SEL
22820 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55  ECT DISTINCT COU
22830 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55  NT ( * ) * + COU
22840 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 36 37 20  NT ( * ) * + 67 
22850 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
22860 32 0d 0a 2d 2d 2d 2d 0d 0a 36 30 33 0d 0a 0d 0a  2..----..603....
22870 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
22880 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
22890 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
228a0 72 74 20 6c 61 62 65 6c 2d 37 35 37 0d 0a 53 45  rt label-757..SE
228b0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
228c0 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  - COUNT( * ) AS 
228d0 63 6f 6c 32 20 46 52 4f 4d 20 28 20 74 61 62 31  col2 FROM ( tab1
228e0 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
228f0 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31  OIN tab1 AS cor1
22900 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a   )..----..-9....
22910 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
22920 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
22930 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
22940 61 62 65 6c 2d 37 35 37 0d 0a 53 45 4c 45 43 54  abel-757..SELECT
22950 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 43 4f   DISTINCT + - CO
22960 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
22970 32 20 46 52 4f 4d 20 28 20 74 61 62 31 20 41 53  2 FROM ( tab1 AS
22980 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
22990 20 74 61 62 31 20 41 53 20 63 6f 72 31 20 29 0d   tab1 AS cor1 ).
229a0 0a 2d 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 71 75 65  .----..-9....que
229b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
229c0 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2a 20 2b 20  LECT + col1 * + 
229d0 2b 20 36 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f  + 6 + - col0 FRO
229e0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
229f0 2d 2d 2d 2d 0d 0a 32 36 30 0d 0a 33 32 37 0d 0a  ----..260..327..
22a00 33 39 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  398....query I r
22a10 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
22a20 20 2b 20 34 35 20 2b 20 2d 20 36 38 20 41 53 20   + 45 + - 68 AS 
22a30 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63  col1 FROM tab1 c
22a40 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20  or0 WHERE NOT + 
22a50 36 37 20 2a 20 2b 20 63 6f 6c 30 20 3e 20 63 6f  67 * + col0 > co
22a60 6c 31 20 2b 20 2b 20 2d 20 39 31 0d 0a 2d 2d 2d  l1 + + - 91..---
22a70 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
22a80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
22a90 6f 6c 32 20 2a 20 63 6f 6c 31 20 2b 20 2d 20 63  ol2 * col1 + - c
22aa0 6f 6c 31 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f  ol1 * col2 AS co
22ab0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
22ac0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 38  cor0..----..-198
22ad0 0d 0a 2d 34 32 30 0d 0a 2d 37 36 31 34 0d 0a 0d  ..-420..-7614...
22ae0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
22af0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
22b00 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
22b10 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
22b20 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
22b30 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
22b40 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
22b50 6c 30 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 30 20  l0 col0, - col0 
22b60 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
22b70 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 2d 31 35  0..----..15..-15
22b80 0d 0a 38 37 0d 0a 2d 38 37 0d 0a 39 37 0d 0a 2d  ..87..-87..97..-
22b90 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  97....skipif pos
22ba0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
22bb0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
22bc0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
22bd0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
22be0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
22bf0 53 45 4c 45 43 54 20 2b 20 31 37 20 2a 20 2b 20  SELECT + 17 * + 
22c00 63 6f 6c 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74  col1 col2 FROM t
22c10 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
22c20 2d 0d 0a 31 33 37 37 0d 0a 31 37 0d 0a 33 35 37  -..1377..17..357
22c30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
22c40 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
22c50 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
22c60 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
22c70 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
22c80 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
22c90 4c 45 43 54 20 2d 20 2d 20 38 20 63 6f 6c 31 20  LECT - - 8 col1 
22ca0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
22cb0 30 0d 0a 2d 2d 2d 2d 0d 0a 38 0d 0a 38 0d 0a 38  0..----..8..8..8
22cc0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
22cd0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
22ce0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
22cf0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
22d00 61 62 65 6c 2d 37 36 34 0d 0a 53 45 4c 45 43 54  abel-764..SELECT
22d10 20 44 49 53 54 49 4e 43 54 20 39 37 20 44 49 56   DISTINCT 97 DIV
22d20 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
22d30 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
22d40 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
22d50 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
22d60 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
22d70 72 74 20 6c 61 62 65 6c 2d 37 36 34 0d 0a 53 45  rt label-764..SE
22d80 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 39 37  LECT DISTINCT 97
22d90 20 2f 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   / col2 FROM tab
22da0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
22db0 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .1....query I ro
22dc0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
22dd0 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 2a 20  STINCT - col1 * 
22de0 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20 41 53 20  ( + - col1 ) AS 
22df0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57  col1 FROM tab1 W
22e00 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53  HERE NOT NULL IS
22e10 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
22e20 0a 31 39 36 0d 0a 32 32 30 39 0d 0a 32 35 0d 0a  .196..2209..25..
22e30 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
22e40 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
22e50 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
22e60 45 20 4e 4f 54 20 28 20 2d 20 2d 20 63 6f 6c 32  E NOT ( - - col2
22e70 20 29 20 49 4e 20 28 20 63 6f 6c 32 20 29 0d 0a   ) IN ( col2 )..
22e80 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
22e90 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
22ea0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
22eb0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
22ec0 2d 37 36 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -767..SELECT DIS
22ed0 54 49 4e 43 54 20 2d 20 28 20 2b 20 28 20 2d 20  TINCT - ( + ( - 
22ee0 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 29  - COUNT( * ) ) )
22ef0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
22f00 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a  b1..----..-3....
22f10 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
22f20 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
22f30 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
22f40 61 62 65 6c 2d 37 36 37 0d 0a 53 45 4c 45 43 54  abel-767..SELECT
22f50 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2b 20   DISTINCT - ( + 
22f60 28 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  ( - - COUNT ( * 
22f70 29 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ) ) ) AS col1 FR
22f80 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
22f90 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  3....query III r
22fa0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
22fb0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
22fc0 72 30 20 57 48 45 52 45 20 35 35 20 3e 3d 20 4e  r0 WHERE 55 >= N
22fd0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
22fe0 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
22ff0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
23000 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
23010 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36  rowsort label-76
23020 39 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 44  9..SELECT col0 D
23030 49 56 20 2d 20 2d 20 63 6f 6c 31 20 41 53 20 63  IV - - col1 AS c
23040 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol0 FROM tab0 co
23050 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 34 0d 0a  r0..----..0..4..
23060 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  97....skipif mys
23070 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
23080 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
23090 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 39 0d 0a  sort label-769..
230a0 53 45 4c 45 43 54 20 63 6f 6c 30 20 2f 20 2d 20  SELECT col0 / - 
230b0 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46  - col1 AS col0 F
230c0 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d  ROM tab0 cor0..-
230d0 2d 2d 2d 0d 0a 30 0d 0a 34 0d 0a 39 37 0d 0a 0d  ---..0..4..97...
230e0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
230f0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
23100 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
23110 6f 72 74 20 6c 61 62 65 6c 2d 37 37 30 0d 0a 53  ort label-770..S
23120 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28  ELECT ALL COUNT(
23130 20 2a 20 29 20 2b 20 2d 20 2b 20 33 36 20 46 52   * ) + - + 36 FR
23140 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
23150 0a 2d 2d 2d 2d 0d 0a 2d 33 33 0d 0a 0d 0a 73 6b  .----..-33....sk
23160 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
23170 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
23180 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
23190 65 6c 2d 37 37 30 0d 0a 53 45 4c 45 43 54 20 41  el-770..SELECT A
231a0 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b  LL COUNT ( * ) +
231b0 20 2d 20 2b 20 33 36 20 46 52 4f 4d 20 74 61 62   - + 36 FROM tab
231c0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
231d0 0a 2d 33 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-33....query I 
231e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
231f0 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
23200 2b 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 2d 20 28  + - col0 + + - (
23210 20 63 6f 6c 31 20 29 20 2a 20 63 6f 6c 30 20 41   col1 ) * col0 A
23220 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
23230 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
23240 2d 34 34 35 39 0d 0a 2d 35 39 35 0d 0a 2d 38 31  -4459..-595..-81
23250 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
23260 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
23270 54 49 4e 43 54 20 2d 20 36 36 20 2a 20 2d 20 2d  TINCT - 66 * - -
23280 20 31 38 20 2b 20 2b 20 2b 20 63 6f 6c 31 20 41   18 + + + col1 A
23290 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
232a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
232b0 2d 31 31 30 37 0d 0a 2d 31 31 36 37 0d 0a 2d 31  -1107..-1167..-1
232c0 31 38 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  187....onlyif my
232d0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
232e0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
232f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
23300 37 37 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  773..SELECT ALL 
23310 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20 2b 20  MIN( DISTINCT + 
23320 32 30 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74  20 ) col1 FROM t
23330 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 0d 0a 0d  ab0..----..20...
23340 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
23350 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
23360 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
23370 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
23380 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
23390 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
233a0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
233b0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
233c0 37 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d  73..SELECT ALL M
233d0 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  IN ( DISTINCT + 
233e0 32 30 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74  20 ) col1 FROM t
233f0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 0d 0a 0d  ab0..----..20...
23400 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
23410 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
23420 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
23430 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 34 0d 0a  sort label-774..
23440 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20 43  SELECT ALL ( + C
23450 4f 55 4e 54 28 20 2a 20 29 20 29 2c 20 43 4f 55  OUNT( * ) ), COU
23460 4e 54 28 20 2a 20 29 20 2d 20 2d 20 2b 20 39 35  NT( * ) - - + 95
23470 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
23480 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 39 38 0d  b2..----..3..98.
23490 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
234a0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
234b0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
234c0 72 74 20 6c 61 62 65 6c 2d 37 37 34 0d 0a 53 45  rt label-774..SE
234d0 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20 43 4f 55  LECT ALL ( + COU
234e0 4e 54 20 28 20 2a 20 29 20 29 2c 20 43 4f 55 4e  NT ( * ) ), COUN
234f0 54 20 28 20 2a 20 29 20 2d 20 2d 20 2b 20 39 35  T ( * ) - - + 95
23500 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
23510 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 39 38 0d  b2..----..3..98.
23520 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
23530 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 32 38 20  rt..SELECT + 28 
23540 2b 20 2d 20 37 32 20 46 52 4f 4d 20 74 61 62 30  + - 72 FROM tab0
23550 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34   cor0..----..-44
23560 0d 0a 2d 34 34 0d 0a 2d 34 34 0d 0a 0d 0a 6f 6e  ..-44..-44....on
23570 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
23580 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
23590 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
235a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
235b0 37 37 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  776..SELECT ALL 
235c0 2d 20 34 34 20 2a 20 35 35 20 44 49 56 20 2b 20  - 44 * 55 DIV + 
235d0 35 34 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  54, col0 AS col0
235e0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
235f0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 31  r0..----..-44..1
23600 35 0d 0a 2d 34 34 0d 0a 38 37 0d 0a 2d 34 34 0d  5..-44..87..-44.
23610 0a 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .97....skipif my
23620 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
23630 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
23640 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 36  owsort label-776
23650 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34  ..SELECT ALL - 4
23660 34 20 2a 20 35 35 20 2f 20 2b 20 35 34 2c 20 63  4 * 55 / + 54, c
23670 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
23680 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
23690 2d 2d 2d 0d 0a 2d 34 34 0d 0a 31 35 0d 0a 2d 34  ---..-44..15..-4
236a0 34 0d 0a 38 37 0d 0a 2d 34 34 0d 0a 39 37 0d 0a  4..87..-44..97..
236b0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
236c0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
236d0 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67  x: DIV for integ
236e0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
236f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
23700 61 62 65 6c 2d 37 37 37 0d 0a 53 45 4c 45 43 54  abel-777..SELECT
23710 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49   + COUNT( * ) DI
23720 56 20 28 20 2d 20 2d 20 32 37 20 29 20 2b 20 2b  V ( - - 27 ) + +
23730 20 2b 20 31 20 41 53 20 63 6f 6c 32 20 46 52 4f   + 1 AS col2 FRO
23740 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
23750 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69  ----..1....skipi
23760 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
23770 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
23780 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
23790 37 37 37 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  777..SELECT + CO
237a0 55 4e 54 20 28 20 2a 20 29 20 2f 20 28 20 2d 20  UNT ( * ) / ( - 
237b0 2d 20 32 37 20 29 20 2b 20 2b 20 2b 20 31 20 41  - 27 ) + + + 1 A
237c0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
237d0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
237e0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
237f0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d  sort..SELECT + -
23800 20 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 2d 20 63   col1 + col2 - c
23810 6f 6c 32 20 2b 20 2b 20 2d 20 63 6f 6c 32 20 41  ol2 + + - col2 A
23820 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
23830 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
23840 2d 31 31 30 0d 0a 2d 31 31 35 0d 0a 2d 36 34 0d  -110..-115..-64.
23850 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
23860 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
23870 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 2d 20 63 6f   - col0 + - - co
23880 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
23890 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
238a0 2d 2d 0d 0a 2d 38 0d 0a 31 33 0d 0a 35 0d 0a 0d  --..-8..13..5...
238b0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
238c0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
238d0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
238e0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
238f0 55 4c 4c 20 3e 3d 20 2d 20 39 37 20 2b 20 2d 20  ULL >= - 97 + - 
23900 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  col1..----....on
23910 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
23920 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
23930 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
23940 74 20 6c 61 62 65 6c 2d 37 38 31 0d 0a 53 45 4c  t label-781..SEL
23950 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 32  ECT DISTINCT + 2
23960 35 20 2b 20 2b 20 37 38 2c 20 2b 20 43 4f 55 4e  5 + + 78, + COUN
23970 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46  T( * ) AS col0 F
23980 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
23990 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d 0a 33 0d 0a  ..----..103..3..
239a0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
239b0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
239c0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
239d0 74 20 6c 61 62 65 6c 2d 37 38 31 0d 0a 53 45 4c  t label-781..SEL
239e0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 32  ECT DISTINCT + 2
239f0 35 20 2b 20 2b 20 37 38 2c 20 2b 20 43 4f 55 4e  5 + + 78, + COUN
23a00 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
23a10 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
23a20 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 0d 0a 33 0d  0..----..103..3.
23a30 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
23a40 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
23a50 6c 31 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f  l1 + col2 * + co
23a60 6c 30 2c 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f  l0, - col2 AS co
23a70 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
23a80 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
23a90 3c 3d 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  <= + col1..----.
23aa0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
23ab0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
23ac0 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  ax: DIV for inte
23ad0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
23ae0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
23af0 6c 61 62 65 6c 2d 37 38 33 0d 0a 53 45 4c 45 43  label-783..SELEC
23b00 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56  T COUNT( * ) DIV
23b10 20 2b 20 36 30 20 2a 20 2d 20 2b 20 35 35 20 41   + 60 * - + 55 A
23b20 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
23b30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
23b40 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
23b50 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
23b60 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
23b70 6f 72 74 20 6c 61 62 65 6c 2d 37 38 33 0d 0a 53  ort label-783..S
23b80 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  ELECT COUNT ( * 
23b90 29 20 2f 20 2b 20 36 30 20 2a 20 2d 20 2b 20 35  ) / + 60 * - + 5
23ba0 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  5 AS col0 FROM t
23bb0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
23bc0 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..0....onlyif m
23bd0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
23be0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
23bf0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
23c00 6c 2d 37 38 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-784..SELECT DI
23c10 53 54 49 4e 43 54 20 2d 20 2b 20 53 55 4d 28 20  STINCT - + SUM( 
23c20 37 37 20 29 20 41 53 20 63 6f 6c 30 2c 20 2b 20  77 ) AS col0, + 
23c30 33 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  31 FROM tab2 AS 
23c40 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 31  cor0..----..-231
23c50 0d 0a 33 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..31....skipif m
23c60 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
23c70 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
23c80 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 38  rowsort label-78
23c90 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
23ca0 43 54 20 2d 20 2b 20 53 55 4d 20 28 20 37 37 20  CT - + SUM ( 77 
23cb0 29 20 41 53 20 63 6f 6c 30 2c 20 2b 20 33 31 20  ) AS col0, + 31 
23cc0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
23cd0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 31 0d 0a 33  0..----..-231..3
23ce0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  1....query III r
23cf0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
23d00 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
23d10 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
23d20 45 20 2d 20 63 6f 6c 30 20 2a 20 37 20 2b 20 39  E - col0 * 7 + 9
23d30 32 20 2b 20 2d 20 2b 20 63 6f 6c 32 20 49 53 20  2 + - + col2 IS 
23d40 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
23d50 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
23d60 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
23d70 2b 20 38 32 2c 20 63 6f 6c 30 20 2a 20 2b 20 63  + 82, col0 * + c
23d80 6f 6c 31 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  ol1 + col0 AS co
23d90 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
23da0 2d 2d 0d 0a 38 32 0d 0a 34 33 36 38 0d 0a 38 32  --..82..4368..82
23db0 0d 0a 35 31 30 0d 0a 38 32 0d 0a 37 36 35 0d 0a  ..510..82..765..
23dc0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
23dd0 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20  rt..SELECT col2 
23de0 41 53 20 63 6f 6c 30 2c 20 2b 20 39 39 20 46 52  AS col0, + 99 FR
23df0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
23e00 30 0d 0a 39 39 0d 0a 34 37 0d 0a 39 39 0d 0a 39  0..99..47..99..9
23e10 39 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49  9..99....query I
23e20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
23e30 54 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32  T - col0 AS col2
23e40 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46  , col0 AS col2 F
23e50 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
23e60 2d 35 31 0d 0a 35 31 0d 0a 2d 38 35 0d 0a 38 35  -51..51..-85..85
23e70 0d 0a 2d 39 31 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c  ..-91..91....onl
23e80 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
23e90 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
23ea0 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
23eb0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 38  rowsort label-78
23ec0 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  9..SELECT ALL - 
23ed0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
23ee0 47 4e 45 44 20 29 20 2a 20 33 38 20 46 52 4f 4d  GNED ) * 38 FROM
23ef0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab1..----..NUL
23f00 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
23f10 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
23f20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
23f30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
23f40 6c 61 62 65 6c 2d 37 38 39 0d 0a 53 45 4c 45 43  label-789..SELEC
23f50 54 20 41 4c 4c 20 2d 20 43 41 53 54 20 28 20 4e  T ALL - CAST ( N
23f60 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
23f70 20 2a 20 33 38 20 46 52 4f 4d 20 74 61 62 31 0d   * 38 FROM tab1.
23f80 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
23f90 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  L..NULL....query
23fa0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
23fb0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20  CT DISTINCT - - 
23fc0 63 6f 6c 32 20 2b 20 63 6f 6c 31 20 2b 20 2d 20  col2 + col1 + - 
23fd0 37 20 2a 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 63  7 * col0 * - - c
23fe0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
23ff0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34   cor0..----..-34
24000 31 36 32 0d 0a 2d 33 35 30 34 31 0d 0a 2d 34 33  162..-35041..-43
24010 32 30 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  201....onlyif my
24020 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
24030 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
24040 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
24050 37 39 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  791..SELECT ALL 
24060 43 4f 55 4e 54 28 20 2b 20 2b 20 63 6f 6c 30 20  COUNT( + + col0 
24070 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
24080 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..3....skipif m
24090 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
240a0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
240b0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 31  owsort label-791
240c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55  ..SELECT ALL COU
240d0 4e 54 20 28 20 2b 20 2b 20 63 6f 6c 30 20 29 20  NT ( + + col0 ) 
240e0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
240f0 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .3....onlyif mys
24100 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
24110 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
24120 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24130 20 6c 61 62 65 6c 2d 37 39 32 0d 0a 53 45 4c 45   label-792..SELE
24140 43 54 20 43 41 53 54 28 20 41 56 47 20 28 20 41  CT CAST( AVG ( A
24150 4c 4c 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 53  LL - col1 ) AS S
24160 49 47 4e 45 44 20 29 20 2a 20 2b 20 28 20 2b 20  IGNED ) * + ( + 
24170 2b 20 38 30 20 29 20 46 52 4f 4d 20 74 61 62 32  + 80 ) FROM tab2
24180 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 32 30 30 0d 0a 0d  ..----..-5200...
24190 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
241a0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
241b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
241c0 6c 61 62 65 6c 2d 37 39 32 0d 0a 53 45 4c 45 43  label-792..SELEC
241d0 54 20 43 41 53 54 20 28 20 41 56 47 20 28 20 41  T CAST ( AVG ( A
241e0 4c 4c 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 49  LL - col1 ) AS I
241f0 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 28 20 2b  NTEGER ) * + ( +
24200 20 2b 20 38 30 20 29 20 46 52 4f 4d 20 74 61 62   + 80 ) FROM tab
24210 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 32 30 30 0d 0a  2..----..-5200..
24220 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
24230 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
24240 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
24250 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
24260 62 65 6c 2d 37 39 33 0d 0a 53 45 4c 45 43 54 20  bel-793..SELECT 
24270 63 6f 6c 32 20 2d 20 2b 20 63 6f 6c 31 20 41 53  col2 - + col1 AS
24280 20 63 6f 6c 30 2c 20 63 6f 6c 31 20 44 49 56 20   col0, col1 DIV 
24290 33 32 20 2a 20 2b 20 36 39 20 46 52 4f 4d 20 74  32 * + 69 FROM t
242a0 61 62 31 20 57 48 45 52 45 20 2b 20 37 30 20 2a  ab1 WHERE + 70 *
242b0 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 63 6f   + col2 + + - co
242c0 6c 30 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 2a 20  l0 * - + col2 * 
242d0 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 49 53 20 4e  col1 + col2 IS N
242e0 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32  OT NULL..----..2
242f0 31 0d 0a 36 39 0d 0a 35 34 0d 0a 30 0d 0a 38 32  1..69..54..0..82
24300 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
24310 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
24320 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
24330 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 33  owsort label-793
24340 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2d 20  ..SELECT col2 - 
24350 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 2c 20  + col1 AS col0, 
24360 63 6f 6c 31 20 2f 20 33 32 20 2a 20 2b 20 36 39  col1 / 32 * + 69
24370 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
24380 20 2b 20 37 30 20 2a 20 2b 20 63 6f 6c 32 20 2b   + 70 * + col2 +
24390 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 2b 20   + - col0 * - + 
243a0 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 2b 20 63 6f  col2 * col1 + co
243b0 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  l2 IS NOT NULL..
243c0 2d 2d 2d 2d 0d 0a 32 31 0d 0a 36 39 0d 0a 35 34  ----..21..69..54
243d0 0d 0a 30 0d 0a 38 32 0d 0a 30 0d 0a 0d 0a 6f 6e  ..0..82..0....on
243e0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
243f0 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
24400 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
24410 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
24420 37 39 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  794..SELECT ALL 
24430 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 2c 20  + col0 AS col0, 
24440 2d 20 37 34 20 44 49 56 20 2b 20 37 31 20 41 53  - 74 DIV + 71 AS
24450 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
24460 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 2d 31 0d 0a 38  .----..15..-1..8
24470 37 0d 0a 2d 31 0d 0a 39 37 0d 0a 2d 31 0d 0a 0d  7..-1..97..-1...
24480 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
24490 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
244a0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
244b0 20 6c 61 62 65 6c 2d 37 39 34 0d 0a 53 45 4c 45   label-794..SELE
244c0 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 41 53  CT ALL + col0 AS
244d0 20 63 6f 6c 30 2c 20 2d 20 37 34 20 2f 20 2b 20   col0, - 74 / + 
244e0 37 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  71 AS col2 FROM 
244f0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a  tab0..----..15..
24500 2d 31 0d 0a 38 37 0d 0a 2d 31 0d 0a 39 37 0d 0a  -1..87..-1..97..
24510 2d 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  -1....onlyif mys
24520 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
24530 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
24540 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
24550 39 35 0d 0a 53 45 4c 45 43 54 20 2d 20 53 55 4d  95..SELECT - SUM
24560 28 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 33  ( DISTINCT - - 3
24570 34 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  4 ) FROM tab0..-
24580 2d 2d 2d 0d 0a 2d 33 34 0d 0a 0d 0a 73 6b 69 70  ---..-34....skip
24590 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
245a0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
245b0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
245c0 2d 37 39 35 0d 0a 53 45 4c 45 43 54 20 2d 20 53  -795..SELECT - S
245d0 55 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20  UM ( DISTINCT - 
245e0 2d 20 33 34 20 29 20 46 52 4f 4d 20 74 61 62 30  - 34 ) FROM tab0
245f0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 0d 0a 0d 0a 6f  ..----..-34....o
24600 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
24610 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
24620 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
24630 74 20 6c 61 62 65 6c 2d 37 39 36 0d 0a 53 45 4c  t label-796..SEL
24640 45 43 54 20 4d 41 58 28 20 44 49 53 54 49 4e 43  ECT MAX( DISTINC
24650 54 20 2b 20 63 6f 6c 30 20 29 20 63 6f 6c 31 20  T + col0 ) col1 
24660 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
24670 0a 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .97....skipif my
24680 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
24690 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
246a0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
246b0 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
246c0 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
246d0 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
246e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
246f0 61 62 65 6c 2d 37 39 36 0d 0a 53 45 4c 45 43 54  abel-796..SELECT
24700 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20   MAX ( DISTINCT 
24710 2b 20 63 6f 6c 30 20 29 20 63 6f 6c 31 20 46 52  + col0 ) col1 FR
24720 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39  OM tab0..----..9
24730 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
24740 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
24750 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d   DECIMAL type: .
24760 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
24770 72 74 20 6c 61 62 65 6c 2d 37 39 37 0d 0a 53 45  rt label-797..SE
24780 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
24790 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28  tab0 WHERE NOT (
247a0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 44   CAST( NULL AS D
247b0 45 43 49 4d 41 4c 20 29 20 29 20 49 53 20 4e 4f  ECIMAL ) ) IS NO
247c0 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  T NULL..----..9 
247d0 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
247e0 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65  o c4b42765dff94e
247f0 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33  aaa46040e537fb43
24800 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  b7....skipif mys
24810 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
24820 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
24830 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 37  owsort label-797
24840 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
24850 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
24860 4f 54 20 28 20 43 41 53 54 20 28 20 4e 55 4c 4c  OT ( CAST ( NULL
24870 20 41 53 20 52 45 41 4c 20 29 20 29 20 49 53 20   AS REAL ) ) IS 
24880 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
24890 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
248a0 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
248b0 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
248c0 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49  43b7....query II
248d0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
248e0 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
248f0 45 52 45 20 4e 4f 54 20 30 20 2b 20 2b 20 2b 20  ERE NOT 0 + + + 
24900 63 6f 6c 30 20 2a 20 2d 20 39 36 20 2a 20 36 20  col0 * - 96 * 6 
24910 49 53 20 4e 55 4c 4c 20 4f 52 20 63 6f 6c 32 20  IS NULL OR col2 
24920 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39  IS NULL..----..9
24930 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
24940 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34  to c4b42765dff94
24950 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34  eaaa46040e537fb4
24960 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  3b7....onlyif my
24970 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
24980 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
24990 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
249a0 37 39 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  799..SELECT ALL 
249b0 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20 2b 20  SUM( DISTINCT + 
249c0 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30  + col2 ) AS col0
249d0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
249e0 0d 0a 31 35 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..156....skipif 
249f0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
24a00 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
24a10 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39  rowsort label-79
24a20 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 53 55  9..SELECT ALL SU
24a30 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  M ( DISTINCT + +
24a40 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30 20   col2 ) AS col0 
24a50 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
24a60 0a 31 35 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .156....query I 
24a70 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
24a80 41 4c 4c 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 2b  ALL + col2 * - +
24a90 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
24aa0 0a 2d 2d 2d 2d 0d 0a 2d 31 31 37 33 0d 0a 2d 33  .----..-1173..-3
24ab0 30 38 30 0d 0a 2d 33 38 38 36 0d 0a 0d 0a 6f 6e  080..-3886....on
24ac0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
24ad0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
24ae0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24af0 20 6c 61 62 65 6c 2d 38 30 31 0d 0a 53 45 4c 45   label-801..SELE
24b00 43 54 20 2d 20 4d 41 58 28 20 2d 20 2d 20 28 20  CT - MAX( - - ( 
24b10 2b 20 63 6f 6c 32 20 29 20 29 20 2b 20 2b 20 35  + col2 ) ) + + 5
24b20 36 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  6 FROM tab2..---
24b30 2d 0d 0a 2d 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-2....skipif 
24b40 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
24b50 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
24b60 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30  rowsort label-80
24b70 31 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 20  1..SELECT - MAX 
24b80 28 20 2d 20 2d 20 28 20 2b 20 63 6f 6c 32 20 29  ( - - ( + col2 )
24b90 20 29 20 2b 20 2b 20 35 36 20 46 52 4f 4d 20 74   ) + + 56 FROM t
24ba0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d 0a 0d  ab2..----..-2...
24bb0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
24bc0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
24bd0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
24be0 6f 72 74 20 6c 61 62 65 6c 2d 38 30 32 0d 0a 53  ort label-802..S
24bf0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 43 4f  ELECT ALL + - CO
24c00 55 4e 54 28 20 2a 20 29 20 2b 20 2b 20 2b 20 28  UNT( * ) + + + (
24c10 20 2d 20 31 36 20 29 20 46 52 4f 4d 20 74 61 62   - 16 ) FROM tab
24c20 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
24c30 4a 4f 49 4e 20 74 61 62 32 20 63 6f 72 31 0d 0a  JOIN tab2 cor1..
24c40 2d 2d 2d 2d 0d 0a 2d 32 35 0d 0a 0d 0a 73 6b 69  ----..-25....ski
24c50 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
24c60 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
24c70 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
24c80 6c 2d 38 30 32 0d 0a 53 45 4c 45 43 54 20 41 4c  l-802..SELECT AL
24c90 4c 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  L + - COUNT ( * 
24ca0 29 20 2b 20 2b 20 2b 20 28 20 2d 20 31 36 20 29  ) + + + ( - 16 )
24cb0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
24cc0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
24cd0 62 32 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  b2 cor1..----..-
24ce0 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 49  25....query IIII
24cf0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
24d00 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 63  CT * FROM tab2 c
24d10 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
24d20 61 62 30 20 41 53 20 63 6f 72 31 20 57 48 45 52  ab0 AS cor1 WHER
24d30 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 4e  E NOT ( NULL ) N
24d40 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20  OT BETWEEN NULL 
24d50 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  AND NULL..----..
24d60 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
24d70 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
24d80 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
24d90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
24da0 65 6c 2d 38 30 34 0d 0a 53 45 4c 45 43 54 20 41  el-804..SELECT A
24db0 4c 4c 20 2d 20 2d 20 43 41 53 54 28 20 4e 55 4c  LL - - CAST( NUL
24dc0 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52  L AS SIGNED ) FR
24dd0 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 43 52 4f  OM tab1 cor0 CRO
24de0 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20  SS JOIN tab2 AS 
24df0 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  cor1..----..9 va
24e00 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
24e10 63 64 37 61 37 39 30 31 65 34 37 63 31 35 31 35  cd7a7901e47c1515
24e20 35 34 30 34 61 66 66 30 64 32 31 36 66 65 30 62  5404aff0d216fe0b
24e30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
24e40 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
24e50 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
24e60 72 74 20 6c 61 62 65 6c 2d 38 30 34 0d 0a 53 45  rt label-804..SE
24e70 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 43 41 53  LECT ALL - - CAS
24e80 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
24e90 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 20  GER ) FROM tab1 
24ea0 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
24eb0 74 61 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab2 AS cor1..--
24ec0 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
24ed0 68 69 6e 67 20 74 6f 20 63 64 37 61 37 39 30 31  hing to cd7a7901
24ee0 65 34 37 63 31 35 31 35 35 34 30 34 61 66 66 30  e47c15155404aff0
24ef0 64 32 31 36 66 65 30 62 0d 0a 0d 0a 71 75 65 72  d216fe0b....quer
24f00 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
24f10 4c 45 43 54 20 2d 20 34 38 20 41 53 20 63 6f 6c  LECT - 48 AS col
24f20 31 2c 20 39 35 20 46 52 4f 4d 20 74 61 62 31 0d  1, 95 FROM tab1.
24f30 0a 2d 2d 2d 2d 0d 0a 2d 34 38 0d 0a 39 35 0d 0a  .----..-48..95..
24f40 2d 34 38 0d 0a 39 35 0d 0a 2d 34 38 0d 0a 39 35  -48..95..-48..95
24f50 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
24f60 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
24f70 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
24f80 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
24f90 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
24fa0 20 6c 61 62 65 6c 2d 38 30 36 0d 0a 53 45 4c 45   label-806..SELE
24fb0 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28 20 2a 20  CT ALL COUNT( * 
24fc0 29 20 2a 20 2d 20 53 55 4d 28 20 44 49 53 54 49  ) * - SUM( DISTI
24fd0 4e 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c  NCT + CAST( NULL
24fe0 20 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 46   AS SIGNED ) ) F
24ff0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
25000 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
25010 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
25020 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
25030 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 36  owsort label-806
25040 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55  ..SELECT ALL COU
25050 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 53 55 4d  NT ( * ) * - SUM
25060 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41   ( DISTINCT + CA
25070 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
25080 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20 74 61  EGER ) ) FROM ta
25090 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b1..----..NULL..
250a0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
250b0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
250c0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
250d0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 37 0d 0a  sort label-807..
250e0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
250f0 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c 30 20  COUNT( * ) col0 
25100 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
25110 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
25120 32 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d  2 cor1..----..9.
25130 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
25140 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
25150 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
25160 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
25170 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
25180 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
25190 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
251a0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
251b0 2d 38 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -807..SELECT DIS
251c0 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  TINCT COUNT ( * 
251d0 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  ) col0 FROM tab1
251e0 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
251f0 4f 49 4e 20 74 61 62 32 20 63 6f 72 31 0d 0a 2d  OIN tab2 cor1..-
25200 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..9....onlyif
25210 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
25220 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
25230 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
25240 65 6c 2d 38 30 38 0d 0a 53 45 4c 45 43 54 20 44  el-808..SELECT D
25250 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a  ISTINCT COUNT( *
25260 20 29 20 2a 20 32 20 41 53 20 63 6f 6c 31 20 46   ) * 2 AS col1 F
25270 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
25280 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
25290 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
252a0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
252b0 6f 72 74 20 6c 61 62 65 6c 2d 38 30 38 0d 0a 53  ort label-808..S
252c0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43  ELECT DISTINCT C
252d0 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 32 20 41  OUNT ( * ) * 2 A
252e0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
252f0 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a 0d 0a 71 75 65  ..----..6....que
25300 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
25310 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
25320 2d 20 35 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  - 5 FROM tab2 co
25330 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 0d 0a 0d 0a 71  r0..----..5....q
25340 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
25350 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
25360 20 2b 20 2d 20 37 32 20 41 53 20 63 6f 6c 30 2c   + - 72 AS col0,
25370 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   - col1 FROM tab
25380 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
25390 0a 2d 37 32 0d 0a 2d 31 0d 0a 2d 37 32 0d 0a 2d  .-72..-1..-72..-
253a0 32 31 0d 0a 2d 37 32 0d 0a 2d 38 31 0d 0a 0d 0a  21..-72..-81....
253b0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
253c0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
253d0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
253e0 72 74 20 6c 61 62 65 6c 2d 38 31 31 0d 0a 53 45  rt label-811..SE
253f0 4c 45 43 54 20 43 4f 55 4e 54 28 20 2b 20 32 36  LECT COUNT( + 26
25400 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
25410 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  1 cor0..----..3.
25420 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
25430 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
25440 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
25450 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
25460 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
25470 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
25480 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
25490 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
254a0 2d 38 31 31 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -811..SELECT COU
254b0 4e 54 20 28 20 2b 20 32 36 20 29 20 63 6f 6c 32  NT ( + 26 ) col2
254c0 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
254d0 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72  .----..3....quer
254e0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
254f0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
25500 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
25510 4e 4f 54 20 34 39 20 49 53 20 4e 4f 54 20 4e 55  NOT 49 IS NOT NU
25520 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
25530 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
25540 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
25550 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
25560 61 62 65 6c 2d 38 31 33 0d 0a 53 45 4c 45 43 54  abel-813..SELECT
25570 20 2b 20 2b 20 35 33 20 2a 20 43 4f 55 4e 54 28   + + 53 * COUNT(
25580 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74   + col0 ) FROM t
25590 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
255a0 31 35 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  159....skipif my
255b0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
255c0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
255d0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 33 0d  wsort label-813.
255e0 0a 53 45 4c 45 43 54 20 2b 20 2b 20 35 33 20 2a  .SELECT + + 53 *
255f0 20 43 4f 55 4e 54 20 28 20 2b 20 63 6f 6c 30 20   COUNT ( + col0 
25600 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  ) FROM tab0 cor0
25610 0d 0a 2d 2d 2d 2d 0d 0a 31 35 39 0d 0a 0d 0a 73  ..----..159....s
25620 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
25630 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
25640 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
25650 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
25660 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
25670 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
25680 20 2d 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c   - - col2 AS col
25690 30 2c 20 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f  0, col0 col1 FRO
256a0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
256b0 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34 36 0d 0a 34 30  ----..23..46..40
256c0 0d 0a 36 34 0d 0a 35 38 0d 0a 37 35 0d 0a 0d 0a  ..64..58..75....
256d0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
256e0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
256f0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
25700 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
25710 2d 38 31 35 0d 0a 53 45 4c 45 43 54 20 2d 20 63  -815..SELECT - c
25720 6f 6c 32 20 44 49 56 20 2d 20 2d 20 63 6f 6c 30  ol2 DIV - - col0
25730 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
25740 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  r0..----..0..0..
25750 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
25760 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
25770 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
25780 6f 72 74 20 6c 61 62 65 6c 2d 38 31 35 0d 0a 53  ort label-815..S
25790 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2f 20 2d  ELECT - col2 / -
257a0 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   - col0 FROM tab
257b0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
257c0 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79  .0..0..0....only
257d0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
257e0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56  gate syntax: DIV
257f0 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
25800 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
25810 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
25820 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  16..SELECT DISTI
25830 4e 43 54 20 43 4f 55 4e 54 28 20 2d 20 2b 20 38  NCT COUNT( - + 8
25840 33 20 29 20 44 49 56 20 34 32 20 46 52 4f 4d 20  3 ) DIV 42 FROM 
25850 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
25860 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
25870 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
25880 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
25890 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31  rowsort label-81
258a0 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  6..SELECT DISTIN
258b0 43 54 20 43 4f 55 4e 54 20 28 20 2d 20 2b 20 38  CT COUNT ( - + 8
258c0 33 20 29 20 2f 20 34 32 20 46 52 4f 4d 20 74 61  3 ) / 42 FROM ta
258d0 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
258e0 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..0....onlyif my
258f0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
25900 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
25910 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
25920 2d 38 31 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -817..SELECT DIS
25930 54 49 4e 43 54 20 33 31 20 2a 20 2d 20 37 33 20  TINCT 31 * - 73 
25940 41 53 20 63 6f 6c 32 2c 20 4d 41 58 28 20 63 6f  AS col2, MAX( co
25950 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  l2 ) AS col0 FRO
25960 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab0..----..-2
25970 32 36 33 0d 0a 39 39 0d 0a 0d 0a 73 6b 69 70 69  263..99....skipi
25980 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
25990 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
259a0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
259b0 2d 38 31 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -817..SELECT DIS
259c0 54 49 4e 43 54 20 33 31 20 2a 20 2d 20 37 33 20  TINCT 31 * - 73 
259d0 41 53 20 63 6f 6c 32 2c 20 4d 41 58 20 28 20 63  AS col2, MAX ( c
259e0 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol2 ) AS col0 FR
259f0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
25a00 32 32 36 33 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72  2263..99....quer
25a10 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
25a20 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
25a30 20 74 61 62 30 20 57 48 45 52 45 20 31 32 20 49   tab0 WHERE 12 I
25a40 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
25a50 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
25a60 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
25a70 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
25a80 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f  HERE NOT NULL NO
25a90 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41  T BETWEEN NULL A
25aa0 4e 44 20 28 20 63 6f 6c 31 20 2b 20 2d 20 2b 20  ND ( col1 + - + 
25ab0 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col0 )..----....
25ac0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
25ad0 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
25ae0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
25af0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
25b00 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
25b10 65 6c 2d 38 32 30 0d 0a 53 45 4c 45 43 54 20 2b  el-820..SELECT +
25b20 20 43 41 53 54 28 20 2b 20 43 41 53 54 28 20 4e   CAST( + CAST( N
25b30 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
25b40 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 43 4f  AS SIGNED ) * CO
25b50 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
25b60 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b1..----..NULL..
25b70 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
25b80 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
25b90 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25ba0 20 6c 61 62 65 6c 2d 38 32 30 0d 0a 53 45 4c 45   label-820..SELE
25bb0 43 54 20 2b 20 43 41 53 54 20 28 20 2b 20 43 41  CT + CAST ( + CA
25bc0 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
25bd0 45 47 45 52 20 29 20 41 53 20 49 4e 54 45 47 45  EGER ) AS INTEGE
25be0 52 20 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20  R ) * COUNT ( * 
25bf0 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
25c00 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  -..NULL....query
25c10 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
25c20 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
25c30 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
25c40 52 45 20 28 20 4e 4f 54 20 28 20 4e 4f 54 20 28  RE ( NOT ( NOT (
25c50 20 63 6f 6c 31 20 3e 20 4e 55 4c 4c 20 29 20 29   col1 > NULL ) )
25c60 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   )..----....quer
25c70 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
25c80 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
25c90 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
25ca0 4e 4f 54 20 39 36 20 4e 4f 54 20 42 45 54 57 45  NOT 96 NOT BETWE
25cb0 45 4e 20 2d 20 34 33 20 41 4e 44 20 2b 20 63 6f  EN - 43 AND + co
25cc0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  l1..----....only
25cd0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
25ce0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
25cf0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
25d00 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32  rowsort label-82
25d10 33 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f  3..SELECT + + co
25d20 6c 31 20 2a 20 2d 20 63 6f 6c 32 2c 20 2b 20 34  l1 * - col2, + 4
25d30 36 20 2a 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  6 * - CAST( NULL
25d40 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
25d50 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63  col2 FROM tab0 c
25d60 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 30 0d  or0..----..-210.
25d70 0a 4e 55 4c 4c 0d 0a 2d 33 38 30 37 0d 0a 4e 55  .NULL..-3807..NU
25d80 4c 4c 0d 0a 2d 39 39 0d 0a 4e 55 4c 4c 0d 0a 0d  LL..-99..NULL...
25d90 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
25da0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
25db0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
25dc0 20 6c 61 62 65 6c 2d 38 32 33 0d 0a 53 45 4c 45   label-823..SELE
25dd0 43 54 20 2b 20 2b 20 63 6f 6c 31 20 2a 20 2d 20  CT + + col1 * - 
25de0 63 6f 6c 32 2c 20 2b 20 34 36 20 2a 20 2d 20 43  col2, + 46 * - C
25df0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
25e00 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20  TEGER ) AS col2 
25e10 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
25e20 2d 2d 2d 2d 0d 0a 2d 32 31 30 0d 0a 4e 55 4c 4c  ----..-210..NULL
25e30 0d 0a 2d 33 38 30 37 0d 0a 4e 55 4c 4c 0d 0a 2d  ..-3807..NULL..-
25e40 39 39 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  99..NULL....only
25e50 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
25e60 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
25e70 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
25e80 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32 34  owsort label-824
25e90 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 44 49  ..SELECT col0 DI
25ea0 56 20 2d 20 2b 20 28 20 63 6f 6c 32 20 29 20 63  V - + ( col2 ) c
25eb0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
25ec0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 0d   cor0..----..-8.
25ed0 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .0..0....skipif 
25ee0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
25ef0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
25f00 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
25f10 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
25f20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
25f30 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
25f40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25f50 20 6c 61 62 65 6c 2d 38 32 34 0d 0a 53 45 4c 45   label-824..SELE
25f60 43 54 20 63 6f 6c 30 20 2f 20 2d 20 2b 20 28 20  CT col0 / - + ( 
25f70 63 6f 6c 32 20 29 20 63 6f 6c 32 20 46 52 4f 4d  col2 ) col2 FROM
25f80 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
25f90 2d 2d 2d 0d 0a 2d 38 0d 0a 30 0d 0a 30 0d 0a 0d  ---..-8..0..0...
25fa0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
25fb0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
25fc0 54 20 2b 20 63 6f 6c 31 20 2b 20 35 30 20 46 52  T + col1 + 50 FR
25fd0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
25fe0 0a 2d 2d 2d 2d 0d 0a 31 33 31 0d 0a 35 31 0d 0a  .----..131..51..
25ff0 37 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  71....query III 
26000 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
26010 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  * FROM tab1 cor0
26020 20 57 48 45 52 45 20 63 6f 6c 32 20 2b 20 2b 20   WHERE col2 + + 
26030 63 6f 6c 31 20 2a 20 2d 20 35 33 20 49 53 20 4e  col1 * - 53 IS N
26040 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
26050 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
26060 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
26070 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
26080 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32  rowsort label-82
26090 37 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f  7..SELECT - - co
260a0 6c 30 20 2a 20 2d 20 2d 20 38 20 2d 20 2d 20 35  l0 * - - 8 - - 5
260b0 34 20 44 49 56 20 28 20 37 35 20 29 20 44 49 56  4 DIV ( 75 ) DIV
260c0 20 63 6f 6c 32 20 44 49 56 20 2b 20 63 6f 6c 32   col2 DIV + col2
260d0 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c   + + col2 AS col
260e0 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
260f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 37 0d 0a  or0..----..167..
26100 37 30 36 0d 0a 38 37 35 0d 0a 0d 0a 73 6b 69 70  706..875....skip
26110 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
26120 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
26130 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
26140 2d 38 32 37 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  -827..SELECT - -
26150 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 38 20 2d 20   col0 * - - 8 - 
26160 2d 20 35 34 20 2f 20 28 20 37 35 20 29 20 2f 20  - 54 / ( 75 ) / 
26170 63 6f 6c 32 20 2f 20 2b 20 63 6f 6c 32 20 2b 20  col2 / + col2 + 
26180 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46  + col2 AS col2 F
26190 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
261a0 0d 0a 2d 2d 2d 2d 0d 0a 31 36 37 0d 0a 37 30 36  ..----..167..706
261b0 0d 0a 38 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..875....onlyif 
261c0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
261d0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
261e0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
261f0 6c 2d 38 32 38 0d 0a 53 45 4c 45 43 54 20 44 49  l-828..SELECT DI
26200 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20  STINCT + COUNT( 
26210 2a 20 29 20 2b 20 2b 20 2d 20 43 4f 55 4e 54 28  * ) + + - COUNT(
26220 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41   * ) FROM tab2 A
26230 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S cor0..----..0.
26240 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
26250 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
26260 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26270 74 20 6c 61 62 65 6c 2d 38 32 38 0d 0a 53 45 4c  t label-828..SEL
26280 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
26290 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20 2d  OUNT ( * ) + + -
262a0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
262b0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
262c0 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  ----..0....onlyi
262d0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
262e0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
262f0 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
26300 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32 39 0d  wsort label-829.
26310 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2b 20 2d  .SELECT col1 + -
26320 20 38 36 20 2b 20 2b 20 63 6f 6c 31 20 44 49 56   86 + + col1 DIV
26330 20 2b 20 2b 20 31 37 20 41 53 20 63 6f 6c 30 20   + + 17 AS col0 
26340 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
26350 30 20 57 48 45 52 45 20 63 6f 6c 31 20 2a 20 2d  0 WHERE col1 * -
26360 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e   - col0 IS NOT N
26370 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a  ULL..----..-16..
26380 2d 33 32 0d 0a 2d 35 0d 0a 0d 0a 73 6b 69 70 69  -32..-5....skipi
26390 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
263a0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
263b0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
263c0 38 32 39 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  829..SELECT col1
263d0 20 2b 20 2d 20 38 36 20 2b 20 2b 20 63 6f 6c 31   + - 86 + + col1
263e0 20 2f 20 2b 20 2b 20 31 37 20 41 53 20 63 6f 6c   / + + 17 AS col
263f0 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
26400 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20 2a  or0 WHERE col1 *
26410 20 2d 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54   - - col0 IS NOT
26420 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36   NULL..----..-16
26430 0d 0a 2d 33 32 0d 0a 2d 35 0d 0a 0d 0a 71 75 65  ..-32..-5....que
26440 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
26450 4c 45 43 54 20 2d 20 2b 20 32 35 20 2b 20 2d 20  LECT - + 25 + - 
26460 38 33 20 2b 20 2b 20 35 34 20 2a 20 2b 20 63 6f  83 + + 54 * + co
26470 6c 31 20 2d 20 2d 20 37 31 20 46 52 4f 4d 20 74  l1 - - 71 FROM t
26480 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
26490 2d 0d 0a 32 33 33 0d 0a 32 35 30 31 0d 0a 37 31  -..233..2501..71
264a0 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  9....query II ro
264b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
264c0 53 54 49 4e 43 54 20 34 32 2c 20 63 6f 6c 31 20  STINCT 42, col1 
264d0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
264e0 30 0d 0a 2d 2d 2d 2d 0d 0a 34 32 0d 0a 31 0d 0a  0..----..42..1..
264f0 34 32 0d 0a 32 31 0d 0a 34 32 0d 0a 38 31 0d 0a  42..21..42..81..
26500 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26510 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
26520 28 20 2b 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2d  ( + - col1 ) * -
26530 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 2d 20 63 6f   + col2 * - - co
26540 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
26550 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 30 38  tab0..----..-308
26560 33 36 37 0d 0a 2d 34 34 31 30 0d 0a 2d 39 39 0d  367..-4410..-99.
26570 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
26580 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2b 20 2d  rt..SELECT ( + -
26590 20 38 33 20 29 20 2a 20 2d 20 2b 20 63 6f 6c 32   83 ) * - + col2
265a0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
265b0 0a 2d 2d 2d 2d 0d 0a 31 39 30 39 0d 0a 33 33 32  .----..1909..332
265c0 30 0d 0a 34 38 31 34 0d 0a 0d 0a 6f 6e 6c 79 69  0..4814....onlyi
265d0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
265e0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
265f0 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  on: ..query II r
26600 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 34  owsort label-834
26610 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
26620 54 20 2d 20 2b 20 63 6f 6c 32 20 44 49 56 20 39  T - + col2 DIV 9
26630 33 2c 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c  3, + col1 AS col
26640 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
26650 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 31  or0..----..-1..1
26660 0d 0a 30 0d 0a 32 31 0d 0a 30 0d 0a 38 31 0d 0a  ..0..21..0..81..
26670 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
26680 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
26690 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
266a0 74 20 6c 61 62 65 6c 2d 38 33 34 0d 0a 53 45 4c  t label-834..SEL
266b0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b  ECT DISTINCT - +
266c0 20 63 6f 6c 32 20 2f 20 39 33 2c 20 2b 20 63 6f   col2 / 93, + co
266d0 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
266e0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
266f0 2d 2d 0d 0a 2d 31 0d 0a 31 0d 0a 30 0d 0a 32 31  --..-1..1..0..21
26700 0d 0a 30 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79  ..0..81....query
26710 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
26720 43 54 20 63 6f 6c 32 20 2b 20 38 38 20 41 53 20  CT col2 + 88 AS 
26730 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
26740 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c  S cor0 WHERE NUL
26750 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  L IS NOT NULL..-
26760 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
26770 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
26780 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
26790 20 74 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c   tab1 WHERE NULL
267a0 20 3c 20 2b 20 28 20 2b 20 2d 20 35 30 20 29 0d   < + ( + - 50 ).
267b0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
267c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
267d0 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31   DISTINCT + col1
267e0 20 2d 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63 6f   - + col0 + - co
267f0 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l0 AS col0 FROM 
26800 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 33  tab0..----..-153
26810 0d 0a 2d 31 39 33 0d 0a 35 31 0d 0a 0d 0a 71 75  ..-193..51....qu
26820 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
26830 45 4c 45 43 54 20 41 4c 4c 20 35 35 20 2a 20 2d  ELECT ALL 55 * -
26840 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   - col2 FROM tab
26850 31 0d 0a 2d 2d 2d 2d 0d 0a 33 32 34 35 0d 0a 33  1..----..3245..3
26860 37 34 30 0d 0a 35 32 38 30 0d 0a 0d 0a 6f 6e 6c  740..5280....onl
26870 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
26880 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
26890 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
268a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33  rowsort label-83
268b0 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
268c0 43 54 20 2d 20 63 6f 6c 31 20 44 49 56 20 2d 20  CT - col1 DIV - 
268d0 28 20 2d 20 38 31 20 29 20 41 53 20 63 6f 6c 31  ( - 81 ) AS col1
268e0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
268f0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d  r0..----..-1..0.
26900 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
26910 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
26920 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26930 74 20 6c 61 62 65 6c 2d 38 33 39 0d 0a 53 45 4c  t label-839..SEL
26940 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
26950 6f 6c 31 20 2f 20 2d 20 28 20 2d 20 38 31 20 29  ol1 / - ( - 81 )
26960 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
26970 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
26980 0d 0a 2d 31 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  ..-1..0....onlyi
26990 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
269a0 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
269b0 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
269c0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34 30 0d  wsort label-840.
269d0 0a 53 45 4c 45 43 54 20 2b 20 36 34 20 44 49 56  .SELECT + 64 DIV
269e0 20 33 36 20 46 52 4f 4d 20 74 61 62 31 20 41 53   36 FROM tab1 AS
269f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   cor0..----..1..
26a00 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  1..1....skipif m
26a10 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
26a20 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
26a30 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34 30  owsort label-840
26a40 0d 0a 53 45 4c 45 43 54 20 2b 20 36 34 20 2f 20  ..SELECT + 64 / 
26a50 33 36 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  36 FROM tab1 AS 
26a60 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31  cor0..----..1..1
26a70 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ..1....skipif po
26a80 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
26a90 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
26aa0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
26ab0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
26ac0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
26ad0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
26ae0 6f 6c 32 20 63 6f 6c 30 2c 20 2b 20 32 36 20 2b  ol2 col0, + 26 +
26af0 20 2b 20 36 38 20 2a 20 2d 20 63 6f 6c 31 20 41   + 68 * - col1 A
26b00 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
26b10 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
26b20 35 34 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  54 IS NOT NULL..
26b30 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
26b40 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
26b50 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  - col0 FROM tab2
26b60 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
26b70 4f 54 20 4e 55 4c 4c 20 3e 20 63 6f 6c 30 20 2a  OT NULL > col0 *
26b80 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d   + col0..----...
26b90 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
26ba0 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
26bb0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
26bc0 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 2b 20  HERE NOT col2 + 
26bd0 2d 20 33 38 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d  - 38 = NULL..---
26be0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
26bf0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
26c00 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20 36  TINCT + col0 * 6
26c10 33 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  3 FROM tab2..---
26c20 2d 0d 0a 32 38 39 38 0d 0a 34 30 33 32 0d 0a 34  -..2898..4032..4
26c30 37 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  725....query I r
26c40 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
26c50 20 28 20 2d 20 63 6f 6c 31 20 29 20 2a 20 38 38   ( - col1 ) * 88
26c60 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 41 53 20 63   * - - col0 AS c
26c70 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
26c80 2d 2d 2d 0d 0a 32 30 36 34 34 38 0d 0a 34 33 33  ---..206448..433
26c90 36 36 34 0d 0a 34 34 32 32 30 30 0d 0a 0d 0a 71  664..442200....q
26ca0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
26cb0 53 45 4c 45 43 54 20 2d 20 32 39 20 2a 20 2b 20  SELECT - 29 * + 
26cc0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
26cd0 2d 2d 2d 2d 0d 0a 2d 31 31 36 30 0d 0a 2d 31 36  ----..-1160..-16
26ce0 38 32 0d 0a 2d 36 36 37 0d 0a 0d 0a 71 75 65 72  82..-667....quer
26cf0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
26d00 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 34 31  LECT DISTINCT 41
26d10 2c 20 34 32 20 2b 20 2d 20 63 6f 6c 32 20 41 53  , 42 + - col2 AS
26d20 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
26d30 0a 2d 2d 2d 2d 0d 0a 34 31 0d 0a 2d 31 36 0d 0a  .----..41..-16..
26d40 34 31 0d 0a 31 39 0d 0a 34 31 0d 0a 32 0d 0a 0d  41..19..41..2...
26d50 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
26d60 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
26d70 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
26d80 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 37 36  AS cor0 WHERE 76
26d90 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
26da0 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
26db0 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35  hing to c4b42765
26dc0 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35  dff94eaaa46040e5
26dd0 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72  37fb43b7....quer
26de0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
26df0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 31  ECT DISTINCT + 1
26e00 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
26e10 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b1 cor0..----..1
26e20 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
26e30 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
26e40 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
26e50 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35 30  owsort label-850
26e60 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
26e70 54 20 2b 20 2b 20 4d 49 4e 28 20 2b 20 2d 20 63  T + + MIN( + - c
26e80 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ol1 ) FROM tab0 
26e90 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 31 0d  cor0..----..-81.
26ea0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
26eb0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
26ec0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
26ed0 74 20 6c 61 62 65 6c 2d 38 35 30 0d 0a 53 45 4c  t label-850..SEL
26ee0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  ECT DISTINCT + +
26ef0 20 4d 49 4e 20 28 20 2b 20 2d 20 63 6f 6c 31 20   MIN ( + - col1 
26f00 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  ) FROM tab0 cor0
26f10 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 31 0d 0a 0d 0a 73  ..----..-81....s
26f20 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
26f30 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
26f40 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
26f50 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
26f60 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
26f70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
26f80 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2a   DISTINCT col2 *
26f90 20 2b 20 2d 20 63 6f 6c 31 2c 20 36 38 20 63 6f   + - col1, 68 co
26fa0 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
26fb0 2d 2d 0d 0a 2d 31 33 34 34 0d 0a 36 38 0d 0a 2d  --..-1344..68..-
26fc0 32 39 35 0d 0a 36 38 0d 0a 2d 33 31 39 36 0d 0a  295..68..-3196..
26fd0 36 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  68....onlyif mys
26fe0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
26ff0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
27000 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27010 20 6c 61 62 65 6c 2d 38 35 32 0d 0a 53 45 4c 45   label-852..SELE
27020 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
27030 6c 30 20 2a 20 2d 20 2d 20 43 41 53 54 28 20 2d  l0 * - - CAST( -
27040 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20   col2 AS SIGNED 
27050 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  ) FROM tab0..---
27060 2d 0d 0a 37 30 35 0d 0a 38 37 30 0d 0a 39 36 30  -..705..870..960
27070 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
27080 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
27090 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
270a0 6f 72 74 20 6c 61 62 65 6c 2d 38 35 32 0d 0a 53  ort label-852..S
270b0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
270c0 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 43 41 53 54   col0 * - - CAST
270d0 20 28 20 2d 20 63 6f 6c 32 20 41 53 20 49 4e 54   ( - col2 AS INT
270e0 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 30  EGER ) FROM tab0
270f0 0d 0a 2d 2d 2d 2d 0d 0a 37 30 35 0d 0a 38 37 30  ..----..705..870
27100 0d 0a 39 36 30 33 0d 0a 0d 0a 71 75 65 72 79 20  ..9603....query 
27110 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
27120 54 20 2d 20 31 36 20 41 53 20 63 6f 6c 32 20 46  T - 16 AS col2 F
27130 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
27140 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32   CROSS JOIN tab2
27150 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
27160 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
27170 20 74 6f 20 62 65 32 32 61 63 37 36 62 34 32 63   to be22ac76b42c
27180 36 66 37 32 31 32 65 63 63 30 62 61 37 63 38 39  6f7212ecc0ba7c89
27190 65 62 33 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  eb34....query I 
271a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
271b0 41 4c 4c 20 36 31 20 41 53 20 63 6f 6c 30 20 46  ALL 61 AS col0 F
271c0 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d  ROM tab2 cor0..-
271d0 2d 2d 2d 0d 0a 36 31 0d 0a 36 31 0d 0a 36 31 0d  ---..61..61..61.
271e0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
271f0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
27200 4e 43 54 20 63 6f 6c 30 20 2b 20 2d 20 38 36 20  NCT col0 + - 86 
27210 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
27220 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
27230 0a 2d 31 0d 0a 2d 33 35 0d 0a 35 0d 0a 0d 0a 71  .-1..-35..5....q
27240 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
27250 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
27260 30 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 2d 20 2d  0 * - + col2 - -
27270 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 31 20 46   col1 + + col1 F
27280 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
27290 2d 2d 2d 0d 0a 34 39 32 34 0d 0a 35 30 32 35 0d  ---..4924..5025.
272a0 0a 36 32 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49  .6282....query I
272b0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
272c0 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2b 20 63 6f   ALL + col1 + co
272d0 6c 32 20 2a 20 2b 20 2b 20 33 31 20 46 52 4f 4d  l2 * + + 31 FROM
272e0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
272f0 2d 2d 2d 0d 0a 31 35 33 38 0d 0a 33 30 37 30 0d  ---..1538..3070.
27300 0a 33 33 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .331....query II
27310 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
27320 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 2b 20 2d 20   ALL - col0 + - 
27330 31 37 20 41 53 20 63 6f 6c 30 2c 20 2b 20 31 35  17 AS col0, + 15
27340 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
27350 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34 0d 0a  r0..----..-104..
27360 31 35 0d 0a 2d 31 31 34 0d 0a 31 35 0d 0a 2d 33  15..-114..15..-3
27370 32 0d 0a 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49  2..15....query I
27380 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
27390 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2d 20   DISTINCT + ( - 
273a0 2d 20 34 39 20 29 20 2d 20 2b 20 63 6f 6c 30 20  - 49 ) - + col0 
273b0 2b 20 38 35 20 46 52 4f 4d 20 74 61 62 32 20 41  + 85 FROM tab2 A
273c0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39  S cor0..----..59
273d0 0d 0a 37 30 0d 0a 38 38 0d 0a 0d 0a 71 75 65 72  ..70..88....quer
273e0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
273f0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
27400 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
27410 4e 55 4c 4c 20 3c 20 36 37 0d 0a 2d 2d 2d 2d 0d  NULL < 67..----.
27420 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
27430 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
27440 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
27450 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 31 0d  wsort label-861.
27460 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 28  .SELECT ALL MIN(
27470 20 32 38 20 29 20 2a 20 2d 20 2d 20 43 4f 55 4e   28 ) * - - COUN
27480 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32  T( * ) FROM tab2
27490 0d 0a 2d 2d 2d 2d 0d 0a 38 34 0d 0a 0d 0a 73 6b  ..----..84....sk
274a0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
274b0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
274c0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
274d0 65 6c 2d 38 36 31 0d 0a 53 45 4c 45 43 54 20 41  el-861..SELECT A
274e0 4c 4c 20 4d 49 4e 20 28 20 32 38 20 29 20 2a 20  LL MIN ( 28 ) * 
274f0 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  - - COUNT ( * ) 
27500 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
27510 0a 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .84....onlyif my
27520 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
27530 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
27540 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
27550 38 36 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  862..SELECT DIST
27560 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  INCT COUNT( * ) 
27570 2d 20 28 20 2d 20 2d 20 4d 41 58 28 20 44 49 53  - ( - - MAX( DIS
27580 54 49 4e 43 54 20 2d 20 28 20 2d 20 38 37 20 29  TINCT - ( - 87 )
27590 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a   ) ) FROM tab0..
275a0 2d 2d 2d 2d 0d 0a 2d 38 34 0d 0a 0d 0a 73 6b 69  ----..-84....ski
275b0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
275c0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
275d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
275e0 6c 2d 38 36 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-862..SELECT DI
275f0 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a  STINCT COUNT ( *
27600 20 29 20 2d 20 28 20 2d 20 2d 20 4d 41 58 20 28   ) - ( - - MAX (
27610 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2d 20   DISTINCT - ( - 
27620 38 37 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61  87 ) ) ) FROM ta
27630 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 34 0d 0a 0d  b0..----..-84...
27640 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27650 0d 0a 53 45 4c 45 43 54 20 36 38 20 2a 20 2b 20  ..SELECT 68 * + 
27660 63 6f 6c 30 20 2d 20 63 6f 6c 31 20 41 53 20 63  col0 - col1 AS c
27670 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
27680 2d 2d 2d 0d 0a 33 34 35 34 0d 0a 35 37 37 35 0d  ---..3454..5775.
27690 0a 36 31 34 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .6141....onlyif 
276a0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
276b0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
276c0 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
276d0 65 6c 2d 38 36 34 0d 0a 53 45 4c 45 43 54 20 44  el-864..SELECT D
276e0 49 53 54 49 4e 43 54 20 2b 20 39 36 2c 20 43 4f  ISTINCT + 96, CO
276f0 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  UNT( * ) AS col0
27700 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
27710 0d 0a 39 36 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ..96..3....skipi
27720 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
27730 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
27740 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
27750 2d 38 36 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -864..SELECT DIS
27760 54 49 4e 43 54 20 2b 20 39 36 2c 20 43 4f 55 4e  TINCT + 96, COUN
27770 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
27780 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
27790 0a 39 36 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66  .96..3....skipif
277a0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
277b0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
277c0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
277d0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
277e0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
277f0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
27800 4e 43 54 20 2d 20 33 39 20 63 6f 6c 32 20 46 52  NCT - 39 col2 FR
27810 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
27820 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  39....query I ro
27830 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
27840 4c 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  L col0 FROM tab1
27850 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20   WHERE NOT col1 
27860 2f 20 2d 20 32 34 20 49 53 20 4e 55 4c 4c 20 41  / - 24 IS NULL A
27870 4e 44 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e  ND NOT NULL IS N
27880 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
27890 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
278a0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
278b0 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
278c0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36  rowsort label-86
278d0 37 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 44  7..SELECT col2 D
278e0 49 56 20 2d 20 2d 20 28 20 2b 20 38 33 20 29 20  IV - - ( + 83 ) 
278f0 2a 20 2b 20 63 6f 6c 32 20 2d 20 2d 20 2d 20 63  * + col2 - - - c
27900 6f 6c 31 20 2b 20 63 6f 6c 30 20 2b 20 38 37 20  ol1 + col0 + 87 
27910 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 34 38 20  + - col2 * - 48 
27920 2a 20 33 37 20 41 53 20 63 6f 6c 31 20 46 52 4f  * 37 AS col1 FRO
27930 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
27940 2d 2d 2d 2d 0d 0a 31 30 33 31 30 33 0d 0a 34 30  ----..103103..40
27950 39 33 30 0d 0a 37 31 31 31 34 0d 0a 0d 0a 73 6b  930..71114....sk
27960 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
27970 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
27980 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
27990 65 6c 2d 38 36 37 0d 0a 53 45 4c 45 43 54 20 63  el-867..SELECT c
279a0 6f 6c 32 20 2f 20 2d 20 2d 20 28 20 2b 20 38 33  ol2 / - - ( + 83
279b0 20 29 20 2a 20 2b 20 63 6f 6c 32 20 2d 20 2d 20   ) * + col2 - - 
279c0 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c 30 20 2b 20  - col1 + col0 + 
279d0 38 37 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d 20  87 + - col2 * - 
279e0 34 38 20 2a 20 33 37 20 41 53 20 63 6f 6c 31 20  48 * 37 AS col1 
279f0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
27a00 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 33 31 30 33 0d  0..----..103103.
27a10 0a 34 30 39 33 30 0d 0a 37 31 31 31 34 0d 0a 0d  .40930..71114...
27a20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27a30 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 28 20 35  ..SELECT - - ( 5
27a40 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  0 ) AS col0 FROM
27a50 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
27a60 0d 0a 35 30 0d 0a 35 30 0d 0a 35 30 0d 0a 0d 0a  ..50..50..50....
27a70 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
27a80 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
27a90 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
27aa0 72 74 20 6c 61 62 65 6c 2d 38 36 39 0d 0a 53 45  rt label-869..SE
27ab0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55  LECT DISTINCT SU
27ac0 4d 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  M( DISTINCT col1
27ad0 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
27ae0 74 61 62 30 20 57 48 45 52 45 20 37 31 20 3d 20  tab0 WHERE 71 = 
27af0 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  col0..----..NULL
27b00 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
27b10 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
27b20 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
27b30 72 74 20 6c 61 62 65 6c 2d 38 36 39 0d 0a 53 45  rt label-869..SE
27b40 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55  LECT DISTINCT SU
27b50 4d 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  M ( DISTINCT col
27b60 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  1 ) AS col0 FROM
27b70 20 74 61 62 30 20 57 48 45 52 45 20 37 31 20 3d   tab0 WHERE 71 =
27b80 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   col0..----..NUL
27b90 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
27ba0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
27bb0 54 49 4e 43 54 20 63 6f 6c 31 20 46 52 4f 4d 20  TINCT col1 FROM 
27bc0 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
27bd0 52 45 20 4e 4f 54 20 2d 20 35 38 20 49 53 20 4e  RE NOT - 58 IS N
27be0 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
27bf0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27c00 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 38 32 20  ..SELECT - + 82 
27c10 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
27c20 2d 2d 2d 2d 0d 0a 2d 38 32 0d 0a 2d 38 32 0d 0a  ----..-82..-82..
27c30 2d 38 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  -82....skipif po
27c40 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
27c50 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
27c60 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
27c70 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
27c80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
27c90 0a 53 45 4c 45 43 54 20 2b 20 2d 20 39 39 20 63  .SELECT + - 99 c
27ca0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
27cb0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39   cor0..----..-99
27cc0 0d 0a 2d 39 39 0d 0a 2d 39 39 0d 0a 0d 0a 6f 6e  ..-99..-99....on
27cd0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
27ce0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
27cf0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27d00 20 6c 61 62 65 6c 2d 38 37 33 0d 0a 53 45 4c 45   label-873..SELE
27d10 43 54 20 41 4c 4c 20 2b 20 4d 49 4e 28 20 44 49  CT ALL + MIN( DI
27d20 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20  STINCT + + col1 
27d30 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  ) col0 FROM tab2
27d40 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
27d50 35 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  51....skipif mys
27d60 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
27d70 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
27d80 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
27d90 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
27da0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
27db0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
27dc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
27dd0 62 65 6c 2d 38 37 33 0d 0a 53 45 4c 45 43 54 20  bel-873..SELECT 
27de0 41 4c 4c 20 2b 20 4d 49 4e 20 28 20 44 49 53 54  ALL + MIN ( DIST
27df0 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 31 20 29 20  INCT + + col1 ) 
27e00 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
27e10 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31  S cor0..----..51
27e20 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
27e30 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  ort..SELECT col1
27e40 20 2a 20 2d 20 2b 20 33 36 20 41 53 20 63 6f 6c   * - + 36 AS col
27e50 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
27e60 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 39 31 36  or0..----..-2916
27e70 0d 0a 2d 33 36 0d 0a 2d 37 35 36 0d 0a 0d 0a 71  ..-36..-756....q
27e80 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
27e90 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
27ea0 2b 20 63 6f 6c 32 20 2a 20 2b 20 2d 20 39 31 20  + col2 * + - 91 
27eb0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
27ec0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 33 36 39 0d 0a  0..----..-5369..
27ed0 2d 36 31 38 38 0d 0a 2d 38 37 33 36 0d 0a 0d 0a  -6188..-8736....
27ee0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
27ef0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
27f00 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
27f10 72 74 20 6c 61 62 65 6c 2d 38 37 36 0d 0a 53 45  rt label-876..SE
27f20 4c 45 43 54 20 2b 20 32 36 20 2a 20 2b 20 2d 20  LECT + 26 * + - 
27f30 28 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ( - - COUNT( * )
27f40 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
27f50 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d  cor0..----..-78.
27f60 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
27f70 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
27f80 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
27f90 74 20 6c 61 62 65 6c 2d 38 37 36 0d 0a 53 45 4c  t label-876..SEL
27fa0 45 43 54 20 2b 20 32 36 20 2a 20 2b 20 2d 20 28  ECT + 26 * + - (
27fb0 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   - - COUNT ( * )
27fc0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
27fd0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d  cor0..----..-78.
27fe0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
27ff0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
28000 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
28010 52 45 20 4e 4f 54 20 2b 20 33 20 4e 4f 54 20 42  RE NOT + 3 NOT B
28020 45 54 57 45 45 4e 20 63 6f 6c 32 20 41 4e 44 20  ETWEEN col2 AND 
28030 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
28040 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
28050 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
28060 20 28 20 2b 20 2d 20 63 6f 6c 32 20 29 20 2b 20   ( + - col2 ) + 
28070 2b 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  + + col0 AS col0
28080 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
28090 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 36 0d 0a 36  r0..----..196..6
280a0 32 0d 0a 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  2..97....skipif 
280b0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
280c0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
280d0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
280e0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
280f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
28100 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38 37 20 63  t..SELECT + 87 c
28110 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
28120 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
28130 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a 2d   tab0 AS cor1..-
28140 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
28150 73 68 69 6e 67 20 74 6f 20 66 61 30 63 64 64 38  shing to fa0cdd8
28160 36 34 38 33 38 34 34 63 64 61 33 62 62 38 30 36  6483844cda3bb806
28170 65 30 33 32 64 35 63 36 34 0d 0a 0d 0a 6f 6e 6c  e032d5c64....onl
28180 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
28190 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
281a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
281b0 6c 61 62 65 6c 2d 38 38 30 0d 0a 53 45 4c 45 43  label-880..SELEC
281c0 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54  T DISTINCT COUNT
281d0 28 20 41 4c 4c 20 35 39 20 29 20 41 53 20 63 6f  ( ALL 59 ) AS co
281e0 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
281f0 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..3....skipif 
28200 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
28210 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
28220 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38  rowsort label-88
28230 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  0..SELECT DISTIN
28240 43 54 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 35  CT COUNT ( ALL 5
28250 39 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  9 ) AS col1 FROM
28260 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   tab1..----..3..
28270 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
28280 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 37 20  t..SELECT - - 7 
28290 2a 20 35 34 20 2b 20 2b 20 38 36 20 46 52 4f 4d  * 54 + + 86 FROM
282a0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
282b0 2d 2d 2d 0d 0a 34 36 34 0d 0a 34 36 34 0d 0a 34  ---..464..464..4
282c0 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  64....query I ro
282d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
282e0 32 35 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  25 FROM tab1 AS 
282f0 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor0 WHERE NULL 
28300 3c 3e 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  <> - col2..----.
28310 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
28320 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 63  rt..SELECT - + c
28330 6f 6c 30 20 2b 20 2d 20 2b 20 63 6f 6c 31 20 41  ol0 + - + col1 A
28340 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
28350 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
28360 2d 31 34 31 0d 0a 2d 31 34 32 0d 0a 2d 39 37 0d  -141..-142..-97.
28370 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
28380 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63  rt..SELECT - - c
28390 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
283a0 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52 45   tab2 cor0 WHERE
283b0 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 4e 55   NULL BETWEEN NU
283c0 4c 4c 20 41 4e 44 20 28 20 4e 55 4c 4c 20 29 0d  LL AND ( NULL ).
283d0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
283e0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
283f0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
28400 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
28410 6f 72 74 20 6c 61 62 65 6c 2d 38 38 35 0d 0a 53  ort label-885..S
28420 45 4c 45 43 54 20 2d 20 2d 20 43 41 53 54 28 20  ELECT - - CAST( 
28430 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
28440 20 2b 20 2b 20 2d 20 37 36 20 46 52 4f 4d 20 74   + + - 76 FROM t
28450 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
28460 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
28470 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
28480 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
28490 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
284a0 72 74 20 6c 61 62 65 6c 2d 38 38 35 0d 0a 53 45  rt label-885..SE
284b0 4c 45 43 54 20 2d 20 2d 20 43 41 53 54 20 28 20  LECT - - CAST ( 
284c0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
284d0 29 20 2b 20 2b 20 2d 20 37 36 20 46 52 4f 4d 20  ) + + - 76 FROM 
284e0 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
284f0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
28500 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
28510 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
28520 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
28530 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38  rowsort label-88
28540 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  6..SELECT ALL - 
28550 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
28560 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
28570 52 45 20 28 20 4e 4f 54 20 28 20 4e 55 4c 4c 20  RE ( NOT ( NULL 
28580 49 53 20 4e 55 4c 4c 20 29 20 29 0d 0a 2d 2d 2d  IS NULL ) )..---
28590 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
285a0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
285b0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
285c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 36  owsort label-886
285d0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43  ..SELECT ALL - C
285e0 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
285f0 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
28600 52 45 20 28 20 4e 4f 54 20 28 20 4e 55 4c 4c 20  RE ( NOT ( NULL 
28610 49 53 20 4e 55 4c 4c 20 29 20 29 0d 0a 2d 2d 2d  IS NULL ) )..---
28620 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..0....onlyif m
28630 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
28640 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
28650 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
28660 2d 38 38 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -887..SELECT DIS
28670 54 49 4e 43 54 20 32 37 20 2b 20 2b 20 43 4f 55  TINCT 27 + + COU
28680 4e 54 28 20 2a 20 29 20 2b 20 32 20 63 6f 6c 31  NT( * ) + 2 col1
28690 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
286a0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a 0d 0a  r0..----..32....
286b0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
286c0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
286d0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
286e0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
286f0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
28700 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
28710 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
28720 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38  rowsort label-88
28730 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  7..SELECT DISTIN
28740 43 54 20 32 37 20 2b 20 2b 20 43 4f 55 4e 54 20  CT 27 + + COUNT 
28750 28 20 2a 20 29 20 2b 20 32 20 63 6f 6c 31 20 46  ( * ) + 2 col1 F
28760 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
28770 0d 0a 2d 2d 2d 2d 0d 0a 33 32 0d 0a 0d 0a 71 75  ..----..32....qu
28780 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
28790 45 4c 45 43 54 20 33 30 20 2b 20 2b 20 32 37 20  ELECT 30 + + 27 
287a0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
287b0 30 0d 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 35 37 0d  0..----..57..57.
287c0 0a 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .57....query III
287d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
287e0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
287f0 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
28800 4e 55 4c 4c 20 3d 20 2b 20 32 33 20 2a 20 2b 20  NULL = + 23 * + 
28810 28 20 2d 20 33 38 20 29 0d 0a 2d 2d 2d 2d 0d 0a  ( - 38 )..----..
28820 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
28830 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 63 6f  t..SELECT - + co
28840 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
28850 74 61 62 32 20 57 48 45 52 45 20 63 6f 6c 30 20  tab2 WHERE col0 
28860 2a 20 2b 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c  * + col2 IS NULL
28870 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
28880 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
28890 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
288a0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
288b0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 31 0d 0a  sort label-891..
288c0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36 39 20  SELECT ALL + 69 
288d0 2d 20 34 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 2d  - 4 - - col2 + -
288e0 20 2d 20 28 20 2b 20 63 6f 6c 30 20 29 20 2b 20   - ( + col0 ) + 
288f0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
28900 47 4e 45 44 20 29 20 2a 20 2d 20 63 6f 6c 32 20  GNED ) * - col2 
28910 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
28920 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
28930 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
28940 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
28950 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
28960 6f 72 74 20 6c 61 62 65 6c 2d 38 39 31 0d 0a 53  ort label-891..S
28970 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36 39 20 2d  ELECT ALL + 69 -
28980 20 34 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 2d 20   4 - - col2 + - 
28990 2d 20 28 20 2b 20 63 6f 6c 30 20 29 20 2b 20 43  - ( + col0 ) + C
289a0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
289b0 54 45 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 32  TEGER ) * - col2
289c0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
289d0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
289e0 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
289f0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
28a00 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
28a10 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
28a20 39 32 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58  92..SELECT - MAX
28a30 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63  ( DISTINCT + + c
28a40 6f 6c 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol2 ) AS col0 FR
28a50 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
28a60 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  99....skipif mys
28a70 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
28a80 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
28a90 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 32 0d 0a  sort label-892..
28aa0 53 45 4c 45 43 54 20 2d 20 4d 41 58 20 28 20 44  SELECT - MAX ( D
28ab0 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c 32  ISTINCT + + col2
28ac0 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
28ad0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 39 0d  tab0..----..-99.
28ae0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
28af0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
28b00 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
28b10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
28b20 62 65 6c 2d 38 39 33 0d 0a 53 45 4c 45 43 54 20  bel-893..SELECT 
28b30 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 28 20 2d  + - col1 * - ( -
28b40 20 43 41 53 54 28 20 2b 20 2d 20 63 6f 6c 31 20   CAST( + - col1 
28b50 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 41 53  AS SIGNED ) ) AS
28b60 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
28b70 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
28b80 39 36 0d 0a 32 32 30 39 0d 0a 32 35 0d 0a 0d 0a  96..2209..25....
28b90 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
28ba0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
28bb0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
28bc0 61 62 65 6c 2d 38 39 33 0d 0a 53 45 4c 45 43 54  abel-893..SELECT
28bd0 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 28 20   + - col1 * - ( 
28be0 2d 20 43 41 53 54 20 28 20 2b 20 2d 20 63 6f 6c  - CAST ( + - col
28bf0 31 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29  1 AS INTEGER ) )
28c00 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
28c10 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
28c20 0d 0a 31 39 36 0d 0a 32 32 30 39 0d 0a 32 35 0d  ..196..2209..25.
28c30 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
28c40 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
28c50 30 20 2d 20 2b 20 32 32 20 46 52 4f 4d 20 74 61  0 - + 22 FROM ta
28c60 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
28c70 0d 0a 2d 36 38 0d 0a 2d 38 36 0d 0a 2d 39 37 0d  ..-68..-86..-97.
28c80 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
28c90 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
28ca0 4e 43 54 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f  NCT + col0 AS co
28cb0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
28cc0 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 30 20  cor0 WHERE col0 
28cd0 2b 20 2d 20 31 35 20 49 53 20 4e 4f 54 20 4e 55  + - 15 IS NOT NU
28ce0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 38 35  LL..----..51..85
28cf0 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..91....onlyif m
28d00 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
28d10 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
28d20 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
28d30 72 74 20 6c 61 62 65 6c 2d 38 39 36 0d 0a 53 45  rt label-896..SE
28d40 4c 45 43 54 20 43 41 53 54 28 20 2b 20 2d 20 33  LECT CAST( + - 3
28d50 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  0 AS SIGNED ) AS
28d60 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
28d70 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
28d80 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 0d  IN tab1 AS cor1.
28d90 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
28da0 68 61 73 68 69 6e 67 20 74 6f 20 35 36 66 61 32  hashing to 56fa2
28db0 35 66 39 66 62 38 30 34 30 34 36 30 66 65 33 63  5f9fb8040460fe3c
28dc0 38 39 34 30 30 30 65 61 38 66 62 0d 0a 0d 0a 73  894000ea8fb....s
28dd0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
28de0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
28df0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
28e00 62 65 6c 2d 38 39 36 0d 0a 53 45 4c 45 43 54 20  bel-896..SELECT 
28e10 43 41 53 54 20 28 20 2b 20 2d 20 33 30 20 41 53  CAST ( + - 30 AS
28e20 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
28e30 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
28e40 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
28e50 74 61 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d  tab1 AS cor1..--
28e60 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
28e70 68 69 6e 67 20 74 6f 20 35 36 66 61 32 35 66 39  hing to 56fa25f9
28e80 66 62 38 30 34 30 34 36 30 66 65 33 63 38 39 34  fb8040460fe3c894
28e90 30 30 30 65 61 38 66 62 0d 0a 0d 0a 71 75 65 72  000ea8fb....quer
28ea0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
28eb0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
28ec0 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
28ed0 20 4e 4f 54 20 2d 20 37 31 20 2b 20 2b 20 63 6f   NOT - 71 + + co
28ee0 6c 32 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f  l2 + col2 * + co
28ef0 6c 30 20 2a 20 32 34 20 2f 20 2b 20 63 6f 6c 31  l0 * 24 / + col1
28f00 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
28f10 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
28f20 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
28f30 31 36 20 2a 20 63 6f 6c 31 20 41 53 20 63 6f 6c  16 * col1 AS col
28f40 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
28f50 2d 0d 0a 2d 32 32 34 0d 0a 2d 37 35 32 0d 0a 2d  -..-224..-752..-
28f60 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  80....query I ro
28f70 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
28f80 4c 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32  L - col0 AS col2
28f90 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
28fa0 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  r0 WHERE NOT col
28fb0 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
28fc0 0a 2d 31 35 0d 0a 2d 38 37 0d 0a 2d 39 37 0d 0a  .-15..-87..-97..
28fd0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
28fe0 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
28ff0 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
29000 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
29010 65 6c 2d 39 30 30 0d 0a 53 45 4c 45 43 54 20 32  el-900..SELECT 2
29020 35 20 44 49 56 20 2d 20 63 6f 6c 30 20 46 52 4f  5 DIV - col0 FRO
29030 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
29040 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ..0..0....skipif
29050 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
29060 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
29070 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
29080 30 30 0d 0a 53 45 4c 45 43 54 20 32 35 20 2f 20  00..SELECT 25 / 
29090 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  - col0 FROM tab0
290a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d 0a 30  ..----..-1..0..0
290b0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
290c0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
290d0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
290e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
290f0 61 62 65 6c 2d 39 30 31 0d 0a 53 45 4c 45 43 54  abel-901..SELECT
29100 20 34 33 20 2a 20 43 41 53 54 28 20 4e 55 4c 4c   43 * CAST( NULL
29110 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
29120 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
29130 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
29140 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
29150 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
29160 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
29170 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
29180 30 31 0d 0a 53 45 4c 45 43 54 20 34 33 20 2a 20  01..SELECT 43 * 
29190 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
291a0 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32  NTEGER ) AS col2
291b0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
291c0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
291d0 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
291e0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
291f0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
29200 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
29210 72 74 20 6c 61 62 65 6c 2d 39 30 32 0d 0a 53 45  rt label-902..SE
29220 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
29230 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
29240 4e 4f 54 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 2d  NOT - - col1 + -
29250 20 43 41 53 54 28 20 2b 20 2d 20 63 6f 6c 30 20   CAST( + - col0 
29260 41 53 20 53 49 47 4e 45 44 20 29 20 49 53 20 4e  AS SIGNED ) IS N
29270 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
29280 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
29290 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
292a0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
292b0 74 20 6c 61 62 65 6c 2d 39 30 32 0d 0a 53 45 4c  t label-902..SEL
292c0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
292d0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
292e0 4f 54 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 2d 20  OT - - col1 + - 
292f0 43 41 53 54 20 28 20 2b 20 2d 20 63 6f 6c 30 20  CAST ( + - col0 
29300 41 53 20 49 4e 54 45 47 45 52 20 29 20 49 53 20  AS INTEGER ) IS 
29310 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
29320 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29330 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a  t..SELECT col1 *
29340 20 2b 20 33 38 20 46 52 4f 4d 20 74 61 62 32 0d   + 38 FROM tab2.
29350 0a 2d 2d 2d 2d 0d 0a 31 39 33 38 0d 0a 32 35 34  .----..1938..254
29360 36 0d 0a 32 39 32 36 0d 0a 0d 0a 71 75 65 72 79  6..2926....query
29370 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
29380 43 54 20 2b 20 31 36 20 2b 20 2b 20 31 37 20 41  CT + 16 + + 17 A
29390 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
293a0 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20   WHERE NOT col1 
293b0 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a  + col1 IS NULL..
293c0 2d 2d 2d 2d 0d 0a 33 33 0d 0a 33 33 0d 0a 33 33  ----..33..33..33
293d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
293e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20  ort..SELECT ( - 
293f0 63 6f 6c 30 20 29 20 2a 20 2d 20 28 20 37 38 20  col0 ) * - ( 78 
29400 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
29410 2d 0d 0a 33 35 38 38 0d 0a 34 39 39 32 0d 0a 35  -..3588..4992..5
29420 38 35 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  850....onlyif my
29430 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
29440 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
29450 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
29460 39 30 36 0d 0a 53 45 4c 45 43 54 20 39 32 20 2a  906..SELECT 92 *
29470 20 2b 20 4d 41 58 28 20 2d 20 2d 20 63 6f 6c 31   + MAX( - - col1
29480 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d   ) FROM tab2..--
29490 2d 2d 0d 0a 37 30 38 34 0d 0a 0d 0a 73 6b 69 70  --..7084....skip
294a0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
294b0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
294c0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
294d0 2d 39 30 36 0d 0a 53 45 4c 45 43 54 20 39 32 20  -906..SELECT 92 
294e0 2a 20 2b 20 4d 41 58 20 28 20 2d 20 2d 20 63 6f  * + MAX ( - - co
294f0 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  l1 ) FROM tab2..
29500 2d 2d 2d 2d 0d 0a 37 30 38 34 0d 0a 0d 0a 6f 6e  ----..7084....on
29510 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
29520 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
29530 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
29540 20 6c 61 62 65 6c 2d 39 30 37 0d 0a 53 45 4c 45   label-907..SELE
29550 43 54 20 2d 20 43 4f 55 4e 54 28 20 41 4c 4c 20  CT - COUNT( ALL 
29560 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  + col1 ) FROM ta
29570 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 2d  b0 WHERE NOT + -
29580 20 39 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   90 IS NOT NULL.
29590 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
295a0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
295b0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
295c0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
295d0 2d 39 30 37 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -907..SELECT - C
295e0 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20 63 6f 6c  OUNT ( ALL + col
295f0 31 20 29 20 46 52 4f 4d 20 74 61 62 30 20 57 48  1 ) FROM tab0 WH
29600 45 52 45 20 4e 4f 54 20 2b 20 2d 20 39 30 20 49  ERE NOT + - 90 I
29610 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
29620 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ..0....query II 
29630 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
29640 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
29650 2a 20 2b 20 63 6f 6c 31 2c 20 63 6f 6c 32 20 46  * + col1, col2 F
29660 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
29670 2d 34 32 35 0d 0a 35 39 0d 0a 2d 34 32 37 37 0d  -425..59..-4277.
29680 0a 36 38 0d 0a 2d 37 31 34 0d 0a 39 36 0d 0a 0d  .68..-714..96...
29690 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
296a0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
296b0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
296c0 6f 72 74 20 6c 61 62 65 6c 2d 39 30 39 0d 0a 53  ort label-909..S
296d0 45 4c 45 43 54 20 2d 20 2b 20 37 37 20 2b 20 2d  ELECT - + 77 + -
296e0 20 53 55 4d 28 20 41 4c 4c 20 2b 20 63 6f 6c 31   SUM( ALL + col1
296f0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
29700 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
29710 2d 2d 0d 0a 2d 32 37 32 0d 0a 0d 0a 73 6b 69 70  --..-272....skip
29720 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
29730 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
29740 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
29750 2d 39 30 39 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  -909..SELECT - +
29760 20 37 37 20 2b 20 2d 20 53 55 4d 20 28 20 41 4c   77 + - SUM ( AL
29770 4c 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 63 6f  L + col1 ) AS co
29780 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
29790 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 32  cor0..----..-272
297a0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
297b0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
297c0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
297d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31 30  owsort label-910
297e0 0d 0a 53 45 4c 45 43 54 20 36 38 20 2a 20 2d 20  ..SELECT 68 * - 
297f0 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b  - COUNT( * ) * +
29800 20 39 33 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   93 col1 FROM ta
29810 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 39 37 32 0d  b0..----..18972.
29820 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
29830 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
29840 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
29850 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
29860 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
29870 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
29880 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
29890 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
298a0 2d 39 31 30 0d 0a 53 45 4c 45 43 54 20 36 38 20  -910..SELECT 68 
298b0 2a 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  * - - COUNT ( * 
298c0 29 20 2a 20 2b 20 39 33 20 63 6f 6c 31 20 46 52  ) * + 93 col1 FR
298d0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
298e0 38 39 37 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  8972....query I 
298f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
29900 41 4c 4c 20 28 20 2d 20 2b 20 32 36 20 29 20 46  ALL ( - + 26 ) F
29910 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
29920 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32   CROSS JOIN tab2
29930 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
29940 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
29950 20 74 6f 20 34 37 64 30 35 37 34 32 37 34 31 34   to 47d057427414
29960 36 64 65 32 37 33 38 32 39 37 38 35 33 36 34 61  6de273829785364a
29970 64 61 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49  da39....query II
29980 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
29990 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48  T * FROM tab2 WH
299a0 45 52 45 20 34 39 20 3c 3e 20 2b 20 2b 20 63 6f  ERE 49 <> + + co
299b0 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  l1..----..9 valu
299c0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
299d0 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
299e0 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
299f0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
29a00 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
29a10 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
29a20 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 30 20 2f  or0 WHERE col0 /
29a30 20 33 31 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c   31 BETWEEN NULL
29a40 20 41 4e 44 20 2d 20 63 6f 6c 30 20 2d 20 2d 20   AND - col0 - - 
29a50 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col1..----....qu
29a60 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
29a70 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
29a80 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
29a90 45 20 63 6f 6c 32 20 3e 20 2b 20 63 6f 6c 30 0d  E col2 > + col0.
29aa0 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 31 34 0d 0a 39  .----..51..14..9
29ab0 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  6....query III r
29ac0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
29ad0 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
29ae0 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3d 20 28 20  WHERE NULL <= ( 
29af0 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  NULL )..----....
29b00 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
29b10 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
29b20 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
29b30 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54  ERE NULL NOT BET
29b40 57 45 45 4e 20 2b 20 63 6f 6c 31 20 41 4e 44 20  WEEN + col1 AND 
29b50 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
29b60 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
29b70 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
29b80 20 31 38 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20   18 + + col2 AS 
29b90 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
29ba0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32  S cor0..----..22
29bb0 0d 0a 34 30 0d 0a 35 0d 0a 0d 0a 71 75 65 72 79  ..40..5....query
29bc0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
29bd0 43 54 20 2d 20 28 20 2d 20 2d 20 39 36 20 29 20  CT - ( - - 96 ) 
29be0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
29bf0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 36 0d 0a 2d 39  0..----..-96..-9
29c00 36 0d 0a 2d 39 36 0d 0a 0d 0a 73 6b 69 70 69 66  6..-96....skipif
29c10 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
29c20 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
29c30 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
29c40 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
29c50 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
29c60 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37 36 20  rt..SELECT + 76 
29c70 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 63  col1 FROM tab1 c
29c80 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 37  or0..----..76..7
29c90 36 0d 0a 37 36 0d 0a 0d 0a 71 75 65 72 79 20 49  6..76....query I
29ca0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
29cb0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41  CT * FROM tab0 A
29cc0 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20 63  S cor0 WHERE - c
29cd0 6f 6c 32 20 2b 20 34 32 20 49 53 20 4e 4f 54 20  ol2 + 42 IS NOT 
29ce0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  NULL..----..9 va
29cf0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
29d00 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61  c4b42765dff94eaa
29d10 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37  a46040e537fb43b7
29d20 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
29d30 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
29d40 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
29d50 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32 31  owsort label-921
29d60 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e 28 20  ..SELECT - MIN( 
29d70 2d 20 39 30 20 29 20 2d 20 2b 20 2d 20 43 4f 55  - 90 ) - + - COU
29d80 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2b 20 31 36  NT( * ) * + + 16
29d90 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
29da0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 38 0d 0a 0d  r0..----..138...
29db0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
29dc0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
29dd0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
29de0 6c 61 62 65 6c 2d 39 32 31 0d 0a 53 45 4c 45 43  label-921..SELEC
29df0 54 20 2d 20 4d 49 4e 20 28 20 2d 20 39 30 20 29  T - MIN ( - 90 )
29e00 20 2d 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a   - + - COUNT ( *
29e10 20 29 20 2a 20 2b 20 2b 20 31 36 20 46 52 4f 4d   ) * + + 16 FROM
29e20 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
29e30 2d 2d 2d 0d 0a 31 33 38 0d 0a 0d 0a 73 6b 69 70  ---..138....skip
29e40 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
29e50 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
29e60 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
29e70 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
29e80 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
29e90 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
29ea0 20 2b 20 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20   + ( + col1 ) + 
29eb0 39 36 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  96 col2 FROM tab
29ec0 31 0d 0a 2d 2d 2d 2d 0d 0a 31 30 31 0d 0a 31 31  1..----..101..11
29ed0 30 0d 0a 31 34 33 0d 0a 0d 0a 71 75 65 72 79 20  0..143....query 
29ee0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
29ef0 43 54 20 44 49 53 54 49 4e 43 54 20 39 34 20 2b  CT DISTINCT 94 +
29f00 20 35 31 20 2a 20 63 6f 6c 32 20 2a 20 2d 20 63   51 * col2 * - c
29f10 6f 6c 30 20 41 53 20 63 6f 6c 30 2c 20 2b 20 28  ol0 AS col0, + (
29f20 20 2b 20 37 31 20 29 20 46 52 4f 4d 20 74 61 62   + 71 ) FROM tab
29f30 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 39 36 30 32  1..----..-249602
29f40 0d 0a 37 31 0d 0a 2d 32 35 35 36 37 31 0d 0a 37  ..71..-255671..7
29f50 31 0d 0a 2d 33 31 35 34 39 34 0d 0a 37 31 0d 0a  1..-315494..71..
29f60 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
29f70 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
29f80 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
29f90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
29fa0 65 6c 2d 39 32 34 0d 0a 53 45 4c 45 43 54 20 2d  el-924..SELECT -
29fb0 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20 2d 20 2b   col0 * col2 - +
29fc0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
29fd0 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 32 20  IGNED ) AS col2 
29fe0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
29ff0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
2a000 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
2a010 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2a020 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2a030 6f 72 74 20 6c 61 62 65 6c 2d 39 32 34 0d 0a 53  ort label-924..S
2a040 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2a 20 63  ELECT - col0 * c
2a050 6f 6c 32 20 2d 20 2b 20 43 41 53 54 20 28 20 4e  ol2 - + CAST ( N
2a060 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
2a070 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2a080 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b0..----..NULL..
2a090 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e  NULL..NULL....on
2a0a0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
2a0b0 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
2a0c0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
2a0d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2a0e0 32 35 0d 0a 53 45 4c 45 43 54 20 34 31 20 2a 20  25..SELECT 41 * 
2a0f0 31 37 20 2d 20 2d 20 2d 20 35 39 20 2a 20 2d 20  17 - - - 59 * - 
2a100 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
2a110 53 49 47 4e 45 44 20 29 20 2a 20 2b 20 2d 20 63  SIGNED ) * + - c
2a120 6f 6c 32 20 2f 20 2b 20 2b 20 63 6f 6c 30 20 46  ol2 / + + col0 F
2a130 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
2a140 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
2a150 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2a160 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2a170 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2a180 72 74 20 6c 61 62 65 6c 2d 39 32 35 0d 0a 53 45  rt label-925..SE
2a190 4c 45 43 54 20 34 31 20 2a 20 31 37 20 2d 20 2d  LECT 41 * 17 - -
2a1a0 20 2d 20 35 39 20 2a 20 2d 20 2b 20 43 41 53 54   - 59 * - + CAST
2a1b0 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
2a1c0 45 52 20 29 20 2a 20 2b 20 2d 20 63 6f 6c 32 20  ER ) * + - col2 
2a1d0 2f 20 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20  / + + col0 FROM 
2a1e0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab1..----..NULL
2a1f0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
2a200 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
2a210 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
2a220 20 74 61 62 30 20 57 48 45 52 45 20 28 20 28 20   tab0 WHERE ( ( 
2a230 4e 55 4c 4c 20 29 20 3e 3d 20 2b 20 63 6f 6c 31  NULL ) >= + col1
2a240 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d   + + + col2 )..-
2a250 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
2a260 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2a270 44 49 53 54 49 4e 43 54 20 2b 20 34 30 20 2b 20  DISTINCT + 40 + 
2a280 2b 20 32 31 20 2a 20 32 30 2c 20 2b 20 32 31 20  + 21 * 20, + 21 
2a290 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2a2a0 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
2a2b0 20 3e 3d 20 2b 20 33 38 20 2a 20 2d 20 38 34 0d   >= + 38 * - 84.
2a2c0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
2a2d0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2a2e0 54 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c 31 20 41  T ALL - + col1 A
2a2f0 53 20 63 6f 6c 30 2c 20 28 20 2b 20 2d 20 35 34  S col0, ( + - 54
2a300 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
2a310 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d  cor0..----..-14.
2a320 0a 2d 35 34 0d 0a 2d 34 37 0d 0a 2d 35 34 0d 0a  .-54..-47..-54..
2a330 2d 35 0d 0a 2d 35 34 0d 0a 0d 0a 71 75 65 72 79  -5..-54....query
2a340 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
2a350 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
2a360 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20 57  FROM tab0 cor0 W
2a370 48 45 52 45 20 28 20 4e 4f 54 20 4e 55 4c 4c 20  HERE ( NOT NULL 
2a380 3c 20 2d 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d  < - + col1 )..--
2a390 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
2a3a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2a3b0 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20  STINCT + col0 * 
2a3c0 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  + - col2 FROM ta
2a3d0 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b2 cor0..----..-
2a3e0 31 30 35 38 0d 0a 2d 32 35 36 30 0d 0a 2d 34 33  1058..-2560..-43
2a3f0 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  50....query I ro
2a400 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20  wsort..SELECT ( 
2a410 2d 20 2b 20 37 34 20 29 20 46 52 4f 4d 20 74 61  - + 74 ) FROM ta
2a420 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2a430 0d 0a 2d 37 34 0d 0a 2d 37 34 0d 0a 2d 37 34 0d  ..-74..-74..-74.
2a440 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
2a450 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
2a460 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
2a470 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
2a480 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
2a490 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
2a4a0 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32 20  LECT ALL - col2 
2a4b0 2f 20 63 6f 6c 32 20 2b 20 63 6f 6c 31 20 41 53  / col2 + col1 AS
2a4c0 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c 32 20 63 6f   col2, - col2 co
2a4d0 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
2a4e0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 31  cor0 WHERE NOT 1
2a4f0 31 20 2a 20 2d 20 63 6f 6c 30 20 2d 20 63 6f 6c  1 * - col0 - col
2a500 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  0 IS NOT NULL..-
2a510 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
2a520 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
2a530 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
2a540 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2a550 39 33 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  933..SELECT ALL 
2a560 2d 20 2b 20 53 55 4d 28 20 41 4c 4c 20 2d 20 63  - + SUM( ALL - c
2a570 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ol2 ) AS col2 FR
2a580 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
2a590 0a 2d 2d 2d 2d 0d 0a 31 35 36 0d 0a 0d 0a 73 6b  .----..156....sk
2a5a0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2a5b0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2a5c0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2a5d0 65 6c 2d 39 33 33 0d 0a 53 45 4c 45 43 54 20 41  el-933..SELECT A
2a5e0 4c 4c 20 2d 20 2b 20 53 55 4d 20 28 20 41 4c 4c  LL - + SUM ( ALL
2a5f0 20 2d 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c   - col2 ) AS col
2a600 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
2a610 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 36 0d 0a  or0..----..156..
2a620 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a630 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35 39 20 2a  t..SELECT - 59 *
2a640 20 2d 20 37 31 20 46 52 4f 4d 20 74 61 62 31 0d   - 71 FROM tab1.
2a650 0a 2d 2d 2d 2d 0d 0a 34 31 38 39 0d 0a 34 31 38  .----..4189..418
2a660 39 0d 0a 34 31 38 39 0d 0a 0d 0a 6f 6e 6c 79 69  9..4189....onlyi
2a670 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2a680 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2a690 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2a6a0 62 65 6c 2d 39 33 35 0d 0a 53 45 4c 45 43 54 20  bel-935..SELECT 
2a6b0 53 55 4d 28 20 2d 20 35 37 20 29 20 2b 20 2b 20  SUM( - 57 ) + + 
2a6c0 39 36 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  96 AS col0 FROM 
2a6d0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 35 0d  tab0..----..-75.
2a6e0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2a6f0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2a700 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a710 74 20 6c 61 62 65 6c 2d 39 33 35 0d 0a 53 45 4c  t label-935..SEL
2a720 45 43 54 20 53 55 4d 20 28 20 2d 20 35 37 20 29  ECT SUM ( - 57 )
2a730 20 2b 20 2b 20 39 36 20 41 53 20 63 6f 6c 30 20   + + 96 AS col0 
2a740 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
2a750 0a 2d 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-75....onlyif m
2a760 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
2a770 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
2a780 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2a790 72 74 20 6c 61 62 65 6c 2d 39 33 36 0d 0a 53 45  rt label-936..SE
2a7a0 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2a 20 63 6f  LECT - col0 * co
2a7b0 6c 31 20 2a 20 2d 20 2d 20 32 30 20 2b 20 2b 20  l1 * - - 20 + + 
2a7c0 43 41 53 54 28 20 63 6f 6c 30 20 41 53 20 53 49  CAST( col0 AS SI
2a7d0 47 4e 45 44 20 29 20 63 6f 6c 30 20 46 52 4f 4d  GNED ) col0 FROM
2a7e0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   tab0..----..-18
2a7f0 34 33 0d 0a 2d 32 34 32 38 35 0d 0a 2d 33 36 34  43..-24285..-364
2a800 35 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  53....skipif mys
2a810 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2a820 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
2a830 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
2a840 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
2a850 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
2a860 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
2a870 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2a880 62 65 6c 2d 39 33 36 0d 0a 53 45 4c 45 43 54 20  bel-936..SELECT 
2a890 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20 2a 20  - col0 * col1 * 
2a8a0 2d 20 2d 20 32 30 20 2b 20 2b 20 43 41 53 54 20  - - 20 + + CAST 
2a8b0 28 20 63 6f 6c 30 20 41 53 20 49 4e 54 45 47 45  ( col0 AS INTEGE
2a8c0 52 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  R ) col0 FROM ta
2a8d0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 34 33 0d  b0..----..-1843.
2a8e0 0a 2d 32 34 32 38 35 0d 0a 2d 33 36 34 35 33 0d  .-24285..-36453.
2a8f0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2a900 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2a910 4e 43 54 20 2d 20 38 37 20 2a 20 2b 20 2b 20 34  NCT - 87 * + + 4
2a920 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
2a930 2d 0d 0a 2d 33 36 35 34 0d 0a 0d 0a 6f 6e 6c 79  -..-3654....only
2a940 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2a950 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2a960 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
2a970 6c 61 62 65 6c 2d 39 33 38 0d 0a 53 45 4c 45 43  label-938..SELEC
2a980 54 20 34 33 2c 20 4d 41 58 28 20 44 49 53 54 49  T 43, MAX( DISTI
2a990 4e 43 54 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  NCT col2 ) AS co
2a9a0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
2a9b0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 33 0d 0a  cor0..----..43..
2a9c0 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  99....skipif mys
2a9d0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2a9e0 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  ble..query II ro
2a9f0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 33 38 0d  wsort label-938.
2aa00 0a 53 45 4c 45 43 54 20 34 33 2c 20 4d 41 58 20  .SELECT 43, MAX 
2aa10 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20  ( DISTINCT col2 
2aa20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
2aa30 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
2aa40 2d 0d 0a 34 33 0d 0a 39 39 0d 0a 0d 0a 6f 6e 6c  -..43..99....onl
2aa50 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2aa60 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49  egate syntax: DI
2aa70 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
2aa80 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
2aa90 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2aaa0 39 33 39 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  939..SELECT + + 
2aab0 28 20 2b 20 2d 20 28 20 2b 20 39 31 20 29 20 29  ( + - ( + 91 ) )
2aac0 20 44 49 56 20 4d 49 4e 28 20 2b 20 63 6f 6c 30   DIV MIN( + col0
2aad0 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
2aae0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 0d 0a  cor0..----..-6..
2aaf0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2ab00 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2ab10 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2ab20 20 6c 61 62 65 6c 2d 39 33 39 0d 0a 53 45 4c 45   label-939..SELE
2ab30 43 54 20 2b 20 2b 20 28 20 2b 20 2d 20 28 20 2b  CT + + ( + - ( +
2ab40 20 39 31 20 29 20 29 20 2f 20 4d 49 4e 20 28 20   91 ) ) / MIN ( 
2ab50 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  + col0 ) FROM ta
2ab60 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2ab70 0d 0a 2d 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..-6....onlyif m
2ab80 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
2ab90 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
2aba0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2abb0 2d 39 34 30 0d 0a 53 45 4c 45 43 54 20 28 20 2d  -940..SELECT ( -
2abc0 20 2d 20 4d 49 4e 28 20 2d 20 2b 20 39 34 20 29   - MIN( - + 94 )
2abd0 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
2abe0 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  0 AS cor0 CROSS 
2abf0 4a 4f 49 4e 20 74 61 62 32 20 63 6f 72 31 0d 0a  JOIN tab2 cor1..
2ac00 2d 2d 2d 2d 0d 0a 2d 39 34 0d 0a 0d 0a 73 6b 69  ----..-94....ski
2ac10 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2ac20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
2ac30 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2ac40 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2ac50 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2ac60 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2ac70 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
2ac80 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34 30 0d 0a  sort label-940..
2ac90 53 45 4c 45 43 54 20 28 20 2d 20 2d 20 4d 49 4e  SELECT ( - - MIN
2aca0 20 28 20 2d 20 2b 20 39 34 20 29 20 29 20 63 6f   ( - + 94 ) ) co
2acb0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
2acc0 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
2acd0 74 61 62 32 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  tab2 cor1..----.
2ace0 0a 2d 39 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-94....query I 
2acf0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2ad00 2d 20 2b 20 36 38 20 46 52 4f 4d 20 74 61 62 31  - + 68 FROM tab1
2ad10 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
2ad20 20 74 61 62 32 20 63 6f 72 31 0d 0a 2d 2d 2d 2d   tab2 cor1..----
2ad30 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
2ad40 6e 67 20 74 6f 20 35 66 65 62 66 33 38 32 64 33  ng to 5febf382d3
2ad50 36 64 36 65 30 31 39 31 38 38 39 63 34 31 62 39  6d6e0191889c41b9
2ad60 32 38 37 38 36 66 0d 0a 0d 0a 71 75 65 72 79 20  28786f....query 
2ad70 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2ad80 54 20 2b 20 36 39 20 2b 20 35 31 20 41 53 20 63  T + 69 + 51 AS c
2ad90 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol2 FROM tab0 AS
2ada0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 30   cor0..----..120
2adb0 0d 0a 31 32 30 0d 0a 31 32 30 0d 0a 0d 0a 71 75  ..120..120....qu
2adc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2add0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2b  ELECT ALL col0 +
2ade0 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 63 6f   - col1 + + - co
2adf0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
2ae00 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d  cor0..----..-14.
2ae10 0a 2d 34 37 0d 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79  .-47..-5....only
2ae20 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2ae30 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2ae40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2ae50 61 62 65 6c 2d 39 34 34 0d 0a 53 45 4c 45 43 54  abel-944..SELECT
2ae60 20 2d 20 38 33 20 2b 20 4d 49 4e 28 20 63 6f 6c   - 83 + MIN( col
2ae70 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
2ae80 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
2ae90 0d 0a 2d 38 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-82....skipif 
2aea0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2aeb0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2aec0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34  rowsort label-94
2aed0 34 0d 0a 53 45 4c 45 43 54 20 2d 20 38 33 20 2b  4..SELECT - 83 +
2aee0 20 4d 49 4e 20 28 20 63 6f 6c 31 20 29 20 41 53   MIN ( col1 ) AS
2aef0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
2af00 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 32 0d  cor0..----..-82.
2af10 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2af20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
2af30 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
2af40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2af50 62 65 6c 2d 39 34 35 0d 0a 53 45 4c 45 43 54 20  bel-945..SELECT 
2af60 41 4c 4c 20 63 6f 6c 31 20 2a 20 2b 20 2d 20 63  ALL col1 * + - c
2af70 6f 6c 32 20 2a 20 2d 20 63 6f 6c 32 20 2b 20 2d  ol2 * - col2 + -
2af80 20 63 6f 6c 32 20 2b 20 39 32 20 2b 20 2b 20 43   col2 + 92 + + C
2af90 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
2afa0 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 30 20  NED ) FROM tab0 
2afb0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
2afc0 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
2afd0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2afe0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2aff0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2b000 74 20 6c 61 62 65 6c 2d 39 34 35 0d 0a 53 45 4c  t label-945..SEL
2b010 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2a 20 2b  ECT ALL col1 * +
2b020 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 32   - col2 * - col2
2b030 20 2b 20 2d 20 63 6f 6c 32 20 2b 20 39 32 20 2b   + - col2 + 92 +
2b040 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   + CAST ( NULL A
2b050 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d  S INTEGER ) FROM
2b060 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
2b070 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
2b080 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49  .NULL....query I
2b090 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
2b0a0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  CT * FROM tab1 A
2b0b0 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 33  S cor0 WHERE + 3
2b0c0 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 2a 20 2b 20   * + + col2 * + 
2b0d0 34 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  41 IS NULL..----
2b0e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2b0f0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
2b100 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
2b110 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34 37  owsort label-947
2b120 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f 55  ..SELECT + + COU
2b130 4e 54 28 20 2a 20 29 20 2a 20 2b 20 37 31 20 2b  NT( * ) * + 71 +
2b140 20 2b 20 2b 20 34 30 20 41 53 20 63 6f 6c 31 20   + + 40 AS col1 
2b150 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2b160 30 0d 0a 2d 2d 2d 2d 0d 0a 32 35 33 0d 0a 0d 0a  0..----..253....
2b170 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2b180 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2b190 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b1a0 61 62 65 6c 2d 39 34 37 0d 0a 53 45 4c 45 43 54  abel-947..SELECT
2b1b0 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
2b1c0 20 2a 20 2b 20 37 31 20 2b 20 2b 20 2b 20 34 30   * + 71 + + + 40
2b1d0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2b1e0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2b1f0 0d 0a 32 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49  ..253....query I
2b200 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2b210 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 46 52 4f 4d   ALL + col2 FROM
2b220 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
2b230 45 52 45 20 32 32 20 2b 20 2d 20 63 6f 6c 31 20  ERE 22 + - col1 
2b240 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
2b250 2d 0d 0a 32 33 0d 0a 34 30 0d 0a 35 38 0d 0a 0d  -..23..40..58...
2b260 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2b270 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
2b280 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
2b290 72 30 20 57 48 45 52 45 20 2b 20 36 32 20 42 45  r0 WHERE + 62 BE
2b2a0 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e  TWEEN NULL AND N
2b2b0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
2b2c0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2b2d0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2b2e0 63 6f 6c 32 20 2d 20 2b 20 2d 20 63 6f 6c 30 20  col2 - + - col0 
2b2f0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
2b300 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 34 0d 0a 31 34  1..----..144..14
2b310 37 0d 0a 31 35 39 0d 0a 0d 0a 71 75 65 72 79 20  7..159....query 
2b320 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2b330 54 20 41 4c 4c 20 63 6f 6c 31 20 2b 20 2d 20 2b  T ALL col1 + - +
2b340 20 39 39 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   99 FROM tab2..-
2b350 2d 2d 2d 0d 0a 2d 32 32 0d 0a 2d 33 32 0d 0a 2d  ---..-22..-32..-
2b360 34 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  48....onlyif mys
2b370 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
2b380 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
2b390 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2b3a0 20 6c 61 62 65 6c 2d 39 35 32 0d 0a 53 45 4c 45   label-952..SELE
2b3b0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30  CT DISTINCT col0
2b3c0 20 2d 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   - - CAST( NULL 
2b3d0 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d  AS SIGNED ) FROM
2b3e0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab0..----..NUL
2b3f0 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
2b400 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2b410 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2b420 6f 72 74 20 6c 61 62 65 6c 2d 39 35 32 0d 0a 53  ort label-952..S
2b430 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
2b440 6f 6c 30 20 2d 20 2d 20 43 41 53 54 20 28 20 4e  ol0 - - CAST ( N
2b450 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
2b460 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
2b470 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..NULL....onlyif
2b480 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2b490 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2b4a0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
2b4b0 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35 33 0d 0a  sort label-953..
2b4c0 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20 2d  SELECT ALL ( + -
2b4d0 20 35 34 20 29 20 44 49 56 20 2d 20 63 6f 6c 32   54 ) DIV - col2
2b4e0 20 2b 20 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f   + col0 col1 FRO
2b4f0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 38  M tab2..----..48
2b500 0d 0a 36 35 0d 0a 37 35 0d 0a 0d 0a 73 6b 69 70  ..65..75....skip
2b510 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2b520 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
2b530 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
2b540 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
2b550 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
2b560 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
2b570 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
2b580 6f 72 74 20 6c 61 62 65 6c 2d 39 35 33 0d 0a 53  ort label-953..S
2b590 45 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20 2d 20  ELECT ALL ( + - 
2b5a0 35 34 20 29 20 2f 20 2d 20 63 6f 6c 32 20 2b 20  54 ) / - col2 + 
2b5b0 63 6f 6c 30 20 63 6f 6c 31 20 46 52 4f 4d 20 74  col0 col1 FROM t
2b5c0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 38 0d 0a 36  ab2..----..48..6
2b5d0 35 0d 0a 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  5..75....onlyif 
2b5e0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2b5f0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2b600 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
2b610 65 6c 2d 39 35 34 0d 0a 53 45 4c 45 43 54 20 2b  el-954..SELECT +
2b620 20 34 30 20 41 53 20 63 6f 6c 32 2c 20 43 4f 55   40 AS col2, COU
2b630 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
2b640 30 0d 0a 2d 2d 2d 2d 0d 0a 34 30 0d 0a 33 0d 0a  0..----..40..3..
2b650 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2b660 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2b670 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2b680 74 20 6c 61 62 65 6c 2d 39 35 34 0d 0a 53 45 4c  t label-954..SEL
2b690 45 43 54 20 2b 20 34 30 20 41 53 20 63 6f 6c 32  ECT + 40 AS col2
2b6a0 2c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52  , COUNT ( * ) FR
2b6b0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab0..----..4
2b6c0 30 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49  0..3....query II
2b6d0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2b6e0 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
2b6f0 4d 20 74 61 62 32 20 57 48 45 52 45 20 2d 20 63  M tab2 WHERE - c
2b700 6f 6c 31 20 2b 20 2d 20 63 6f 6c 31 20 49 53 20  ol1 + - col1 IS 
2b710 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
2b720 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
2b730 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63   to 75c998aa53ac
2b740 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64  83218cbf2feb962d
2b750 30 61 34 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  0a49....skipif p
2b760 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2b770 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2b780 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2b790 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2b7a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2b7b0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20  ..SELECT col0 * 
2b7c0 2b 20 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20 63  + + ( - col0 ) c
2b7d0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol0 FROM tab1 WH
2b7e0 45 52 45 20 4e 4f 54 20 2b 20 2d 20 63 6f 6c 30  ERE NOT + - col0
2b7f0 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e   BETWEEN NULL AN
2b800 44 20 32 39 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  D 29..----....on
2b810 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
2b820 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
2b830 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2b840 74 20 6c 61 62 65 6c 2d 39 35 37 0d 0a 53 45 4c  t label-957..SEL
2b850 45 43 54 20 32 20 41 53 20 63 6f 6c 32 2c 20 43  ECT 2 AS col2, C
2b860 4f 55 4e 54 28 20 2a 20 29 20 2b 20 43 4f 55 4e  OUNT( * ) + COUN
2b870 54 28 20 2b 20 63 6f 6c 30 20 29 20 2b 20 2d 20  T( + col0 ) + - 
2b880 35 32 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20  52 * + COUNT( * 
2b890 29 20 2a 20 34 30 20 41 53 20 63 6f 6c 31 20 46  ) * 40 AS col1 F
2b8a0 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
2b8b0 32 0d 0a 2d 36 32 33 34 0d 0a 0d 0a 73 6b 69 70  2..-6234....skip
2b8c0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2b8d0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2b8e0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
2b8f0 6c 2d 39 35 37 0d 0a 53 45 4c 45 43 54 20 32 20  l-957..SELECT 2 
2b900 41 53 20 63 6f 6c 32 2c 20 43 4f 55 4e 54 20 28  AS col2, COUNT (
2b910 20 2a 20 29 20 2b 20 43 4f 55 4e 54 20 28 20 2b   * ) + COUNT ( +
2b920 20 63 6f 6c 30 20 29 20 2b 20 2d 20 35 32 20 2a   col0 ) + - 52 *
2b930 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   + COUNT ( * ) *
2b940 20 34 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   40 AS col1 FROM
2b950 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 0d 0a   tab2..----..2..
2b960 2d 36 32 33 34 0d 0a 0d 0a 71 75 65 72 79 20 49  -6234....query I
2b970 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2b980 20 41 4c 4c 20 2b 20 34 39 20 41 53 20 63 6f 6c   ALL + 49 AS col
2b990 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
2b9a0 2d 0d 0a 34 39 0d 0a 34 39 0d 0a 34 39 0d 0a 0d  -..49..49..49...
2b9b0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2b9c0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
2b9d0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
2b9e0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2b9f0 6c 2d 39 35 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-959..SELECT AL
2ba00 4c 20 2b 20 43 41 53 54 28 20 2b 20 2d 20 63 6f  L + CAST( + - co
2ba10 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a  l0 AS SIGNED ) *
2ba20 20 2b 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c   + - col0 AS col
2ba30 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
2ba40 2d 0d 0a 32 36 30 31 0d 0a 37 32 32 35 0d 0a 38  -..2601..7225..8
2ba50 32 38 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  281....skipif my
2ba60 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2ba70 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2ba80 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35 39 0d  wsort label-959.
2ba90 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41  .SELECT ALL + CA
2baa0 53 54 20 28 20 2b 20 2d 20 63 6f 6c 30 20 41 53  ST ( + - col0 AS
2bab0 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 2d   INTEGER ) * + -
2bac0 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52   col0 AS col0 FR
2bad0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32  OM tab1..----..2
2bae0 36 30 31 0d 0a 37 32 32 35 0d 0a 38 32 38 31 0d  601..7225..8281.
2baf0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2bb00 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
2bb10 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  ax: DIV for inte
2bb20 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2bb30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2bb40 6c 61 62 65 6c 2d 39 36 30 0d 0a 53 45 4c 45 43  label-960..SELEC
2bb50 54 20 41 4c 4c 20 2b 20 38 35 20 44 49 56 20 43  T ALL + 85 DIV C
2bb60 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74  OUNT( * ) FROM t
2bb70 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38 0d 0a 0d  ab0..----..28...
2bb80 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2bb90 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2bba0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2bbb0 6c 61 62 65 6c 2d 39 36 30 0d 0a 53 45 4c 45 43  label-960..SELEC
2bbc0 54 20 41 4c 4c 20 2b 20 38 35 20 2f 20 43 4f 55  T ALL + 85 / COU
2bbd0 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
2bbe0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38 0d 0a 0d 0a  b0..----..28....
2bbf0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2bc00 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2bc10 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2bc20 72 74 20 6c 61 62 65 6c 2d 39 36 31 0d 0a 53 45  rt label-961..SE
2bc30 4c 45 43 54 20 2b 20 2b 20 43 4f 55 4e 54 28 20  LECT + + COUNT( 
2bc40 2a 20 29 20 2a 20 2b 20 28 20 2b 20 33 33 20 29  * ) * + ( + 33 )
2bc50 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2bc60 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 0d 0a  r0..----..99....
2bc70 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2bc80 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2bc90 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2bca0 61 62 65 6c 2d 39 36 31 0d 0a 53 45 4c 45 43 54  abel-961..SELECT
2bcb0 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
2bcc0 20 2a 20 2b 20 28 20 2b 20 33 33 20 29 20 46 52   * + ( + 33 ) FR
2bcd0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
2bce0 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 0d 0a 73 6b 69  .----..99....ski
2bcf0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
2bd00 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
2bd10 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
2bd20 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
2bd30 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
2bd40 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
2bd50 6c 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  l2 col0 FROM tab
2bd60 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
2bd70 4e 4f 54 20 2d 20 63 6f 6c 30 20 2f 20 2b 20 2b  NOT - col0 / + +
2bd80 20 37 36 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   76 IS NOT NULL.
2bd90 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
2bda0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
2bdb0 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
2bdc0 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b2 WHERE NOT NUL
2bdd0 4c 20 3c 3d 20 2d 20 63 6f 6c 31 20 2b 20 2b 20  L <= - col1 + + 
2bde0 63 6f 6c 31 20 2a 20 63 6f 6c 30 0d 0a 2d 2d 2d  col1 * col0..---
2bdf0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  -....query II ro
2be00 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
2be10 6c 31 20 41 53 20 63 6f 6c 31 2c 20 33 37 20 41  l1 AS col1, 37 A
2be20 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
2be30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 33 37 0d 0a 32  ..----..1..37..2
2be40 31 0d 0a 33 37 0d 0a 38 31 0d 0a 33 37 0d 0a 0d  1..37..81..37...
2be50 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2be60 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2be70 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2be80 6f 72 74 20 6c 61 62 65 6c 2d 39 36 35 0d 0a 53  ort label-965..S
2be90 45 4c 45 43 54 20 4d 49 4e 28 20 41 4c 4c 20 2d  ELECT MIN( ALL -
2bea0 20 39 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   9 ) AS col1 FRO
2beb0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  M tab2..----..-9
2bec0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2bed0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2bee0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2bef0 72 74 20 6c 61 62 65 6c 2d 39 36 35 0d 0a 53 45  rt label-965..SE
2bf00 4c 45 43 54 20 4d 49 4e 20 28 20 41 4c 4c 20 2d  LECT MIN ( ALL -
2bf10 20 39 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   9 ) AS col1 FRO
2bf20 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  M tab2..----..-9
2bf30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2bf40 6f 72 74 0d 0a 53 45 4c 45 43 54 20 34 36 20 46  ort..SELECT 46 F
2bf50 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2bf60 20 49 4e 4e 45 52 20 4a 4f 49 4e 20 74 61 62 30   INNER JOIN tab0
2bf70 20 41 53 20 63 6f 72 31 20 4f 4e 20 4e 4f 54 20   AS cor1 ON NOT 
2bf80 4e 55 4c 4c 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d  NULL > NULL..---
2bf90 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
2bfa0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2bfb0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2bfc0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36  rowsort label-96
2bfd0 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  7..SELECT ALL - 
2bfe0 2d 20 28 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  - ( + COUNT( * )
2bff0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
2c000 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
2c010 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..3....skipif 
2c020 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2c030 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2c040 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36  rowsort label-96
2c050 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  7..SELECT ALL - 
2c060 2d 20 28 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  - ( + COUNT ( * 
2c070 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ) ) AS col1 FROM
2c080 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
2c090 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..3....onlyif
2c0a0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2c0b0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
2c0c0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2c0d0 65 6c 2d 39 36 38 0d 0a 53 45 4c 45 43 54 20 2d  el-968..SELECT -
2c0e0 20 4d 49 4e 28 20 2d 20 2d 20 63 6f 6c 30 20 29   MIN( - - col0 )
2c0f0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2c100 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2c110 0d 0a 2d 31 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-15....skipif 
2c120 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2c130 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2c140 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36  rowsort label-96
2c150 38 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20  8..SELECT - MIN 
2c160 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20 41 53 20  ( - - col0 ) AS 
2c170 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
2c180 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
2c190 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
2c1a0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2c1b0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2c1c0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36  rowsort label-96
2c1d0 39 0d 0a 53 45 4c 45 43 54 20 2b 20 38 31 20 2a  9..SELECT + 81 *
2c1e0 20 2b 20 2d 20 43 4f 55 4e 54 28 20 41 4c 4c 20   + - COUNT( ALL 
2c1f0 35 32 20 29 20 2d 20 31 38 20 46 52 4f 4d 20 74  52 ) - 18 FROM t
2c200 61 62 32 20 63 6f 72 30 20 57 48 45 52 45 20 4e  ab2 cor0 WHERE N
2c210 4f 54 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54  OT - col0 IS NOT
2c220 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   NULL..----..-18
2c230 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2c240 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2c250 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2c260 72 74 20 6c 61 62 65 6c 2d 39 36 39 0d 0a 53 45  rt label-969..SE
2c270 4c 45 43 54 20 2b 20 38 31 20 2a 20 2b 20 2d 20  LECT + 81 * + - 
2c280 43 4f 55 4e 54 20 28 20 41 4c 4c 20 35 32 20 29  COUNT ( ALL 52 )
2c290 20 2d 20 31 38 20 46 52 4f 4d 20 74 61 62 32 20   - 18 FROM tab2 
2c2a0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
2c2b0 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c   col0 IS NOT NUL
2c2c0 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 0d 0a 0d 0a  L..----..-18....
2c2d0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
2c2e0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
2c2f0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
2c300 45 52 45 20 4e 4f 54 20 2b 20 32 20 49 53 20 4e  ERE NOT + 2 IS N
2c310 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
2c320 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
2c330 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61  4b42765dff94eaaa
2c340 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d  46040e537fb43b7.
2c350 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
2c360 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2c370 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
2c380 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
2c390 4e 4f 54 20 38 32 20 3d 20 4e 55 4c 4c 0d 0a 2d  NOT 82 = NULL..-
2c3a0 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
2c3b0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
2c3c0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
2c3d0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2c3e0 39 37 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  972..SELECT DIST
2c3f0 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2d 20  INCT + COUNT( - 
2c400 28 20 2b 20 2d 20 28 20 2b 20 2b 20 36 35 20 29  ( + - ( + + 65 )
2c410 20 29 20 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20   ) ) + - COUNT( 
2c420 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  * ) FROM tab2 AS
2c430 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
2c440 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2c450 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2c460 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c470 20 6c 61 62 65 6c 2d 39 37 32 0d 0a 53 45 4c 45   label-972..SELE
2c480 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f  CT DISTINCT + CO
2c490 55 4e 54 20 28 20 2d 20 28 20 2b 20 2d 20 28 20  UNT ( - ( + - ( 
2c4a0 2b 20 2b 20 36 35 20 29 20 29 20 29 20 2b 20 2d  + + 65 ) ) ) + -
2c4b0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
2c4c0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
2c4d0 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  ----..0....onlyi
2c4e0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2c4f0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2c500 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
2c510 61 62 65 6c 2d 39 37 33 0d 0a 53 45 4c 45 43 54  abel-973..SELECT
2c520 20 44 49 53 54 49 4e 43 54 20 2b 20 4d 41 58 28   DISTINCT + MAX(
2c530 20 39 38 20 29 20 41 53 20 63 6f 6c 31 2c 20 35   98 ) AS col1, 5
2c540 38 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  8 AS col0 FROM t
2c550 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2c560 2d 0d 0a 39 38 0d 0a 35 38 0d 0a 0d 0a 73 6b 69  -..98..58....ski
2c570 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2c580 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2c590 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
2c5a0 65 6c 2d 39 37 33 0d 0a 53 45 4c 45 43 54 20 44  el-973..SELECT D
2c5b0 49 53 54 49 4e 43 54 20 2b 20 4d 41 58 20 28 20  ISTINCT + MAX ( 
2c5c0 39 38 20 29 20 41 53 20 63 6f 6c 31 2c 20 35 38  98 ) AS col1, 58
2c5d0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2c5e0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
2c5f0 0d 0a 39 38 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79  ..98..58....only
2c600 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2c610 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2c620 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2c630 61 62 65 6c 2d 39 37 34 0d 0a 53 45 4c 45 43 54  abel-974..SELECT
2c640 20 2d 20 53 55 4d 28 20 41 4c 4c 20 28 20 2d 20   - SUM( ALL ( - 
2c650 34 31 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32  41 ) ) FROM tab2
2c660 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 33   cor0..----..123
2c670 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2c680 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2c690 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2c6a0 72 74 20 6c 61 62 65 6c 2d 39 37 34 0d 0a 53 45  rt label-974..SE
2c6b0 4c 45 43 54 20 2d 20 53 55 4d 20 28 20 41 4c 4c  LECT - SUM ( ALL
2c6c0 20 28 20 2d 20 34 31 20 29 20 29 20 46 52 4f 4d   ( - 41 ) ) FROM
2c6d0 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
2c6e0 0d 0a 31 32 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..123....onlyif 
2c6f0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2c700 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f  e syntax: DIV fo
2c710 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
2c720 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
2c730 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 35 0d  wsort label-975.
2c740 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a  .SELECT COUNT( *
2c750 20 29 20 44 49 56 20 2d 20 2d 20 39 39 20 46 52   ) DIV - - 99 FR
2c760 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab0..----..0
2c770 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2c780 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2c790 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2c7a0 72 74 20 6c 61 62 65 6c 2d 39 37 35 0d 0a 53 45  rt label-975..SE
2c7b0 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29  LECT COUNT ( * )
2c7c0 20 2f 20 2d 20 2d 20 39 39 20 46 52 4f 4d 20 74   / - - 99 FROM t
2c7d0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ab0..----..0....
2c7e0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2c7f0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2c800 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2c810 72 74 20 6c 61 62 65 6c 2d 39 37 36 0d 0a 53 45  rt label-976..SE
2c820 4c 45 43 54 20 2b 20 37 35 20 2a 20 2d 20 28 20  LECT + 75 * - ( 
2c830 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 63 6f  MAX( DISTINCT co
2c840 6c 31 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46  l1 ) ) AS col0 F
2c850 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
2c860 2d 35 37 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  -5775....skipif 
2c870 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2c880 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2c890 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37  rowsort label-97
2c8a0 36 0d 0a 53 45 4c 45 43 54 20 2b 20 37 35 20 2a  6..SELECT + 75 *
2c8b0 20 2d 20 28 20 4d 41 58 20 28 20 44 49 53 54 49   - ( MAX ( DISTI
2c8c0 4e 43 54 20 63 6f 6c 31 20 29 20 29 20 41 53 20  NCT col1 ) ) AS 
2c8d0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col0 FROM tab2..
2c8e0 2d 2d 2d 2d 0d 0a 2d 35 37 37 35 0d 0a 0d 0a 71  ----..-5775....q
2c8f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2c900 53 45 4c 45 43 54 20 2d 20 34 32 20 2a 20 63 6f  SELECT - 42 * co
2c910 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
2c920 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 34  tab2..----..-214
2c930 32 0d 0a 2d 32 38 31 34 0d 0a 2d 33 32 33 34 0d  2..-2814..-3234.
2c940 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2c950 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
2c960 32 20 2a 20 63 6f 6c 32 20 2b 20 2b 20 2d 20 37  2 * col2 + + - 7
2c970 33 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  3 AS col2 FROM t
2c980 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2c990 2d 0d 0a 2d 33 35 35 34 0d 0a 2d 34 36 39 37 0d  -..-3554..-4697.
2c9a0 0a 2d 39 32 38 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  .-9289....onlyif
2c9b0 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2c9c0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2c9d0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
2c9e0 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 39 0d 0a  sort label-979..
2c9f0 53 45 4c 45 43 54 20 2d 20 34 35 20 44 49 56 20  SELECT - 45 DIV 
2ca00 37 38 20 2a 20 2b 20 2b 20 38 35 20 2b 20 2d 20  78 * + + 85 + - 
2ca10 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  - col1 FROM tab2
2ca20 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 36 37 0d 0a  ..----..51..67..
2ca30 37 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  77....skipif mys
2ca40 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2ca50 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2ca60 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 39 0d 0a  sort label-979..
2ca70 53 45 4c 45 43 54 20 2d 20 34 35 20 2f 20 37 38  SELECT - 45 / 78
2ca80 20 2a 20 2b 20 2b 20 38 35 20 2b 20 2d 20 2d 20   * + + 85 + - - 
2ca90 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
2caa0 2d 2d 2d 2d 0d 0a 35 31 0d 0a 36 37 0d 0a 37 37  ----..51..67..77
2cab0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2cac0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
2cad0 6c 32 20 2b 20 63 6f 6c 31 20 2b 20 2d 20 63 6f  l2 + col1 + - co
2cae0 6c 30 20 2b 20 2d 20 2b 20 63 6f 6c 31 20 2b 20  l0 + - + col1 + 
2caf0 2b 20 28 20 2b 20 36 31 20 29 20 46 52 4f 4d 20  + ( + 61 ) FROM 
2cb00 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a  tab2..----..37..
2cb10 33 38 0d 0a 34 34 0d 0a 0d 0a 73 6b 69 70 69 66  38..44....skipif
2cb20 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
2cb30 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
2cb40 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
2cb50 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
2cb60 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
2cb70 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  ort..SELECT col0
2cb80 2c 20 2b 20 35 32 20 63 6f 6c 30 20 46 52 4f 4d  , + 52 col0 FROM
2cb90 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d   tab0..----..15.
2cba0 0a 35 32 0d 0a 38 37 0d 0a 35 32 0d 0a 39 37 0d  .52..87..52..97.
2cbb0 0a 35 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .52....onlyif my
2cbc0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
2cbd0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
2cbe0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2cbf0 39 38 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  982..SELECT ALL 
2cc00 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 35 36 20  COUNT( * ) * 56 
2cc10 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
2cc20 0a 31 36 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .168....skipif m
2cc30 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2cc40 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2cc50 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 32  owsort label-982
2cc60 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55  ..SELECT ALL COU
2cc70 4e 54 20 28 20 2a 20 29 20 2a 20 35 36 20 46 52  NT ( * ) * 56 FR
2cc80 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab2..----..1
2cc90 36 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  68....onlyif mys
2cca0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
2ccb0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
2ccc0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2ccd0 38 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  83..SELECT ALL +
2cce0 20 33 32 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a   32 + - COUNT( *
2ccf0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
2cd00 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
2cd10 2d 2d 0d 0a 32 39 0d 0a 0d 0a 73 6b 69 70 69 66  --..29....skipif
2cd20 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2cd30 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2cd40 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2cd50 38 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  83..SELECT ALL +
2cd60 20 33 32 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20   32 + - COUNT ( 
2cd70 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
2cd80 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
2cd90 2d 2d 2d 0d 0a 32 39 0d 0a 0d 0a 6f 6e 6c 79 69  ---..29....onlyi
2cda0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2cdb0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2cdc0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
2cdd0 61 62 65 6c 2d 39 38 34 0d 0a 53 45 4c 45 43 54  abel-984..SELECT
2cde0 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a 20   ALL - COUNT( * 
2cdf0 29 20 41 53 20 63 6f 6c 30 2c 20 2d 20 43 4f 55  ) AS col0, - COU
2ce00 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20  NT( * ) AS col1 
2ce10 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
2ce20 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 33 0d 0a 0d 0a  ----..-3..-3....
2ce30 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2ce40 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2ce50 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
2ce60 6c 61 62 65 6c 2d 39 38 34 0d 0a 53 45 4c 45 43  label-984..SELEC
2ce70 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 20 28 20  T ALL - COUNT ( 
2ce80 2a 20 29 20 41 53 20 63 6f 6c 30 2c 20 2d 20 43  * ) AS col0, - C
2ce90 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
2cea0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l1 FROM tab0 cor
2ceb0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 33 0d  0..----..-3..-3.
2cec0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
2ced0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
2cee0 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
2cef0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
2cf00 20 32 30 20 3e 3d 20 63 6f 6c 31 20 2a 20 2b 20   20 >= col1 * + 
2cf10 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  col0..----..9 va
2cf20 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
2cf30 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31  75c998aa53ac8321
2cf40 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39  8cbf2feb962d0a49
2cf50 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
2cf60 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
2cf70 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  L * FROM tab1 AS
2cf80 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
2cf90 2b 20 63 6f 6c 30 20 2b 20 2d 20 36 20 49 53 20  + col0 + - 6 IS 
2cfa0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  NULL..----..9 va
2cfb0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
2cfc0 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64  c6c0a4111b36d04d
2cfd0 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64  bc811a11e4d54cad
2cfe0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2cff0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2d000 2b 20 2b 20 28 20 33 20 29 20 2a 20 2d 20 63 6f  + + ( 3 ) * - co
2d010 6c 31 20 2b 20 2d 20 2d 20 37 32 20 2b 20 2d 20  l1 + - - 72 + - 
2d020 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  - col0 FROM tab0
2d030 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2d040 2d 31 35 36 0d 0a 31 36 36 0d 0a 39 36 0d 0a 0d  -156..166..96...
2d050 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2d060 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
2d070 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
2d080 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
2d090 62 65 6c 2d 39 38 38 0d 0a 53 45 4c 45 43 54 20  bel-988..SELECT 
2d0a0 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
2d0b0 45 20 4e 4f 54 20 63 6f 6c 30 20 49 4e 20 28 20  E NOT col0 IN ( 
2d0c0 2d 20 28 20 2d 20 2b 20 36 31 20 29 2c 20 2b 20  - ( - + 61 ), + 
2d0d0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
2d0e0 47 4e 45 44 20 29 20 29 20 4f 52 20 4e 4f 54 20  GNED ) ) OR NOT 
2d0f0 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  NULL IS NULL..--
2d100 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
2d110 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2d120 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
2d130 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 38 38  owsort label-988
2d140 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
2d150 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 63  tab2 WHERE NOT c
2d160 6f 6c 30 20 49 4e 20 28 20 2d 20 28 20 2d 20 2b  ol0 IN ( - ( - +
2d170 20 36 31 20 29 2c 20 2b 20 43 41 53 54 20 28 20   61 ), + CAST ( 
2d180 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
2d190 29 20 29 20 4f 52 20 4e 4f 54 20 4e 55 4c 4c 20  ) ) OR NOT NULL 
2d1a0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
2d1b0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2d1c0 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32  t..SELECT + col2
2d1d0 20 2a 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c   * + col2 AS col
2d1e0 31 2c 20 39 37 20 46 52 4f 4d 20 74 61 62 31 0d  1, 97 FROM tab1.
2d1f0 0a 2d 2d 2d 2d 0d 0a 33 34 38 31 0d 0a 39 37 0d  .----..3481..97.
2d200 0a 34 36 32 34 0d 0a 39 37 0d 0a 39 32 31 36 0d  .4624..97..9216.
2d210 0a 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .97....query III
2d220 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2d230 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
2d240 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3e 20 2d  RE NOT NULL <> -
2d250 20 2d 20 34 36 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   - 46..----....o
2d260 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2d270 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2d280 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
2d290 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
2d2a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2d2b0 6c 2d 39 39 31 0d 0a 53 45 4c 45 43 54 20 44 49  l-991..SELECT DI
2d2c0 53 54 49 4e 43 54 20 2b 20 53 55 4d 28 20 41 4c  STINCT + SUM( AL
2d2d0 4c 20 2b 20 63 6f 6c 32 20 29 20 44 49 56 20 2b  L + col2 ) DIV +
2d2e0 20 2d 20 28 20 2b 20 43 4f 55 4e 54 28 20 2a 20   - ( + COUNT( * 
2d2f0 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  ) ) AS col1 FROM
2d300 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 34   tab1..----..-74
2d310 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2d320 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2d330 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2d340 72 74 20 6c 61 62 65 6c 2d 39 39 31 0d 0a 53 45  rt label-991..SE
2d350 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2d360 53 55 4d 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 32  SUM ( ALL + col2
2d370 20 29 20 2f 20 2b 20 2d 20 28 20 2b 20 43 4f 55   ) / + - ( + COU
2d380 4e 54 20 28 20 2a 20 29 20 29 20 41 53 20 63 6f  NT ( * ) ) AS co
2d390 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
2d3a0 2d 2d 0d 0a 2d 37 34 0d 0a 0d 0a 6f 6e 6c 79 69  --..-74....onlyi
2d3b0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2d3c0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2d3d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2d3e0 62 65 6c 2d 39 39 32 0d 0a 53 45 4c 45 43 54 20  bel-992..SELECT 
2d3f0 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20  DISTINCT COUNT( 
2d400 2a 20 29 20 2a 20 2b 20 2b 20 34 37 20 46 52 4f  * ) * + + 47 FRO
2d410 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34  M tab2..----..14
2d420 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
2d430 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2d440 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2d450 6f 72 74 20 6c 61 62 65 6c 2d 39 39 32 0d 0a 53  ort label-992..S
2d460 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43  ELECT DISTINCT C
2d470 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 2b  OUNT ( * ) * + +
2d480 20 34 37 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   47 FROM tab2..-
2d490 2d 2d 2d 0d 0a 31 34 31 0d 0a 0d 0a 6f 6e 6c 79  ---..141....only
2d4a0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2d4b0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56  gate syntax: DIV
2d4c0 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
2d4d0 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
2d4e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2d4f0 39 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  93..SELECT ALL +
2d500 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49   + COUNT( * ) DI
2d510 56 20 4d 49 4e 28 20 41 4c 4c 20 63 6f 6c 31 20  V MIN( ALL col1 
2d520 29 20 2a 20 2d 20 4d 49 4e 28 20 41 4c 4c 20 33  ) * - MIN( ALL 3
2d530 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   ) FROM tab2 AS 
2d540 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  cor0..----..0...
2d550 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2d560 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2d570 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2d580 6c 61 62 65 6c 2d 39 39 33 0d 0a 53 45 4c 45 43  label-993..SELEC
2d590 54 20 41 4c 4c 20 2b 20 2b 20 43 4f 55 4e 54 20  T ALL + + COUNT 
2d5a0 28 20 2a 20 29 20 2f 20 4d 49 4e 20 28 20 41 4c  ( * ) / MIN ( AL
2d5b0 4c 20 63 6f 6c 31 20 29 20 2a 20 2d 20 4d 49 4e  L col1 ) * - MIN
2d5c0 20 28 20 41 4c 4c 20 33 20 29 20 46 52 4f 4d 20   ( ALL 3 ) FROM 
2d5d0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
2d5e0 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  --..0....onlyif 
2d5f0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2d600 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2d610 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
2d620 65 6c 2d 39 39 34 0d 0a 53 45 4c 45 43 54 20 41  el-994..SELECT A
2d630 4c 4c 20 43 4f 55 4e 54 28 20 2d 20 2b 20 31 38  LL COUNT( - + 18
2d640 20 29 2c 20 4d 41 58 28 20 2d 20 63 6f 6c 31 20   ), MAX( - col1 
2d650 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
2d660 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1 cor0..----..
2d670 33 0d 0a 2d 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  3..-5....skipif 
2d680 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2d690 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
2d6a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
2d6b0 39 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43  94..SELECT ALL C
2d6c0 4f 55 4e 54 20 28 20 2d 20 2b 20 31 38 20 29 2c  OUNT ( - + 18 ),
2d6d0 20 4d 41 58 20 28 20 2d 20 63 6f 6c 31 20 29 20   MAX ( - col1 ) 
2d6e0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
2d6f0 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  1 cor0..----..3.
2d700 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .-5....onlyif my
2d710 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
2d720 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
2d730 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2d740 39 39 35 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28  995..SELECT MAX(
2d750 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 29 20 41 53   ALL + col2 ) AS
2d760 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
2d770 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a  cor0..----..96..
2d780 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2d790 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2d7a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2d7b0 20 6c 61 62 65 6c 2d 39 39 35 0d 0a 53 45 4c 45   label-995..SELE
2d7c0 43 54 20 4d 41 58 20 28 20 41 4c 4c 20 2b 20 63  CT MAX ( ALL + c
2d7d0 6f 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52  ol2 ) AS col1 FR
2d7e0 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d  OM tab1 cor0..--
2d7f0 2d 2d 0d 0a 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..96....onlyif
2d800 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
2d810 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
2d820 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
2d830 62 65 6c 2d 39 39 36 0d 0a 53 45 4c 45 43 54 20  bel-996..SELECT 
2d840 41 4c 4c 20 2d 20 33 31 2c 20 2d 20 34 37 20 2b  ALL - 31, - 47 +
2d850 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   + COUNT( * ) AS
2d860 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
2d870 0a 2d 2d 2d 2d 0d 0a 2d 33 31 0d 0a 2d 34 34 0d  .----..-31..-44.
2d880 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2d890 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2d8a0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
2d8b0 72 74 20 6c 61 62 65 6c 2d 39 39 36 0d 0a 53 45  rt label-996..SE
2d8c0 4c 45 43 54 20 41 4c 4c 20 2d 20 33 31 2c 20 2d  LECT ALL - 31, -
2d8d0 20 34 37 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20   47 + + COUNT ( 
2d8e0 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  * ) AS col0 FROM
2d8f0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31   tab2..----..-31
2d900 0d 0a 2d 34 34 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-44....query I
2d910 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
2d920 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
2d930 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28 20 63  b1 WHERE NOT ( c
2d940 6f 6c 30 20 2f 20 2d 20 2d 20 38 31 20 2a 20 2d  ol0 / - - 81 * -
2d950 20 38 35 20 3d 20 4e 55 4c 4c 20 29 0d 0a 2d 2d   85 = NULL )..--
2d960 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
2d970 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2d980 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20 41 53  STINCT - col2 AS
2d990 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
2d9a0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
2d9b0 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
2d9c0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
2d9d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2d9e0 38 32 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20 74  82 * col1 FROM t
2d9f0 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
2da00 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55  E NOT NULL IS NU
2da10 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
2da20 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2da30 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2da40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2da50 61 62 65 6c 2d 31 30 30 30 0d 0a 53 45 4c 45 43  abel-1000..SELEC
2da60 54 20 2d 20 32 33 20 2b 20 43 4f 55 4e 54 28 20  T - 23 + COUNT( 
2da70 2a 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  * ) col0 FROM ta
2da80 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
2da90 0d 0a 2d 32 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-20....skipif 
2daa0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2dab0 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
2dac0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2dad0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2dae0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2daf0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2db00 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2db10 20 6c 61 62 65 6c 2d 31 30 30 30 0d 0a 53 45 4c   label-1000..SEL
2db20 45 43 54 20 2d 20 32 33 20 2b 20 43 4f 55 4e 54  ECT - 23 + COUNT
2db30 20 28 20 2a 20 29 20 63 6f 6c 30 20 46 52 4f 4d   ( * ) col0 FROM
2db40 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
2db50 2d 2d 2d 0d 0a 2d 32 30 0d 0a 0d 0a 71 75 65 72  ---..-20....quer
2db60 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2db70 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 2b  ECT ALL - col2 +
2db80 20 2b 20 38 20 46 52 4f 4d 20 74 61 62 30 20 41   + 8 FROM tab0 A
2db90 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
2dba0 0d 0a 2d 33 39 0d 0a 2d 39 31 0d 0a 0d 0a 71 75  ..-39..-91....qu
2dbb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2dbc0 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 46 52 4f  ELECT - col0 FRO
2dbd0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
2dbe0 48 45 52 45 20 4e 55 4c 4c 20 3e 3d 20 63 6f 6c  HERE NULL >= col
2dbf0 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  0..----....query
2dc00 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2dc10 43 54 20 2b 20 32 38 20 2b 20 2b 20 63 6f 6c 32  CT + 28 + + col2
2dc20 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2dc30 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 0d 0a 38  r0..----..124..8
2dc40 37 0d 0a 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  7..96....onlyif 
2dc50 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2dc60 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2dc70 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2dc80 6c 2d 31 30 30 34 0d 0a 53 45 4c 45 43 54 20 44  l-1004..SELECT D
2dc90 49 53 54 49 4e 43 54 20 4d 49 4e 28 20 44 49 53  ISTINCT MIN( DIS
2dca0 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 31 20 29  TINCT - + col1 )
2dcb0 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
2dcc0 0a 2d 2d 2d 2d 0d 0a 2d 37 37 0d 0a 0d 0a 73 6b  .----..-77....sk
2dcd0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2dce0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2dcf0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2dd00 65 6c 2d 31 30 30 34 0d 0a 53 45 4c 45 43 54 20  el-1004..SELECT 
2dd10 44 49 53 54 49 4e 43 54 20 4d 49 4e 20 28 20 44  DISTINCT MIN ( D
2dd20 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 31  ISTINCT - + col1
2dd30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72   ) FROM tab2 cor
2dd40 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 37 0d 0a 0d 0a  0..----..-77....
2dd50 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2dd60 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2dd70 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2dd80 72 74 20 6c 61 62 65 6c 2d 31 30 30 35 0d 0a 53  rt label-1005..S
2dd90 45 4c 45 43 54 20 2d 20 2d 20 33 31 20 2b 20 43  ELECT - - 31 + C
2dda0 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
2ddb0 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
2ddc0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a 0d  or0..----..34...
2ddd0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2dde0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2ddf0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2de00 6c 61 62 65 6c 2d 31 30 30 35 0d 0a 53 45 4c 45  label-1005..SELE
2de10 43 54 20 2d 20 2d 20 33 31 20 2b 20 43 4f 55 4e  CT - - 31 + COUN
2de20 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20  T ( * ) AS col1 
2de30 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2de40 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a 0d 0a 71  0..----..34....q
2de50 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
2de60 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 32 2c 20  .SELECT ALL 82, 
2de70 2b 20 33 34 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 34 AS col0 FRO
2de80 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 38 32  M tab1..----..82
2de90 0d 0a 33 34 0d 0a 38 32 0d 0a 33 34 0d 0a 38 32  ..34..82..34..82
2dea0 0d 0a 33 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..34....onlyif m
2deb0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
2dec0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
2ded0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2dee0 72 74 20 6c 61 62 65 6c 2d 31 30 30 37 0d 0a 53  rt label-1007..S
2def0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
2df00 6f 6c 30 20 44 49 56 20 2b 20 2d 20 37 37 20 41  ol0 DIV + - 77 A
2df10 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
2df20 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d 0a 0d  ..----..-1..0...
2df30 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2df40 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2df50 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2df60 6c 61 62 65 6c 2d 31 30 30 37 0d 0a 53 45 4c 45  label-1007..SELE
2df70 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30  CT DISTINCT col0
2df80 20 2f 20 2b 20 2d 20 37 37 20 41 53 20 63 6f 6c   / + - 77 AS col
2df90 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  2 FROM tab0..---
2dfa0 2d 0d 0a 2d 31 0d 0a 30 0d 0a 0d 0a 71 75 65 72  -..-1..0....quer
2dfb0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
2dfc0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
2dfd0 32 20 57 48 45 52 45 20 2d 20 38 38 20 42 45 54  2 WHERE - 88 BET
2dfe0 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2d 20  WEEN NULL AND - 
2dff0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col2..----....qu
2e000 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2e010 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 28  ELECT DISTINCT (
2e020 20 2b 20 31 37 20 29 20 46 52 4f 4d 20 74 61 62   + 17 ) FROM tab
2e030 32 0d 0a 2d 2d 2d 2d 0d 0a 31 37 0d 0a 0d 0a 71  2..----..17....q
2e040 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2e050 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2a 20  SELECT + col1 * 
2e060 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  2 AS col0 FROM t
2e070 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 32 0d 0a  ab0..----..162..
2e080 32 0d 0a 34 32 0d 0a 0d 0a 71 75 65 72 79 20 49  2..42....query I
2e090 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2e0a0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
2e0b0 30 2c 20 2b 20 36 34 20 46 52 4f 4d 20 74 61 62  0, + 64 FROM tab
2e0c0 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 36 34 0d  2..----..46..64.
2e0d0 0a 36 34 0d 0a 36 34 0d 0a 37 35 0d 0a 36 34 0d  .64..64..75..64.
2e0e0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2e0f0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
2e100 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  ax: ..query II r
2e110 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 31  owsort label-101
2e120 32 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 4d 49  2..SELECT + - MI
2e130 4e 28 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c 31 20  N( ALL - + col1 
2e140 29 2c 20 2d 20 36 39 20 41 53 20 63 6f 6c 31 20  ), - 69 AS col1 
2e150 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
2e160 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 2d 36 39  0..----..81..-69
2e170 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2e180 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2e190 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  e..query II rows
2e1a0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 31 32 0d 0a  ort label-1012..
2e1b0 53 45 4c 45 43 54 20 2b 20 2d 20 4d 49 4e 20 28  SELECT + - MIN (
2e1c0 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c 31 20 29 2c   ALL - + col1 ),
2e1d0 20 2d 20 36 39 20 41 53 20 63 6f 6c 31 20 46 52   - 69 AS col1 FR
2e1e0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
2e1f0 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 2d 36 39 0d 0a  .----..81..-69..
2e200 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
2e210 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
2e220 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
2e230 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
2e240 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
2e250 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2e260 43 54 20 41 4c 4c 20 2b 20 39 35 20 2b 20 2b 20  CT ALL + 95 + + 
2e270 2d 20 63 6f 6c 31 20 63 6f 6c 32 20 46 52 4f 4d  - col1 col2 FROM
2e280 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
2e290 2d 2d 2d 0d 0a 31 34 0d 0a 37 34 0d 0a 39 34 0d  ---..14..74..94.
2e2a0 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
2e2b0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 33 36  ort..SELECT + 36
2e2c0 20 41 53 20 63 6f 6c 32 2c 20 63 6f 6c 30 20 46   AS col2, col0 F
2e2d0 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
2e2e0 2d 2d 2d 0d 0a 33 36 0d 0a 35 31 0d 0a 33 36 0d  ---..36..51..36.
2e2f0 0a 38 35 0d 0a 33 36 0d 0a 39 31 0d 0a 0d 0a 71  .85..36..91....q
2e300 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
2e310 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2e320 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53  T * FROM tab1 AS
2e330 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f   cor0 WHERE + co
2e340 6c 32 20 42 45 54 57 45 45 4e 20 2b 20 2b 20 28  l2 BETWEEN + + (
2e350 20 2d 20 2b 20 34 38 20 29 20 2b 20 2b 20 63 6f   - + 48 ) + + co
2e360 6c 30 20 41 4e 44 20 28 20 2b 20 2d 20 63 6f 6c  l0 AND ( + - col
2e370 30 20 29 20 2f 20 2d 20 63 6f 6c 30 0d 0a 2d 2d  0 ) / - col0..--
2e380 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
2e390 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2e3a0 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
2e3b0 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 63  tab2 WHERE NOT c
2e3c0 6f 6c 32 20 2b 20 2b 20 38 35 20 49 53 20 4e 55  ol2 + + 85 IS NU
2e3d0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
2e3e0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
2e3f0 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
2e400 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
2e410 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2e420 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38 34 20 41  t..SELECT + 84 A
2e430 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
2e440 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e   WHERE NULL IS N
2e450 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
2e460 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e470 0d 0a 53 45 4c 45 43 54 20 2d 20 31 39 20 2a 20  ..SELECT - 19 * 
2e480 2b 20 2d 20 37 38 20 41 53 20 63 6f 6c 30 20 46  + - 78 AS col0 F
2e490 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2e4a0 0d 0a 2d 2d 2d 2d 0d 0a 31 34 38 32 0d 0a 31 34  ..----..1482..14
2e4b0 38 32 0d 0a 31 34 38 32 0d 0a 0d 0a 73 6b 69 70  82..1482....skip
2e4c0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
2e4d0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
2e4e0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
2e4f0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
2e500 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
2e510 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2e520 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 2a 20  STINCT - col1 * 
2e530 2b 20 33 20 63 6f 6c 30 2c 20 63 6f 6c 31 20 41  + 3 col0, col1 A
2e540 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
2e550 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   cor0..----..-15
2e560 33 0d 0a 35 31 0d 0a 2d 32 30 31 0d 0a 36 37 0d  3..51..-201..67.
2e570 0a 2d 32 33 31 0d 0a 37 37 0d 0a 0d 0a 71 75 65  .-231..77....que
2e580 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2e590 4c 45 43 54 20 41 4c 4c 20 2d 20 32 33 20 2a 20  LECT ALL - 23 * 
2e5a0 2d 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  - - col0 AS col0
2e5b0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2e5c0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 37 33 0d  r0..----..-1173.
2e5d0 0a 2d 31 39 35 35 0d 0a 2d 32 30 39 33 0d 0a 0d  .-1955..-2093...
2e5e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e5f0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2e600 54 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 2d 20 63  T + col2 * - - c
2e610 6f 6c 31 20 2b 20 2d 20 63 6f 6c 30 20 46 52 4f  ol1 + - col0 FRO
2e620 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
2e630 2d 2d 2d 2d 0d 0a 31 31 32 37 0d 0a 33 30 31 36  ----..1127..3016
2e640 0d 0a 33 38 31 31 0d 0a 0d 0a 71 75 65 72 79 20  ..3811....query 
2e650 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
2e660 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
2e670 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 4f 54 20  WHERE NOT ( NOT 
2e680 28 20 28 20 28 20 4e 4f 54 20 28 20 4e 4f 54 20  ( ( ( NOT ( NOT 
2e690 28 20 34 34 20 2b 20 2d 20 63 6f 6c 32 20 3e 3d  ( 44 + - col2 >=
2e6a0 20 2b 20 32 20 2a 20 2d 20 39 30 20 29 20 29 20   + 2 * - 90 ) ) 
2e6b0 29 20 29 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39  ) ) ) )..----..9
2e6c0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
2e6d0 74 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64  to c6c0a4111b36d
2e6e0 30 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34  04dbc811a11e4d54
2e6f0 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  cad....query I r
2e700 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
2e710 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol0 FROM tab2 WH
2e720 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54  ERE NOT NULL NOT
2e730 20 49 4e 20 28 20 63 6f 6c 30 20 29 0d 0a 2d 2d   IN ( col0 )..--
2e740 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
2e750 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2e760 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ALL * FROM tab2 
2e770 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
2e780 54 20 2b 20 32 38 20 49 53 20 4e 55 4c 4c 0d 0a  T + 28 IS NULL..
2e790 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
2e7a0 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38  ashing to 75c998
2e7b0 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66  aa53ac83218cbf2f
2e7c0 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75  eb962d0a49....qu
2e7d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2e7e0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2e7f0 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 2d 20 63 6f   - col0 * - - co
2e800 6c 30 20 2a 20 2d 20 35 30 20 2b 20 63 6f 6c 32  l0 * - 50 + col2
2e810 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2e820 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
2e830 0d 0a 31 31 32 39 37 0d 0a 33 37 38 34 36 30 0d  ..11297..378460.
2e840 0a 34 37 30 35 34 39 0d 0a 0d 0a 73 6b 69 70 69  .470549....skipi
2e850 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
2e860 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
2e870 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
2e880 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
2e890 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
2e8a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35 35  ort..SELECT - 55
2e8b0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
2e8c0 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d 0a 2d 35 35 0d  .----..-55..-55.
2e8d0 0a 2d 35 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-55....query II
2e8e0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2e8f0 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48  T * FROM tab2 WH
2e900 45 52 45 20 4e 4f 54 20 2d 20 38 35 20 3e 3d 20  ERE NOT - 85 >= 
2e910 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
2e920 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
2e930 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
2e940 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e950 20 6c 61 62 65 6c 2d 31 30 32 38 0d 0a 53 45 4c   label-1028..SEL
2e960 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2d 20 63  ECT - COUNT( - c
2e970 6f 6c 32 20 29 20 2a 20 2d 20 39 30 20 46 52 4f  ol2 ) * - 90 FRO
2e980 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 37  M tab0..----..27
2e990 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
2e9a0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2e9b0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2e9c0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 32 38 0d 0a  ort label-1028..
2e9d0 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 20 28  SELECT - COUNT (
2e9e0 20 2d 20 63 6f 6c 32 20 29 20 2a 20 2d 20 39 30   - col2 ) * - 90
2e9f0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
2ea00 0d 0a 32 37 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..270....query I
2ea10 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
2ea20 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
2ea30 62 30 20 57 48 45 52 45 20 63 6f 6c 32 20 2b 20  b0 WHERE col2 + 
2ea40 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col0 IS NOT NULL
2ea50 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
2ea60 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34   hashing to c4b4
2ea70 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30  2765dff94eaaa460
2ea80 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a  40e537fb43b7....
2ea90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2eaa0 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 30 20 2a  .SELECT - col0 *
2eab0 20 32 36 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   26 FROM tab2..-
2eac0 2d 2d 2d 0d 0a 2d 31 31 39 36 0d 0a 2d 31 36 36  ---..-1196..-166
2ead0 34 0d 0a 2d 31 39 35 30 0d 0a 0d 0a 71 75 65 72  4..-1950....quer
2eae0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2eaf0 45 43 54 20 2b 20 35 33 20 2a 20 2d 20 63 6f 6c  ECT + 53 * - col
2eb00 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
2eb10 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31 32 37  ab1..----..-3127
2eb20 0d 0a 2d 33 36 30 34 0d 0a 2d 35 30 38 38 0d 0a  ..-3604..-5088..
2eb30 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2eb40 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2eb50 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2eb60 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 32 0d  sort label-1032.
2eb70 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e  .SELECT ALL COUN
2eb80 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32  T( * ) FROM tab2
2eb90 20 57 48 45 52 45 20 38 31 20 3e 20 28 20 4e 55   WHERE 81 > ( NU
2eba0 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  LL )..----..0...
2ebb0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2ebc0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2ebd0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ebe0 6c 61 62 65 6c 2d 31 30 33 32 0d 0a 53 45 4c 45  label-1032..SELE
2ebf0 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2a  CT ALL COUNT ( *
2ec00 20 29 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   ) FROM tab2 WHE
2ec10 52 45 20 38 31 20 3e 20 28 20 4e 55 4c 4c 20 29  RE 81 > ( NULL )
2ec20 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65  ..----..0....que
2ec30 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2ec40 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20 2b 20  LECT + col2 * + 
2ec50 34 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  45 AS col0 FROM 
2ec60 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 36 35 35  tab1..----..2655
2ec70 0d 0a 33 30 36 30 0d 0a 34 33 32 30 0d 0a 0d 0a  ..3060..4320....
2ec80 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
2ec90 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
2eca0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
2ecb0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2ecc0 2d 31 30 33 34 0d 0a 53 45 4c 45 43 54 20 43 41  -1034..SELECT CA
2ecd0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
2ece0 45 44 20 29 20 2a 20 2d 20 63 6f 6c 30 20 41 53  ED ) * - col0 AS
2ecf0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
2ed00 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 4e  WHERE ( NULL ) N
2ed10 4f 54 20 42 45 54 57 45 45 4e 20 63 6f 6c 31 20  OT BETWEEN col1 
2ed20 2b 20 63 6f 6c 30 20 2a 20 2d 20 38 34 20 41 4e  + col0 * - 84 AN
2ed30 44 20 2b 20 63 6f 6c 31 20 2a 20 31 31 0d 0a 2d  D + col1 * 11..-
2ed40 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ---....skipif my
2ed50 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2ed60 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2ed70 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 34  wsort label-1034
2ed80 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 20 28 20  ..SELECT CAST ( 
2ed90 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
2eda0 29 20 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f  ) * - col0 AS co
2edb0 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l2 FROM tab0 WHE
2edc0 52 45 20 28 20 4e 55 4c 4c 20 29 20 4e 4f 54 20  RE ( NULL ) NOT 
2edd0 42 45 54 57 45 45 4e 20 63 6f 6c 31 20 2b 20 63  BETWEEN col1 + c
2ede0 6f 6c 30 20 2a 20 2d 20 38 34 20 41 4e 44 20 2b  ol0 * - 84 AND +
2edf0 20 63 6f 6c 31 20 2a 20 31 31 0d 0a 2d 2d 2d 2d   col1 * 11..----
2ee00 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2ee10 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
2ee20 2d 20 63 6f 6c 30 20 2b 20 63 6f 6c 31 20 2a 20  - col0 + col1 * 
2ee30 39 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  92 AS col0 FROM 
2ee40 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 34 36  tab2..----..4646
2ee50 0d 0a 36 30 38 39 0d 0a 37 30 32 30 0d 0a 0d 0a  ..6089..7020....
2ee60 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2ee70 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2ee80 20 2b 20 35 33 20 2b 20 63 6f 6c 31 20 46 52 4f   + 53 + col1 FRO
2ee90 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab1..----..10
2eea0 30 0d 0a 35 38 0d 0a 36 37 0d 0a 0d 0a 71 75 65  0..58..67....que
2eeb0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2eec0 4c 45 43 54 20 2d 20 39 36 20 2d 20 39 34 20 41  LECT - 96 - 94 A
2eed0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
2eee0 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 36 32 20   WHERE NOT - 62 
2eef0 4e 4f 54 20 42 45 54 57 45 45 4e 20 2b 20 63 6f  NOT BETWEEN + co
2ef00 6c 31 20 41 4e 44 20 28 20 4e 55 4c 4c 20 29 0d  l1 AND ( NULL ).
2ef10 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
2ef20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2ef30 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
2ef40 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2ef50 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 38 0d 0a  ort label-1038..
2ef60 53 45 4c 45 43 54 20 37 36 20 2a 20 2d 20 33 32  SELECT 76 * - 32
2ef70 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2ef80 62 32 20 57 48 45 52 45 20 28 20 28 20 36 36 20  b2 WHERE ( ( 66 
2ef90 29 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  ) + CAST( NULL A
2efa0 53 20 53 49 47 4e 45 44 20 29 20 29 20 3e 3d 20  S SIGNED ) ) >= 
2efb0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
2efc0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2efd0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2efe0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2eff0 65 6c 2d 31 30 33 38 0d 0a 53 45 4c 45 43 54 20  el-1038..SELECT 
2f000 37 36 20 2a 20 2d 20 33 32 20 41 53 20 63 6f 6c  76 * - 32 AS col
2f010 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  1 FROM tab2 WHER
2f020 45 20 28 20 28 20 36 36 20 29 20 2b 20 43 41 53  E ( ( 66 ) + CAS
2f030 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
2f040 47 45 52 20 29 20 29 20 3e 3d 20 4e 55 4c 4c 0d  GER ) ) >= NULL.
2f050 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
2f060 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2f070 20 2d 20 36 36 20 2b 20 35 39 20 41 53 20 63 6f   - 66 + 59 AS co
2f080 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
2f090 2d 2d 0d 0a 2d 37 0d 0a 2d 37 0d 0a 2d 37 0d 0a  --..-7..-7..-7..
2f0a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2f0b0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
2f0c0 43 54 20 2b 20 28 20 32 39 20 29 20 2a 20 63 6f  CT + ( 29 ) * co
2f0d0 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
2f0e0 2d 2d 0d 0a 31 37 31 31 0d 0a 31 39 37 32 0d 0a  --..1711..1972..
2f0f0 32 37 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49  2784....query II
2f100 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2f110 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
2f120 45 52 45 20 63 6f 6c 30 20 4e 4f 54 20 42 45 54  ERE col0 NOT BET
2f130 57 45 45 4e 20 28 20 63 6f 6c 31 20 2a 20 32 34  WEEN ( col1 * 24
2f140 20 2b 20 63 6f 6c 30 20 29 20 41 4e 44 20 28 20   + col0 ) AND ( 
2f150 2d 20 39 32 20 2d 20 63 6f 6c 31 20 29 0d 0a 2d  - 92 - col1 )..-
2f160 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
2f170 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31  shing to c6c0a41
2f180 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31  11b36d04dbc811a1
2f190 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c  1e4d54cad....onl
2f1a0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2f1b0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
2f1c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2f1d0 6c 61 62 65 6c 2d 31 30 34 32 0d 0a 53 45 4c 45  label-1042..SELE
2f1e0 43 54 20 32 39 20 2b 20 43 4f 55 4e 54 28 20 2a  CT 29 + COUNT( *
2f1f0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
2f200 74 61 62 30 20 57 48 45 52 45 20 2b 20 63 6f 6c  tab0 WHERE + col
2f210 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  2 IS NULL..----.
2f220 0a 32 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .29....skipif my
2f230 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2f240 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2f250 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34 32  wsort label-1042
2f260 0d 0a 53 45 4c 45 43 54 20 32 39 20 2b 20 43 4f  ..SELECT 29 + CO
2f270 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
2f280 31 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  1 FROM tab0 WHER
2f290 45 20 2b 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c  E + col2 IS NULL
2f2a0 0d 0a 2d 2d 2d 2d 0d 0a 32 39 0d 0a 0d 0a 6f 6e  ..----..29....on
2f2b0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
2f2c0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
2f2d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2f2e0 20 6c 61 62 65 6c 2d 31 30 34 33 0d 0a 53 45 4c   label-1043..SEL
2f2f0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d  ECT DISTINCT - M
2f300 41 58 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  AX( DISTINCT col
2f310 31 20 29 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29  1 ) * COUNT( * )
2f320 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2f330 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 33 0d 0a  b0..----..-243..
2f340 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2f350 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2f360 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2f370 20 6c 61 62 65 6c 2d 31 30 34 33 0d 0a 53 45 4c   label-1043..SEL
2f380 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d  ECT DISTINCT - M
2f390 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f  AX ( DISTINCT co
2f3a0 6c 31 20 29 20 2a 20 43 4f 55 4e 54 20 28 20 2a  l1 ) * COUNT ( *
2f3b0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
2f3c0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 33  tab0..----..-243
2f3d0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2f3e0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
2f3f0 6c 31 20 2b 20 34 37 20 46 52 4f 4d 20 74 61 62  l1 + 47 FROM tab
2f400 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 0d 0a 32 36  0..----..-34..26
2f410 0d 0a 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..46....query I 
2f420 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2f430 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
2f440 2a 20 2b 20 31 20 2d 20 63 6f 6c 30 20 46 52 4f  * + 1 - col0 FRO
2f450 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
2f460 34 34 0d 0a 2d 31 34 37 0d 0a 2d 31 35 39 0d 0a  44..-147..-159..
2f470 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2f480 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2f490 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2f4a0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34 36 0d  sort label-1046.
2f4b0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2f4c0 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
2f4d0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol2 FROM tab1 WH
2f4e0 45 52 45 20 63 6f 6c 30 20 2d 20 2b 20 63 6f 6c  ERE col0 - + col
2f4f0 31 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  1 = NULL..----..
2f500 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
2f510 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2f520 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2f530 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34 36 0d 0a  ort label-1046..
2f540 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2f550 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
2f560 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol2 FROM tab1 WH
2f570 45 52 45 20 63 6f 6c 30 20 2d 20 2b 20 63 6f 6c  ERE col0 - + col
2f580 31 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  1 = NULL..----..
2f590 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
2f5a0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
2f5b0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2f5c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2f5d0 6c 61 62 65 6c 2d 31 30 34 37 0d 0a 53 45 4c 45  label-1047..SELE
2f5e0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30  CT DISTINCT col0
2f5f0 20 2b 20 2b 20 35 32 20 44 49 56 20 63 6f 6c 31   + + 52 DIV col1
2f600 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2f610 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 39 0d 0a 31  b0..----..149..1
2f620 35 0d 0a 38 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  5..89....skipif 
2f630 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2f640 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2f650 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2f660 34 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  47..SELECT DISTI
2f670 4e 43 54 20 63 6f 6c 30 20 2b 20 2b 20 35 32 20  NCT col0 + + 52 
2f680 2f 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46  / col1 AS col1 F
2f690 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
2f6a0 31 34 39 0d 0a 31 35 0d 0a 38 39 0d 0a 0d 0a 71  149..15..89....q
2f6b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2f6c0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2f6d0 2b 20 63 6f 6c 30 20 2a 20 36 35 20 2b 20 63 6f  + col0 * 65 + co
2f6e0 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
2f6f0 2d 2d 0d 0a 33 33 36 36 0d 0a 35 36 31 30 0d 0a  --..3366..5610..
2f700 36 30 30 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  6006....skipif p
2f710 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2f720 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2f730 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2f740 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2f750 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2f760 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
2f770 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ol2 col2 FROM ta
2f780 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  b0 WHERE NULL IS
2f790 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   NOT NULL..----.
2f7a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2f7b0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2f7c0 4e 43 54 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 31  NCT + col1 + + 1
2f7d0 33 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  3 AS col2 FROM t
2f7e0 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3d  ab0 WHERE NULL =
2f7f0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
2f800 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2f810 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2f820 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2f830 74 20 6c 61 62 65 6c 2d 31 30 35 31 0d 0a 53 45  t label-1051..SE
2f840 4c 45 43 54 20 2b 20 53 55 4d 28 20 41 4c 4c 20  LECT + SUM( ALL 
2f850 39 31 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28 20  91 ) * + COUNT( 
2f860 2a 20 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a  * ) + - COUNT( *
2f870 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
2f880 32 0d 0a 2d 2d 2d 2d 0d 0a 38 31 36 0d 0a 0d 0a  2..----..816....
2f890 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2f8a0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
2f8b0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
2f8c0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
2f8d0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
2f8e0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
2f8f0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
2f900 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2f910 35 31 0d 0a 53 45 4c 45 43 54 20 2b 20 53 55 4d  51..SELECT + SUM
2f920 20 28 20 41 4c 4c 20 39 31 20 29 20 2a 20 2b 20   ( ALL 91 ) * + 
2f930 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20  COUNT ( * ) + - 
2f940 43 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 31  COUNT ( * ) col1
2f950 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
2f960 0d 0a 38 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49  ..816....query I
2f970 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2f980 20 2b 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 30   + col2 * + col0
2f990 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2f9a0 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45  r0 WHERE NULL BE
2f9b0 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b  TWEEN NULL AND +
2f9c0 20 37 33 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c   73..----....onl
2f9d0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2f9e0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
2f9f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2fa00 6c 61 62 65 6c 2d 31 30 35 33 0d 0a 53 45 4c 45  label-1053..SELE
2fa10 43 54 20 2d 20 4d 49 4e 28 20 44 49 53 54 49 4e  CT - MIN( DISTIN
2fa20 43 54 20 38 34 20 29 20 41 53 20 63 6f 6c 31 20  CT 84 ) AS col1 
2fa30 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
2fa40 0a 2d 38 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-84....skipif m
2fa50 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2fa60 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2fa70 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35  owsort label-105
2fa80 33 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20  3..SELECT - MIN 
2fa90 28 20 44 49 53 54 49 4e 43 54 20 38 34 20 29 20  ( DISTINCT 84 ) 
2faa0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
2fab0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 34 0d 0a 0d 0a  2..----..-84....
2fac0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2fad0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2fae0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2faf0 72 74 20 6c 61 62 65 6c 2d 31 30 35 34 0d 0a 53  rt label-1054..S
2fb00 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43  ELECT DISTINCT C
2fb10 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
2fb20 30 20 46 52 4f 4d 20 28 20 74 61 62 32 20 41 53  0 FROM ( tab2 AS
2fb30 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
2fb40 20 74 61 62 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39   tab1 )..----..9
2fb50 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2fb60 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2fb70 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2fb80 72 74 20 6c 61 62 65 6c 2d 31 30 35 34 0d 0a 53  rt label-1054..S
2fb90 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43  ELECT DISTINCT C
2fba0 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
2fbb0 6c 30 20 46 52 4f 4d 20 28 20 74 61 62 32 20 41  l0 FROM ( tab2 A
2fbc0 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
2fbd0 4e 20 74 61 62 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  N tab1 )..----..
2fbe0 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
2fbf0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2fc00 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 2a 20 2d  TINCT + col1 * -
2fc10 20 63 6f 6c 32 20 2d 20 2b 20 63 6f 6c 32 20 41   col2 - + col2 A
2fc20 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
2fc30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 39 36 0d 0a 2d  ..----..-1196..-
2fc40 33 31 32 30 0d 0a 2d 33 39 34 34 0d 0a 0d 0a 6f  3120..-3944....o
2fc50 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
2fc60 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
2fc70 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
2fc80 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2fc90 31 30 35 36 0d 0a 53 45 4c 45 43 54 20 2b 20 63  1056..SELECT + c
2fca0 6f 6c 32 20 2d 20 2d 20 43 41 53 54 28 20 4e 55  ol2 - - CAST( NU
2fcb0 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 46  LL AS SIGNED ) F
2fcc0 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
2fcd0 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
2fce0 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
2fcf0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2fd00 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2fd10 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2fd20 35 36 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  56..SELECT + col
2fd30 32 20 2d 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  2 - - CAST ( NUL
2fd40 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46  L AS INTEGER ) F
2fd50 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
2fd60 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
2fd70 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
2fd80 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2fd90 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
2fda0 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74  yntax: DECIMAL t
2fdb0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
2fdc0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35  owsort label-105
2fdd0 37 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f  7..SELECT - + CO
2fde0 55 4e 54 28 20 2a 20 29 20 2a 20 43 41 53 54 28  UNT( * ) * CAST(
2fdf0 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c   NULL AS DECIMAL
2fe00 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
2fe10 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
2fe20 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2fe30 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2fe40 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2fe50 72 74 20 6c 61 62 65 6c 2d 31 30 35 37 0d 0a 53  rt label-1057..S
2fe60 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55 4e 54 20  ELECT - + COUNT 
2fe70 28 20 2a 20 29 20 2a 20 43 41 53 54 20 28 20 4e  ( * ) * CAST ( N
2fe80 55 4c 4c 20 41 53 20 52 45 41 4c 20 29 20 46 52  ULL AS REAL ) FR
2fe90 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
2fea0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .----..NULL....q
2feb0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2fec0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2fed0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
2fee0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
2fef0 20 63 6f 6c 31 20 2b 20 35 31 20 3d 20 28 20 4e   col1 + 51 = ( N
2ff00 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ULL )..----....o
2ff10 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2ff20 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2ff30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2ff40 74 20 6c 61 62 65 6c 2d 31 30 35 39 0d 0a 53 45  t label-1059..SE
2ff50 4c 45 43 54 20 2d 20 2d 20 33 39 20 2a 20 43 4f  LECT - - 39 * CO
2ff60 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  UNT( * ) AS col0
2ff70 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2ff80 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 37 0d 0a 0d  r0..----..117...
2ff90 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2ffa0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2ffb0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ffc0 6c 61 62 65 6c 2d 31 30 35 39 0d 0a 53 45 4c 45  label-1059..SELE
2ffd0 43 54 20 2d 20 2d 20 33 39 20 2a 20 43 4f 55 4e  CT - - 39 * COUN
2ffe0 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
2fff0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
30000 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 37 0d 0a 0d 0a  0..----..117....
30010 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
30020 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
30030 20 2b 20 63 6f 6c 31 20 2d 20 2b 20 28 20 2d 20   + col1 - + ( - 
30040 38 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  81 ) AS col2 FRO
30050 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
30060 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53  HERE NOT NULL IS
30070 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
30080 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
30090 53 45 4c 45 43 54 20 2d 20 2b 20 28 20 35 20 29  SELECT - + ( 5 )
300a0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
300b0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 2d 35  r0..----..-5..-5
300c0 0d 0a 2d 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..-5....query I 
300d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
300e0 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 39 34 20  DISTINCT - - 94 
300f0 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * + col2 FROM ta
30100 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
30110 0d 0a 34 34 31 38 0d 0a 39 33 30 36 0d 0a 39 34  ..4418..9306..94
30120 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
30130 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
30140 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
30150 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
30160 6c 61 62 65 6c 2d 31 30 36 33 0d 0a 53 45 4c 45  label-1063..SELE
30170 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
30180 6c 31 20 44 49 56 20 2d 20 38 36 20 41 53 20 63  l1 DIV - 86 AS c
30190 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
301a0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
301b0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
301c0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
301d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
301e0 20 6c 61 62 65 6c 2d 31 30 36 33 0d 0a 53 45 4c   label-1063..SEL
301f0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
30200 6f 6c 31 20 2f 20 2d 20 38 36 20 41 53 20 63 6f  ol1 / - 86 AS co
30210 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
30220 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  cor0..----..0...
30230 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
30240 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
30250 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
30260 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20  HERE NOT + col1 
30270 2a 20 35 34 20 49 4e 20 28 20 31 36 20 2b 20 2b  * 54 IN ( 16 + +
30280 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39   col1 )..----..9
30290 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
302a0 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38  to 75c998aa53ac8
302b0 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30  3218cbf2feb962d0
302c0 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  a49....query III
302d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
302e0 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31   ALL * FROM tab1
302f0 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3d 20 28   WHERE NULL <= (
30300 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d   + col1 )..----.
30310 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30320 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20  rt..SELECT col0 
30330 2a 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  * - col1 FROM ta
30340 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3d  b0 WHERE NULL <=
30350 20 2d 20 33 38 20 2a 20 2b 20 63 6f 6c 30 20 4f   - 38 * + col0 O
30360 52 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 49  R NOT ( NULL ) I
30370 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
30380 0d 0a 2d 31 32 31 35 0d 0a 2d 31 38 32 37 0d 0a  ..-1215..-1827..
30390 2d 39 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -97....onlyif my
303a0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
303b0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
303c0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
303d0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 37 0d 0a  ort label-1067..
303e0 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
303f0 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
30400 20 4e 55 4c 4c 20 49 4e 20 28 20 2b 20 43 41 53   NULL IN ( + CAS
30410 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
30420 44 20 29 20 2b 20 2d 20 32 34 20 29 0d 0a 2d 2d  D ) + - 24 )..--
30430 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
30440 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
30450 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
30460 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36  owsort label-106
30470 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  7..SELECT ALL * 
30480 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
30490 4e 4f 54 20 4e 55 4c 4c 20 49 4e 20 28 20 2b 20  NOT NULL IN ( + 
304a0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
304b0 4e 54 45 47 45 52 20 29 20 2b 20 2d 20 32 34 20  NTEGER ) + - 24 
304c0 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
304d0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
304e0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
304f0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20  pe: ..query III 
30500 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
30510 36 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  68..SELECT DISTI
30520 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
30530 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 32  WHERE NOT - col2
30540 20 2d 20 2d 20 36 36 20 3c 3d 20 28 20 43 41 53   - - 66 <= ( CAS
30550 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
30560 44 20 29 20 29 20 4f 52 20 28 20 63 6f 6c 31 20  D ) ) OR ( col1 
30570 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  ) IS NULL..----.
30580 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
30590 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
305a0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
305b0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 38 0d 0a  ort label-1068..
305c0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
305d0 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
305e0 45 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 2d 20 2d  E NOT - col2 - -
305f0 20 36 36 20 3c 3d 20 28 20 43 41 53 54 20 28 20   66 <= ( CAST ( 
30600 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
30610 29 20 29 20 4f 52 20 28 20 63 6f 6c 31 20 29 20  ) ) OR ( col1 ) 
30620 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
30630 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
30640 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  rt..SELECT ALL *
30650 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
30660 20 4e 4f 54 20 63 6f 6c 30 20 49 53 20 4e 4f 54   NOT col0 IS NOT
30670 20 4e 55 4c 4c 20 4f 52 20 4e 4f 54 20 28 20 4e   NULL OR NOT ( N
30680 55 4c 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20 2d  ULL ) NOT IN ( -
30690 20 28 20 63 6f 6c 32 20 29 20 29 0d 0a 2d 2d 2d   ( col2 ) )..---
306a0 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
306b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
306c0 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
306d0 31 20 57 48 45 52 45 20 28 20 2d 20 28 20 63 6f  1 WHERE ( - ( co
306e0 6c 32 20 29 20 2f 20 2b 20 63 6f 6c 31 20 2b 20  l2 ) / + col1 + 
306f0 2d 20 63 6f 6c 30 20 29 20 3c 20 28 20 2d 20 63  - col0 ) < ( - c
30700 6f 6c 30 20 2f 20 36 20 2b 20 2d 20 63 6f 6c 30  ol0 / 6 + - col0
30710 20 2a 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d   * col2 )..----.
30720 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
30730 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
30740 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
30750 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54  2 WHERE NULL NOT
30760 20 49 4e 20 28 20 63 6f 6c 30 20 2b 20 36 39 20   IN ( col0 + 69 
30770 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  )..----....skipi
30780 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
30790 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
307a0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
307b0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
307c0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
307d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
307e0 49 4e 43 54 20 2b 20 36 39 20 63 6f 6c 32 20 46  INCT + 69 col2 F
307f0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
30800 36 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  69....query I ro
30810 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
30820 4c 20 31 33 20 2b 20 33 20 41 53 20 63 6f 6c 32  L 13 + 3 AS col2
30830 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
30840 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  r0 WHERE NOT col
30850 31 20 2a 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 63  1 * - col0 + - c
30860 6f 6c 31 20 4e 4f 54 20 49 4e 20 28 20 63 6f 6c  ol1 NOT IN ( col
30870 30 20 2a 20 2d 20 63 6f 6c 30 20 29 0d 0a 2d 2d  0 * - col0 )..--
30880 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
30890 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
308a0 4c 20 2b 20 36 30 20 2a 20 2d 20 63 6f 6c 30 20  L + 60 * - col0 
308b0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
308c0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 36 30 0d 0a  0..----..-2760..
308d0 2d 33 38 34 30 0d 0a 2d 34 35 30 30 0d 0a 0d 0a  -3840..-4500....
308e0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
308f0 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
30900 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
30910 45 52 45 20 4e 4f 54 20 34 30 20 3e 20 63 6f 6c  ERE NOT 40 > col
30920 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
30930 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63  s hashing to 75c
30940 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62  998aa53ac83218cb
30950 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d  f2feb962d0a49...
30960 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
30970 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
30980 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
30990 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
309a0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
309b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
309c0 54 20 2d 20 2b 20 63 6f 6c 31 20 2a 20 63 6f 6c  T - + col1 * col
309d0 32 20 2a 20 2b 20 63 6f 6c 31 20 63 6f 6c 32 20  2 * + col1 col2 
309e0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
309f0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 30 38 33 36 37  0..----..-308367
30a00 0d 0a 2d 34 34 31 30 0d 0a 2d 39 39 0d 0a 0d 0a  ..-4410..-99....
30a10 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
30a20 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20  t..SELECT ALL * 
30a30 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57  FROM tab2 cor0 W
30a40 48 45 52 45 20 37 20 2d 20 2d 20 63 6f 6c 32 20  HERE 7 - - col2 
30a50 2a 20 2b 20 63 6f 6c 30 20 49 4e 20 28 20 63 6f  * + col0 IN ( co
30a60 6c 30 20 2b 20 28 20 63 6f 6c 30 20 29 20 29 0d  l0 + ( col0 ) ).
30a70 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
30a80 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
30a90 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
30aa0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
30ab0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 38 0d 0a  ort label-1078..
30ac0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53  SELECT ALL + CAS
30ad0 54 28 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c  T( + + CAST( NUL
30ae0 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
30af0 20 53 49 47 4e 45 44 20 29 20 2a 20 2b 20 2d 20   SIGNED ) * + - 
30b00 37 32 20 2f 20 2d 20 28 20 63 6f 6c 31 20 29 20  72 / - ( col1 ) 
30b10 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
30b20 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
30b30 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
30b40 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
30b50 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
30b60 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37 38 0d 0a  ort label-1078..
30b70 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41 53  SELECT ALL + CAS
30b80 54 20 28 20 2b 20 2b 20 43 41 53 54 20 28 20 4e  T ( + + CAST ( N
30b90 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
30ba0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20   AS INTEGER ) * 
30bb0 2b 20 2d 20 37 32 20 2f 20 2d 20 28 20 63 6f 6c  + - 72 / - ( col
30bc0 31 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  1 ) FROM tab1..-
30bd0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
30be0 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49  .NULL....query I
30bf0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
30c00 20 41 4c 4c 20 34 39 20 41 53 20 63 6f 6c 32 20   ALL 49 AS col2 
30c10 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
30c20 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
30c30 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  1 AS cor1..----.
30c40 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
30c50 67 20 74 6f 20 63 62 34 30 37 38 33 63 30 66 66  g to cb40783c0ff
30c60 66 37 32 65 38 38 30 32 63 64 66 30 36 38 32 65  f72e8802cdf0682e
30c70 37 63 62 35 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  7cb55....onlyif 
30c80 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
30c90 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
30ca0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
30cb0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 30 0d 0a  ort label-1080..
30cc0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
30cd0 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
30ce0 53 49 47 4e 45 44 20 29 20 2a 20 2d 20 2d 20 63  SIGNED ) * - - c
30cf0 6f 6c 32 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 41  ol2 + - - col1 A
30d00 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
30d10 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
30d20 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
30d30 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
30d40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
30d50 61 62 65 6c 2d 31 30 38 30 0d 0a 53 45 4c 45 43  abel-1080..SELEC
30d60 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41 53  T DISTINCT + CAS
30d70 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
30d80 47 45 52 20 29 20 2a 20 2d 20 2d 20 63 6f 6c 32  GER ) * - - col2
30d90 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 41 53 20 63   + - - col1 AS c
30da0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
30db0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ---..NULL....que
30dc0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
30dd0 45 4c 45 43 54 20 2b 20 39 30 20 41 53 20 63 6f  ELECT + 90 AS co
30de0 6c 31 2c 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 63  l1, - col1 + + c
30df0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
30e00 2d 2d 2d 0d 0a 39 30 0d 0a 2d 31 33 0d 0a 39 30  ---..90..-13..90
30e10 0d 0a 2d 35 0d 0a 39 30 0d 0a 38 0d 0a 0d 0a 71  ..-5..90..8....q
30e20 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
30e30 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f 6c 32  .SELECT + + col2
30e40 20 41 53 20 63 6f 6c 32 2c 20 63 6f 6c 31 20 41   AS col2, col1 A
30e50 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
30e60 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
30e70 31 30 0d 0a 32 31 0d 0a 34 37 0d 0a 38 31 0d 0a  10..21..47..81..
30e80 39 39 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  99..1....onlyif 
30e90 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
30ea0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
30eb0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
30ec0 6c 2d 31 30 38 33 0d 0a 53 45 4c 45 43 54 20 44  l-1083..SELECT D
30ed0 49 53 54 49 4e 43 54 20 2b 20 2d 20 4d 49 4e 28  ISTINCT + - MIN(
30ee0 20 2b 20 2d 20 31 37 20 29 20 46 52 4f 4d 20 74   + - 17 ) FROM t
30ef0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
30f00 2d 0d 0a 31 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..17....skipif 
30f10 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
30f20 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
30f30 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
30f40 38 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  83..SELECT DISTI
30f50 4e 43 54 20 2b 20 2d 20 4d 49 4e 20 28 20 2b 20  NCT + - MIN ( + 
30f60 2d 20 31 37 20 29 20 46 52 4f 4d 20 74 61 62 32  - 17 ) FROM tab2
30f70 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
30f80 31 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  17....onlyif mys
30f90 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
30fa0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
30fb0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
30fc0 30 38 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  084..SELECT + + 
30fd0 30 20 2b 20 36 30 20 2b 20 2b 20 43 4f 55 4e 54  0 + 60 + + COUNT
30fe0 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20  ( * ) FROM tab2 
30ff0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36  AS cor0..----..6
31000 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
31010 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
31020 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
31030 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 34 0d 0a  ort label-1084..
31040 53 45 4c 45 43 54 20 2b 20 2b 20 30 20 2b 20 36  SELECT + + 0 + 6
31050 30 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  0 + + COUNT ( * 
31060 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
31070 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d  or0..----..63...
31080 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
31090 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
310a0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
310b0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 35 0d 0a  ort label-1085..
310c0 53 45 4c 45 43 54 20 2b 20 34 20 2b 20 4d 41 58  SELECT + 4 + MAX
310d0 28 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 37  ( DISTINCT - + 7
310e0 37 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  7 ) FROM tab2 AS
310f0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 33   cor0..----..-73
31100 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
31110 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
31120 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
31130 72 74 20 6c 61 62 65 6c 2d 31 30 38 35 0d 0a 53  rt label-1085..S
31140 45 4c 45 43 54 20 2b 20 34 20 2b 20 4d 41 58 20  ELECT + 4 + MAX 
31150 28 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 37  ( DISTINCT - + 7
31160 37 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  7 ) FROM tab2 AS
31170 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 33   cor0..----..-73
31180 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
31190 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
311a0 49 4e 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2b 20  INCT - col0 + + 
311b0 36 33 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  63 FROM tab1 AS 
311c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d  cor0..----..-22.
311d0 0a 2d 32 38 0d 0a 31 32 0d 0a 0d 0a 6f 6e 6c 79  .-28..12....only
311e0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
311f0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
31200 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
31210 61 62 65 6c 2d 31 30 38 37 0d 0a 53 45 4c 45 43  abel-1087..SELEC
31220 54 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  T - + COUNT( * )
31230 20 2b 20 2d 20 39 31 20 41 53 20 63 6f 6c 31 20   + - 91 AS col1 
31240 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
31250 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 34 0d 0a 0d 0a  0..----..-94....
31260 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
31270 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
31280 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
31290 61 62 65 6c 2d 31 30 38 37 0d 0a 53 45 4c 45 43  abel-1087..SELEC
312a0 54 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  T - + COUNT ( * 
312b0 29 20 2b 20 2d 20 39 31 20 41 53 20 63 6f 6c 31  ) + - 91 AS col1
312c0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
312d0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 34 0d 0a 0d  r0..----..-94...
312e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
312f0 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20  ..SELECT + col1 
31300 2b 20 2d 20 2b 20 35 39 20 41 53 20 63 6f 6c 31  + - + 59 AS col1
31310 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
31320 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a 31 38 0d 0a 38  .----..-8..18..8
31330 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
31340 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
31350 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
31360 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38  owsort label-108
31370 39 0d 0a 53 45 4c 45 43 54 20 28 20 37 34 20 29  9..SELECT ( 74 )
31380 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   + COUNT( * ) AS
31390 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
313a0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  AS cor0..----..7
313b0 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
313c0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
313d0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
313e0 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 39 0d 0a  ort label-1089..
313f0 53 45 4c 45 43 54 20 28 20 37 34 20 29 20 2b 20  SELECT ( 74 ) + 
31400 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
31410 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
31420 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 37 0d   cor0..----..77.
31430 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
31440 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
31450 4e 43 54 20 2b 20 2b 20 35 20 2b 20 63 6f 6c 31  NCT + + 5 + col1
31460 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
31470 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35  b2 cor0..----..5
31480 36 0d 0a 37 32 0d 0a 38 32 0d 0a 0d 0a 71 75 65  6..72..82....que
31490 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
314a0 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
314b0 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
314c0 20 28 20 63 6f 6c 30 20 2a 20 2d 20 33 36 20 29   ( col0 * - 36 )
314d0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
314e0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
314f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
31500 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 55  OM tab0 WHERE NU
31510 4c 4c 20 49 4e 20 28 20 2d 20 2b 20 38 32 20 29  LL IN ( - + 82 )
31520 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
31530 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
31540 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
31550 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
31560 65 6c 2d 31 30 39 33 0d 0a 53 45 4c 45 43 54 20  el-1093..SELECT 
31570 41 4c 4c 20 4d 49 4e 28 20 63 6f 6c 32 20 29 20  ALL MIN( col2 ) 
31580 2a 20 4d 41 58 28 20 2d 20 63 6f 6c 30 20 29 20  * MAX( - col0 ) 
31590 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
315a0 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54  0 WHERE NULL BET
315b0 57 45 45 4e 20 2d 20 63 6f 6c 31 20 41 4e 44 20  WEEN - col1 AND 
315c0 2d 20 63 6f 6c 30 20 2b 20 28 20 2d 20 63 6f 6c  - col0 + ( - col
315d0 31 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d  1 + col0 )..----
315e0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
315f0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
31600 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
31610 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
31620 30 39 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  093..SELECT ALL 
31630 4d 49 4e 20 28 20 63 6f 6c 32 20 29 20 2a 20 4d  MIN ( col2 ) * M
31640 41 58 20 28 20 2d 20 63 6f 6c 30 20 29 20 41 53  AX ( - col0 ) AS
31650 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
31660 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54 57 45  WHERE NULL BETWE
31670 45 4e 20 2d 20 63 6f 6c 31 20 41 4e 44 20 2d 20  EN - col1 AND - 
31680 63 6f 6c 30 20 2b 20 28 20 2d 20 63 6f 6c 31 20  col0 + ( - col1 
31690 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + col0 )..----..
316a0 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
316b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
316c0 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
316d0 2a 20 2d 20 63 6f 6c 30 20 2d 20 2b 20 2d 20 63  * - col0 - + - c
316e0 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
316f0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 30   tab0..----..240
31700 0d 0a 37 36 35 36 0d 0a 39 35 30 36 0d 0a 0d 0a  ..7656..9506....
31710 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
31720 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
31730 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
31740 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
31750 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
31760 65 6c 2d 31 30 39 35 0d 0a 53 45 4c 45 43 54 20  el-1095..SELECT 
31770 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
31780 47 4e 45 44 20 29 20 2a 20 2d 20 43 4f 55 4e 54  GNED ) * - COUNT
31790 28 20 2d 20 2d 20 33 38 20 29 20 46 52 4f 4d 20  ( - - 38 ) FROM 
317a0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab0..----..NULL
317b0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
317c0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
317d0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
317e0 72 74 20 6c 61 62 65 6c 2d 31 30 39 35 0d 0a 53  rt label-1095..S
317f0 45 4c 45 43 54 20 43 41 53 54 20 28 20 4e 55 4c  ELECT CAST ( NUL
31800 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  L AS INTEGER ) *
31810 20 2d 20 43 4f 55 4e 54 20 28 20 2d 20 2d 20 33   - COUNT ( - - 3
31820 38 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  8 ) FROM tab0..-
31830 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ---..NULL....que
31840 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
31850 4c 45 43 54 20 63 6f 6c 30 20 2a 20 2d 20 28 20  LECT col0 * - ( 
31860 2b 20 37 38 20 29 20 41 53 20 63 6f 6c 31 20 46  + 78 ) AS col1 F
31870 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
31880 2d 31 31 37 30 0d 0a 2d 36 37 38 36 0d 0a 2d 37  -1170..-6786..-7
31890 35 36 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  566....onlyif my
318a0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
318b0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
318c0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
318d0 31 30 39 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  1097..SELECT DIS
318e0 54 49 4e 43 54 20 2b 20 4d 49 4e 28 20 44 49 53  TINCT + MIN( DIS
318f0 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 31 20 29  TINCT - + col1 )
31900 20 2b 20 2d 20 4d 49 4e 28 20 41 4c 4c 20 2d 20   + - MIN( ALL - 
31910 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 30  col2 ) FROM tab0
31920 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d 0a 0d 0a 73 6b  ..----..18....sk
31930 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
31940 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
31950 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
31960 65 6c 2d 31 30 39 37 0d 0a 53 45 4c 45 43 54 20  el-1097..SELECT 
31970 44 49 53 54 49 4e 43 54 20 2b 20 4d 49 4e 20 28  DISTINCT + MIN (
31980 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f   DISTINCT - + co
31990 6c 31 20 29 20 2b 20 2d 20 4d 49 4e 20 28 20 41  l1 ) + - MIN ( A
319a0 4c 4c 20 2d 20 63 6f 6c 32 20 29 20 46 52 4f 4d  LL - col2 ) FROM
319b0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d   tab0..----..18.
319c0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
319d0 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2b  rt..SELECT - ( +
319e0 20 32 31 20 29 20 2d 20 63 6f 6c 32 20 46 52 4f   21 ) - col2 FRO
319f0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
31a00 48 45 52 45 20 2d 20 63 6f 6c 32 20 2b 20 2b 20  HERE - col2 + + 
31a10 63 6f 6c 32 20 3d 20 2b 20 63 6f 6c 30 20 2a 20  col2 = + col0 * 
31a20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  + col0..----....
31a30 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
31a40 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
31a50 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
31a60 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
31a70 65 6c 2d 31 30 39 39 0d 0a 53 45 4c 45 43 54 20  el-1099..SELECT 
31a80 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
31a90 6f 72 30 20 57 48 45 52 45 20 28 20 4e 4f 54 20  or0 WHERE ( NOT 
31aa0 2d 20 43 41 53 54 28 20 2b 20 63 6f 6c 30 20 41  - CAST( + col0 A
31ab0 53 20 53 49 47 4e 45 44 20 29 20 49 53 20 4e 55  S SIGNED ) IS NU
31ac0 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  LL )..----..9 va
31ad0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
31ae0 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31  75c998aa53ac8321
31af0 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39  8cbf2feb962d0a49
31b00 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
31b10 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
31b20 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  e..query III row
31b30 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 39 0d  sort label-1099.
31b40 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
31b50 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
31b60 45 20 28 20 4e 4f 54 20 2d 20 43 41 53 54 20 28  E ( NOT - CAST (
31b70 20 2b 20 63 6f 6c 30 20 41 53 20 49 4e 54 45 47   + col0 AS INTEG
31b80 45 52 20 29 20 49 53 20 4e 55 4c 4c 20 29 0d 0a  ER ) IS NULL )..
31b90 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
31ba0 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38  ashing to 75c998
31bb0 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66  aa53ac83218cbf2f
31bc0 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e  eb962d0a49....on
31bd0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
31be0 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
31bf0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
31c00 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
31c10 31 30 30 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  100..SELECT + co
31c20 6c 32 20 2d 20 38 36 20 2a 20 2d 20 2b 20 43 41  l2 - 86 * - + CA
31c30 53 54 28 20 2d 20 63 6f 6c 32 20 41 53 20 53 49  ST( - col2 AS SI
31c40 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20 46  GNED ) AS col1 F
31c50 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
31c60 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 35 35 0d 0a 2d  ..----..-1955..-
31c70 33 34 30 30 0d 0a 2d 34 39 33 30 0d 0a 0d 0a 73  3400..-4930....s
31c80 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
31c90 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
31ca0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
31cb0 62 65 6c 2d 31 31 30 30 0d 0a 53 45 4c 45 43 54  bel-1100..SELECT
31cc0 20 2b 20 63 6f 6c 32 20 2d 20 38 36 20 2a 20 2d   + col2 - 86 * -
31cd0 20 2b 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 32   + CAST ( - col2
31ce0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53   AS INTEGER ) AS
31cf0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
31d00 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
31d10 31 39 35 35 0d 0a 2d 33 34 30 30 0d 0a 2d 34 39  1955..-3400..-49
31d20 33 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  30....onlyif mys
31d30 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
31d40 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
31d50 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
31d60 31 30 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  101..SELECT ALL 
31d70 2d 20 2d 20 43 4f 55 4e 54 28 20 2d 20 63 6f 6c  - - COUNT( - col
31d80 32 20 29 20 2b 20 2d 20 2b 20 43 4f 55 4e 54 28  2 ) + - + COUNT(
31d90 20 41 4c 4c 20 32 34 20 29 20 46 52 4f 4d 20 74   ALL 24 ) FROM t
31da0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
31db0 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
31dc0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
31dd0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
31de0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30  owsort label-110
31df0 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  1..SELECT ALL - 
31e00 2d 20 43 4f 55 4e 54 20 28 20 2d 20 63 6f 6c 32  - COUNT ( - col2
31e10 20 29 20 2b 20 2d 20 2b 20 43 4f 55 4e 54 20 28   ) + - + COUNT (
31e20 20 41 4c 4c 20 32 34 20 29 20 46 52 4f 4d 20 74   ALL 24 ) FROM t
31e30 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
31e40 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..0....query I 
31e50 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
31e60 2b 20 2b 20 34 31 20 46 52 4f 4d 20 74 61 62 31  + + 41 FROM tab1
31e70 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55   cor0 WHERE ( NU
31e80 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  LL ) IS NULL..--
31e90 2d 2d 0d 0a 34 31 0d 0a 34 31 0d 0a 34 31 0d 0a  --..41..41..41..
31ea0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
31eb0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
31ec0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
31ed0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30 33 0d  sort label-1103.
31ee0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
31ef0 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   + COUNT( * ) * 
31f00 2d 20 36 39 20 46 52 4f 4d 20 74 61 62 32 20 41  - 69 FROM tab2 A
31f10 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
31f20 20 28 20 2d 20 28 20 2d 20 63 6f 6c 32 20 29 20   ( - ( - col2 ) 
31f30 49 53 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d  IS NULL )..----.
31f40 0a 2d 32 30 37 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-207....skipif 
31f50 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
31f60 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
31f70 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
31f80 30 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  03..SELECT DISTI
31f90 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  NCT + COUNT ( * 
31fa0 29 20 2a 20 2d 20 36 39 20 46 52 4f 4d 20 74 61  ) * - 69 FROM ta
31fb0 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
31fc0 20 4e 4f 54 20 28 20 2d 20 28 20 2d 20 63 6f 6c   NOT ( - ( - col
31fd0 32 20 29 20 49 53 20 4e 55 4c 4c 20 29 0d 0a 2d  2 ) IS NULL )..-
31fe0 2d 2d 2d 0d 0a 2d 32 30 37 0d 0a 0d 0a 71 75 65  ---..-207....que
31ff0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32000 4c 45 43 54 20 2b 20 2d 20 63 6f 6c 30 20 46 52  LECT + - col0 FR
32010 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
32020 57 48 45 52 45 20 2d 20 35 38 20 49 53 20 4e 55  WHERE - 58 IS NU
32030 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
32040 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
32050 45 43 54 20 2d 20 28 20 31 20 29 20 2d 20 2b 20  ECT - ( 1 ) - + 
32060 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
32070 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
32080 30 30 0d 0a 2d 31 31 0d 0a 2d 34 38 0d 0a 0d 0a  00..-11..-48....
32090 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
320a0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
320b0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
320c0 72 74 20 6c 61 62 65 6c 2d 31 31 30 36 0d 0a 53  rt label-1106..S
320d0 45 4c 45 43 54 20 4d 49 4e 28 20 41 4c 4c 20 35  ELECT MIN( ALL 5
320e0 37 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  7 ) FROM tab0 AS
320f0 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 4f   cor0 WHERE ( NO
32100 54 20 28 20 4e 55 4c 4c 20 29 20 3c 3e 20 28 20  T ( NULL ) <> ( 
32110 2b 20 28 20 63 6f 6c 30 20 29 20 2a 20 35 32 20  + ( col0 ) * 52 
32120 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ) )..----..NULL.
32130 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
32140 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
32150 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
32160 74 20 6c 61 62 65 6c 2d 31 31 30 36 0d 0a 53 45  t label-1106..SE
32170 4c 45 43 54 20 4d 49 4e 20 28 20 41 4c 4c 20 35  LECT MIN ( ALL 5
32180 37 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  7 ) FROM tab0 AS
32190 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 4f   cor0 WHERE ( NO
321a0 54 20 28 20 4e 55 4c 4c 20 29 20 3c 3e 20 28 20  T ( NULL ) <> ( 
321b0 2b 20 28 20 63 6f 6c 30 20 29 20 2a 20 35 32 20  + ( col0 ) * 52 
321c0 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ) )..----..NULL.
321d0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
321e0 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20 2d  rt..SELECT ( - -
321f0 20 63 6f 6c 32 20 29 20 2a 20 2b 20 28 20 63 6f   col2 ) * + ( co
32200 6c 30 20 29 20 2b 20 2d 20 63 6f 6c 30 20 2a 20  l0 ) + - col0 * 
32210 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  + col0 FROM tab1
32220 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 39 33 0d 0a 2d  ..----..-2093..-
32230 32 32 31 30 0d 0a 32 32 39 35 0d 0a 0d 0a 71 75  2210..2295....qu
32240 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
32250 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
32260 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
32270 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 20 2d 20  RE NOT NULL > - 
32280 63 6f 6c 30 20 2b 20 2d 20 2b 20 36 32 0d 0a 2d  col0 + - + 62..-
32290 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
322a0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
322b0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
322c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
322d0 74 20 6c 61 62 65 6c 2d 31 31 30 39 0d 0a 53 45  t label-1109..SE
322e0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
322f0 43 41 53 54 28 20 2d 20 2d 20 63 6f 6c 32 20 41  CAST( - - col2 A
32300 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f  S SIGNED ) AS co
32310 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
32320 2d 2d 0d 0a 2d 35 39 0d 0a 2d 36 38 0d 0a 2d 39  --..-59..-68..-9
32330 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
32340 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
32350 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
32360 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30 39 0d 0a  ort label-1109..
32370 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
32380 2d 20 43 41 53 54 20 28 20 2d 20 2d 20 63 6f 6c  - CAST ( - - col
32390 32 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  2 AS INTEGER ) A
323a0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
323b0 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d 36 38  ..----..-59..-68
323c0 0d 0a 2d 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-96....onlyif 
323d0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
323e0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
323f0 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
32400 65 6c 2d 31 31 31 30 0d 0a 53 45 4c 45 43 54 20  el-1110..SELECT 
32410 44 49 53 54 49 4e 43 54 20 36 38 20 41 53 20 63  DISTINCT 68 AS c
32420 6f 6c 32 2c 20 43 4f 55 4e 54 28 20 2a 20 29 20  ol2, COUNT( * ) 
32430 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
32440 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
32450 0a 36 38 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66  .68..3....skipif
32460 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
32470 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
32480 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
32490 31 31 31 30 0d 0a 53 45 4c 45 43 54 20 44 49 53  1110..SELECT DIS
324a0 54 49 4e 43 54 20 36 38 20 41 53 20 63 6f 6c 32  TINCT 68 AS col2
324b0 2c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53  , COUNT ( * ) AS
324c0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
324d0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36  AS cor0..----..6
324e0 38 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  8..3....query I 
324f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
32500 2d 20 28 20 2b 20 63 6f 6c 30 20 29 20 2a 20 63  - ( + col0 ) * c
32510 6f 6c 30 20 2b 20 38 34 20 41 53 20 63 6f 6c 30  ol0 + 84 AS col0
32520 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
32530 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63  r0 WHERE NOT - c
32540 6f 6c 32 20 2a 20 2d 20 63 6f 6c 30 20 49 4e 20  ol2 * - col0 IN 
32550 28 20 2d 20 28 20 2d 20 63 6f 6c 30 20 29 20 2b  ( - ( - col0 ) +
32560 20 2d 20 36 20 2f 20 39 30 20 29 0d 0a 2d 2d 2d   - 6 / 90 )..---
32570 2d 0d 0a 2d 32 30 33 32 0d 0a 2d 34 30 31 32 0d  -..-2032..-4012.
32580 0a 2d 35 35 34 31 0d 0a 0d 0a 71 75 65 72 79 20  .-5541....query 
32590 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
325a0 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2f 20 2b  T ALL + col1 / +
325b0 20 33 33 20 46 52 4f 4d 20 74 61 62 30 20 41 53   33 FROM tab0 AS
325c0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
325d0 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 2b 20  NULL NOT IN ( + 
325e0 63 6f 6c 30 20 2d 20 63 6f 6c 31 2c 20 63 6f 6c  col0 - col1, col
325f0 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  2 )..----....que
32600 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
32610 45 4c 45 43 54 20 2d 20 33 34 2c 20 63 6f 6c 30  ELECT - 34, col0
32620 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
32630 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 0d 0a 34  b2..----..-34..4
32640 36 0d 0a 2d 33 34 0d 0a 36 34 0d 0a 2d 33 34 0d  6..-34..64..-34.
32650 0a 37 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .75....onlyif my
32660 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
32670 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
32680 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
32690 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
326a0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 34 0d 0a  ort label-1114..
326b0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
326c0 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2b  COUNT( * ) * + +
326d0 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2d 20 2d 20   COUNT( ALL - - 
326e0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
326f0 47 4e 45 44 20 29 20 29 20 41 53 20 63 6f 6c 31  GNED ) ) AS col1
32700 20 46 52 4f 4d 20 74 61 62 30 2c 20 74 61 62 30   FROM tab0, tab0
32710 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
32720 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
32730 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
32740 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
32750 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 34 0d 0a  ort label-1114..
32760 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
32770 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20  COUNT ( * ) * + 
32780 2b 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2d 20  + COUNT ( ALL - 
32790 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
327a0 20 49 4e 54 45 47 45 52 20 29 20 29 20 41 53 20   INTEGER ) ) AS 
327b0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 2c 20  col1 FROM tab0, 
327c0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
327d0 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  --..0....query I
327e0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
327f0 54 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  T + col1 AS col0
32800 2c 20 2d 20 38 33 20 41 53 20 63 6f 6c 32 20 46  , - 83 AS col2 F
32810 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
32820 31 0d 0a 2d 38 33 0d 0a 32 31 0d 0a 2d 38 33 0d  1..-83..21..-83.
32830 0a 38 31 0d 0a 2d 38 33 0d 0a 0d 0a 6f 6e 6c 79  .81..-83....only
32840 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
32850 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
32860 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
32870 6c 61 62 65 6c 2d 31 31 31 36 0d 0a 53 45 4c 45  label-1116..SELE
32880 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53  CT COUNT( * ) AS
32890 20 63 6f 6c 32 2c 20 39 38 20 2b 20 2d 20 34 32   col2, 98 + - 42
328a0 20 2b 20 2b 20 31 30 20 41 53 20 63 6f 6c 30 20   + + 10 AS col0 
328b0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
328c0 0a 33 0d 0a 36 36 0d 0a 0d 0a 73 6b 69 70 69 66  .3..66....skipif
328d0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
328e0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
328f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
32900 31 31 31 36 0d 0a 53 45 4c 45 43 54 20 43 4f 55  1116..SELECT COU
32910 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32  NT ( * ) AS col2
32920 2c 20 39 38 20 2b 20 2d 20 34 32 20 2b 20 2b 20  , 98 + - 42 + + 
32930 31 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  10 AS col0 FROM 
32940 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 36  tab1..----..3..6
32950 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  6....query II ro
32960 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
32970 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 2a 20 32 37  col2 * col1 * 27
32980 20 2a 20 2d 20 31 31 20 41 53 20 63 6f 6c 31 2c   * - 11 AS col1,
32990 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
329a0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 35 34 31 34  2..----..-115414
329b0 32 0d 0a 37 35 0d 0a 2d 33 34 38 33 38 31 0d 0a  2..75..-348381..
329c0 34 36 0d 0a 2d 39 31 34 37 36 30 0d 0a 36 34 0d  46..-914760..64.
329d0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
329e0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
329f0 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
32a00 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
32a10 28 20 63 6f 6c 31 20 29 20 42 45 54 57 45 45 4e  ( col1 ) BETWEEN
32a20 20 28 20 2d 20 63 6f 6c 30 20 29 20 41 4e 44 20   ( - col0 ) AND 
32a30 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  col1..----..9 va
32a40 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
32a50 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31  75c998aa53ac8321
32a60 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39  8cbf2feb962d0a49
32a70 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
32a80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
32a90 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 30 20 2a 20  INCT + - col0 * 
32aa0 2d 20 2b 20 63 6f 6c 32 20 2b 20 63 6f 6c 31 20  - + col2 + col1 
32ab0 2b 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32  + - col2 AS col2
32ac0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
32ad0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 33 39 0d 0a 38  r0..----..739..8
32ae0 38 31 0d 0a 39 35 30 35 0d 0a 0d 0a 71 75 65 72  81..9505....quer
32af0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
32b00 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
32b10 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
32b20 72 30 20 57 48 45 52 45 20 63 6f 6c 32 20 2a 20  r0 WHERE col2 * 
32b30 63 6f 6c 32 20 3e 20 36 35 0d 0a 2d 2d 2d 2d 0d  col2 > 65..----.
32b40 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
32b50 67 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66  g to c4b42765dff
32b60 39 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66  94eaaa46040e537f
32b70 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  b43b7....onlyif 
32b80 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
32b90 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
32ba0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
32bb0 6c 2d 31 31 32 31 0d 0a 53 45 4c 45 43 54 20 2d  l-1121..SELECT -
32bc0 20 53 55 4d 28 20 63 6f 6c 31 20 29 20 2a 20 28   SUM( col1 ) * (
32bd0 20 2d 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54   - MAX( DISTINCT
32be0 20 63 6f 6c 31 20 29 20 29 20 2a 20 2b 20 2b 20   col1 ) ) * + + 
32bf0 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20  MAX( DISTINCT + 
32c00 63 6f 6c 31 20 29 20 2b 20 2b 20 38 37 20 2b 20  col1 ) + + 87 + 
32c10 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f  - COUNT( * ) FRO
32c20 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 36 37  M tab0..----..67
32c30 35 38 36 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  5867....skipif m
32c40 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
32c50 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
32c60 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32  owsort label-112
32c70 31 0d 0a 53 45 4c 45 43 54 20 2d 20 53 55 4d 20  1..SELECT - SUM 
32c80 28 20 63 6f 6c 31 20 29 20 2a 20 28 20 2d 20 4d  ( col1 ) * ( - M
32c90 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f  AX ( DISTINCT co
32ca0 6c 31 20 29 20 29 20 2a 20 2b 20 2b 20 4d 41 58  l1 ) ) * + + MAX
32cb0 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f   ( DISTINCT + co
32cc0 6c 31 20 29 20 2b 20 2b 20 38 37 20 2b 20 2d 20  l1 ) + + 87 + - 
32cd0 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
32ce0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 36 37 35   tab0..----..675
32cf0 38 36 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  867....query I r
32d00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
32d10 20 31 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53   10 FROM tab2 AS
32d20 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e   cor0 CROSS JOIN
32d30 20 74 61 62 32 20 63 6f 72 31 0d 0a 2d 2d 2d 2d   tab2 cor1..----
32d40 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
32d50 6e 67 20 74 6f 20 66 36 38 66 33 33 30 33 32 38  ng to f68f330328
32d60 34 36 65 32 31 65 65 36 62 32 63 36 36 38 66 63  46e21ee6b2c668fc
32d70 31 30 33 35 35 65 0d 0a 0d 0a 6f 6e 6c 79 69 66  10355e....onlyif
32d80 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
32d90 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
32da0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
32db0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 33 0d  sort label-1123.
32dc0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
32dd0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
32de0 49 47 4e 45 44 20 29 20 2a 20 37 38 20 2b 20 2d  IGNED ) * 78 + -
32df0 20 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   1 AS col0 FROM 
32e00 28 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43  ( tab2 AS cor0 C
32e10 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41  ROSS JOIN tab1 A
32e20 53 20 63 6f 72 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  S cor1 )..----..
32e30 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
32e40 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
32e50 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
32e60 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32  owsort label-112
32e70 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  3..SELECT DISTIN
32e80 43 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41  CT CAST ( NULL A
32e90 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 37 38  S INTEGER ) * 78
32ea0 20 2b 20 2d 20 31 20 41 53 20 63 6f 6c 30 20 46   + - 1 AS col0 F
32eb0 52 4f 4d 20 28 20 74 61 62 32 20 41 53 20 63 6f  ROM ( tab2 AS co
32ec0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
32ed0 62 31 20 41 53 20 63 6f 72 31 20 29 0d 0a 2d 2d  b1 AS cor1 )..--
32ee0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  --..NULL....only
32ef0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
32f00 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
32f10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
32f20 61 62 65 6c 2d 31 31 32 34 0d 0a 53 45 4c 45 43  abel-1124..SELEC
32f30 54 20 44 49 53 54 49 4e 43 54 20 33 36 20 2a 20  T DISTINCT 36 * 
32f40 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c  - COUNT( * ) col
32f50 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
32f60 2d 0d 0a 2d 31 30 38 0d 0a 0d 0a 73 6b 69 70 69  -..-108....skipi
32f70 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
32f80 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
32f90 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
32fa0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
32fb0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
32fc0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
32fd0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
32fe0 72 74 20 6c 61 62 65 6c 2d 31 31 32 34 0d 0a 53  rt label-1124..S
32ff0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 33  ELECT DISTINCT 3
33000 36 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  6 * - COUNT ( * 
33010 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  ) col0 FROM tab1
33020 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 38 0d 0a 0d 0a  ..----..-108....
33030 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
33040 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
33050 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
33060 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
33070 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
33080 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
33090 20 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f 4d 20   col2 col2 FROM 
330a0 74 61 62 32 20 57 48 45 52 45 20 2b 20 63 6f 6c  tab2 WHERE + col
330b0 31 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  1 = NULL..----..
330c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
330d0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
330e0 2d 20 36 30 20 2a 20 2d 20 2b 20 63 6f 6c 32 20  - 60 * - + col2 
330f0 2a 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  * - col0 FROM ta
33100 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b0 cor0..----..-
33110 34 32 33 30 30 0d 0a 2d 35 32 32 30 30 0d 0a 2d  42300..-52200..-
33120 35 37 36 31 38 30 0d 0a 0d 0a 71 75 65 72 79 20  576180....query 
33130 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
33140 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20 2b 20 2b  T ALL + col0 + +
33150 20 28 20 39 20 29 20 41 53 20 63 6f 6c 30 20 46   ( 9 ) AS col0 F
33160 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
33170 0d 0a 2d 2d 2d 2d 0d 0a 35 35 0d 0a 37 33 0d 0a  ..----..55..73..
33180 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  84....onlyif mys
33190 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
331a0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
331b0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
331c0 31 32 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  128..SELECT DIST
331d0 49 4e 43 54 20 2d 20 2b 20 36 34 20 2a 20 4d 41  INCT - + 64 * MA
331e0 58 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20 2d 20  X( + col1 ) + - 
331f0 38 33 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  83 FROM tab0 AS 
33200 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 32 36  cor0..----..-526
33210 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
33220 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
33230 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
33240 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 38 0d 0a  ort label-1128..
33250 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
33260 2d 20 2b 20 36 34 20 2a 20 4d 41 58 20 28 20 2b  - + 64 * MAX ( +
33270 20 63 6f 6c 31 20 29 20 2b 20 2d 20 38 33 20 46   col1 ) + - 83 F
33280 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
33290 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 32 36 37 0d 0a 0d  ..----..-5267...
332a0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
332b0 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
332c0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
332d0 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45  HERE NULL NOT BE
332e0 54 57 45 45 4e 20 28 20 2d 20 2b 20 63 6f 6c 31  TWEEN ( - + col1
332f0 20 29 20 41 4e 44 20 2b 20 30 0d 0a 2d 2d 2d 2d   ) AND + 0..----
33300 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
33310 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
33320 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
33330 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
33340 6c 61 62 65 6c 2d 31 31 33 30 0d 0a 53 45 4c 45  label-1130..SELE
33350 43 54 20 2d 20 2b 20 43 41 53 54 28 20 63 6f 6c  CT - + CAST( col
33360 31 20 41 53 20 53 49 47 4e 45 44 20 29 2c 20 63  1 AS SIGNED ), c
33370 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
33380 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
33390 2d 2d 2d 0d 0a 2d 31 34 0d 0a 35 31 0d 0a 2d 34  ---..-14..51..-4
333a0 37 0d 0a 39 31 0d 0a 2d 35 0d 0a 38 35 0d 0a 0d  7..91..-5..85...
333b0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
333c0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
333d0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
333e0 20 6c 61 62 65 6c 2d 31 31 33 30 0d 0a 53 45 4c   label-1130..SEL
333f0 45 43 54 20 2d 20 2b 20 43 41 53 54 20 28 20 63  ECT - + CAST ( c
33400 6f 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol1 AS INTEGER )
33410 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46  , col0 AS col0 F
33420 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
33430 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d 0a 35 31 0d  ..----..-14..51.
33440 0a 2d 34 37 0d 0a 39 31 0d 0a 2d 35 0d 0a 38 35  .-47..91..-5..85
33450 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
33460 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  ort..SELECT - - 
33470 33 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  32 AS col2 FROM 
33480 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
33490 0a 33 32 0d 0a 33 32 0d 0a 33 32 0d 0a 0d 0a 71  .32..32..32....q
334a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
334b0 53 45 4c 45 43 54 20 32 35 20 46 52 4f 4d 20 74  SELECT 25 FROM t
334c0 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
334d0 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  E NULL IS NOT NU
334e0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
334f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
33500 45 43 54 20 41 4c 4c 20 2b 20 2b 20 63 6f 6c 32  ECT ALL + + col2
33510 20 2a 20 2b 20 36 31 20 2b 20 2d 20 63 6f 6c 32   * + 61 + - col2
33520 20 2b 20 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63   + + + col2 AS c
33530 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol2 FROM tab0 co
33540 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38 36 37 0d 0a  r0..----..2867..
33550 36 30 33 39 0d 0a 36 31 30 0d 0a 0d 0a 71 75 65  6039..610....que
33560 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
33570 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
33580 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
33590 6f 72 30 20 57 48 45 52 45 20 2b 20 28 20 2b 20  or0 WHERE + ( + 
335a0 63 6f 6c 32 20 29 20 49 53 20 4e 4f 54 20 4e 55  col2 ) IS NOT NU
335b0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
335c0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
335d0 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
335e0 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
335f0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
33600 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
33610 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
33620 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
33630 65 6c 2d 31 31 33 35 0d 0a 53 45 4c 45 43 54 20  el-1135..SELECT 
33640 41 4c 4c 20 28 20 2d 20 2b 20 37 31 20 29 20 2b  ALL ( - + 71 ) +
33650 20 2d 20 2d 20 33 38 20 2d 20 2d 20 2d 20 34 37   - - 38 - - - 47
33660 20 2b 20 2d 20 33 36 20 2a 20 38 31 20 44 49 56   + - 36 * 81 DIV
33670 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20   - col1 AS col2 
33680 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
33690 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 34 0d 0a 32 38  0..----..-44..28
336a0 33 36 0d 0a 35 38 0d 0a 0d 0a 73 6b 69 70 69 66  36..58....skipif
336b0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
336c0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
336d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
336e0 31 33 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  135..SELECT ALL 
336f0 28 20 2d 20 2b 20 37 31 20 29 20 2b 20 2d 20 2d  ( - + 71 ) + - -
33700 20 33 38 20 2d 20 2d 20 2d 20 34 37 20 2b 20 2d   38 - - - 47 + -
33710 20 33 36 20 2a 20 38 31 20 2f 20 2d 20 63 6f 6c   36 * 81 / - col
33720 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
33730 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
33740 2d 0d 0a 2d 34 34 0d 0a 32 38 33 36 0d 0a 35 38  -..-44..2836..58
33750 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
33760 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
33770 6c 30 20 2d 20 2d 20 36 35 20 46 52 4f 4d 20 74  l0 - - 65 FROM t
33780 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 31 36 0d 0a  ab1..----..116..
33790 31 35 30 0d 0a 31 35 36 0d 0a 0d 0a 6f 6e 6c 79  150..156....only
337a0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
337b0 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74  syntax: aggregat
337c0 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  e syntax: SIGNED
337d0 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
337e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
337f0 31 33 37 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28  137..SELECT MAX(
33800 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41 53 54   DISTINCT - CAST
33810 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
33820 20 29 20 29 20 2d 20 2d 20 2d 20 28 20 2b 20 43   ) ) - - - ( + C
33830 4f 55 4e 54 28 20 2a 20 29 20 29 20 2a 20 2b 20  OUNT( * ) ) * + 
33840 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
33850 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
33860 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
33870 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
33880 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
33890 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
338a0 2d 31 31 33 37 0d 0a 53 45 4c 45 43 54 20 4d 41  -1137..SELECT MA
338b0 58 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 43  X ( DISTINCT - C
338c0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
338d0 54 45 47 45 52 20 29 20 29 20 2d 20 2d 20 2d 20  TEGER ) ) - - - 
338e0 28 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ( + COUNT ( * ) 
338f0 29 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ) * + COUNT ( * 
33900 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
33910 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
33920 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
33930 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
33940 20 35 35 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 46   55 * + + col1 F
33950 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
33960 2d 32 35 38 35 0d 0a 2d 32 37 35 0d 0a 2d 37 37  -2585..-275..-77
33970 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
33980 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
33990 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
339a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
339b0 6c 61 62 65 6c 2d 31 31 33 39 0d 0a 53 45 4c 45  label-1139..SELE
339c0 43 54 20 36 33 20 2b 20 2b 20 2d 20 63 6f 6c 31  CT 63 + + - col1
339d0 20 44 49 56 20 36 34 20 46 52 4f 4d 20 74 61 62   DIV 64 FROM tab
339e0 31 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 36 33 0d  1..----..63..63.
339f0 0a 36 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .63....skipif my
33a00 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
33a10 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
33a20 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33 39  wsort label-1139
33a30 0d 0a 53 45 4c 45 43 54 20 36 33 20 2b 20 2b 20  ..SELECT 63 + + 
33a40 2d 20 63 6f 6c 31 20 2f 20 36 34 20 46 52 4f 4d  - col1 / 64 FROM
33a50 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d   tab1..----..63.
33a60 0a 36 33 0d 0a 36 33 0d 0a 0d 0a 6f 6e 6c 79 69  .63..63....onlyi
33a70 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
33a80 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
33a90 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
33aa0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34 30  wsort label-1140
33ab0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2b  ..SELECT ALL ( +
33ac0 20 37 39 20 29 20 44 49 56 20 2b 20 63 6f 6c 32   79 ) DIV + col2
33ad0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
33ae0 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 33 0d 0a  .----..1..1..3..
33af0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
33b00 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
33b10 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
33b20 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
33b30 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
33b40 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
33b50 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
33b60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
33b70 31 31 34 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1140..SELECT ALL
33b80 20 28 20 2b 20 37 39 20 29 20 2f 20 2b 20 63 6f   ( + 79 ) / + co
33b90 6c 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  l2 col1 FROM tab
33ba0 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 33  2..----..1..1..3
33bb0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
33bc0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
33bd0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
33be0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34  owsort label-114
33bf0 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  1..SELECT DISTIN
33c00 43 54 20 2b 20 4d 41 58 28 20 44 49 53 54 49 4e  CT + MAX( DISTIN
33c10 43 54 20 2d 20 63 6f 6c 30 20 29 20 2d 20 2b 20  CT - col0 ) - + 
33c20 32 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  20 FROM tab0..--
33c30 2d 2d 0d 0a 2d 33 35 0d 0a 0d 0a 73 6b 69 70 69  --..-35....skipi
33c40 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
33c50 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
33c60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
33c70 31 31 34 31 0d 0a 53 45 4c 45 43 54 20 44 49 53  1141..SELECT DIS
33c80 54 49 4e 43 54 20 2b 20 4d 41 58 20 28 20 44 49  TINCT + MAX ( DI
33c90 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 29 20  STINCT - col0 ) 
33ca0 2d 20 2b 20 32 30 20 46 52 4f 4d 20 74 61 62 30  - + 20 FROM tab0
33cb0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35 0d 0a 0d 0a 71  ..----..-35....q
33cc0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
33cd0 0a 53 45 4c 45 43 54 20 2b 20 32 31 20 2b 20 2d  .SELECT + 21 + -
33ce0 20 2d 20 32 31 20 2a 20 2d 20 32 37 20 41 53 20   - 21 * - 27 AS 
33cf0 63 6f 6c 30 2c 20 2b 20 63 6f 6c 31 20 2a 20 2b  col0, + col1 * +
33d00 20 2b 20 34 20 46 52 4f 4d 20 74 61 62 32 0d 0a   + 4 FROM tab2..
33d10 2d 2d 2d 2d 0d 0a 2d 35 34 36 0d 0a 32 30 34 0d  ----..-546..204.
33d20 0a 2d 35 34 36 0d 0a 32 36 38 0d 0a 2d 35 34 36  .-546..268..-546
33d30 0d 0a 33 30 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..308....skipif 
33d40 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
33d50 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
33d60 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
33d70 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
33d80 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
33d90 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
33da0 4e 43 54 20 28 20 63 6f 6c 30 20 29 20 2d 20 2d  NCT ( col0 ) - -
33db0 20 63 6f 6c 31 2c 20 2d 20 63 6f 6c 32 20 63 6f   col1, - col2 co
33dc0 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
33dd0 2d 2d 0d 0a 31 34 31 0d 0a 2d 34 30 0d 0a 31 34  --..141..-40..14
33de0 32 0d 0a 2d 35 38 0d 0a 39 37 0d 0a 2d 32 33 0d  2..-58..97..-23.
33df0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
33e00 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
33e10 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
33e20 20 57 48 45 52 45 20 2b 20 35 20 49 53 20 4e 55   WHERE + 5 IS NU
33e30 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
33e40 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
33e50 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
33e60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
33e70 61 62 65 6c 2d 31 31 34 35 0d 0a 53 45 4c 45 43  abel-1145..SELEC
33e80 54 20 41 4c 4c 20 28 20 2b 20 53 55 4d 28 20 44  T ALL ( + SUM( D
33e90 49 53 54 49 4e 43 54 20 2b 20 39 31 20 29 20 29  ISTINCT + 91 ) )
33ea0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
33eb0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a  r0..----..91....
33ec0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
33ed0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
33ee0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
33ef0 61 62 65 6c 2d 31 31 34 35 0d 0a 53 45 4c 45 43  abel-1145..SELEC
33f00 54 20 41 4c 4c 20 28 20 2b 20 53 55 4d 20 28 20  T ALL ( + SUM ( 
33f10 44 49 53 54 49 4e 43 54 20 2b 20 39 31 20 29 20  DISTINCT + 91 ) 
33f20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
33f30 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d  or0..----..91...
33f40 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
33f50 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
33f60 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
33f70 20 33 36 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   36 = NULL..----
33f80 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
33f90 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
33fa0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
33fb0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
33fc0 61 62 65 6c 2d 31 31 34 37 0d 0a 53 45 4c 45 43  abel-1147..SELEC
33fd0 54 20 41 4c 4c 20 2d 20 2b 20 28 20 2d 20 43 41  T ALL - + ( - CA
33fe0 53 54 28 20 2d 20 33 20 41 53 20 53 49 47 4e 45  ST( - 3 AS SIGNE
33ff0 44 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52  D ) ) AS col1 FR
34000 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
34010 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 33 0d 0a 2d  .----..-3..-3..-
34020 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
34030 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
34040 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
34050 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34 37 0d 0a  ort label-1147..
34060 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 28  SELECT ALL - + (
34070 20 2d 20 43 41 53 54 20 28 20 2d 20 33 20 41 53   - CAST ( - 3 AS
34080 20 49 4e 54 45 47 45 52 20 29 20 29 20 41 53 20   INTEGER ) ) AS 
34090 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
340a0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  S cor0..----..-3
340b0 0d 0a 2d 33 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79  ..-3..-3....only
340c0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
340d0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
340e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
340f0 61 62 65 6c 2d 31 31 34 38 0d 0a 53 45 4c 45 43  abel-1148..SELEC
34100 54 20 28 20 2b 20 4d 49 4e 28 20 2b 20 2b 20 35  T ( + MIN( + + 5
34110 37 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 20  7 ) ) FROM tab2 
34120 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35  AS cor0..----..5
34130 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
34140 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
34150 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
34160 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34 38 0d 0a  ort label-1148..
34170 53 45 4c 45 43 54 20 28 20 2b 20 4d 49 4e 20 28  SELECT ( + MIN (
34180 20 2b 20 2b 20 35 37 20 29 20 29 20 46 52 4f 4d   + + 57 ) ) FROM
34190 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
341a0 2d 2d 2d 0d 0a 35 37 0d 0a 0d 0a 71 75 65 72 79  ---..57....query
341b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
341c0 43 54 20 63 6f 6c 30 20 2a 20 2d 20 2b 20 63 6f  CT col0 * - + co
341d0 6c 31 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  l1 * + col2 FROM
341e0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
341f0 2d 2d 2d 0d 0a 2d 31 39 37 31 32 30 0d 0a 2d 32  ---..-197120..-2
34200 39 31 34 35 30 0d 0a 2d 35 33 39 35 38 0d 0a 0d  91450..-53958...
34210 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
34220 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
34230 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
34240 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35 30 0d  sort label-1150.
34250 0a 53 45 4c 45 43 54 20 2b 20 4d 49 4e 28 20 44  .SELECT + MIN( D
34260 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 29 20 41  ISTINCT col0 ) A
34270 53 20 63 6f 6c 32 2c 20 2b 20 43 4f 55 4e 54 28  S col2, + COUNT(
34280 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41   * ) FROM tab2 A
34290 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36  S cor0..----..46
342a0 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..3....skipif my
342b0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
342c0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
342d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35  owsort label-115
342e0 30 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49 4e 20  0..SELECT + MIN 
342f0 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20  ( DISTINCT col0 
34300 29 20 41 53 20 63 6f 6c 32 2c 20 2b 20 43 4f 55  ) AS col2, + COU
34310 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
34320 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
34330 0d 0a 34 36 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79  ..46..3....query
34340 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
34350 43 54 20 41 4c 4c 20 2d 20 2b 20 35 37 20 41 53  CT ALL - + 57 AS
34360 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
34370 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
34380 35 37 0d 0a 2d 35 37 0d 0a 2d 35 37 0d 0a 0d 0a  57..-57..-57....
34390 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
343a0 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
343b0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
343c0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
343d0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
343e0 65 6c 2d 31 31 35 32 0d 0a 53 45 4c 45 43 54 20  el-1152..SELECT 
343f0 2b 20 2d 20 28 20 2b 20 2b 20 28 20 2b 20 4d 49  + - ( + + ( + MI
34400 4e 28 20 2d 20 43 41 53 54 28 20 63 6f 6c 32 20  N( - CAST( col2 
34410 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 29 20  AS SIGNED ) ) ) 
34420 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
34430 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 0d  or0..----..96...
34440 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
34450 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
34460 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
34470 6c 61 62 65 6c 2d 31 31 35 32 0d 0a 53 45 4c 45  label-1152..SELE
34480 43 54 20 2b 20 2d 20 28 20 2b 20 2b 20 28 20 2b  CT + - ( + + ( +
34490 20 4d 49 4e 20 28 20 2d 20 43 41 53 54 20 28 20   MIN ( - CAST ( 
344a0 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20  col2 AS INTEGER 
344b0 29 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61 62  ) ) ) ) FROM tab
344c0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
344d0 0a 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .96....query II 
344e0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
344f0 2b 20 2b 20 28 20 63 6f 6c 31 20 29 2c 20 63 6f  + + ( col1 ), co
34500 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
34510 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
34520 2d 2d 0d 0a 31 0d 0a 39 39 0d 0a 32 31 0d 0a 31  --..1..99..21..1
34530 30 0d 0a 38 31 0d 0a 34 37 0d 0a 0d 0a 6f 6e 6c  0..81..47....onl
34540 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
34550 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
34560 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
34570 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
34580 35 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  54..SELECT ALL -
34590 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
345a0 57 48 45 52 45 20 4e 4f 54 20 2d 20 2d 20 43 41  WHERE NOT - - CA
345b0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
345c0 45 44 20 29 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ED ) < NULL..---
345d0 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
345e0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
345f0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
34600 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35 34 0d 0a  ort label-1154..
34610 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
34620 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  2 FROM tab0 WHER
34630 45 20 4e 4f 54 20 2d 20 2d 20 43 41 53 54 20 28  E NOT - - CAST (
34640 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
34650 20 29 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   ) < NULL..----.
34660 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
34670 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
34680 49 4e 43 54 20 2b 20 63 6f 6c 30 2c 20 2d 20 33  INCT + col0, - 3
34690 36 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 46 52 4f  6 * - - col0 FRO
346a0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 35 31  M tab1..----..51
346b0 0d 0a 2d 31 38 33 36 0d 0a 38 35 0d 0a 2d 33 30  ..-1836..85..-30
346c0 36 30 0d 0a 39 31 0d 0a 2d 33 32 37 36 0d 0a 0d  60..91..-3276...
346d0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
346e0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
346f0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
34700 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
34710 65 6c 2d 31 31 35 36 0d 0a 53 45 4c 45 43 54 20  el-1156..SELECT 
34720 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 2c 20  + col2 AS col2, 
34730 63 6f 6c 32 20 44 49 56 20 2b 20 2b 20 63 6f 6c  col2 DIV + + col
34740 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
34750 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 30  or0..----..10..0
34760 0d 0a 34 37 0d 0a 33 0d 0a 39 39 0d 0a 31 0d 0a  ..47..3..99..1..
34770 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
34780 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
34790 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
347a0 74 20 6c 61 62 65 6c 2d 31 31 35 36 0d 0a 53 45  t label-1156..SE
347b0 4c 45 43 54 20 2b 20 63 6f 6c 32 20 41 53 20 63  LECT + col2 AS c
347c0 6f 6c 32 2c 20 63 6f 6c 32 20 2f 20 2b 20 2b 20  ol2, col2 / + + 
347d0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
347e0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  S cor0..----..10
347f0 0d 0a 30 0d 0a 34 37 0d 0a 33 0d 0a 39 39 0d 0a  ..0..47..3..99..
34800 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  1....query III r
34810 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
34820 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
34830 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 4e  r0 WHERE NULL IN
34840 20 28 20 32 34 20 2d 20 2b 20 34 35 2c 20 36 37   ( 24 - + 45, 67
34850 2c 20 2b 20 2d 20 33 38 20 2b 20 2b 20 63 6f 6c  , + - 38 + + col
34860 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  1 )..----....onl
34870 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
34880 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
34890 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
348a0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
348b0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
348c0 31 31 35 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1158..SELECT ALL
348d0 20 2b 20 43 4f 55 4e 54 28 20 2d 20 2b 20 63 6f   + COUNT( - + co
348e0 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63  l1 ) FROM tab1 c
348f0 6f 72 30 20 57 48 45 52 45 20 2d 20 43 41 53 54  or0 WHERE - CAST
34900 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
34910 20 29 20 4e 4f 54 20 49 4e 20 28 20 2d 20 32 39   ) NOT IN ( - 29
34920 20 2b 20 2d 20 63 6f 6c 31 2c 20 63 6f 6c 30 2c   + - col1, col0,
34930 20 2d 20 2d 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d   - - col0 )..---
34940 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
34950 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
34960 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
34970 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35  owsort label-115
34980 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  8..SELECT ALL + 
34990 43 4f 55 4e 54 20 28 20 2d 20 2b 20 63 6f 6c 31  COUNT ( - + col1
349a0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72   ) FROM tab1 cor
349b0 30 20 57 48 45 52 45 20 2d 20 43 41 53 54 20 28  0 WHERE - CAST (
349c0 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
349d0 20 29 20 4e 4f 54 20 49 4e 20 28 20 2d 20 32 39   ) NOT IN ( - 29
349e0 20 2b 20 2d 20 63 6f 6c 31 2c 20 63 6f 6c 30 2c   + - col1, col0,
349f0 20 2d 20 2d 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d   - - col0 )..---
34a00 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..0....query I 
34a10 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
34a20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
34a30 2b 20 2b 20 2b 20 35 37 20 41 53 20 63 6f 6c 30  + + + 57 AS col0
34a40 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
34a50 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 0d 0a 2d  r0..----..-18..-
34a60 37 0d 0a 31 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  7..11....onlyif 
34a70 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
34a80 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
34a90 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  : DIV for intege
34aa0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
34ab0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
34ac0 62 65 6c 2d 31 31 36 30 0d 0a 53 45 4c 45 43 54  bel-1160..SELECT
34ad0 20 41 4c 4c 20 2b 20 2d 20 43 41 53 54 28 20 63   ALL + - CAST( c
34ae0 6f 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol1 AS SIGNED ) 
34af0 2b 20 2b 20 39 31 20 2b 20 2d 20 63 6f 6c 30 20  + + 91 + - col0 
34b00 2b 20 2b 20 33 38 20 44 49 56 20 2d 20 63 6f 6c  + + 38 DIV - col
34b10 30 20 2d 20 37 30 20 2a 20 2d 20 2b 20 63 6f 6c  0 - 70 * - + col
34b20 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  2 AS col2 FROM t
34b30 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
34b40 2d 0d 0a 33 32 38 33 0d 0a 36 38 33 0d 0a 36 39  -..3283..683..69
34b50 32 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  23....skipif mys
34b60 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
34b70 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
34b80 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 30 0d  sort label-1160.
34b90 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20  .SELECT ALL + - 
34ba0 43 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20 49  CAST ( col1 AS I
34bb0 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 39 31 20  NTEGER ) + + 91 
34bc0 2b 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 33 38 20  + - col0 + + 38 
34bd0 2f 20 2d 20 63 6f 6c 30 20 2d 20 37 30 20 2a 20  / - col0 - 70 * 
34be0 2d 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32  - + col2 AS col2
34bf0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
34c00 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 32 38 33 0d 0a  r0..----..3283..
34c10 36 38 33 0d 0a 36 39 32 33 0d 0a 0d 0a 6f 6e 6c  683..6923....onl
34c20 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
34c30 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
34c40 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
34c50 6c 61 62 65 6c 2d 31 31 36 31 0d 0a 53 45 4c 45  label-1161..SELE
34c60 43 54 20 44 49 53 54 49 4e 43 54 20 53 55 4d 28  CT DISTINCT SUM(
34c70 20 2d 20 28 20 2d 20 63 6f 6c 32 20 29 20 29 20   - ( - col2 ) ) 
34c80 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
34c90 2d 2d 2d 2d 0d 0a 32 32 33 0d 0a 0d 0a 73 6b 69  ----..223....ski
34ca0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
34cb0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
34cc0 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
34cd0 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
34ce0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
34cf0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
34d00 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
34d10 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 31 0d  sort label-1161.
34d20 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
34d30 20 53 55 4d 20 28 20 2d 20 28 20 2d 20 63 6f 6c   SUM ( - ( - col
34d40 32 20 29 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20  2 ) ) col0 FROM 
34d50 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 32 33 0d  tab1..----..223.
34d60 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
34d70 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
34d80 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
34d90 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
34da0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
34db0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
34dc0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
34dd0 6f 6c 31 20 2a 20 2b 20 32 33 20 2b 20 32 32 20  ol1 * + 23 + 22 
34de0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57  col2 FROM tab2 W
34df0 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32 20 49 53  HERE NOT col2 IS
34e00 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31   NULL..----..-11
34e10 35 31 0d 0a 2d 31 35 31 39 0d 0a 2d 31 37 34 39  51..-1519..-1749
34e20 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
34e30 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
34e40 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
34e50 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
34e60 61 62 65 6c 2d 31 31 36 33 0d 0a 53 45 4c 45 43  abel-1163..SELEC
34e70 54 20 41 4c 4c 20 2d 20 2b 20 63 6f 6c 31 20 2b  T ALL - + col1 +
34e80 20 63 6f 6c 30 20 44 49 56 20 2d 20 63 6f 6c 31   col0 DIV - col1
34e90 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
34ea0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d  r0..----..-51..-
34eb0 36 38 0d 0a 2d 37 37 0d 0a 0d 0a 73 6b 69 70 69  68..-77....skipi
34ec0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
34ed0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
34ee0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
34ef0 31 31 36 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1163..SELECT ALL
34f00 20 2d 20 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c 30   - + col1 + col0
34f10 20 2f 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   / - col1 FROM t
34f20 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
34f30 2d 0d 0a 2d 35 31 0d 0a 2d 36 38 0d 0a 2d 37 37  -..-51..-68..-77
34f40 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
34f50 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
34f60 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
34f70 30 20 57 48 45 52 45 20 28 20 2b 20 63 6f 6c 32  0 WHERE ( + col2
34f80 20 2f 20 2d 20 2b 20 63 6f 6c 32 20 29 20 49 53   / - + col2 ) IS
34f90 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
34fa0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
34fb0 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
34fc0 74 61 62 32 20 63 6f 72 30 20 57 48 45 52 45 20  tab2 cor0 WHERE 
34fd0 4e 55 4c 4c 20 3e 3d 20 63 6f 6c 30 0d 0a 2d 2d  NULL >= col0..--
34fe0 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
34ff0 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
35000 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
35010 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35020 20 6c 61 62 65 6c 2d 31 31 36 36 0d 0a 53 45 4c   label-1166..SEL
35030 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b  ECT DISTINCT + +
35040 20 37 20 44 49 56 20 2d 20 63 6f 6c 31 20 2b 20   7 DIV - col1 + 
35050 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  + col1 FROM tab1
35060 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
35070 31 34 0d 0a 34 0d 0a 34 37 0d 0a 0d 0a 73 6b 69  14..4..47....ski
35080 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
35090 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
350a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
350b0 6c 2d 31 31 36 36 0d 0a 53 45 4c 45 43 54 20 44  l-1166..SELECT D
350c0 49 53 54 49 4e 43 54 20 2b 20 2b 20 37 20 2f 20  ISTINCT + + 7 / 
350d0 2d 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 31 20  - col1 + + col1 
350e0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
350f0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 34 0d 0a  0..----..14..4..
35100 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  47....query I ro
35110 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
35120 4c 20 36 36 20 2d 20 2d 20 32 32 20 46 52 4f 4d  L 66 - - 22 FROM
35130 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 38 38 0d   tab2..----..88.
35140 0a 38 38 0d 0a 38 38 0d 0a 0d 0a 6f 6e 6c 79 69  .88..88....onlyi
35150 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
35160 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
35170 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
35180 62 65 6c 2d 31 31 36 38 0d 0a 53 45 4c 45 43 54  bel-1168..SELECT
35190 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 43 4f   DISTINCT + - CO
351a0 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
351b0 62 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3e  b2 WHERE NULL <>
351c0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
351d0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
351e0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
351f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35200 20 6c 61 62 65 6c 2d 31 31 36 38 0d 0a 53 45 4c   label-1168..SEL
35210 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d  ECT DISTINCT + -
35220 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
35230 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 55 4c  M tab2 WHERE NUL
35240 4c 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  L <> NULL..----.
35250 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .0....query I ro
35260 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
35270 63 6f 6c 32 20 2a 20 2b 20 39 36 20 46 52 4f 4d  col2 * + 96 FROM
35280 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 32 30   tab2..----..220
35290 38 0d 0a 33 38 34 30 0d 0a 35 35 36 38 0d 0a 0d  8..3840..5568...
352a0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
352b0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
352c0 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
352d0 57 48 45 52 45 20 4e 4f 54 20 2b 20 2d 20 63 6f  WHERE NOT + - co
352e0 6c 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 37  l2 NOT BETWEEN 7
352f0 39 20 2b 20 2b 20 2b 20 63 6f 6c 31 20 2d 20 2b  9 + + + col1 - +
35300 20 63 6f 6c 30 20 41 4e 44 20 2b 20 63 6f 6c 32   col0 AND + col2
35310 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
35320 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
35330 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
35340 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
35350 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
35360 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
35370 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  rt..SELECT + col
35380 32 20 2a 20 2d 20 30 20 63 6f 6c 31 20 46 52 4f  2 * - 0 col1 FRO
35390 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab0..----..0.
353a0 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49  .0..0....query I
353b0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
353c0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57  CT * FROM tab0 W
353d0 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2a 20  HERE NOT col0 * 
353e0 2b 20 63 6f 6c 32 20 2d 20 2b 20 2b 20 63 6f 6c  + col2 - + + col
353f0 32 20 2a 20 2b 20 36 39 20 2d 20 2b 20 2b 20 63  2 * + 69 - + + c
35400 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol2 IS NULL..---
35410 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
35420 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35 64  ing to c4b42765d
35430 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35 33  ff94eaaa46040e53
35440 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79  7fb43b7....query
35450 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
35460 43 54 20 2d 20 2d 20 28 20 2d 20 63 6f 6c 32 20  CT - - ( - col2 
35470 29 20 2a 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 2d  ) * + col0 + + -
35480 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20 41   col1 * - col2 A
35490 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
354a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
354b0 2d 34 36 34 0d 0a 31 31 35 0d 0a 35 32 30 0d 0a  -464..115..520..
354c0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
354d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
354e0 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  INCT * FROM tab1
354f0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
35500 33 36 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  36 IS NOT NULL..
35510 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  ----....skipif p
35520 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
35530 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
35540 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
35550 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
35560 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35570 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
35580 54 20 35 37 20 63 6f 6c 30 20 46 52 4f 4d 20 74  T 57 col0 FROM t
35590 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab0 AS cor0 CROS
355a0 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63  S JOIN tab0 AS c
355b0 6f 72 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or1 WHERE NOT NU
355c0 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
355d0 2d 2d 2d 2d 0d 0a 35 37 0d 0a 0d 0a 6f 6e 6c 79  ----..57....only
355e0 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
355f0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
35600 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
35610 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37  owsort label-117
35620 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  6..SELECT DISTIN
35630 43 54 20 2b 20 38 37 20 44 49 56 20 2d 20 63 6f  CT + 87 DIV - co
35640 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
35650 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  cor0..----..-1..
35660 2d 38 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  -8..0....skipif 
35670 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
35680 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
35690 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
356a0 37 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  76..SELECT DISTI
356b0 4e 43 54 20 2b 20 38 37 20 2f 20 2d 20 63 6f 6c  NCT + 87 / - col
356c0 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
356d0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  or0..----..-1..-
356e0 38 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  8..0....query I 
356f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
35700 32 38 20 2a 20 2b 20 28 20 2b 20 2b 20 31 37 20  28 * + ( + + 17 
35710 29 20 2b 20 2d 20 33 20 41 53 20 63 6f 6c 31 20  ) + - 3 AS col1 
35720 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
35730 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
35740 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
35750 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
35760 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
35770 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 2c 20 63   col1 AS col0, c
35780 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
35790 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
357a0 0d 0a 2d 31 34 0d 0a 31 34 0d 0a 2d 34 37 0d 0a  ..-14..14..-47..
357b0 34 37 0d 0a 2d 35 0d 0a 35 0d 0a 0d 0a 71 75 65  47..-5..5....que
357c0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
357d0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
357e0 28 20 2d 20 63 6f 6c 30 20 29 20 2a 20 63 6f 6c  ( - col0 ) * col
357f0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
35800 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 39 36  or0..----..-4896
35810 0d 0a 2d 35 30 31 35 0d 0a 2d 36 31 38 38 0d 0a  ..-5015..-6188..
35820 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
35830 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
35840 63 6f 6c 31 20 2b 20 2b 20 2d 20 31 30 20 41 53  col1 + + - 10 AS
35850 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
35860 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
35870 35 0d 0a 33 37 0d 0a 34 0d 0a 0d 0a 73 6b 69 70  5..37..4....skip
35880 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
35890 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
358a0 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
358b0 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
358c0 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
358d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
358e0 4c 20 32 35 2c 20 2b 20 63 6f 6c 31 20 2d 20 63  L 25, + col1 - c
358f0 6f 6c 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ol0 col2 FROM ta
35900 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
35910 0d 0a 32 35 0d 0a 2d 36 36 0d 0a 32 35 0d 0a 2d  ..25..-66..25..-
35920 39 36 0d 0a 32 35 0d 0a 36 36 0d 0a 0d 0a 6f 6e  96..25..66....on
35930 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
35940 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
35950 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35960 20 6c 61 62 65 6c 2d 31 31 38 32 0d 0a 53 45 4c   label-1182..SEL
35970 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a  ECT COUNT( * ) *
35980 20 28 20 2d 20 34 32 20 29 20 46 52 4f 4d 20 74   ( - 42 ) FROM t
35990 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 36 0d  ab1..----..-126.
359a0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
359b0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
359c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
359d0 74 20 6c 61 62 65 6c 2d 31 31 38 32 0d 0a 53 45  t label-1182..SE
359e0 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29  LECT COUNT ( * )
359f0 20 2a 20 28 20 2d 20 34 32 20 29 20 46 52 4f 4d   * ( - 42 ) FROM
35a00 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32   tab1..----..-12
35a10 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
35a20 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
35a30 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
35a40 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
35a50 38 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  83..SELECT DISTI
35a60 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  NCT + COUNT( * )
35a70 20 2a 20 2d 20 35 31 20 46 52 4f 4d 20 74 61 62   * - 51 FROM tab
35a80 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 33 0d 0a 0d  2..----..-153...
35a90 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
35aa0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
35ab0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
35ac0 6c 61 62 65 6c 2d 31 31 38 33 0d 0a 53 45 4c 45  label-1183..SELE
35ad0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f  CT DISTINCT + CO
35ae0 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 35 31  UNT ( * ) * - 51
35af0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
35b00 0d 0a 2d 31 35 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..-153....onlyif
35b10 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
35b20 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
35b30 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
35b40 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 34 0d  sort label-1184.
35b50 0a 53 45 4c 45 43 54 20 2b 20 39 31 20 44 49 56  .SELECT + 91 DIV
35b60 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
35b70 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 31  1..----..0..1..1
35b80 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
35b90 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
35ba0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
35bb0 72 74 20 6c 61 62 65 6c 2d 31 31 38 34 0d 0a 53  rt label-1184..S
35bc0 45 4c 45 43 54 20 2b 20 39 31 20 2f 20 2b 20 63  ELECT + 91 / + c
35bd0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
35be0 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 31 0d 0a 0d 0a  ---..0..1..1....
35bf0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
35c00 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
35c10 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
35c20 72 74 20 6c 61 62 65 6c 2d 31 31 38 35 0d 0a 53  rt label-1185..S
35c30 45 4c 45 43 54 20 28 20 2b 20 43 4f 55 4e 54 28  ELECT ( + COUNT(
35c40 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30   DISTINCT - col0
35c50 20 29 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74   ) ) col1 FROM t
35c60 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  ab0..----..3....
35c70 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
35c80 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
35c90 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
35ca0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
35cb0 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
35cc0 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
35cd0 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
35ce0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
35cf0 38 35 0d 0a 53 45 4c 45 43 54 20 28 20 2b 20 43  85..SELECT ( + C
35d00 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20  OUNT ( DISTINCT 
35d10 2d 20 63 6f 6c 30 20 29 20 29 20 63 6f 6c 31 20  - col0 ) ) col1 
35d20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
35d30 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .3....query I ro
35d40 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
35d50 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 2b 20  STINCT - col0 + 
35d60 2b 20 35 36 20 2a 20 2b 20 63 6f 6c 32 20 41 53  + 56 * + col2 AS
35d70 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
35d80 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
35d90 32 31 39 0d 0a 33 37 31 37 0d 0a 35 33 32 35 0d  219..3717..5325.
35da0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
35db0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 2b  rt..SELECT + ( +
35dc0 20 63 6f 6c 31 20 29 20 2b 20 2b 20 2b 20 63 6f   col1 ) + + + co
35dd0 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
35de0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
35df0 2d 2d 0d 0a 31 30 32 0d 0a 31 33 34 0d 0a 31 35  --..102..134..15
35e00 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  4....query III r
35e10 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
35e20 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
35e30 72 30 20 57 48 45 52 45 20 35 38 20 2b 20 63 6f  r0 WHERE 58 + co
35e40 6c 30 20 2a 20 2b 20 63 6f 6c 32 20 3c 3e 20 63  l0 * + col2 <> c
35e50 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ol2..----..9 val
35e60 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37  ues hashing to 7
35e70 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38  5c998aa53ac83218
35e80 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d  cbf2feb962d0a49.
35e90 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
35ea0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
35eb0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
35ec0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 39  wsort label-1189
35ed0 0d 0a 53 45 4c 45 43 54 20 31 32 20 2b 20 43 4f  ..SELECT 12 + CO
35ee0 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  UNT( * ) AS col0
35ef0 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
35f00 0d 0a 31 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..15....skipif m
35f10 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
35f20 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
35f30 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38  owsort label-118
35f40 39 0d 0a 53 45 4c 45 43 54 20 31 32 20 2b 20 43  9..SELECT 12 + C
35f50 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
35f60 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
35f70 2d 2d 0d 0a 31 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..15....onlyif
35f80 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
35f90 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
35fa0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
35fb0 65 6c 2d 31 31 39 30 0d 0a 53 45 4c 45 43 54 20  el-1190..SELECT 
35fc0 2b 20 53 55 4d 28 20 63 6f 6c 30 20 29 20 2b 20  + SUM( col0 ) + 
35fd0 33 33 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  33 AS col1 FROM 
35fe0 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 31 38 0d  tab2..----..218.
35ff0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
36000 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
36010 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36020 74 20 6c 61 62 65 6c 2d 31 31 39 30 0d 0a 53 45  t label-1190..SE
36030 4c 45 43 54 20 2b 20 53 55 4d 20 28 20 63 6f 6c  LECT + SUM ( col
36040 30 20 29 20 2b 20 33 33 20 41 53 20 63 6f 6c 31  0 ) + 33 AS col1
36050 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
36060 0d 0a 32 31 38 0d 0a 0d 0a 71 75 65 72 79 20 49  ..218....query I
36070 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
36080 20 41 4c 4c 20 2d 20 28 20 2d 20 63 6f 6c 30 20   ALL - ( - col0 
36090 29 20 2a 20 2d 20 63 6f 6c 30 20 2a 20 2b 20 31  ) * - col0 * + 1
360a0 33 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  3 FROM tab1..---
360b0 2d 0d 0a 2d 31 30 37 36 35 33 0d 0a 2d 33 33 38  -..-107653..-338
360c0 31 33 0d 0a 2d 39 33 39 32 35 0d 0a 0d 0a 6f 6e  13..-93925....on
360d0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
360e0 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
360f0 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
36100 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
36110 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
36120 2d 31 31 39 32 0d 0a 53 45 4c 45 43 54 20 4d 41  -1192..SELECT MA
36130 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20 43 41  X( DISTINCT + CA
36140 53 54 28 20 63 6f 6c 31 20 41 53 20 53 49 47 4e  ST( col1 AS SIGN
36150 45 44 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31  ED ) ) FROM tab1
36160 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28   AS cor0 WHERE (
36170 20 4e 55 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d   NULL ) IS NULL.
36180 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 0d 0a 73 6b 69  .----..47....ski
36190 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
361a0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
361b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
361c0 6c 2d 31 31 39 32 0d 0a 53 45 4c 45 43 54 20 4d  l-1192..SELECT M
361d0 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  AX ( DISTINCT + 
361e0 43 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20 49  CAST ( col1 AS I
361f0 4e 54 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20  NTEGER ) ) FROM 
36200 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
36210 52 45 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e  RE ( NULL ) IS N
36220 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a 0d  ULL..----..47...
36230 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36240 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
36250 54 20 2b 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 39  T + - col1 + + 9
36260 39 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  9 AS col2 FROM t
36270 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
36280 2d 0d 0a 35 32 0d 0a 38 35 0d 0a 39 34 0d 0a 0d  -..52..85..94...
36290 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
362a0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
362b0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
362c0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 39 34 0d 0a  ort label-1194..
362d0 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 38 34 20  SELECT ALL + 84 
362e0 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b  + - COUNT( * ) +
362f0 20 2d 20 2b 20 39 20 2a 20 2b 20 2d 20 53 55 4d   - + 9 * + - SUM
36300 28 20 41 4c 4c 20 36 32 20 29 20 46 52 4f 4d 20  ( ALL 62 ) FROM 
36310 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
36320 2d 2d 0d 0a 31 37 35 35 0d 0a 0d 0a 73 6b 69 70  --..1755....skip
36330 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
36340 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
36350 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
36360 2d 31 31 39 34 0d 0a 53 45 4c 45 43 54 20 41 4c  -1194..SELECT AL
36370 4c 20 2b 20 38 34 20 2b 20 2d 20 43 4f 55 4e 54  L + 84 + - COUNT
36380 20 28 20 2a 20 29 20 2b 20 2d 20 2b 20 39 20 2a   ( * ) + - + 9 *
36390 20 2b 20 2d 20 53 55 4d 20 28 20 41 4c 4c 20 36   + - SUM ( ALL 6
363a0 32 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  2 ) FROM tab1 AS
363b0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 35   cor0..----..175
363c0 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  5....query I row
363d0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  sort..SELECT + +
363e0 20 63 6f 6c 30 20 2d 20 63 6f 6c 31 20 2b 20 2d   col0 - col1 + -
363f0 20 28 20 2d 20 31 31 20 29 20 41 53 20 63 6f 6c   ( - 11 ) AS col
36400 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
36410 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 35 0d 0a  or0..----..-55..
36420 31 30 37 0d 0a 37 37 0d 0a 0d 0a 71 75 65 72 79  107..77....query
36430 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
36440 43 54 20 38 37 20 2b 20 63 6f 6c 31 20 41 53 20  CT 87 + col1 AS 
36450 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
36460 53 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 2b  S cor0 WHERE ( +
36470 20 63 6f 6c 31 20 29 20 3e 20 28 20 4e 55 4c 4c   col1 ) > ( NULL
36480 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79   )..----....only
36490 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
364a0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
364b0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
364c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 39  owsort label-119
364d0 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  7..SELECT DISTIN
364e0 43 54 20 2d 20 28 20 43 41 53 54 28 20 63 6f 6c  CT - ( CAST( col
364f0 32 20 41 53 20 53 49 47 4e 45 44 20 29 20 29 20  2 AS SIGNED ) ) 
36500 2b 20 35 34 20 41 53 20 63 6f 6c 31 20 46 52 4f  + 54 AS col1 FRO
36510 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
36520 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 31 34 0d 0a 33 31  ----..-4..14..31
36530 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
36540 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
36550 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
36560 72 74 20 6c 61 62 65 6c 2d 31 31 39 37 0d 0a 53  rt label-1197..S
36570 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
36580 20 28 20 43 41 53 54 20 28 20 63 6f 6c 32 20 41   ( CAST ( col2 A
36590 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 2b 20  S INTEGER ) ) + 
365a0 35 34 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  54 AS col1 FROM 
365b0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
365c0 2d 2d 0d 0a 2d 34 0d 0a 31 34 0d 0a 33 31 0d 0a  --..-4..14..31..
365d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
365e0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
365f0 43 54 20 2d 20 33 20 2d 20 35 36 20 41 53 20 63  CT - 3 - 56 AS c
36600 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol0 FROM tab0..-
36610 2d 2d 2d 0d 0a 2d 35 39 0d 0a 0d 0a 6f 6e 6c 79  ---..-59....only
36620 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
36630 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
36640 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
36650 61 62 65 6c 2d 31 31 39 39 0d 0a 53 45 4c 45 43  abel-1199..SELEC
36660 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55  T DISTINCT + COU
36670 4e 54 28 20 2a 20 29 20 2a 20 2d 20 2b 20 39 31  NT( * ) * - + 91
36680 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
36690 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 33 0d 0a  b0..----..-273..
366a0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
366b0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
366c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
366d0 20 6c 61 62 65 6c 2d 31 31 39 39 0d 0a 53 45 4c   label-1199..SEL
366e0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
366f0 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 2b  OUNT ( * ) * - +
36700 20 39 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   91 AS col1 FROM
36710 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37   tab0..----..-27
36720 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
36730 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
36740 20 28 20 2b 20 31 20 29 20 46 52 4f 4d 20 74 61   ( + 1 ) FROM ta
36750 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a  b2..----..1..1..
36760 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
36770 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
36780 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
36790 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
367a0 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  NULL IS NULL..--
367b0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
367c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
367d0 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
367e0 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab0 WHERE NOT N
367f0 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ULL NOT BETWEEN 
36800 2b 20 39 30 20 2b 20 2d 20 2b 20 37 30 20 2b 20  + 90 + - + 70 + 
36810 28 20 2b 20 63 6f 6c 31 20 29 20 2a 20 37 20 2a  ( + col1 ) * 7 *
36820 20 2d 20 63 6f 6c 32 20 41 4e 44 20 4e 55 4c 4c   - col2 AND NULL
36830 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
36840 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
36850 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20  CT DISTINCT - + 
36860 35 38 2c 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f  58, - col0 AS co
36870 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
36880 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 38 0d  cor0..----..-58.
36890 0a 2d 31 35 0d 0a 2d 35 38 0d 0a 2d 38 37 0d 0a  .-15..-58..-87..
368a0 2d 35 38 0d 0a 2d 39 37 0d 0a 0d 0a 6f 6e 6c 79  -58..-97....only
368b0 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
368c0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
368d0 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
368e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 30  owsort label-120
368f0 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  4..SELECT ALL - 
36900 35 31 20 2a 20 2b 20 63 6f 6c 31 20 44 49 56 20  51 * + col1 DIV 
36910 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  - col1 FROM tab0
36920 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
36930 35 31 0d 0a 35 31 0d 0a 35 31 0d 0a 0d 0a 73 6b  51..51..51....sk
36940 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
36950 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
36960 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
36970 65 6c 2d 31 32 30 34 0d 0a 53 45 4c 45 43 54 20  el-1204..SELECT 
36980 41 4c 4c 20 2d 20 35 31 20 2a 20 2b 20 63 6f 6c  ALL - 51 * + col
36990 31 20 2f 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  1 / - col1 FROM 
369a0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
369b0 2d 2d 0d 0a 35 31 0d 0a 35 31 0d 0a 35 31 0d 0a  --..51..51..51..
369c0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
369d0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
369e0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
369f0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 30 35 0d  sort label-1205.
36a00 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
36a10 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   + COUNT( * ) * 
36a20 34 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  41 AS col2 FROM 
36a30 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
36a40 2d 2d 0d 0a 31 32 33 0d 0a 0d 0a 73 6b 69 70 69  --..123....skipi
36a50 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
36a60 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
36a70 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
36a80 31 32 30 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  1205..SELECT DIS
36a90 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  TINCT + COUNT ( 
36aa0 2a 20 29 20 2a 20 34 31 20 41 53 20 63 6f 6c 32  * ) * 41 AS col2
36ab0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
36ac0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 33 0d 0a 0d  r0..----..123...
36ad0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
36ae0 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 37 38 20  ..SELECT + + 78 
36af0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
36b00 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 28 20  0 WHERE NOT ( ( 
36b10 4e 4f 54 20 33 38 20 2f 20 2d 20 2b 20 63 6f 6c  NOT 38 / - + col
36b20 31 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 29 20  1 IS NOT NULL ) 
36b30 29 0d 0a 2d 2d 2d 2d 0d 0a 37 38 0d 0a 37 38 0d  )..----..78..78.
36b40 0a 37 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .78....onlyif my
36b50 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
36b60 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
36b70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36b80 74 20 6c 61 62 65 6c 2d 31 32 30 37 0d 0a 53 45  t label-1207..SE
36b90 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 2b 20 34  LECT ALL + ( + 4
36ba0 20 29 20 44 49 56 20 2d 20 2b 20 28 20 63 6f 6c   ) DIV - + ( col
36bb0 32 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  2 ) FROM tab1..-
36bc0 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
36bd0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
36be0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
36bf0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
36c00 61 62 65 6c 2d 31 32 30 37 0d 0a 53 45 4c 45 43  abel-1207..SELEC
36c10 54 20 41 4c 4c 20 2b 20 28 20 2b 20 34 20 29 20  T ALL + ( + 4 ) 
36c20 2f 20 2d 20 2b 20 28 20 63 6f 6c 32 20 29 20 46  / - + ( col2 ) F
36c30 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
36c40 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79  0..0..0....query
36c50 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
36c60 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
36c70 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
36c80 49 4e 20 28 20 2b 20 2d 20 63 6f 6c 32 20 29 0d  IN ( + - col2 ).
36c90 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
36ca0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
36cb0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
36cc0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
36cd0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
36ce0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36cf0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 37 33 20 63  t..SELECT - 73 c
36d00 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  ol2 FROM tab0 co
36d10 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
36d20 62 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b1 AS cor1..----
36d30 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
36d40 6e 67 20 74 6f 20 38 34 61 62 39 64 62 35 34 36  ng to 84ab9db546
36d50 38 62 34 61 31 37 38 31 62 64 38 64 35 63 38 65  8b4a1781bd8d5c8e
36d60 30 65 37 37 66 63 0d 0a 0d 0a 6f 6e 6c 79 69 66  0e77fc....onlyif
36d70 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
36d80 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
36d90 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
36da0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 30 0d  sort label-1210.
36db0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20  .SELECT ALL + - 
36dc0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
36dd0 47 4e 45 44 20 29 20 2b 20 2b 20 63 6f 6c 30 20  GNED ) + + col0 
36de0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
36df0 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
36e00 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
36e10 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
36e20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
36e30 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
36e40 6c 2d 31 32 31 30 0d 0a 53 45 4c 45 43 54 20 41  l-1210..SELECT A
36e50 4c 4c 20 2b 20 2d 20 43 41 53 54 20 28 20 4e 55  LL + - CAST ( NU
36e60 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
36e70 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  + + col0 FROM ta
36e80 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
36e90 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
36ea0 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  LL....query I ro
36eb0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
36ec0 4c 20 39 39 20 2b 20 2d 20 34 37 20 2a 20 2b 20  L 99 + - 47 * + 
36ed0 37 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  71 FROM tab1 AS 
36ee0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 32 33  cor0..----..-323
36ef0 38 0d 0a 2d 33 32 33 38 0d 0a 2d 33 32 33 38 0d  8..-3238..-3238.
36f00 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
36f10 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
36f20 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
36f30 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
36f40 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
36f50 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
36f60 45 43 54 20 2b 20 31 20 2b 20 63 6f 6c 30 20 63  ECT + 1 + col0 c
36f70 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol2 FROM tab1..-
36f80 2d 2d 2d 0d 0a 35 32 0d 0a 38 36 0d 0a 39 32 0d  ---..52..86..92.
36f90 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
36fa0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
36fb0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
36fc0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 33  wsort label-1213
36fd0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
36fe0 54 20 34 30 20 2a 20 2b 20 2d 20 4d 41 58 28 20  T 40 * + - MAX( 
36ff0 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20  DISTINCT + col2 
37000 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  ) col1 FROM tab0
37010 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 39 36 30 0d 0a 0d  ..----..-3960...
37020 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
37030 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
37040 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
37050 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
37060 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
37070 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
37080 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
37090 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
370a0 32 31 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  213..SELECT DIST
370b0 49 4e 43 54 20 34 30 20 2a 20 2b 20 2d 20 4d 41  INCT 40 * + - MA
370c0 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 63  X ( DISTINCT + c
370d0 6f 6c 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20  ol2 ) col1 FROM 
370e0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 39 36  tab0..----..-396
370f0 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
37100 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
37110 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
37120 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
37130 74 20 6c 61 62 65 6c 2d 31 32 31 34 0d 0a 53 45  t label-1214..SE
37140 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  LECT * FROM tab2
37150 20 57 48 45 52 45 20 2b 20 2d 20 63 6f 6c 30 20   WHERE + - col0 
37160 3c 3d 20 63 6f 6c 31 20 2a 20 2d 20 43 41 53 54  <= col1 * - CAST
37170 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
37180 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70   )..----....skip
37190 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
371a0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
371b0 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
371c0 65 6c 2d 31 32 31 34 0d 0a 53 45 4c 45 43 54 20  el-1214..SELECT 
371d0 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
371e0 45 20 2b 20 2d 20 63 6f 6c 30 20 3c 3d 20 63 6f  E + - col0 <= co
371f0 6c 31 20 2a 20 2d 20 43 41 53 54 20 28 20 4e 55  l1 * - CAST ( NU
37200 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 0d  LL AS INTEGER ).
37210 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
37220 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
37230 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 32   DISTINCT + col2
37240 20 2a 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74   * + col0 FROM t
37250 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab0 WHERE NOT ( 
37260 4e 4f 54 20 2d 20 63 6f 6c 31 20 49 53 20 4e 4f  NOT - col1 IS NO
37270 54 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a  T NULL )..----..
37280 37 30 35 0d 0a 38 37 30 0d 0a 39 36 30 33 0d 0a  705..870..9603..
37290 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
372a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
372b0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 28 20  OM tab2 WHERE ( 
372c0 28 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 2b 20 63  ( - col2 * + + c
372d0 6f 6c 30 20 29 20 3e 3d 20 2d 20 63 6f 6c 30 20  ol0 ) >= - col0 
372e0 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  )..----....query
372f0 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
37300 45 43 54 20 41 4c 4c 20 2b 20 2d 20 36 33 20 2a  ECT ALL + - 63 *
37310 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 2c   + col2 AS col0,
37320 20 63 6f 6c 30 20 2b 20 2b 20 35 33 20 46 52 4f   col0 + + 53 FRO
37330 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
37340 20 2d 20 34 39 20 2b 20 2b 20 2b 20 63 6f 6c 32   - 49 + + + col2
37350 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   > NULL..----...
37360 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
37370 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20  ..SELECT + col0 
37380 2a 20 2d 20 2b 20 63 6f 6c 31 20 2b 20 2d 20 63  * - + col1 + - c
37390 6f 6c 32 20 2b 20 2d 20 2b 20 63 6f 6c 32 20 46  ol2 + - + col2 F
373a0 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
373b0 2d 32 33 39 32 0d 0a 2d 35 30 30 38 0d 0a 2d 35  -2392..-5008..-5
373c0 31 34 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  141....onlyif my
373d0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
373e0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
373f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
37400 31 32 31 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  1219..SELECT DIS
37410 54 49 4e 43 54 20 36 20 2b 20 2d 20 2b 20 43 4f  TINCT 6 + - + CO
37420 55 4e 54 28 20 2a 20 29 20 2b 20 2d 20 32 20 63  UNT( * ) + - 2 c
37430 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
37440 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66  ---..1....skipif
37450 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
37460 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
37470 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
37480 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
37490 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
374a0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
374b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
374c0 74 20 6c 61 62 65 6c 2d 31 32 31 39 0d 0a 53 45  t label-1219..SE
374d0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 36 20  LECT DISTINCT 6 
374e0 2b 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  + - + COUNT ( * 
374f0 29 20 2b 20 2d 20 32 20 63 6f 6c 32 20 46 52 4f  ) + - 2 col2 FRO
37500 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  M tab0..----..1.
37510 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
37520 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
37530 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
37540 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
37550 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
37560 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
37570 4c 45 43 54 20 2b 20 36 31 2c 20 37 33 20 2d 20  LECT + 61, 73 - 
37580 63 6f 6c 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74  col1 col2 FROM t
37590 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
375a0 2d 0d 0a 36 31 0d 0a 2d 34 0d 0a 36 31 0d 0a 32  -..61..-4..61..2
375b0 32 0d 0a 36 31 0d 0a 36 0d 0a 0d 0a 71 75 65 72  2..61..6....quer
375c0 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
375d0 4c 45 43 54 20 2d 20 63 6f 6c 30 20 41 53 20 63  LECT - col0 AS c
375e0 6f 6c 32 2c 20 2b 20 63 6f 6c 31 20 2a 20 31 37  ol2, + col1 * 17
375f0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
37600 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
37610 0d 0a 2d 34 36 0d 0a 38 36 37 0d 0a 2d 36 34 0d  ..-46..867..-64.
37620 0a 31 33 30 39 0d 0a 2d 37 35 0d 0a 31 31 33 39  .1309..-75..1139
37630 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
37640 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
37650 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
37660 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32  owsort label-122
37670 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  2..SELECT ALL + 
37680 2b 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20  + MAX( DISTINCT 
37690 63 6f 6c 30 20 29 20 2b 20 2b 20 36 35 20 2d 20  col0 ) + + 65 - 
376a0 2d 20 39 38 20 41 53 20 63 6f 6c 32 20 46 52 4f  - 98 AS col2 FRO
376b0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
376c0 2d 2d 2d 2d 0d 0a 32 36 30 0d 0a 0d 0a 73 6b 69  ----..260....ski
376d0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
376e0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
376f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
37700 6c 2d 31 32 32 32 0d 0a 53 45 4c 45 43 54 20 41  l-1222..SELECT A
37710 4c 4c 20 2b 20 2b 20 4d 41 58 20 28 20 44 49 53  LL + + MAX ( DIS
37720 54 49 4e 43 54 20 63 6f 6c 30 20 29 20 2b 20 2b  TINCT col0 ) + +
37730 20 36 35 20 2d 20 2d 20 39 38 20 41 53 20 63 6f   65 - - 98 AS co
37740 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
37750 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 36 30 0d  cor0..----..260.
37760 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
37770 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
37780 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
37790 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20   WHERE ( NULL ) 
377a0 4e 4f 54 20 49 4e 20 28 20 2b 20 63 6f 6c 32 20  NOT IN ( + col2 
377b0 2b 20 2b 20 38 34 2c 20 63 6f 6c 32 20 29 0d 0a  + + 84, col2 )..
377c0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
377d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
377e0 2d 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c  - + col0 + - col
377f0 31 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  1 + - col1 FROM 
37800 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
37810 2d 2d 0d 0a 2d 31 32 39 0d 0a 2d 31 37 37 0d 0a  --..-129..-177..
37820 2d 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -99....onlyif my
37830 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
37840 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
37850 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
37860 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
37870 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32 35 0d 0a  ort label-1225..
37880 53 45 4c 45 43 54 20 2b 20 38 30 20 44 49 56 20  SELECT + 80 DIV 
37890 2d 20 53 55 4d 28 20 41 4c 4c 20 2b 20 63 6f 6c  - SUM( ALL + col
378a0 30 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  0 ) AS col0 FROM
378b0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
378c0 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66  ---..0....skipif
378d0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
378e0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
378f0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
37900 32 32 35 0d 0a 53 45 4c 45 43 54 20 2b 20 38 30  225..SELECT + 80
37910 20 2f 20 2d 20 53 55 4d 20 28 20 41 4c 4c 20 2b   / - SUM ( ALL +
37920 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20   col0 ) AS col0 
37930 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
37940 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e  0..----..0....on
37950 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
37960 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
37970 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
37980 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
37990 2d 31 32 32 36 0d 0a 53 45 4c 45 43 54 20 2a 20  -1226..SELECT * 
379a0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
379b0 30 20 57 48 45 52 45 20 43 41 53 54 28 20 4e 55  0 WHERE CAST( NU
379c0 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b  LL AS SIGNED ) +
379d0 20 2b 20 31 34 20 2d 20 2d 20 63 6f 6c 31 20 3e   + 14 - - col1 >
379e0 20 2d 20 2d 20 28 20 2d 20 63 6f 6c 32 20 29 20   - - ( - col2 ) 
379f0 2a 20 63 6f 6c 32 20 2f 20 2d 20 63 6f 6c 32 20  * col2 / - col2 
37a00 2a 20 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  * + col0..----..
37a10 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
37a20 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
37a30 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
37a40 72 74 20 6c 61 62 65 6c 2d 31 32 32 36 0d 0a 53  rt label-1226..S
37a50 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
37a60 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
37a70 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
37a80 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 31 34 20  NTEGER ) + + 14 
37a90 2d 20 2d 20 63 6f 6c 31 20 3e 20 2d 20 2d 20 28  - - col1 > - - (
37aa0 20 2d 20 63 6f 6c 32 20 29 20 2a 20 63 6f 6c 32   - col2 ) * col2
37ab0 20 2f 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 63 6f   / - col2 * + co
37ac0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  l0..----....quer
37ad0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
37ae0 45 43 54 20 44 49 53 54 49 4e 43 54 20 31 38 20  ECT DISTINCT 18 
37af0 2a 20 2b 20 33 32 20 46 52 4f 4d 20 74 61 62 30  * + 32 FROM tab0
37b00 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b   AS cor0 WHERE +
37b10 20 63 6f 6c 30 20 2d 20 2d 20 33 37 20 2b 20 34   col0 - - 37 + 4
37b20 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  2 IS NOT NULL..-
37b30 2d 2d 2d 0d 0a 35 37 36 0d 0a 0d 0a 6f 6e 6c 79  ---..576....only
37b40 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
37b50 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
37b60 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
37b70 6c 61 62 65 6c 2d 31 32 32 38 0d 0a 53 45 4c 45  label-1228..SELE
37b80 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f  CT COUNT( * ) co
37b90 6c 32 2c 20 2b 20 35 37 20 2d 20 2b 20 37 36 20  l2, + 57 - + 76 
37ba0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
37bb0 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
37bc0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
37bd0 2d 2d 0d 0a 33 0d 0a 2d 31 39 0d 0a 0d 0a 73 6b  --..3..-19....sk
37be0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
37bf0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
37c00 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
37c10 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
37c20 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
37c30 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
37c40 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
37c50 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32  owsort label-122
37c60 38 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  8..SELECT COUNT 
37c70 28 20 2a 20 29 20 63 6f 6c 32 2c 20 2b 20 35 37  ( * ) col2, + 57
37c80 20 2d 20 2b 20 37 36 20 46 52 4f 4d 20 74 61 62   - + 76 FROM tab
37c90 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
37ca0 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20  NOT NULL IS NOT 
37cb0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d  NULL..----..3..-
37cc0 31 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  19....query I ro
37cd0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20  wsort..SELECT ( 
37ce0 2b 20 2d 20 28 20 2d 20 2d 20 31 37 20 29 20 29  + - ( - - 17 ) )
37cf0 20 2a 20 2b 20 36 34 20 46 52 4f 4d 20 74 61 62   * + 64 FROM tab
37d00 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 38 38 0d 0a  2..----..-1088..
37d10 2d 31 30 38 38 0d 0a 2d 31 30 38 38 0d 0a 0d 0a  -1088..-1088....
37d20 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
37d30 0a 53 45 4c 45 43 54 20 39 39 20 2a 20 2d 20 37  .SELECT 99 * - 7
37d40 34 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  4 AS col0 FROM t
37d50 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 33 32 36  ab1..----..-7326
37d60 0d 0a 2d 37 33 32 36 0d 0a 2d 37 33 32 36 0d 0a  ..-7326..-7326..
37d70 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
37d80 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
37d90 31 20 41 53 20 63 6f 6c 32 2c 20 36 39 20 46 52  1 AS col2, 69 FR
37da0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
37db0 35 31 0d 0a 36 39 0d 0a 2d 36 37 0d 0a 36 39 0d  51..69..-67..69.
37dc0 0a 2d 37 37 0d 0a 36 39 0d 0a 0d 0a 71 75 65 72  .-77..69....quer
37dd0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
37de0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
37df0 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
37e00 4e 4f 54 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 2d  NOT + col0 * - -
37e10 20 63 6f 6c 32 20 2b 20 2d 20 2d 20 63 6f 6c 30   col2 + - - col0
37e20 20 3c 3d 20 34 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20   <= 41..----..9 
37e30 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
37e40 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33  o 75c998aa53ac83
37e50 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61  218cbf2feb962d0a
37e60 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  49....onlyif mys
37e70 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
37e80 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
37e90 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
37ea0 32 33 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  233..SELECT ALL 
37eb0 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2d  + COUNT( * ) + -
37ec0 20 35 39 20 2a 20 2d 20 34 30 20 2a 20 2d 20 36   59 * - 40 * - 6
37ed0 37 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  7 FROM tab2 AS c
37ee0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 38 31  or0..----..-1581
37ef0 31 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  17....skipif mys
37f00 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
37f10 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
37f20 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 33 33 0d  sort label-1233.
37f30 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f  .SELECT ALL + CO
37f40 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20 35 39  UNT ( * ) + - 59
37f50 20 2a 20 2d 20 34 30 20 2a 20 2d 20 36 37 20 46   * - 40 * - 67 F
37f60 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
37f70 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 38 31 31 37 0d  ..----..-158117.
37f80 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
37f90 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c  rt..SELECT - col
37fa0 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
37fb0 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 30  or0 WHERE + col0
37fc0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
37fd0 2d 2d 0d 0a 2d 31 34 0d 0a 2d 34 37 0d 0a 2d 35  --..-14..-47..-5
37fe0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
37ff0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
38000 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
38010 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
38020 20 4e 4f 54 20 63 6f 6c 31 20 2a 20 63 6f 6c 32   NOT col1 * col2
38030 20 2a 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d   * col0 IS NULL.
38040 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
38050 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39  hashing to 75c99
38060 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32  8aa53ac83218cbf2
38070 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71  feb962d0a49....q
38080 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
38090 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
380a0 30 20 2b 20 28 20 2b 20 2d 20 63 6f 6c 30 20 29  0 + ( + - col0 )
380b0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
380c0 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  b2 cor0..----..0
380d0 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20  ..0..0....query 
380e0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
380f0 54 20 2b 20 31 20 46 52 4f 4d 20 74 61 62 32 20  T + 1 FROM tab2 
38100 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f  WHERE NULL IS NO
38110 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
38120 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
38130 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
38140 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
38150 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
38160 2d 31 32 33 38 0d 0a 53 45 4c 45 43 54 20 44 49  -1238..SELECT DI
38170 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28 20 33  STINCT + CAST( 3
38180 35 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20  5 AS SIGNED ) + 
38190 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  - col1 FROM tab2
381a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a 2d 33 32  ..----..-16..-32
381b0 0d 0a 2d 34 32 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-42....skipif 
381c0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
381d0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
381e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
381f0 33 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  38..SELECT DISTI
38200 4e 43 54 20 2b 20 43 41 53 54 20 28 20 33 35 20  NCT + CAST ( 35 
38210 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d  AS INTEGER ) + -
38220 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
38230 0a 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a 2d 33 32 0d  .----..-16..-32.
38240 0a 2d 34 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20  .-42....query I 
38250 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
38260 2d 20 28 20 28 20 2b 20 2b 20 36 31 20 29 20 29  - ( ( + + 61 ) )
38270 20 2a 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   * col1 FROM tab
38280 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 38 31 0d 0a  0..----..-1281..
38290 2d 34 39 34 31 0d 0a 2d 36 31 0d 0a 0d 0a 71 75  -4941..-61....qu
382a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
382b0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2d 20 63 6f  ELECT ALL + - co
382c0 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
382d0 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2b  tab1 WHERE NOT +
382e0 20 2b 20 31 31 20 49 53 20 4e 4f 54 20 4e 55 4c   + 11 IS NOT NUL
382f0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
38300 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
38310 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
38320 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
38330 62 65 6c 2d 31 32 34 31 0d 0a 53 45 4c 45 43 54  bel-1241..SELECT
38340 20 2b 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54   + MIN( DISTINCT
38350 20 2b 20 39 39 20 29 20 41 53 20 63 6f 6c 32 20   + 99 ) AS col2 
38360 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
38370 0a 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .99....skipif my
38380 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
38390 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
383a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 34 31  wsort label-1241
383b0 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49 4e 20 28  ..SELECT + MIN (
383c0 20 44 49 53 54 49 4e 43 54 20 2b 20 39 39 20 29   DISTINCT + 99 )
383d0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
383e0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a 0d 0a  b0..----..99....
383f0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
38400 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
38410 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
38420 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
38430 6c 2d 31 32 34 32 0d 0a 53 45 4c 45 43 54 20 2b  l-1242..SELECT +
38440 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32 20 2a   col0 * + col2 *
38450 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   + - CAST( NULL 
38460 41 53 20 53 49 47 4e 45 44 20 29 2c 20 2d 20 63  AS SIGNED ), - c
38470 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol2 AS col0 FROM
38480 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab1..----..NUL
38490 4c 0d 0a 2d 35 39 0d 0a 4e 55 4c 4c 0d 0a 2d 36  L..-59..NULL..-6
384a0 38 0d 0a 4e 55 4c 4c 0d 0a 2d 39 36 0d 0a 0d 0a  8..NULL..-96....
384b0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
384c0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
384d0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
384e0 6c 61 62 65 6c 2d 31 32 34 32 0d 0a 53 45 4c 45  label-1242..SELE
384f0 43 54 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 63 6f  CT + col0 * + co
38500 6c 32 20 2a 20 2b 20 2d 20 43 41 53 54 20 28 20  l2 * + - CAST ( 
38510 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
38520 29 2c 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c  ), - col2 AS col
38530 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
38540 2d 0d 0a 4e 55 4c 4c 0d 0a 2d 35 39 0d 0a 4e 55  -..NULL..-59..NU
38550 4c 4c 0d 0a 2d 36 38 0d 0a 4e 55 4c 4c 0d 0a 2d  LL..-68..NULL..-
38560 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  96....query III 
38570 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
38580 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
38590 6f 72 30 20 57 48 45 52 45 20 2d 20 39 37 20 3c  or0 WHERE - 97 <
385a0 3e 20 28 20 2d 20 31 36 20 2a 20 2d 20 31 38 20  > ( - 16 * - 18 
385b0 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  )..----..9 value
385c0 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62  s hashing to c4b
385d0 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34 36  42765dff94eaaa46
385e0 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d  040e537fb43b7...
385f0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
38600 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
38610 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
38620 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
38630 6c 2d 31 32 34 34 0d 0a 53 45 4c 45 43 54 20 44  l-1244..SELECT D
38640 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 2b 20 2b  ISTINCT col0 + +
38650 20 2d 20 63 6f 6c 30 20 2d 20 43 41 53 54 28 20   - col0 - CAST( 
38660 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
38670 20 2a 20 2d 20 43 41 53 54 28 20 2d 20 63 6f 6c   * - CAST( - col
38680 31 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  1 AS SIGNED ) * 
38690 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  - col2 FROM tab1
386a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
386b0 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
386c0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
386d0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
386e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 34  owsort label-124
386f0 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
38700 43 54 20 63 6f 6c 30 20 2b 20 2b 20 2d 20 63 6f  CT col0 + + - co
38710 6c 30 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c  l0 - CAST ( NULL
38720 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20   AS INTEGER ) * 
38730 2d 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 31 20  - CAST ( - col1 
38740 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d  AS INTEGER ) * -
38750 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
38760 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
38770 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
38780 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
38790 4c 4c 20 2b 20 33 35 20 41 53 20 63 6f 6c 31 20  LL + 35 AS col1 
387a0 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
387b0 2d 2d 2d 2d 0d 0a 33 35 0d 0a 33 35 0d 0a 33 35  ----..35..35..35
387c0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
387d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
387e0 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
387f0 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
38800 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 3e 20 4e 55   NOT + col0 > NU
38810 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
38820 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
38830 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
38840 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
38850 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 34  owsort label-124
38860 37 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30  7..SELECT + col0
38870 20 44 49 56 20 2d 20 63 6f 6c 31 20 63 6f 6c 30   DIV - col1 col0
38880 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
38890 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 2d 39  r0..----..-4..-9
388a0 37 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  7..0....skipif m
388b0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
388c0 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
388d0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
388e0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
388f0 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
38900 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
38910 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
38920 6c 61 62 65 6c 2d 31 32 34 37 0d 0a 53 45 4c 45  label-1247..SELE
38930 43 54 20 2b 20 63 6f 6c 30 20 2f 20 2d 20 63 6f  CT + col0 / - co
38940 6c 31 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  l1 col0 FROM tab
38950 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
38960 0a 2d 34 0d 0a 2d 39 37 0d 0a 30 0d 0a 0d 0a 71  .-4..-97..0....q
38970 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
38980 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
38990 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48  T * FROM tab2 WH
389a0 45 52 45 20 2b 20 2d 20 37 37 20 49 53 20 4e 4f  ERE + - 77 IS NO
389b0 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  T NULL..----..9 
389c0 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
389d0 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33  o 75c998aa53ac83
389e0 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61  218cbf2feb962d0a
389f0 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  49....query I ro
38a00 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
38a10 4c 20 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  L 5 AS col2 FROM
38a20 20 74 61 62 32 2c 20 74 61 62 31 20 41 53 20 63   tab2, tab1 AS c
38a30 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  or0..----..9 val
38a40 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 36  ues hashing to 6
38a50 30 33 35 36 32 38 36 39 34 62 64 65 61 33 36 66  035628694bdea36f
38a60 35 38 34 66 33 36 34 39 30 38 38 35 35 31 64 0d  584f3649088551d.
38a70 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
38a80 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 35 39 20  rt..SELECT + 59 
38a90 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
38aa0 4e 4f 54 20 2d 20 63 6f 6c 31 20 3e 3d 20 2d 20  NOT - col1 >= - 
38ab0 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39  - col0..----..59
38ac0 0d 0a 35 39 0d 0a 35 39 0d 0a 0d 0a 6f 6e 6c 79  ..59..59....only
38ad0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
38ae0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
38af0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
38b00 61 62 65 6c 2d 31 32 35 31 0d 0a 53 45 4c 45 43  abel-1251..SELEC
38b10 54 20 44 49 53 54 49 4e 43 54 20 53 55 4d 28 20  T DISTINCT SUM( 
38b20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
38b30 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
38b40 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 0d  ab2..----..-121.
38b50 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
38b60 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
38b70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
38b80 74 20 6c 61 62 65 6c 2d 31 32 35 31 0d 0a 53 45  t label-1251..SE
38b90 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 53 55  LECT DISTINCT SU
38ba0 4d 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63  M ( DISTINCT - c
38bb0 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ol2 ) AS col2 FR
38bc0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
38bd0 31 32 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  121....query I r
38be0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
38bf0 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
38c00 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 37 36  2 WHERE NOT - 76
38c10 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c   NOT BETWEEN NUL
38c20 4c 20 41 4e