sqllogictest
Hex Artifact Content
Not logged in

Artifact 33d6e5922d056af706a8b511129d2f961c1b9357:


0000: 68 61 73 68 2d 74 68 72 65 73 68 6f 6c 64 20 38  hash-threshold 8
0010: 0d 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b  ....statement ok
0020: 0d 0a 43 52 45 41 54 45 20 54 41 42 4c 45 20 74  ..CREATE TABLE t
0030: 61 62 30 28 63 6f 6c 30 20 49 4e 54 45 47 45 52  ab0(col0 INTEGER
0040: 2c 20 63 6f 6c 31 20 49 4e 54 45 47 45 52 2c 20  , col1 INTEGER, 
0050: 63 6f 6c 32 20 49 4e 54 45 47 45 52 29 0d 0a 0d  col2 INTEGER)...
0060: 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 43  .statement ok..C
0070: 52 45 41 54 45 20 54 41 42 4c 45 20 74 61 62 31  REATE TABLE tab1
0080: 28 63 6f 6c 30 20 49 4e 54 45 47 45 52 2c 20 63  (col0 INTEGER, c
0090: 6f 6c 31 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c  ol1 INTEGER, col
00a0: 32 20 49 4e 54 45 47 45 52 29 0d 0a 0d 0a 73 74  2 INTEGER)....st
00b0: 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 43 52 45 41  atement ok..CREA
00c0: 54 45 20 54 41 42 4c 45 20 74 61 62 32 28 63 6f  TE TABLE tab2(co
00d0: 6c 30 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c 31  l0 INTEGER, col1
00e0: 20 49 4e 54 45 47 45 52 2c 20 63 6f 6c 32 20 49   INTEGER, col2 I
00f0: 4e 54 45 47 45 52 29 0d 0a 0d 0a 73 74 61 74 65  NTEGER)....state
0100: 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52 54 20  ment ok..INSERT 
0110: 49 4e 54 4f 20 74 61 62 30 20 56 41 4c 55 45 53  INTO tab0 VALUES
0120: 28 39 37 2c 31 2c 39 39 29 0d 0a 0d 0a 73 74 61  (97,1,99)....sta
0130: 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52  tement ok..INSER
0140: 54 20 49 4e 54 4f 20 74 61 62 30 20 56 41 4c 55  T INTO tab0 VALU
0150: 45 53 28 31 35 2c 38 31 2c 34 37 29 0d 0a 0d 0a  ES(15,81,47)....
0160: 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e  statement ok..IN
0170: 53 45 52 54 20 49 4e 54 4f 20 74 61 62 30 20 56  SERT INTO tab0 V
0180: 41 4c 55 45 53 28 38 37 2c 32 31 2c 31 30 29 0d  ALUES(87,21,10).
0190: 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d  ...statement ok.
01a0: 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62  .INSERT INTO tab
01b0: 31 20 56 41 4c 55 45 53 28 35 31 2c 31 34 2c 39  1 VALUES(51,14,9
01c0: 36 29 0d 0a 0d 0a 73 74 61 74 65 6d 65 6e 74 20  6)....statement 
01d0: 6f 6b 0d 0a 49 4e 53 45 52 54 20 49 4e 54 4f 20  ok..INSERT INTO 
01e0: 74 61 62 31 20 56 41 4c 55 45 53 28 38 35 2c 35  tab1 VALUES(85,5
01f0: 2c 35 39 29 0d 0a 0d 0a 73 74 61 74 65 6d 65 6e  ,59)....statemen
0200: 74 20 6f 6b 0d 0a 49 4e 53 45 52 54 20 49 4e 54  t ok..INSERT INT
0210: 4f 20 74 61 62 31 20 56 41 4c 55 45 53 28 39 31  O tab1 VALUES(91
0220: 2c 34 37 2c 36 38 29 0d 0a 0d 0a 73 74 61 74 65  ,47,68)....state
0230: 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45 52 54 20  ment ok..INSERT 
0240: 49 4e 54 4f 20 74 61 62 32 20 56 41 4c 55 45 53  INTO tab2 VALUES
0250: 28 36 34 2c 37 37 2c 34 30 29 0d 0a 0d 0a 73 74  (64,77,40)....st
0260: 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49 4e 53 45  atement ok..INSE
0270: 52 54 20 49 4e 54 4f 20 74 61 62 32 20 56 41 4c  RT INTO tab2 VAL
0280: 55 45 53 28 37 35 2c 36 37 2c 35 38 29 0d 0a 0d  UES(75,67,58)...
0290: 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0d 0a 49  .statement ok..I
02a0: 4e 53 45 52 54 20 49 4e 54 4f 20 74 61 62 32 20  NSERT INTO tab2 
02b0: 56 41 4c 55 45 53 28 34 36 2c 35 31 2c 32 33 29  VALUES(46,51,23)
02c0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
02d0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
02e0: 49 4e 43 54 20 2d 20 2d 20 33 36 20 2a 20 2d 20  INCT - - 36 * - 
02f0: 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46  + col2 AS col2 F
0300: 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
0310: 4f 54 20 2b 20 2b 20 63 6f 6c 32 20 49 4e 20 28  OT + + col2 IN (
0320: 20 2d 20 2d 20 34 31 2c 20 2d 20 63 6f 6c 30 20   - - 41, - col0 
0330: 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 39 32 0d 0a  )..----..-1692..
0340: 2d 33 35 36 34 0d 0a 2d 33 36 30 0d 0a 0d 0a 6f  -3564..-360....o
0350: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
0360: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
0370: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0380: 74 20 6c 61 62 65 6c 2d 31 0d 0a 53 45 4c 45 43  t label-1..SELEC
0390: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55  T DISTINCT - COU
03a0: 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
03b0: 32 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 2b 20  2 WHERE NOT + + 
03c0: 63 6f 6c 31 20 3c 3d 20 2d 20 63 6f 6c 32 20 2d  col1 <= - col2 -
03d0: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   col1..----..-3.
03e0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
03f0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
0400: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0410: 74 20 6c 61 62 65 6c 2d 31 0d 0a 53 45 4c 45 43  t label-1..SELEC
0420: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55  T DISTINCT - COU
0430: 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
0440: 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 2b  b2 WHERE NOT + +
0450: 20 63 6f 6c 31 20 3c 3d 20 2d 20 63 6f 6c 32 20   col1 <= - col2 
0460: 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  - col1..----..-3
0470: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
0480: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
0490: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
04a0: 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
04b0: 20 28 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 2f 20   ( NOT - col1 / 
04c0: 2d 20 39 20 49 53 20 4e 55 4c 4c 20 29 0d 0a 2d  - 9 IS NULL )..-
04d0: 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
04e0: 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36  shing to c4b4276
04f0: 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65  5dff94eaaa46040e
0500: 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c  537fb43b7....onl
0510: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
0520: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
0530: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
0540: 6c 61 62 65 6c 2d 33 0d 0a 53 45 4c 45 43 54 20  label-3..SELECT 
0550: 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 36  COUNT( * ) * + 6
0560: 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  9 FROM tab2 AS c
0570: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 37 0d 0a  or0..----..207..
0580: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
0590: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
05a0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
05b0: 20 6c 61 62 65 6c 2d 33 0d 0a 53 45 4c 45 43 54   label-3..SELECT
05c0: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b   COUNT ( * ) * +
05d0: 20 36 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53   69 FROM tab2 AS
05e0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 37   cor0..----..207
05f0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
0600: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
0610: 49 4e 43 54 20 2b 20 2b 20 28 20 2b 20 2d 20 38  INCT + + ( + - 8
0620: 36 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  6 ) AS col1 FROM
0630: 20 74 61 62 30 20 63 6f 72 30 20 43 52 4f 53 53   tab0 cor0 CROSS
0640: 20 4a 4f 49 4e 20 74 61 62 31 20 41 53 20 63 6f   JOIN tab1 AS co
0650: 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 36 0d 0a 0d  r1..----..-86...
0660: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
0670: 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
0680: 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
0690: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
06a0: 6c 2d 35 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20  l-5..SELECT ( - 
06b0: 33 34 20 29 20 2b 20 2b 20 31 36 20 2b 20 2b 20  34 ) + + 16 + + 
06c0: 28 20 63 6f 6c 32 20 29 20 44 49 56 20 63 6f 6c  ( col2 ) DIV col
06d0: 30 20 44 49 56 20 2b 20 34 39 20 46 52 4f 4d 20  0 DIV + 49 FROM 
06e0: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 0d  tab0..----..-18.
06f0: 0a 2d 31 38 0d 0a 2d 31 38 0d 0a 0d 0a 73 6b 69  .-18..-18....ski
0700: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
0710: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
0720: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
0730: 6c 2d 35 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20  l-5..SELECT ( - 
0740: 33 34 20 29 20 2b 20 2b 20 31 36 20 2b 20 2b 20  34 ) + + 16 + + 
0750: 28 20 63 6f 6c 32 20 29 20 2f 20 63 6f 6c 30 20  ( col2 ) / col0 
0760: 2f 20 2b 20 34 39 20 46 52 4f 4d 20 74 61 62 30  / + 49 FROM tab0
0770: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 0d 0a 2d 31 38  ..----..-18..-18
0780: 0d 0a 2d 31 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-18....onlyif 
0790: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
07a0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
07b0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
07c0: 6f 72 74 20 6c 61 62 65 6c 2d 36 0d 0a 53 45 4c  ort label-6..SEL
07d0: 45 43 54 20 41 4c 4c 20 2d 20 2b 20 43 41 53 54  ECT ALL - + CAST
07e0: 28 20 2d 20 41 56 47 20 28 20 63 6f 6c 31 20 29  ( - AVG ( col1 )
07f0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d   AS SIGNED ) * -
0800: 20 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   2 col0 FROM tab
0810: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
0820: 0a 2d 31 33 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-130....skipif 
0830: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
0840: 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
0850: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
0860: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
0870: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
0880: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
0890: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
08a0: 20 6c 61 62 65 6c 2d 36 0d 0a 53 45 4c 45 43 54   label-6..SELECT
08b0: 20 41 4c 4c 20 2d 20 2b 20 43 41 53 54 20 28 20   ALL - + CAST ( 
08c0: 2d 20 41 56 47 20 28 20 63 6f 6c 31 20 29 20 41  - AVG ( col1 ) A
08d0: 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20  S INTEGER ) * - 
08e0: 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  2 col0 FROM tab2
08f0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
0900: 2d 31 33 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -130....onlyif m
0910: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
0920: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
0930: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
0940: 2d 37 0d 0a 53 45 4c 45 43 54 20 2b 20 34 36 20  -7..SELECT + 46 
0950: 2b 20 2d 20 43 4f 55 4e 54 28 20 63 6f 6c 31 20  + - COUNT( col1 
0960: 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
0970: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 33 0d 0a 0d  or0..----..43...
0980: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
0990: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
09a0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
09b0: 6c 61 62 65 6c 2d 37 0d 0a 53 45 4c 45 43 54 20  label-7..SELECT 
09c0: 2b 20 34 36 20 2b 20 2d 20 43 4f 55 4e 54 20 28  + 46 + - COUNT (
09d0: 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62   col1 ) FROM tab
09e0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
09f0: 0a 34 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .43....onlyif my
0a00: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
0a10: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
0a20: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
0a30: 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
0a40: 43 54 20 32 36 20 2a 20 2d 20 43 4f 55 4e 54 28  CT 26 * - COUNT(
0a50: 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
0a60: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
0a70: 2d 2d 2d 2d 0d 0a 2d 37 38 0d 0a 0d 0a 73 6b 69  ----..-78....ski
0a80: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
0a90: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
0aa0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
0ab0: 6c 2d 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  l-8..SELECT DIST
0ac0: 49 4e 43 54 20 32 36 20 2a 20 2d 20 43 4f 55 4e  INCT 26 * - COUN
0ad0: 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20  T ( * ) AS col2 
0ae0: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
0af0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 38 0d 0a 0d 0a  0..----..-78....
0b00: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
0b10: 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2b  .SELECT + col1 +
0b20: 20 2d 20 31 35 20 41 53 20 63 6f 6c 30 20 46 52   - 15 AS col0 FR
0b30: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
0b40: 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d 0a 36 0d 0a 36  .----..-14..6..6
0b50: 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
0b60: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  sort..SELECT - +
0b70: 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 30 20 2b   col0 + - col0 +
0b80: 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 35 39 20 41   + col0 * - 59 A
0b90: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
0ba0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31   cor0..----..-31
0bb0: 31 31 0d 0a 2d 35 31 38 35 0d 0a 2d 35 35 35 31  11..-5185..-5551
0bc0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
0bd0: 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
0be0: 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
0bf0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
0c00: 61 62 65 6c 2d 31 31 0d 0a 53 45 4c 45 43 54 20  abel-11..SELECT 
0c10: 44 49 53 54 49 4e 43 54 20 2d 20 36 35 20 44 49  DISTINCT - 65 DI
0c20: 56 20 2d 20 37 38 20 2b 20 2d 20 63 6f 6c 32 20  V - 78 + - col2 
0c30: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
0c40: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d 34  0..----..-10..-4
0c50: 37 0d 0a 2d 39 39 0d 0a 0d 0a 73 6b 69 70 69 66  7..-99....skipif
0c60: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
0c70: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
0c80: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
0c90: 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  1..SELECT DISTIN
0ca0: 43 54 20 2d 20 36 35 20 2f 20 2d 20 37 38 20 2b  CT - 65 / - 78 +
0cb0: 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   - col2 FROM tab
0cc0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
0cd0: 0a 2d 31 30 0d 0a 2d 34 37 0d 0a 2d 39 39 0d 0a  .-10..-47..-99..
0ce0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
0cf0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
0d00: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
0d10: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 0d 0a 53  sort label-12..S
0d20: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e  ELECT ALL + COUN
0d30: 54 28 20 2a 20 29 20 2b 20 28 20 2b 20 53 55 4d  T( * ) + ( + SUM
0d40: 28 20 63 6f 6c 30 20 29 20 29 20 41 53 20 63 6f  ( col0 ) ) AS co
0d50: 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l1 FROM tab2 cor
0d60: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 38 0d 0a 0d 0a  0..----..188....
0d70: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
0d80: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
0d90: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
0da0: 61 62 65 6c 2d 31 32 0d 0a 53 45 4c 45 43 54 20  abel-12..SELECT 
0db0: 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  ALL + COUNT ( * 
0dc0: 29 20 2b 20 28 20 2b 20 53 55 4d 20 28 20 63 6f  ) + ( + SUM ( co
0dd0: 6c 30 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46  l0 ) ) AS col1 F
0de0: 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d  ROM tab2 cor0..-
0df0: 2d 2d 2d 0d 0a 31 38 38 0d 0a 0d 0a 71 75 65 72  ---..188....quer
0e00: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
0e10: 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
0e20: 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
0e30: 2d 20 63 6f 6c 30 20 2a 20 39 35 20 49 53 20 4e  - col0 * 95 IS N
0e40: 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39  OT NULL..----..9
0e50: 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
0e60: 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34  to c4b42765dff94
0e70: 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34  eaaa46040e537fb4
0e80: 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  3b7....onlyif my
0e90: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
0ea0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
0eb0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
0ec0: 31 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  14..SELECT ALL -
0ed0: 20 36 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20   6 + COUNT( * ) 
0ee0: 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
0ef0: 2d 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20  - col0 * - col1 
0f00: 2a 20 2b 20 38 32 20 2b 20 2d 20 33 39 20 49 53  * + 82 + - 39 IS
0f10: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 0d   NULL..----..-6.
0f20: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
0f30: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
0f40: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0f50: 74 20 6c 61 62 65 6c 2d 31 34 0d 0a 53 45 4c 45  t label-14..SELE
0f60: 43 54 20 41 4c 4c 20 2d 20 36 20 2b 20 43 4f 55  CT ALL - 6 + COU
0f70: 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
0f80: 62 31 20 57 48 45 52 45 20 2d 20 63 6f 6c 30 20  b1 WHERE - col0 
0f90: 2a 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 38 32 20  * - col1 * + 82 
0fa0: 2b 20 2d 20 33 39 20 49 53 20 4e 55 4c 4c 0d 0a  + - 39 IS NULL..
0fb0: 2d 2d 2d 2d 0d 0a 2d 36 0d 0a 0d 0a 71 75 65 72  ----..-6....quer
0fc0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
0fd0: 45 43 54 20 41 4c 4c 20 2d 20 34 35 20 41 53 20  ECT ALL - 45 AS 
0fe0: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57  col1 FROM tab1 W
0ff0: 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e  HERE NULL NOT IN
1000: 20 28 20 2b 20 2b 20 34 32 20 2b 20 39 35 20 2b   ( + + 42 + 95 +
1010: 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 2b 20 37 31   + col1 * - + 71
1020: 2c 20 2b 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d  , + col0 )..----
1030: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
1040: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
1050: 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
1060: 2d 20 63 6f 6c 31 20 3c 3d 20 37 31 0d 0a 2d 2d  - col1 <= 71..--
1070: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
1080: 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35  hing to c4b42765
1090: 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35  dff94eaaa46040e5
10a0: 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72  37fb43b7....quer
10b0: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
10c0: 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 2d  ECT ALL col2 + -
10d0: 20 38 37 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d   87 FROM tab0..-
10e0: 2d 2d 2d 0d 0a 2d 34 30 0d 0a 2d 37 37 0d 0a 31  ---..-40..-77..1
10f0: 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  2....onlyif mysq
1100: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
1110: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
1120: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1130: 6c 61 62 65 6c 2d 31 38 0d 0a 53 45 4c 45 43 54  label-18..SELECT
1140: 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 33 31   DISTINCT ( - 31
1150: 20 29 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c   ) + + CAST( NUL
1160: 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52  L AS SIGNED ) FR
1170: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
1180: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
1190: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
11a0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
11b0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38 0d 0a  wsort label-18..
11c0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
11d0: 28 20 2d 20 33 31 20 29 20 2b 20 2b 20 43 41 53  ( - 31 ) + + CAS
11e0: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
11f0: 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  GER ) FROM tab2.
1200: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .----..NULL....q
1210: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1220: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1230: 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
1240: 45 52 45 20 4e 4f 54 20 28 20 4e 4f 54 20 63 6f  ERE NOT ( NOT co
1250: 6c 30 20 2d 20 2b 20 2b 20 63 6f 6c 30 20 49 53  l0 - + + col0 IS
1260: 20 4e 4f 54 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d   NOT NULL )..---
1270: 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
1280: 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31  ing to c6c0a4111
1290: 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65  b36d04dbc811a11e
12a0: 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79  4d54cad....query
12b0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
12c0: 43 54 20 63 6f 6c 31 20 2d 20 2b 20 63 6f 6c 30  CT col1 - + col0
12d0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
12e0: 62 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 20  b2 WHERE NULL < 
12f0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
1300: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1310: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1320: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1330: 20 6c 61 62 65 6c 2d 32 31 0d 0a 53 45 4c 45 43   label-21..SELEC
1340: 54 20 2b 20 2b 20 36 30 20 2b 20 43 4f 55 4e 54  T + + 60 + COUNT
1350: 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
1360: 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1370: 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a 73 6b 69  .----..63....ski
1380: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1390: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
13a0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
13b0: 6c 2d 32 31 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  l-21..SELECT + +
13c0: 20 36 30 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20   60 + COUNT ( * 
13d0: 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
13e0: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
13f0: 2d 0d 0a 36 33 0d 0a 0d 0a 71 75 65 72 79 20 49  -..63....query I
1400: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1410: 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2a   DISTINCT col2 *
1420: 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c   - + col1 AS col
1430: 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
1440: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
1450: 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
1460: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
1470: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
1480: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
1490: 2d 20 2d 20 31 34 20 49 53 20 4e 55 4c 4c 0d 0a  - - 14 IS NULL..
14a0: 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
14b0: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
14c0: 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
14d0: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
14e0: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
14f0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 0d 0a 53  sort label-24..S
1500: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 37  ELECT DISTINCT 7
1510: 35 20 2b 20 2d 20 4d 41 58 28 20 2b 20 63 6f 6c  5 + - MAX( + col
1520: 32 20 29 20 2d 20 2d 20 31 31 20 2f 20 2d 20 28  2 ) - - 11 / - (
1530: 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
1540: 20 53 49 47 4e 45 44 20 29 20 29 20 41 53 20 63   SIGNED ) ) AS c
1550: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
1560: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
1570: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1580: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1590: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
15a0: 6c 2d 32 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  l-24..SELECT DIS
15b0: 54 49 4e 43 54 20 37 35 20 2b 20 2d 20 4d 41 58  TINCT 75 + - MAX
15c0: 20 28 20 2b 20 63 6f 6c 32 20 29 20 2d 20 2d 20   ( + col2 ) - - 
15d0: 31 31 20 2f 20 2d 20 28 20 2b 20 43 41 53 54 20  11 / - ( + CAST 
15e0: 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
15f0: 52 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52  R ) ) AS col1 FR
1600: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab1..----..N
1610: 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
1620: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
1630: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
1640: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1650: 6f 72 74 20 6c 61 62 65 6c 2d 32 35 0d 0a 53 45  ort label-25..SE
1660: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
1670: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
1680: 30 20 57 48 45 52 45 20 34 31 20 3e 3d 20 2d 20  0 WHERE 41 >= - 
1690: 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
16a0: 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  GNED )..----....
16b0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
16c0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
16d0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
16e0: 20 6c 61 62 65 6c 2d 32 35 0d 0a 53 45 4c 45 43   label-25..SELEC
16f0: 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
1700: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
1710: 48 45 52 45 20 34 31 20 3e 3d 20 2d 20 43 41 53  HERE 41 >= - CAS
1720: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
1730: 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  GER )..----....q
1740: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1750: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
1760: 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
1770: 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2a 20 2b 20  RE NOT col0 * + 
1780: 2b 20 32 31 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d  + 21 > NULL..---
1790: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  -....query II ro
17a0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
17b0: 34 38 2c 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f  48, - col1 AS co
17c0: 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
17d0: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
17e0: 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20 4e   NULL ) IS NOT N
17f0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 0d 0a  ULL..----..-48..
1800: 2d 31 0d 0a 2d 34 38 0d 0a 2d 32 31 0d 0a 2d 34  -1..-48..-21..-4
1810: 38 0d 0a 2d 38 31 0d 0a 0d 0a 73 6b 69 70 69 66  8..-81....skipif
1820: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
1830: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
1840: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
1850: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
1860: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
1870: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 36  rt..SELECT - - 6
1880: 20 2a 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32   * col1 + + col2
1890: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
18a0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
18b0: 32 39 0d 0a 34 36 30 0d 0a 35 30 32 0d 0a 0d 0a  29..460..502....
18c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
18d0: 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 46 52 4f  .SELECT col0 FRO
18e0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
18f0: 48 45 52 45 20 4e 4f 54 20 33 39 20 2a 20 2d 20  HERE NOT 39 * - 
1900: 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col0 IS NULL..--
1910: 2d 2d 0d 0a 34 36 0d 0a 36 34 0d 0a 37 35 0d 0a  --..46..64..75..
1920: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1930: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
1940: 6c 31 20 2a 20 2b 20 2b 20 28 20 2d 20 2d 20 63  l1 * + + ( - - c
1950: 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ol1 ) AS col0 FR
1960: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
1970: 0a 2d 2d 2d 2d 0d 0a 32 36 30 31 0d 0a 34 34 38  .----..2601..448
1980: 39 0d 0a 35 39 32 39 0d 0a 0d 0a 71 75 65 72 79  9..5929....query
1990: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
19a0: 43 54 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32  CT col0 + + col2
19b0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
19c0: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
19d0: 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 2a 20 2d 20   NOT - col2 * - 
19e0: 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col0 IS NOT NULL
19f0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
1a00: 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
1a10: 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
1a20: 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
1a30: 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
1a40: 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
1a50: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2b  rt..SELECT - ( +
1a60: 20 63 6f 6c 30 20 29 20 2a 20 2b 20 63 6f 6c 31   col0 ) * + col1
1a70: 20 2b 20 2b 20 2b 20 63 6f 6c 30 20 63 6f 6c 31   + + + col0 col1
1a80: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1a90: 0d 0a 2d 33 34 30 0d 0a 2d 34 31 38 36 0d 0a 2d  ..-340..-4186..-
1aa0: 36 36 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  663....query II 
1ab0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1ac0: 63 6f 6c 30 2c 20 63 6f 6c 32 20 2a 20 2b 20 63  col0, col2 * + c
1ad0: 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
1ae0: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d   tab2..----..46.
1af0: 0a 31 31 37 33 0d 0a 36 34 0d 0a 33 30 38 30 0d  .1173..64..3080.
1b00: 0a 37 35 0d 0a 33 38 38 36 0d 0a 0d 0a 71 75 65  .75..3886....que
1b10: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
1b20: 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 2c 20  ELECT ALL col2, 
1b30: 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 20 2a 20  col0 + + col1 * 
1b40: 2b 20 35 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  + 50 FROM tab0..
1b50: 2d 2d 2d 2d 0d 0a 31 30 0d 0a 31 31 33 37 0d 0a  ----..10..1137..
1b60: 34 37 0d 0a 34 30 36 35 0d 0a 39 39 0d 0a 31 34  47..4065..99..14
1b70: 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  7....query II ro
1b80: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1b90: 53 54 49 4e 43 54 20 63 6f 6c 32 20 41 53 20 63  STINCT col2 AS c
1ba0: 6f 6c 30 2c 20 2b 20 63 6f 6c 30 20 2a 20 2d 20  ol0, + col0 * - 
1bb0: 39 37 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  97 FROM tab2..--
1bc0: 2d 2d 0d 0a 32 33 0d 0a 2d 34 34 36 32 0d 0a 34  --..23..-4462..4
1bd0: 30 0d 0a 2d 36 32 30 38 0d 0a 35 38 0d 0a 2d 37  0..-6208..58..-7
1be0: 32 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  275....query I r
1bf0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1c00: 49 53 54 49 4e 43 54 20 28 20 2d 20 32 30 20 29  ISTINCT ( - 20 )
1c10: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
1c20: 0d 0a 2d 32 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-20....onlyif 
1c30: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
1c40: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
1c50: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
1c60: 65 6c 2d 33 37 0d 0a 53 45 4c 45 43 54 20 41 4c  el-37..SELECT AL
1c70: 4c 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  L - COUNT( * ) A
1c80: 53 20 63 6f 6c 32 2c 20 2b 20 31 38 20 41 53 20  S col2, + 18 AS 
1c90: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
1ca0: 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 31 38 0d 0a 0d 0a  ----..-3..18....
1cb0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1cc0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1cd0: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
1ce0: 6c 61 62 65 6c 2d 33 37 0d 0a 53 45 4c 45 43 54  label-37..SELECT
1cf0: 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 20 28 20 2a   ALL - COUNT ( *
1d00: 20 29 20 41 53 20 63 6f 6c 32 2c 20 2b 20 31 38   ) AS col2, + 18
1d10: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
1d20: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 31 38  b1..----..-3..18
1d30: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1d40: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1d50: 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74  tax: DIV for int
1d60: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
1d70: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1d80: 20 6c 61 62 65 6c 2d 33 38 0d 0a 53 45 4c 45 43   label-38..SELEC
1d90: 54 20 28 20 2d 20 28 20 43 4f 55 4e 54 28 20 2a  T ( - ( COUNT( *
1da0: 20 29 20 29 20 29 20 44 49 56 20 2b 20 2b 20 36   ) ) ) DIV + + 6
1db0: 35 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  5 AS col1 FROM t
1dc0: 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ab2..----..0....
1dd0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1de0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1df0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1e00: 61 62 65 6c 2d 33 38 0d 0a 53 45 4c 45 43 54 20  abel-38..SELECT 
1e10: 28 20 2d 20 28 20 43 4f 55 4e 54 20 28 20 2a 20  ( - ( COUNT ( * 
1e20: 29 20 29 20 29 20 2f 20 2b 20 2b 20 36 35 20 41  ) ) ) / + + 65 A
1e30: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
1e40: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65  ..----..0....que
1e50: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
1e60: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
1e70: 20 35 39 20 41 53 20 63 6f 6c 31 2c 20 33 20 46   59 AS col1, 3 F
1e80: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
1e90: 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 33 0d 0a  ..----..-59..3..
1ea0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1eb0: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1ec0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1ed0: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 0d 0a 53  sort label-40..S
1ee0: 45 4c 45 43 54 20 2d 20 36 33 20 2a 20 2b 20 2b  ELECT - 63 * + +
1ef0: 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
1f00: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1f10: 2d 2d 2d 0d 0a 2d 31 38 39 0d 0a 0d 0a 73 6b 69  ---..-189....ski
1f20: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1f30: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1f40: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1f50: 6c 2d 34 30 0d 0a 53 45 4c 45 43 54 20 2d 20 36  l-40..SELECT - 6
1f60: 33 20 2a 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20  3 * + + COUNT ( 
1f70: 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  * ) FROM tab0 AS
1f80: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   cor0..----..-18
1f90: 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  9....query II ro
1fa0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
1fb0: 6c 30 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 41 53  l0 * + + col1 AS
1fc0: 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 30 20 41 53   col0, - col0 AS
1fd0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
1fe0: 0a 2d 2d 2d 2d 0d 0a 34 32 35 0d 0a 2d 38 35 0d  .----..425..-85.
1ff0: 0a 34 32 37 37 0d 0a 2d 39 31 0d 0a 37 31 34 0d  .4277..-91..714.
2000: 0a 2d 35 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-51....onlyif m
2010: 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
2020: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
2030: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2040: 72 74 20 6c 61 62 65 6c 2d 34 32 0d 0a 53 45 4c  rt label-42..SEL
2050: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
2060: 41 53 54 28 20 2b 20 43 41 53 54 28 20 2b 20 39  AST( + CAST( + 9
2070: 39 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  9 AS SIGNED ) AS
2080: 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c   SIGNED ) AS col
2090: 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
20a0: 2d 0d 0a 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..99....skipif 
20b0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
20c0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
20d0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 32  rowsort label-42
20e0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
20f0: 54 20 2b 20 43 41 53 54 20 28 20 2b 20 43 41 53  T + CAST ( + CAS
2100: 54 20 28 20 2b 20 39 39 20 41 53 20 49 4e 54 45  T ( + 99 AS INTE
2110: 47 45 52 20 29 20 41 53 20 49 4e 54 45 47 45 52  GER ) AS INTEGER
2120: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
2130: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 39 39 0d 0a  tab0..----..99..
2140: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2150: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2160: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
2170: 73 6f 72 74 20 6c 61 62 65 6c 2d 34 33 0d 0a 53  sort label-43..S
2180: 45 4c 45 43 54 20 2d 20 4d 41 58 28 20 2b 20 2d  ELECT - MAX( + -
2190: 20 39 33 20 29 20 46 52 4f 4d 20 74 61 62 32 20   93 ) FROM tab2 
21a0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39  AS cor0..----..9
21b0: 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
21c0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
21d0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
21e0: 6f 72 74 20 6c 61 62 65 6c 2d 34 33 0d 0a 53 45  ort label-43..SE
21f0: 4c 45 43 54 20 2d 20 4d 41 58 20 28 20 2b 20 2d  LECT - MAX ( + -
2200: 20 39 33 20 29 20 46 52 4f 4d 20 74 61 62 32 20   93 ) FROM tab2 
2210: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39  AS cor0..----..9
2220: 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  3....onlyif mysq
2230: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
2240: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
2250: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2260: 6c 61 62 65 6c 2d 34 34 0d 0a 53 45 4c 45 43 54  label-44..SELECT
2270: 20 44 49 53 54 49 4e 43 54 20 43 41 53 54 28 20   DISTINCT CAST( 
2280: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
2290: 20 2a 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 39 34   * - col0 + - 94
22a0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
22b0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
22c0: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
22d0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
22e0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
22f0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
2300: 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  4..SELECT DISTIN
2310: 43 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41  CT CAST ( NULL A
2320: 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20  S INTEGER ) * - 
2330: 63 6f 6c 30 20 2b 20 2d 20 39 34 20 41 53 20 63  col0 + - 94 AS c
2340: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
2350: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
2360: 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
2370: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
2380: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
2390: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
23a0: 6c 61 62 65 6c 2d 34 35 0d 0a 53 45 4c 45 43 54  label-45..SELECT
23b0: 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2b   DISTINCT col2 +
23c0: 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   + col1 FROM tab
23d0: 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
23e0: 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 42 45 54  NOT ( NULL ) BET
23f0: 57 45 45 4e 20 2b 20 36 36 20 41 4e 44 20 2b 20  WEEN + 66 AND + 
2400: 63 6f 6c 30 20 2b 20 2d 20 43 41 53 54 28 20 4e  col0 + - CAST( N
2410: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 0d  ULL AS SIGNED ).
2420: 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
2430: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2440: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2450: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 35  rowsort label-45
2460: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2470: 54 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 31 20  T col2 + + col1 
2480: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2490: 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55  0 WHERE NOT ( NU
24a0: 4c 4c 20 29 20 42 45 54 57 45 45 4e 20 2b 20 36  LL ) BETWEEN + 6
24b0: 36 20 41 4e 44 20 2b 20 63 6f 6c 30 20 2b 20 2d  6 AND + col0 + -
24c0: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
24d0: 49 4e 54 45 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d  INTEGER )..----.
24e0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
24f0: 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
2500: 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
2510: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2520: 62 65 6c 2d 34 36 0d 0a 53 45 4c 45 43 54 20 2b  bel-46..SELECT +
2530: 20 63 6f 6c 30 20 44 49 56 20 2b 20 36 32 20 46   col0 DIV + 62 F
2540: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
2550: 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 31 0d  ..----..0..1..1.
2560: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2570: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2580: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2590: 74 20 6c 61 62 65 6c 2d 34 36 0d 0a 53 45 4c 45  t label-46..SELE
25a0: 43 54 20 2b 20 63 6f 6c 30 20 2f 20 2b 20 36 32  CT + col0 / + 62
25b0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
25c0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a  r0..----..0..1..
25d0: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
25e0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
25f0: 20 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74   - + col2 FROM t
2600: 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
2610: 45 20 63 6f 6c 30 20 2a 20 2b 20 35 35 20 2a 20  E col0 * + 55 * 
2620: 2b 20 2b 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c  + + col0 IS NULL
2630: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
2640: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2650: 54 20 2d 20 37 39 20 2b 20 63 6f 6c 32 20 46 52  T - 79 + col2 FR
2660: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
2670: 0a 2d 2d 2d 2d 0d 0a 2d 33 32 0d 0a 2d 36 39 0d  .----..-32..-69.
2680: 0a 32 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .20....query I r
2690: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
26a0: 49 53 54 49 4e 43 54 20 34 30 20 2a 20 2b 20 63  ISTINCT 40 * + c
26b0: 6f 6c 30 20 2b 20 2b 20 32 31 20 46 52 4f 4d 20  ol0 + + 21 FROM 
26c0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 38 36 31  tab2..----..1861
26d0: 0d 0a 32 35 38 31 0d 0a 33 30 32 31 0d 0a 0d 0a  ..2581..3021....
26e0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
26f0: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
2700: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
2710: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2720: 2d 35 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -50..SELECT DIST
2730: 49 4e 43 54 20 2d 20 2d 20 38 30 20 2a 20 2d 20  INCT - - 80 * - 
2740: 2b 20 63 6f 6c 31 20 2b 20 2b 20 38 36 20 44 49  + col1 + + 86 DI
2750: 56 20 2d 20 2d 20 39 36 20 2b 20 2b 20 2d 20 63  V - - 96 + + - c
2760: 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
2770: 20 74 61 62 31 20 57 48 45 52 45 20 63 6f 6c 32   tab1 WHERE col2
2780: 20 2a 20 2b 20 63 6f 6c 32 20 49 53 20 4e 4f 54   * + col2 IS NOT
2790: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31   NULL..----..-11
27a0: 33 34 0d 0a 2d 33 38 30 37 0d 0a 2d 34 30 35 0d  34..-3807..-405.
27b0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
27c0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
27d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
27e0: 74 20 6c 61 62 65 6c 2d 35 30 0d 0a 53 45 4c 45  t label-50..SELE
27f0: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20  CT DISTINCT - - 
2800: 38 30 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 2b 20  80 * - + col1 + 
2810: 2b 20 38 36 20 2f 20 2d 20 2d 20 39 36 20 2b 20  + 86 / - - 96 + 
2820: 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  + - col1 AS col0
2830: 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
2840: 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32 20 49   col2 * + col2 I
2850: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
2860: 0d 0a 2d 31 31 33 34 0d 0a 2d 33 38 30 37 0d 0a  ..-1134..-3807..
2870: 2d 34 30 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49  -405....query II
2880: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2890: 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
28a0: 4d 20 74 61 62 31 20 57 48 45 52 45 20 2d 20 37  M tab1 WHERE - 7
28b0: 36 20 3c 3e 20 34 31 20 2f 20 2d 20 28 20 34 39  6 <> 41 / - ( 49
28c0: 20 29 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d   ) + col2..----.
28d0: 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
28e0: 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33  g to c6c0a4111b3
28f0: 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64  6d04dbc811a11e4d
2900: 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49  54cad....query I
2910: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2920: 20 44 49 53 54 49 4e 43 54 20 2d 20 32 20 2d 20   DISTINCT - 2 - 
2930: 63 6f 6c 32 20 2a 20 2b 20 33 37 20 46 52 4f 4d  col2 * + 37 FROM
2940: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37   tab0..----..-17
2950: 34 31 0d 0a 2d 33 36 36 35 0d 0a 2d 33 37 32 0d  41..-3665..-372.
2960: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2970: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2980: 4e 43 54 20 2d 20 39 31 20 2b 20 2d 20 28 20 2b  NCT - 91 + - ( +
2990: 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62   col2 ) FROM tab
29a0: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 30 0d 0a 2d  1..----..-150..-
29b0: 31 35 39 0d 0a 2d 31 38 37 0d 0a 0d 0a 71 75 65  159..-187....que
29c0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
29d0: 4c 45 43 54 20 2b 20 63 6f 6c 30 20 46 52 4f 4d  LECT + col0 FROM
29e0: 20 74 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c   tab1 WHERE NULL
29f0: 20 42 45 54 57 45 45 4e 20 63 6f 6c 32 20 41 4e   BETWEEN col2 AN
2a00: 44 20 2d 20 31 35 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D - 15..----....
2a10: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
2a20: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
2a30: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
2a40: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2a50: 2d 35 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -55..SELECT DIST
2a60: 49 4e 43 54 20 63 6f 6c 32 20 44 49 56 20 63 6f  INCT col2 DIV co
2a70: 6c 31 20 2b 20 2d 20 37 31 20 46 52 4f 4d 20 74  l1 + - 71 FROM t
2a80: 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 31 0d 0a  ab0..----..-71..
2a90: 32 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  28....skipif mys
2aa0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2ab0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2ac0: 73 6f 72 74 20 6c 61 62 65 6c 2d 35 35 0d 0a 53  sort label-55..S
2ad0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
2ae0: 6f 6c 32 20 2f 20 63 6f 6c 31 20 2b 20 2d 20 37  ol2 / col1 + - 7
2af0: 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  1 FROM tab0..---
2b00: 2d 0d 0a 2d 37 31 0d 0a 32 38 0d 0a 0d 0a 71 75  -..-71..28....qu
2b10: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2b20: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 33  ELECT DISTINCT 3
2b30: 38 20 2d 20 31 39 20 41 53 20 63 6f 6c 31 20 46  8 - 19 AS col1 F
2b40: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
2b50: 31 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  19....query I ro
2b60: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
2b70: 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 46 52  l1 * + - col0 FR
2b80: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
2b90: 0a 2d 2d 2d 2d 0d 0a 2d 32 33 34 36 0d 0a 2d 34  .----..-2346..-4
2ba0: 39 32 38 0d 0a 2d 35 30 32 35 0d 0a 0d 0a 6f 6e  928..-5025....on
2bb0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
2bc0: 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
2bd0: 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
2be0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
2bf0: 38 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f  8..SELECT - - co
2c00: 6c 31 20 44 49 56 20 2b 20 2b 20 63 6f 6c 30 20  l1 DIV + + col0 
2c10: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2c20: 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d 0a 31  0..----..0..1..1
2c30: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
2c40: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
2c50: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
2c60: 72 74 20 6c 61 62 65 6c 2d 35 38 0d 0a 53 45 4c  rt label-58..SEL
2c70: 45 43 54 20 2d 20 2d 20 63 6f 6c 31 20 2f 20 2b  ECT - - col1 / +
2c80: 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
2c90: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
2ca0: 0a 30 0d 0a 31 0d 0a 31 0d 0a 0d 0a 71 75 65 72  .0..1..1....quer
2cb0: 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
2cc0: 4c 45 43 54 20 2b 20 63 6f 6c 32 2c 20 63 6f 6c  LECT + col2, col
2cd0: 30 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20  0 * + col2 FROM 
2ce0: 74 61 62 32 20 57 48 45 52 45 20 4e 55 4c 4c 20  tab2 WHERE NULL 
2cf0: 3e 20 2b 20 2d 20 34 37 20 2b 20 63 6f 6c 31 20  > + - 47 + col1 
2d00: 2a 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  * - col0..----..
2d10: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2d20: 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38 38 20 2b  t..SELECT + 88 +
2d30: 20 35 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   55 AS col0 FROM
2d40: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52   tab1 AS cor0 CR
2d50: 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53  OSS JOIN tab2 AS
2d60: 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   cor1..----..9 v
2d70: 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
2d80: 20 37 35 30 63 31 31 31 37 31 66 30 36 36 39 63   750c11171f0669c
2d90: 32 66 61 30 64 34 31 32 64 38 34 64 62 35 66 61  2fa0d412d84db5fa
2da0: 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  1....query II ro
2db0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2dc0: 53 54 49 4e 43 54 20 2d 20 36 2c 20 63 6f 6c 31  STINCT - 6, col1
2dd0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
2de0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 0d 0a 31 0d  r0..----..-6..1.
2df0: 0a 2d 36 0d 0a 32 31 0d 0a 2d 36 0d 0a 38 31 0d  .-6..21..-6..81.
2e00: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
2e10: 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
2e20: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
2e30: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2e40: 62 65 6c 2d 36 32 0d 0a 53 45 4c 45 43 54 20 2b  bel-62..SELECT +
2e50: 20 43 41 53 54 28 20 2b 20 2d 20 41 56 47 20 28   CAST( + - AVG (
2e60: 20 2d 20 2b 20 37 36 20 29 20 41 53 20 53 49 47   - + 76 ) AS SIG
2e70: 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32 20  NED ) FROM tab2 
2e80: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  AS cor0..----..7
2e90: 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
2ea0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2eb0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2ec0: 6f 72 74 20 6c 61 62 65 6c 2d 36 32 0d 0a 53 45  ort label-62..SE
2ed0: 4c 45 43 54 20 2b 20 43 41 53 54 20 28 20 2b 20  LECT + CAST ( + 
2ee0: 2d 20 41 56 47 20 28 20 2d 20 2b 20 37 36 20 29  - AVG ( - + 76 )
2ef0: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
2f00: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
2f10: 0a 2d 2d 2d 2d 0d 0a 37 36 0d 0a 0d 0a 6f 6e 6c  .----..76....onl
2f20: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
2f30: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
2f40: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
2f50: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2f60: 36 33 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  63..SELECT * FRO
2f70: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
2f80: 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 31 20  HERE NOT - col1 
2f90: 2f 20 2b 20 43 41 53 54 28 20 2b 20 2d 20 39 39  / + CAST( + - 99
2fa0: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d   AS SIGNED ) * -
2fb0: 20 63 6f 6c 31 20 2b 20 2b 20 28 20 2b 20 63 6f   col1 + + ( + co
2fc0: 6c 30 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  l0 ) IS NOT NULL
2fd0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
2fe0: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2ff0: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
3000: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
3010: 2d 36 33 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  -63..SELECT * FR
3020: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
3030: 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 31  WHERE NOT - col1
3040: 20 2f 20 2b 20 43 41 53 54 20 28 20 2b 20 2d 20   / + CAST ( + - 
3050: 39 39 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  99 AS INTEGER ) 
3060: 2a 20 2d 20 63 6f 6c 31 20 2b 20 2b 20 28 20 2b  * - col1 + + ( +
3070: 20 63 6f 6c 30 20 29 20 49 53 20 4e 4f 54 20 4e   col0 ) IS NOT N
3080: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
3090: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
30a0: 4c 45 43 54 20 2b 20 39 35 20 2a 20 2d 20 2b 20  LECT + 95 * - + 
30b0: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
30c0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  S cor0..----..-4
30d0: 38 34 35 0d 0a 2d 36 33 36 35 0d 0a 2d 37 33 31  845..-6365..-731
30e0: 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  5....query II ro
30f0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
3100: 4c 20 2d 20 31 32 20 41 53 20 63 6f 6c 30 2c 20  L - 12 AS col0, 
3110: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
3120: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  S cor0..----..-1
3130: 32 0d 0a 35 31 0d 0a 2d 31 32 0d 0a 38 35 0d 0a  2..51..-12..85..
3140: 2d 31 32 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79 69  -12..91....onlyi
3150: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
3160: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
3170: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
3180: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 0d 0a  wsort label-66..
3190: 53 45 4c 45 43 54 20 2d 20 30 20 2a 20 28 20 2d  SELECT - 0 * ( -
31a0: 20 38 33 20 29 20 44 49 56 20 2d 20 63 6f 6c 32   83 ) DIV - col2
31b0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
31c0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  r0..----..0..0..
31d0: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
31e0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
31f0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
3200: 6f 72 74 20 6c 61 62 65 6c 2d 36 36 0d 0a 53 45  ort label-66..SE
3210: 4c 45 43 54 20 2d 20 30 20 2a 20 28 20 2d 20 38  LECT - 0 * ( - 8
3220: 33 20 29 20 2f 20 2d 20 63 6f 6c 32 20 46 52 4f  3 ) / - col2 FRO
3230: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
3240: 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d  ----..0..0..0...
3250: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
3260: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 30 20  ..SELECT ALL 80 
3270: 2a 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 32 20  * col0 + - col2 
3280: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
3290: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 39 38 34 0d 0a 36  0..----..3984..6
32a0: 37 34 31 0d 0a 37 32 31 32 0d 0a 0d 0a 71 75 65  741..7212....que
32b0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32c0: 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32 20  LECT ALL - col2 
32d0: 2a 20 2d 20 2d 20 33 37 20 41 53 20 63 6f 6c 30  * - - 37 AS col0
32e0: 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d   FROM tab2 cor0.
32f0: 0a 2d 2d 2d 2d 0d 0a 2d 31 34 38 30 0d 0a 2d 32  .----..-1480..-2
3300: 31 34 36 0d 0a 2d 38 35 31 0d 0a 0d 0a 6f 6e 6c  146..-851....onl
3310: 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
3320: 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
3330: 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
3340: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39  rowsort label-69
3350: 0d 0a 53 45 4c 45 43 54 20 31 20 44 49 56 20 63  ..SELECT 1 DIV c
3360: 6f 6c 30 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 46  ol0 * + + col2 F
3370: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
3380: 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  0..0..0....skipi
3390: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
33a0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
33b0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
33c0: 36 39 0d 0a 53 45 4c 45 43 54 20 31 20 2f 20 63  69..SELECT 1 / c
33d0: 6f 6c 30 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 46  ol0 * + + col2 F
33e0: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
33f0: 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  0..0..0....skipi
3400: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
3410: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
3420: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
3430: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
3440: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
3450: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  ort..SELECT + + 
3460: 35 33 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  53 col2 FROM tab
3470: 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
3480: 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
3490: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
34a0: 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
34b0: 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
34c0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
34d0: 65 6c 2d 37 31 0d 0a 53 45 4c 45 43 54 20 41 4c  el-71..SELECT AL
34e0: 4c 20 37 37 20 44 49 56 20 2d 20 63 6f 6c 31 20  L 77 DIV - col1 
34f0: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
3500: 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73  .-1..-1..-1....s
3510: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
3520: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
3530: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
3540: 62 65 6c 2d 37 31 0d 0a 53 45 4c 45 43 54 20 41  bel-71..SELECT A
3550: 4c 4c 20 37 37 20 2f 20 2d 20 63 6f 6c 31 20 46  LL 77 / - col1 F
3560: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
3570: 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 71 75  -1..-1..-1....qu
3580: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
3590: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
35a0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
35b0: 57 48 45 52 45 20 4e 55 4c 4c 20 3c 20 2d 20 2d  WHERE NULL < - -
35c0: 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73   col1..----....s
35d0: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
35e0: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
35f0: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
3600: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
3610: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
3620: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
3630: 2d 20 2b 20 34 34 20 63 6f 6c 31 20 46 52 4f 4d  - + 44 col1 FROM
3640: 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
3650: 2d 2d 2d 0d 0a 2d 34 34 0d 0a 2d 34 34 0d 0a 2d  ---..-44..-44..-
3660: 34 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  44....query I ro
3670: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
3680: 53 54 49 4e 43 54 20 36 31 20 2b 20 2b 20 63 6f  STINCT 61 + + co
3690: 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
36a0: 2d 2d 0d 0a 31 34 32 0d 0a 36 32 0d 0a 38 32 0d  --..142..62..82.
36b0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
36c0: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
36d0: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
36e0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 0d 0a  wsort label-75..
36f0: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 4d  SELECT ALL - - M
3700: 41 58 28 20 2d 20 63 6f 6c 30 20 29 20 41 53 20  AX( - col0 ) AS 
3710: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
3720: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  S cor0..----..-5
3730: 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
3740: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
3750: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
3760: 6f 72 74 20 6c 61 62 65 6c 2d 37 35 0d 0a 53 45  ort label-75..SE
3770: 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 4d 41 58  LECT ALL - - MAX
3780: 20 28 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63   ( - col0 ) AS c
3790: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
37a0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31   cor0..----..-51
37b0: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
37c0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
37d0: 54 49 4e 43 54 20 2d 20 2b 20 31 32 20 41 53 20  TINCT - + 12 AS 
37e0: 63 6f 6c 31 2c 20 2d 20 63 6f 6c 31 20 46 52 4f  col1, - col1 FRO
37f0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
3800: 2d 2d 2d 2d 0d 0a 2d 31 32 0d 0a 2d 35 31 0d 0a  ----..-12..-51..
3810: 2d 31 32 0d 0a 2d 36 37 0d 0a 2d 31 32 0d 0a 2d  -12..-67..-12..-
3820: 37 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  77....onlyif mys
3830: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
3840: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
3850: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
3860: 37 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  77..SELECT DISTI
3870: 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  NCT - COUNT( * )
3880: 2c 20 39 38 20 63 6f 6c 31 20 46 52 4f 4d 20 74  , 98 col1 FROM t
3890: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
38a0: 2d 0d 0a 2d 33 0d 0a 39 38 0d 0a 0d 0a 73 6b 69  -..-3..98....ski
38b0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
38c0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
38d0: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
38e0: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
38f0: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
3900: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
3910: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
3920: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 0d 0a  wsort label-77..
3930: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
3940: 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 2c 20 39  - COUNT ( * ), 9
3950: 38 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  8 col1 FROM tab1
3960: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
3970: 2d 33 0d 0a 39 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  -3..98....onlyif
3980: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
3990: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
39a0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
39b0: 65 6c 2d 37 38 0d 0a 53 45 4c 45 43 54 20 41 4c  el-78..SELECT AL
39c0: 4c 20 2b 20 4d 41 58 28 20 41 4c 4c 20 2d 20 34  L + MAX( ALL - 4
39d0: 33 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  3 ) FROM tab1 AS
39e0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 33   cor0..----..-43
39f0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
3a00: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
3a10: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
3a20: 72 74 20 6c 61 62 65 6c 2d 37 38 0d 0a 53 45 4c  rt label-78..SEL
3a30: 45 43 54 20 41 4c 4c 20 2b 20 4d 41 58 20 28 20  ECT ALL + MAX ( 
3a40: 41 4c 4c 20 2d 20 34 33 20 29 20 46 52 4f 4d 20  ALL - 43 ) FROM 
3a50: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
3a60: 2d 2d 0d 0a 2d 34 33 0d 0a 0d 0a 71 75 65 72 79  --..-43....query
3a70: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
3a80: 45 43 54 20 2d 20 63 6f 6c 31 2c 20 2b 20 63 6f  ECT - col1, + co
3a90: 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l1 AS col1 FROM 
3aa0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
3ab0: 2d 2d 0d 0a 2d 31 0d 0a 31 0d 0a 2d 32 31 0d 0a  --..-1..1..-21..
3ac0: 32 31 0d 0a 2d 38 31 0d 0a 38 31 0d 0a 0d 0a 6f  21..-81..81....o
3ad0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
3ae0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
3af0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
3b00: 74 20 6c 61 62 65 6c 2d 38 30 0d 0a 53 45 4c 45  t label-80..SELE
3b10: 43 54 20 41 4c 4c 20 2b 20 53 55 4d 28 20 41 4c  CT ALL + SUM( AL
3b20: 4c 20 2d 20 63 6f 6c 31 20 29 20 63 6f 6c 31 20  L - col1 ) col1 
3b30: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
3b40: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 33 0d 0a 0d  0..----..-103...
3b50: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
3b60: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
3b70: 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
3b80: 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
3b90: 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
3ba0: 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
3bb0: 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
3bc0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
3bd0: 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  0..SELECT ALL + 
3be0: 53 55 4d 20 28 20 41 4c 4c 20 2d 20 63 6f 6c 31  SUM ( ALL - col1
3bf0: 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
3c00: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
3c10: 0a 2d 31 30 33 0d 0a 0d 0a 71 75 65 72 79 20 49  .-103....query I
3c20: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
3c30: 54 20 41 4c 4c 20 63 6f 6c 32 2c 20 2d 20 63 6f  T ALL col2, - co
3c40: 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l1 FROM tab2 cor
3c50: 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 2d 35 31  0..----..23..-51
3c60: 0d 0a 34 30 0d 0a 2d 37 37 0d 0a 35 38 0d 0a 2d  ..40..-77..58..-
3c70: 36 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  67....query I ro
3c80: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
3c90: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57  col2 FROM tab2 W
3ca0: 48 45 52 45 20 2b 20 63 6f 6c 32 20 49 53 20 4e  HERE + col2 IS N
3cb0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
3cc0: 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
3cd0: 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
3ce0: 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49  sion: ..query II
3cf0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
3d00: 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  3..SELECT ALL co
3d10: 6c 32 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 2b 20  l2 + - - col1 + 
3d20: 2d 20 63 6f 6c 30 20 2d 20 2b 20 39 30 20 44 49  - col0 - + 90 DI
3d30: 56 20 2d 20 34 32 2c 20 2d 20 63 6f 6c 30 20 41  V - 42, - col0 A
3d40: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
3d50: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 0d 0a 2d 38 35  ..----..-19..-85
3d60: 0d 0a 32 36 0d 0a 2d 39 31 0d 0a 36 31 0d 0a 2d  ..26..-91..61..-
3d70: 35 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  51....skipif mys
3d80: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
3d90: 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  ble..query II ro
3da0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 33 0d 0a  wsort label-83..
3db0: 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20  SELECT ALL col2 
3dc0: 2b 20 2d 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 63  + - - col1 + - c
3dd0: 6f 6c 30 20 2d 20 2b 20 39 30 20 2f 20 2d 20 34  ol0 - + 90 / - 4
3de0: 32 2c 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c  2, - col0 AS col
3df0: 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
3e00: 2d 0d 0a 2d 31 39 0d 0a 2d 38 35 0d 0a 32 36 0d  -..-19..-85..26.
3e10: 0a 2d 39 31 0d 0a 36 31 0d 0a 2d 35 31 0d 0a 0d  .-91..61..-51...
3e20: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
3e30: 74 0d 0a 53 45 4c 45 43 54 20 31 35 20 2d 20 2d  t..SELECT 15 - -
3e40: 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20 2b   col0 AS col1, +
3e50: 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
3e60: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
3e70: 30 32 0d 0a 31 30 0d 0a 31 31 32 0d 0a 39 39 0d  02..10..112..99.
3e80: 0a 33 30 0d 0a 34 37 0d 0a 0d 0a 71 75 65 72 79  .30..47....query
3e90: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
3ea0: 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20  LECT ALL * FROM 
3eb0: 74 61 62 30 20 57 48 45 52 45 20 2b 20 63 6f 6c  tab0 WHERE + col
3ec0: 32 20 2b 20 2d 20 63 6f 6c 32 20 49 53 20 4e 4f  2 + - col2 IS NO
3ed0: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  T NULL..----..9 
3ee0: 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
3ef0: 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65  o c4b42765dff94e
3f00: 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33  aaa46040e537fb43
3f10: 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  b7....query I ro
3f20: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
3f30: 6c 32 20 2a 20 2d 20 2b 20 31 35 20 2d 20 38 39  l2 * - + 15 - 89
3f40: 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d   + - - col1 FROM
3f50: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   tab0..----..-15
3f60: 37 33 0d 0a 2d 32 31 38 0d 0a 2d 37 31 33 0d 0a  73..-218..-713..
3f70: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
3f80: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  t..SELECT ALL co
3f90: 6c 31 20 2d 20 2b 20 2d 20 32 34 20 46 52 4f 4d  l1 - + - 24 FROM
3fa0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
3fb0: 2d 2d 2d 0d 0a 31 30 31 0d 0a 37 35 0d 0a 39 31  ---..101..75..91
3fc0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
3fd0: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
3fe0: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
3ff0: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
4000: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
4010: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
4020: 4c 45 43 54 20 2b 20 63 6f 6c 32 20 63 6f 6c 32  LECT + col2 col2
4030: 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 20   FROM tab0 cor0 
4040: 57 48 45 52 45 20 4e 55 4c 4c 20 3e 20 2d 20 33  WHERE NULL > - 3
4050: 35 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  5..----....onlyi
4060: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
4070: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
4080: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
4090: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 0d 0a  wsort label-89..
40a0: 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 44 49  SELECT - col1 DI
40b0: 56 20 35 32 20 44 49 56 20 2b 20 63 6f 6c 32 20  V 52 DIV + col2 
40c0: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
40d0: 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .0..0..0....skip
40e0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
40f0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
4100: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
4110: 2d 38 39 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  -89..SELECT - co
4120: 6c 31 20 2f 20 35 32 20 2f 20 2b 20 63 6f 6c 32  l1 / 52 / + col2
4130: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
4140: 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65  ..0..0..0....que
4150: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
4160: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
4170: 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 34  b1 WHERE NOT + 4
4180: 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
4190: 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
41a0: 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33  g to c6c0a4111b3
41b0: 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64  6d04dbc811a11e4d
41c0: 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  54cad....onlyif 
41d0: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
41e0: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
41f0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
4200: 6c 2d 39 31 0d 0a 53 45 4c 45 43 54 20 2d 20 43  l-91..SELECT - C
4210: 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2d 20  OUNT( * ) * + - 
4220: 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
4230: 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
4240: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d  cor0..----..9...
4250: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
4260: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
4270: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
4280: 6c 61 62 65 6c 2d 39 31 0d 0a 53 45 4c 45 43 54  label-91..SELECT
4290: 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   - COUNT ( * ) *
42a0: 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   + - COUNT ( * )
42b0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
42c0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
42d0: 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..9....onlyif my
42e0: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
42f0: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
4300: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
4310: 39 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  92..SELECT ALL +
4320: 20 4d 41 58 28 20 44 49 53 54 49 4e 43 54 20 2d   MAX( DISTINCT -
4330: 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62   col2 ) FROM tab
4340: 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  0 cor0..----..-1
4350: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
4360: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
4370: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
4380: 6f 72 74 20 6c 61 62 65 6c 2d 39 32 0d 0a 53 45  ort label-92..SE
4390: 4c 45 43 54 20 41 4c 4c 20 2b 20 4d 41 58 20 28  LECT ALL + MAX (
43a0: 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32   DISTINCT - col2
43b0: 20 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72   ) FROM tab0 cor
43c0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 0d 0a  0..----..-10....
43d0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
43e0: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
43f0: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
4400: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
4410: 2d 39 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  -93..SELECT DIST
4420: 49 4e 43 54 20 2d 20 37 30 20 2b 20 63 6f 6c 31  INCT - 70 + col1
4430: 20 2a 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c   * - col2 AS col
4440: 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
4450: 6f 72 30 20 57 48 45 52 45 20 2b 20 36 34 20 2a  or0 WHERE + 64 *
4460: 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   + - CAST( NULL 
4470: 41 53 20 53 49 47 4e 45 44 20 29 20 49 53 20 4e  AS SIGNED ) IS N
4480: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 34 33  ULL..----..-1243
4490: 0d 0a 2d 33 31 35 30 0d 0a 2d 33 39 35 36 0d 0a  ..-3150..-3956..
44a0: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
44b0: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
44c0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
44d0: 20 6c 61 62 65 6c 2d 39 33 0d 0a 53 45 4c 45 43   label-93..SELEC
44e0: 54 20 44 49 53 54 49 4e 43 54 20 2d 20 37 30 20  T DISTINCT - 70 
44f0: 2b 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20  + col1 * - col2 
4500: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
4510: 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
4520: 2b 20 36 34 20 2a 20 2b 20 2d 20 43 41 53 54 20  + 64 * + - CAST 
4530: 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
4540: 52 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  R ) IS NULL..---
4550: 2d 0d 0a 2d 31 32 34 33 0d 0a 2d 33 31 35 30 0d  -..-1243..-3150.
4560: 0a 2d 33 39 35 36 0d 0a 0d 0a 71 75 65 72 79 20  .-3956....query 
4570: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
4580: 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
4590: 30 20 2a 20 2b 20 2b 20 35 32 20 46 52 4f 4d 20  0 * + + 52 FROM 
45a0: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
45b0: 2d 2d 0d 0a 32 33 39 32 0d 0a 33 33 32 38 0d 0a  --..2392..3328..
45c0: 33 39 30 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  3900....onlyif m
45d0: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
45e0: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
45f0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
4600: 2d 39 35 0d 0a 53 45 4c 45 43 54 20 53 55 4d 28  -95..SELECT SUM(
4610: 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f   DISTINCT - - co
4620: 6c 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l1 ) AS col1 FRO
4630: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36 36  M tab1..----..66
4640: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
4650: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
4660: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
4670: 72 74 20 6c 61 62 65 6c 2d 39 35 0d 0a 53 45 4c  rt label-95..SEL
4680: 45 43 54 20 53 55 4d 20 28 20 44 49 53 54 49 4e  ECT SUM ( DISTIN
4690: 43 54 20 2d 20 2d 20 63 6f 6c 31 20 29 20 41 53  CT - - col1 ) AS
46a0: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d   col1 FROM tab1.
46b0: 0a 2d 2d 2d 2d 0d 0a 36 36 0d 0a 0d 0a 71 75 65  .----..66....que
46c0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
46d0: 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20 2d 20  LECT col1 * + - 
46e0: 38 34 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  84 FROM tab1..--
46f0: 2d 2d 0d 0a 2d 31 31 37 36 0d 0a 2d 33 39 34 38  --..-1176..-3948
4700: 0d 0a 2d 34 32 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..-420....onlyif
4710: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
4720: 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
4730: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
4740: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
4750: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 0d  owsort label-97.
4760: 0a 53 45 4c 45 43 54 20 43 41 53 54 28 20 4e 55  .SELECT CAST( NU
4770: 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b  LL AS SIGNED ) +
4780: 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
4790: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
47a0: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
47b0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
47c0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
47d0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
47e0: 6c 2d 39 37 0d 0a 53 45 4c 45 43 54 20 43 41 53  l-97..SELECT CAS
47f0: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
4800: 47 45 52 20 29 20 2b 20 43 4f 55 4e 54 20 28 20  GER ) + COUNT ( 
4810: 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
4820: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab0..----..NUL
4830: 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
4840: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
4850: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
4860: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
4870: 20 6c 61 62 65 6c 2d 39 38 0d 0a 53 45 4c 45 43   label-98..SELEC
4880: 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 2c  T DISTINCT col1,
4890: 20 2b 20 43 41 53 54 28 20 2d 20 34 39 20 41 53   + CAST( - 49 AS
48a0: 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 2b 20   SIGNED ) + + + 
48b0: 28 20 63 6f 6c 32 20 29 20 2a 20 2d 20 34 35 20  ( col2 ) * - 45 
48c0: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
48d0: 0a 35 31 0d 0a 2d 31 30 38 34 0d 0a 36 37 0d 0a  .51..-1084..67..
48e0: 2d 32 36 35 39 0d 0a 37 37 0d 0a 2d 31 38 34 39  -2659..77..-1849
48f0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
4900: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
4910: 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  e..query II rows
4920: 6f 72 74 20 6c 61 62 65 6c 2d 39 38 0d 0a 53 45  ort label-98..SE
4930: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
4940: 6c 31 2c 20 2b 20 43 41 53 54 20 28 20 2d 20 34  l1, + CAST ( - 4
4950: 39 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b  9 AS INTEGER ) +
4960: 20 2b 20 2b 20 28 20 63 6f 6c 32 20 29 20 2a 20   + + ( col2 ) * 
4970: 2d 20 34 35 20 46 52 4f 4d 20 74 61 62 32 0d 0a  - 45 FROM tab2..
4980: 2d 2d 2d 2d 0d 0a 35 31 0d 0a 2d 31 30 38 34 0d  ----..51..-1084.
4990: 0a 36 37 0d 0a 2d 32 36 35 39 0d 0a 37 37 0d 0a  .67..-2659..77..
49a0: 2d 31 38 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -1849....onlyif 
49b0: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
49c0: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
49d0: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
49e0: 65 6c 2d 39 39 0d 0a 53 45 4c 45 43 54 20 41 4c  el-99..SELECT AL
49f0: 4c 20 2d 20 33 38 20 63 6f 6c 30 2c 20 2b 20 4d  L - 38 col0, + M
4a00: 49 4e 28 20 41 4c 4c 20 2b 20 2b 20 63 6f 6c 31  IN( ALL + + col1
4a10: 20 29 20 2a 20 4d 41 58 28 20 44 49 53 54 49 4e   ) * MAX( DISTIN
4a20: 43 54 20 2d 20 63 6f 6c 30 20 29 20 2a 20 31 33  CT - col0 ) * 13
4a30: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
4a40: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
4a50: 0d 0a 2d 33 38 0d 0a 2d 33 30 34 39 38 0d 0a 0d  ..-38..-30498...
4a60: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
4a70: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
4a80: 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
4a90: 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
4aa0: 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
4ab0: 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
4ac0: 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
4ad0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
4ae0: 39 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  99..SELECT ALL -
4af0: 20 33 38 20 63 6f 6c 30 2c 20 2b 20 4d 49 4e 20   38 col0, + MIN 
4b00: 28 20 41 4c 4c 20 2b 20 2b 20 63 6f 6c 31 20 29  ( ALL + + col1 )
4b10: 20 2a 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43   * MAX ( DISTINC
4b20: 54 20 2d 20 63 6f 6c 30 20 29 20 2a 20 31 33 20  T - col0 ) * 13 
4b30: 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
4b40: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
4b50: 0a 2d 33 38 0d 0a 2d 33 30 34 39 38 0d 0a 0d 0a  .-38..-30498....
4b60: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
4b70: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
4b80: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
4b90: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
4ba0: 2d 31 30 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -100..SELECT + C
4bb0: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
4bc0: 4e 45 44 20 29 20 2b 20 2d 20 43 41 53 54 28 20  NED ) + - CAST( 
4bd0: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
4be0: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
4bf0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
4c00: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
4c10: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
4c20: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
4c30: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
4c40: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
4c50: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
4c60: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
4c70: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
4c80: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
4c90: 2d 31 30 30 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -100..SELECT + C
4ca0: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
4cb0: 54 45 47 45 52 20 29 20 2b 20 2d 20 43 41 53 54  TEGER ) + - CAST
4cc0: 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
4cd0: 45 52 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ER ) col2 FROM t
4ce0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
4cf0: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
4d00: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ULL....skipif po
4d10: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
4d20: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
4d30: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
4d40: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
4d50: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
4d60: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c  ..SELECT ALL col
4d70: 30 20 41 53 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c  0 AS col2, - col
4d80: 32 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  2 col0 FROM tab0
4d90: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
4da0: 31 35 0d 0a 2d 34 37 0d 0a 38 37 0d 0a 2d 31 30  15..-47..87..-10
4db0: 0d 0a 39 37 0d 0a 2d 39 39 0d 0a 0d 0a 73 6b 69  ..97..-99....ski
4dc0: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
4dd0: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
4de0: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
4df0: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
4e00: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
4e10: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
4e20: 6f 6c 31 20 63 6f 6c 30 2c 20 2d 20 36 34 20 46  ol1 col0, - 64 F
4e30: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
4e40: 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 2d 36 34 0d 0a  ..----..1..-64..
4e50: 32 31 0d 0a 2d 36 34 0d 0a 38 31 0d 0a 2d 36 34  21..-64..81..-64
4e60: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
4e70: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
4e80: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
4e90: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
4ea0: 61 62 65 6c 2d 31 30 33 0d 0a 53 45 4c 45 43 54  abel-103..SELECT
4eb0: 20 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20 2b   - col0 * col1 +
4ec0: 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2b 20 2b 20   + - col0 * + + 
4ed0: 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 31 20 2a 20  col1 * - col1 * 
4ee0: 2d 20 43 41 53 54 28 20 28 20 38 35 20 29 20 41  - CAST( ( 85 ) A
4ef0: 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
4f00: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
4f10: 2d 2d 0d 0a 2d 33 32 36 33 30 32 32 0d 0a 2d 38  --..-3263022..-8
4f20: 33 34 32 0d 0a 2d 38 33 36 36 34 39 30 0d 0a 0d  342..-8366490...
4f30: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
4f40: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
4f50: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
4f60: 6c 61 62 65 6c 2d 31 30 33 0d 0a 53 45 4c 45 43  label-103..SELEC
4f70: 54 20 2d 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 20  T - col0 * col1 
4f80: 2b 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2b 20 2b  + + - col0 * + +
4f90: 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 31 20 2a   col1 * - col1 *
4fa0: 20 2d 20 43 41 53 54 20 28 20 28 20 38 35 20 29   - CAST ( ( 85 )
4fb0: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
4fc0: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
4fd0: 0a 2d 2d 2d 2d 0d 0a 2d 33 32 36 33 30 32 32 0d  .----..-3263022.
4fe0: 0a 2d 38 33 34 32 0d 0a 2d 38 33 36 36 34 39 30  .-8342..-8366490
4ff0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
5000: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
5010: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
5020: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34  owsort label-104
5030: 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 28 20  ..SELECT - MAX( 
5040: 2d 20 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20  - + col1 ) FROM 
5050: 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
5060: 0a 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .5....skipif mys
5070: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
5080: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
5090: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 34 0d 0a  sort label-104..
50a0: 53 45 4c 45 43 54 20 2d 20 4d 41 58 20 28 20 2d  SELECT - MAX ( -
50b0: 20 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74   + col1 ) FROM t
50c0: 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab1 cor0..----..
50d0: 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  5....skipif post
50e0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
50f0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
5100: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
5110: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
5120: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
5130: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
5140: 20 37 38 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   78 col2 FROM ta
5150: 62 31 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  b1 cor0 CROSS JO
5160: 49 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 20  IN tab1 AS cor1 
5170: 57 48 45 52 45 20 4e 4f 54 20 35 31 20 3e 20 4e  WHERE NOT 51 > N
5180: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
5190: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
51a0: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
51b0: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49  type: ..query II
51c0: 49 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  IIII rowsort lab
51d0: 65 6c 2d 31 30 36 0d 0a 53 45 4c 45 43 54 20 41  el-106..SELECT A
51e0: 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41  LL * FROM tab0 A
51f0: 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
5200: 4e 20 74 61 62 31 20 41 53 20 63 6f 72 31 20 57  N tab1 AS cor1 W
5210: 48 45 52 45 20 4e 4f 54 20 43 41 53 54 28 20 4e  HERE NOT CAST( N
5220: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
5230: 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
5240: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
5250: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
5260: 71 75 65 72 79 20 49 49 49 49 49 49 20 72 6f 77  query IIIIII row
5270: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 0d 0a  sort label-106..
5280: 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
5290: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 43  M tab0 AS cor0 C
52a0: 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 41  ROSS JOIN tab1 A
52b0: 53 20 63 6f 72 31 20 57 48 45 52 45 20 4e 4f 54  S cor1 WHERE NOT
52c0: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
52d0: 49 4e 54 45 47 45 52 20 29 20 49 53 20 4e 55 4c  INTEGER ) IS NUL
52e0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
52f0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
5300: 43 54 20 41 4c 4c 20 63 6f 6c 31 20 46 52 4f 4d  CT ALL col1 FROM
5310: 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
5320: 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e  NULL NOT BETWEEN
5330: 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20 41   col1 * - col2 A
5340: 4e 44 20 2d 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d  ND - - col2..---
5350: 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  -....skipif post
5360: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
5370: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
5380: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
5390: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
53a0: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
53b0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
53c0: 2b 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 2c  + col0 + + col1,
53d0: 20 2b 20 31 35 20 63 6f 6c 31 20 46 52 4f 4d 20   + 15 col1 FROM 
53e0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 38 0d  tab1..----..138.
53f0: 0a 31 35 0d 0a 36 35 0d 0a 31 35 0d 0a 39 30 0d  .15..65..15..90.
5400: 0a 31 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .15....query I r
5410: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
5420: 4c 4c 20 2b 20 34 37 20 2d 20 2b 20 63 6f 6c 32  LL + 47 - + col2
5430: 20 2b 20 28 20 2b 20 39 36 20 29 20 2b 20 63 6f   + ( + 96 ) + co
5440: 6c 30 20 2b 20 2d 20 2d 20 63 6f 6c 32 20 41 53  l0 + - - col2 AS
5450: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
5460: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
5470: 35 38 0d 0a 32 33 30 0d 0a 32 34 30 0d 0a 0d 0a  58..230..240....
5480: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
5490: 0a 53 45 4c 45 43 54 20 32 35 20 2b 20 63 6f 6c  .SELECT 25 + col
54a0: 31 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 2d  1 + - - col1 * -
54b0: 20 2b 20 39 31 20 41 53 20 63 6f 6c 31 20 46 52   + 91 AS col1 FR
54c0: 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
54d0: 2d 2d 0d 0a 2d 31 38 36 35 0d 0a 2d 36 35 0d 0a  --..-1865..-65..
54e0: 2d 37 32 36 35 0d 0a 0d 0a 71 75 65 72 79 20 49  -7265....query I
54f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
5500: 54 20 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 2a 20  T col1 + col2 * 
5510: 63 6f 6c 31 20 41 53 20 63 6f 6c 31 2c 20 63 6f  col1 AS col1, co
5520: 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
5530: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 35 38  cor0..----..1358
5540: 0d 0a 39 36 0d 0a 33 30 30 0d 0a 35 39 0d 0a 33  ..96..300..59..3
5550: 32 34 33 0d 0a 36 38 0d 0a 0d 0a 71 75 65 72 79  243..68....query
5560: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
5570: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 38 20  CT DISTINCT - 8 
5580: 2b 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  + + - col2 FROM 
5590: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 34  tab1..----..-104
55a0: 0d 0a 2d 36 37 0d 0a 2d 37 36 0d 0a 0d 0a 71 75  ..-67..-76....qu
55b0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
55c0: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
55d0: 61 62 32 20 57 48 45 52 45 20 28 20 2d 20 2b 20  ab2 WHERE ( - + 
55e0: 39 32 20 29 20 42 45 54 57 45 45 4e 20 63 6f 6c  92 ) BETWEEN col
55f0: 32 20 2a 20 2d 20 2b 20 63 6f 6c 30 20 2f 20 2b  2 * - + col0 / +
5600: 20 63 6f 6c 31 20 2a 20 31 35 20 2b 20 39 36 20   col1 * 15 + 96 
5610: 2a 20 2b 20 2d 20 36 37 20 41 4e 44 20 4e 55 4c  * + - 67 AND NUL
5620: 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
5630: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
5640: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
5650: 20 57 48 45 52 45 20 2d 20 28 20 63 6f 6c 31 20   WHERE - ( col1 
5660: 29 20 2a 20 2d 20 36 20 2b 20 2d 20 63 6f 6c 32  ) * - 6 + - col2
5670: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
5680: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
5690: 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35  hing to c4b42765
56a0: 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35  dff94eaaa46040e5
56b0: 33 37 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79  37fb43b7....only
56c0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
56d0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
56e0: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
56f0: 6c 61 62 65 6c 2d 31 31 35 0d 0a 53 45 4c 45 43  label-115..SELEC
5700: 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 2c 20  T + COUNT( * ), 
5710: 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
5720: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
5730: 2d 2d 0d 0a 33 0d 0a 33 0d 0a 0d 0a 73 6b 69 70  --..3..3....skip
5740: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
5750: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
5760: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
5770: 6c 2d 31 31 35 0d 0a 53 45 4c 45 43 54 20 2b 20  l-115..SELECT + 
5780: 43 4f 55 4e 54 20 28 20 2a 20 29 2c 20 43 4f 55  COUNT ( * ), COU
5790: 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
57a0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
57b0: 0d 0a 33 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20  ..3..3....query 
57c0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
57d0: 54 20 2d 20 2d 20 37 39 20 2a 20 63 6f 6c 30 20  T - - 79 * col0 
57e0: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
57f0: 30 0d 0a 2d 2d 2d 2d 0d 0a 33 36 33 34 0d 0a 35  0..----..3634..5
5800: 30 35 36 0d 0a 35 39 32 35 0d 0a 0d 0a 6f 6e 6c  056..5925....onl
5810: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
5820: 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
5830: 74 65 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d  te syntax: DECIM
5840: 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  AL type: ..query
5850: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
5860: 2d 31 31 37 0d 0a 53 45 4c 45 43 54 20 2b 20 28  -117..SELECT + (
5870: 20 2b 20 4d 49 4e 28 20 2d 20 43 41 53 54 28 20   + MIN( - CAST( 
5880: 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20  NULL AS DECIMAL 
5890: 29 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20  ) ) ) FROM tab1 
58a0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
58b0: 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
58c0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
58d0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
58e0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37 0d  wsort label-117.
58f0: 0a 53 45 4c 45 43 54 20 2b 20 28 20 2b 20 4d 49  .SELECT + ( + MI
5900: 4e 20 28 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  N ( - CAST ( NUL
5910: 4c 20 41 53 20 52 45 41 4c 20 29 20 29 20 29 20  L AS REAL ) ) ) 
5920: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
5930: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
5940: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
5950: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
5960: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
5970: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
5980: 6c 2d 31 31 38 0d 0a 53 45 4c 45 43 54 20 43 41  l-118..SELECT CA
5990: 53 54 28 20 34 34 20 41 53 20 53 49 47 4e 45 44  ST( 44 AS SIGNED
59a0: 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
59b0: 32 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30  2 WHERE NOT col0
59c0: 20 2a 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e   * col1 IS NOT N
59d0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ULL..----....ski
59e0: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
59f0: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
5a00: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
5a10: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
5a20: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
5a30: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
5a40: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
5a50: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 0d 0a  sort label-118..
5a60: 53 45 4c 45 43 54 20 43 41 53 54 20 28 20 34 34  SELECT CAST ( 44
5a70: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f   AS INTEGER ) co
5a80: 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  l1 FROM tab2 WHE
5a90: 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2a 20 63 6f  RE NOT col0 * co
5aa0: 6c 31 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  l1 IS NOT NULL..
5ab0: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
5ac0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
5ad0: 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
5ae0: 32 20 57 48 45 52 45 20 2b 20 63 6f 6c 32 20 2a  2 WHERE + col2 *
5af0: 20 2d 20 63 6f 6c 30 20 2b 20 63 6f 6c 30 20 3d   - col0 + col0 =
5b00: 20 28 20 2b 20 28 20 2b 20 63 6f 6c 30 20 29 20   ( + ( + col0 ) 
5b10: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  )..----....query
5b20: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
5b30: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 38 35  CT DISTINCT + 85
5b40: 20 2b 20 31 36 20 41 53 20 63 6f 6c 30 20 46 52   + 16 AS col0 FR
5b50: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 63 6f  OM tab1 WHERE co
5b60: 6c 32 20 2b 20 2b 20 35 31 20 2a 20 63 6f 6c 32  l2 + + 51 * col2
5b70: 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
5b80: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
5b90: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
5ba0: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
5bb0: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 0d 0a  sort label-121..
5bc0: 53 45 4c 45 43 54 20 41 4c 4c 20 34 33 20 2b 20  SELECT ALL 43 + 
5bd0: 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  + COUNT( * ) AS 
5be0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
5bf0: 2d 2d 2d 2d 0d 0a 34 36 0d 0a 0d 0a 73 6b 69 70  ----..46....skip
5c00: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
5c10: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
5c20: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
5c30: 2d 31 32 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -121..SELECT ALL
5c40: 20 34 33 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20   43 + + COUNT ( 
5c50: 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  * ) AS col2 FROM
5c60: 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d   tab1..----..46.
5c70: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
5c80: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
5c90: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
5ca0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32 0d  wsort label-122.
5cb0: 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 28 20 44  .SELECT - MAX( D
5cc0: 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 29 20 41  ISTINCT col0 ) A
5cd0: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
5ce0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 37 0d 0a 0d 0a 73  ..----..-97....s
5cf0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
5d00: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
5d10: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
5d20: 62 65 6c 2d 31 32 32 0d 0a 53 45 4c 45 43 54 20  bel-122..SELECT 
5d30: 2d 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54  - MAX ( DISTINCT
5d40: 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32 20   col0 ) AS col2 
5d50: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
5d60: 0a 2d 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-97....query II
5d70: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
5d80: 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
5d90: 45 52 45 20 2b 20 28 20 35 32 20 29 20 2a 20 28  ERE + ( 52 ) * (
5da0: 20 63 6f 6c 30 20 29 20 2d 20 28 20 63 6f 6c 30   col0 ) - ( col0
5db0: 20 29 20 3d 20 2b 20 63 6f 6c 32 20 2a 20 2b 20   ) = + col2 * + 
5dc0: 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  col2..----....sk
5dd0: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
5de0: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
5df0: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
5e00: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
5e10: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
5e20: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
5e30: 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 63 6f 6c  ISTINCT col2 col
5e40: 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  0 FROM tab0 WHER
5e50: 45 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 4e 4f 54  E NOT - col2 NOT
5e60: 20 49 4e 20 28 20 63 6f 6c 32 20 29 0d 0a 2d 2d   IN ( col2 )..--
5e70: 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
5e80: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
5e90: 6c 30 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 36 37  l0 + col2 * - 67
5ea0: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
5eb0: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31 33 34 0d  b0..----..-3134.
5ec0: 0a 2d 35 38 33 0d 0a 2d 36 35 33 36 0d 0a 0d 0a  .-583..-6536....
5ed0: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
5ee0: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
5ef0: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
5f00: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
5f10: 2d 31 32 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -126..SELECT DIS
5f20: 54 49 4e 43 54 20 63 6f 6c 32 20 44 49 56 20 2d  TINCT col2 DIV -
5f30: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
5f40: 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49  WHERE NOT NULL I
5f50: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
5f60: 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
5f70: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
5f80: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
5f90: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 36 0d  wsort label-126.
5fa0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
5fb0: 20 63 6f 6c 32 20 2f 20 2d 20 63 6f 6c 30 20 46   col2 / - col0 F
5fc0: 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
5fd0: 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e  OT NULL IS NOT N
5fe0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
5ff0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
6000: 0a 53 45 4c 45 43 54 20 34 37 20 41 53 20 63 6f  .SELECT 47 AS co
6010: 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  l0 FROM tab2 WHE
6020: 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3c 3d 20 63  RE NOT NULL <= c
6030: 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol0..----....que
6040: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
6050: 4c 45 43 54 20 37 39 20 46 52 4f 4d 20 74 61 62  LECT 79 FROM tab
6060: 31 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 33 33  1 WHERE NOT - 33
6070: 20 2a 20 2d 20 36 36 20 2b 20 2b 20 63 6f 6c 31   * - 66 + + col1
6080: 20 2f 20 2d 20 38 32 20 4e 4f 54 20 42 45 54 57   / - 82 NOT BETW
6090: 45 45 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e 44  EEN ( NULL ) AND
60a0: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
60b0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
60c0: 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20  SELECT ALL col2 
60d0: 2d 20 2b 20 28 20 2d 20 63 6f 6c 31 20 29 20 41  - + ( - col1 ) A
60e0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
60f0: 0d 0a 2d 2d 2d 2d 0d 0a 31 31 30 0d 0a 31 31 35  ..----..110..115
6100: 0d 0a 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..64....query I 
6110: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
6120: 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
6130: 2f 20 63 6f 6c 31 20 2b 20 2d 20 36 31 20 46 52  / col1 + - 61 FR
6140: 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 28 20  OM tab0 WHERE ( 
6150: 4e 55 4c 4c 20 29 20 4e 4f 54 20 42 45 54 57 45  NULL ) NOT BETWE
6160: 45 4e 20 28 20 2b 20 31 34 20 2d 20 2b 20 39 31  EN ( + 14 - + 91
6170: 20 29 20 41 4e 44 20 28 20 4e 55 4c 4c 20 29 0d   ) AND ( NULL ).
6180: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
6190: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
61a0: 20 63 6f 6c 31 20 2b 20 2d 20 34 30 20 2a 20 63   col1 + - 40 * c
61b0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
61c0: 2d 2d 2d 0d 0a 2d 31 35 32 33 0d 0a 2d 32 32 35  ---..-1523..-225
61d0: 33 0d 0a 2d 38 36 39 0d 0a 0d 0a 6f 6e 6c 79 69  3..-869....onlyi
61e0: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
61f0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
6200: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
6210: 62 65 6c 2d 31 33 32 0d 0a 53 45 4c 45 43 54 20  bel-132..SELECT 
6220: 4d 49 4e 28 20 41 4c 4c 20 2d 20 39 37 20 29 20  MIN( ALL - 97 ) 
6230: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
6240: 0a 2d 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-97....skipif m
6250: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
6260: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
6270: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 32  owsort label-132
6280: 0d 0a 53 45 4c 45 43 54 20 4d 49 4e 20 28 20 41  ..SELECT MIN ( A
6290: 4c 4c 20 2d 20 39 37 20 29 20 46 52 4f 4d 20 74  LL - 97 ) FROM t
62a0: 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 37 0d 0a  ab1..----..-97..
62b0: 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
62c0: 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
62d0: 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
62e0: 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
62f0: 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
6300: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
6310: 43 54 20 63 6f 6c 31 20 2d 20 38 34 20 63 6f 6c  CT col1 - 84 col
6320: 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
6330: 2d 0d 0a 2d 33 37 0d 0a 2d 37 30 0d 0a 2d 37 39  -..-37..-70..-79
6340: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
6350: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
6360: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
6370: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
6380: 20 6c 61 62 65 6c 2d 31 33 34 0d 0a 53 45 4c 45   label-134..SELE
6390: 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
63a0: 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 28 20  OM tab2 WHERE ( 
63b0: 4e 55 4c 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20  NULL ) NOT IN ( 
63c0: 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
63d0: 53 49 47 4e 45 44 20 29 20 2a 20 63 6f 6c 31 20  SIGNED ) * col1 
63e0: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  )..----....skipi
63f0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
6400: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
6410: 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
6420: 6c 2d 31 33 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-134..SELECT DI
6430: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
6440: 62 32 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20  b2 WHERE ( NULL 
6450: 29 20 4e 4f 54 20 49 4e 20 28 20 2d 20 43 41 53  ) NOT IN ( - CAS
6460: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
6470: 47 45 52 20 29 20 2a 20 63 6f 6c 31 20 29 0d 0a  GER ) * col1 )..
6480: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
6490: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
64a0: 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
64b0: 45 52 45 20 28 20 2b 20 63 6f 6c 31 20 2a 20 63  ERE ( + col1 * c
64c0: 6f 6c 31 20 29 20 49 4e 20 28 20 63 6f 6c 30 20  ol1 ) IN ( col0 
64d0: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
64e0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
64f0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
6500: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
6510: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 36 0d  wsort label-136.
6520: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
6530: 20 43 41 53 54 28 20 2b 20 37 39 20 41 53 20 53   CAST( + 79 AS S
6540: 49 47 4e 45 44 20 29 20 2a 20 32 31 20 46 52 4f  IGNED ) * 21 FRO
6550: 4d 20 74 61 62 30 20 57 48 45 52 45 20 63 6f 6c  M tab0 WHERE col
6560: 32 20 3d 20 28 20 2d 20 37 31 20 2b 20 63 6f 6c  2 = ( - 71 + col
6570: 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  1 )..----....ski
6580: 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
6590: 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
65a0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
65b0: 6c 2d 31 33 36 0d 0a 53 45 4c 45 43 54 20 44 49  l-136..SELECT DI
65c0: 53 54 49 4e 43 54 20 43 41 53 54 20 28 20 2b 20  STINCT CAST ( + 
65d0: 37 39 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  79 AS INTEGER ) 
65e0: 2a 20 32 31 20 46 52 4f 4d 20 74 61 62 30 20 57  * 21 FROM tab0 W
65f0: 48 45 52 45 20 63 6f 6c 32 20 3d 20 28 20 2d 20  HERE col2 = ( - 
6600: 37 31 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d  71 + col1 )..---
6610: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
6620: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
6630: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
6640: 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32   + col0 + + col2
6650: 20 49 4e 20 28 20 32 39 20 29 0d 0a 2d 2d 2d 2d   IN ( 29 )..----
6660: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
6670: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
6680: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
6690: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 33 38  owsort label-138
66a0: 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 41 58 28 20  ..SELECT + MAX( 
66b0: 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20  DISTINCT - col1 
66c0: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
66d0: 61 62 32 20 57 48 45 52 45 20 28 20 4e 55 4c 4c  ab2 WHERE ( NULL
66e0: 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
66f0: 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
6700: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
6710: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
6720: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
6730: 65 6c 2d 31 33 38 0d 0a 53 45 4c 45 43 54 20 2b  el-138..SELECT +
6740: 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20   MAX ( DISTINCT 
6750: 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 32  - col1 ) AS col2
6760: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
6770: 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54   ( NULL ) IS NOT
6780: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   NULL..----..NUL
6790: 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
67a0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 37 20  sort..SELECT 57 
67b0: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
67c0: 4e 4f 54 20 31 36 20 2b 20 36 20 2a 20 2b 20 63  NOT 16 + 6 * + c
67d0: 6f 6c 31 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ol1 NOT BETWEEN 
67e0: 4e 55 4c 4c 20 41 4e 44 20 2b 20 63 6f 6c 31 0d  NULL AND + col1.
67f0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
6800: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
6810: 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
6820: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20  OM tab1 WHERE ( 
6830: 2b 20 63 6f 6c 31 20 29 20 4e 4f 54 20 49 4e 20  + col1 ) NOT IN 
6840: 28 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d  ( + col1 )..----
6850: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
6860: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
6870: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
6880: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34 31  owsort label-141
6890: 0d 0a 53 45 4c 45 43 54 20 2b 20 53 55 4d 28 20  ..SELECT + SUM( 
68a0: 2d 20 63 6f 6c 32 20 29 20 2b 20 33 38 20 41 53  - col2 ) + 38 AS
68b0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
68c0: 0a 2d 2d 2d 2d 0d 0a 2d 31 31 38 0d 0a 0d 0a 73  .----..-118....s
68d0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
68e0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
68f0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
6900: 62 65 6c 2d 31 34 31 0d 0a 53 45 4c 45 43 54 20  bel-141..SELECT 
6910: 2b 20 53 55 4d 20 28 20 2d 20 63 6f 6c 32 20 29  + SUM ( - col2 )
6920: 20 2b 20 33 38 20 41 53 20 63 6f 6c 30 20 46 52   + 38 AS col0 FR
6930: 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
6940: 31 31 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  118....onlyif my
6950: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
6960: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
6970: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
6980: 31 34 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  142..SELECT ALL 
6990: 2d 20 35 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  - 5 - COUNT( * )
69a0: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
69b0: 62 31 20 57 48 45 52 45 20 4e 4f 54 20 36 30 20  b1 WHERE NOT 60 
69c0: 2a 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32 20  * col0 + + col2 
69d0: 2a 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45  * col2 NOT BETWE
69e0: 45 4e 20 28 20 2d 20 63 6f 6c 30 20 2b 20 63 6f  EN ( - col0 + co
69f0: 6c 30 20 29 20 41 4e 44 20 2b 20 63 6f 6c 32 20  l0 ) AND + col2 
6a00: 2b 20 2d 20 63 6f 6c 32 20 2a 20 38 33 0d 0a 2d  + - col2 * 83..-
6a10: 2d 2d 2d 0d 0a 2d 35 0d 0a 0d 0a 73 6b 69 70 69  ---..-5....skipi
6a20: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
6a30: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
6a40: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
6a50: 31 34 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  142..SELECT ALL 
6a60: 2d 20 35 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  - 5 - COUNT ( * 
6a70: 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
6a80: 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 36 30  ab1 WHERE NOT 60
6a90: 20 2a 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32   * col0 + + col2
6aa0: 20 2a 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57   * col2 NOT BETW
6ab0: 45 45 4e 20 28 20 2d 20 63 6f 6c 30 20 2b 20 63  EEN ( - col0 + c
6ac0: 6f 6c 30 20 29 20 41 4e 44 20 2b 20 63 6f 6c 32  ol0 ) AND + col2
6ad0: 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 38 33 0d 0a   + - col2 * 83..
6ae0: 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79  ----..-5....only
6af0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
6b00: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
6b10: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
6b20: 61 62 65 6c 2d 31 34 33 0d 0a 53 45 4c 45 43 54  abel-143..SELECT
6b30: 20 2d 20 4d 41 58 28 20 2d 20 63 6f 6c 32 20 29   - MAX( - col2 )
6b40: 20 2b 20 2d 20 4d 49 4e 28 20 31 31 20 29 20 41   + - MIN( 11 ) A
6b50: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
6b60: 0d 0a 2d 2d 2d 2d 0d 0a 34 38 0d 0a 0d 0a 73 6b  ..----..48....sk
6b70: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
6b80: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
6b90: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
6ba0: 65 6c 2d 31 34 33 0d 0a 53 45 4c 45 43 54 20 2d  el-143..SELECT -
6bb0: 20 4d 41 58 20 28 20 2d 20 63 6f 6c 32 20 29 20   MAX ( - col2 ) 
6bc0: 2b 20 2d 20 4d 49 4e 20 28 20 31 31 20 29 20 41  + - MIN ( 11 ) A
6bd0: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
6be0: 0d 0a 2d 2d 2d 2d 0d 0a 34 38 0d 0a 0d 0a 6f 6e  ..----..48....on
6bf0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
6c00: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
6c10: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
6c20: 20 6c 61 62 65 6c 2d 31 34 34 0d 0a 53 45 4c 45   label-144..SELE
6c30: 43 54 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2b 20  CT COUNT( ALL + 
6c40: 38 32 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74  82 ) col2 FROM t
6c50: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
6c60: 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..3....skipif m
6c70: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
6c80: 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
6c90: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
6ca0: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
6cb0: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
6cc0: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
6cd0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
6ce0: 6c 61 62 65 6c 2d 31 34 34 0d 0a 53 45 4c 45 43  label-144..SELEC
6cf0: 54 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2b 20  T COUNT ( ALL + 
6d00: 38 32 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74  82 ) col2 FROM t
6d10: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
6d20: 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..3....onlyif m
6d30: 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
6d40: 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
6d50: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
6d60: 2d 31 34 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  -145..SELECT DIS
6d70: 54 49 4e 43 54 20 2b 20 4d 41 58 28 20 44 49 53  TINCT + MAX( DIS
6d80: 54 49 4e 43 54 20 33 33 20 29 20 46 52 4f 4d 20  TINCT 33 ) FROM 
6d90: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
6da0: 52 45 20 4e 4f 54 20 28 20 2d 20 63 6f 6c 31 20  RE NOT ( - col1 
6db0: 29 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  ) <> NULL..----.
6dc0: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
6dd0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
6de0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
6df0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 34  rowsort label-14
6e00: 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  5..SELECT DISTIN
6e10: 43 54 20 2b 20 4d 41 58 20 28 20 44 49 53 54 49  CT + MAX ( DISTI
6e20: 4e 43 54 20 33 33 20 29 20 46 52 4f 4d 20 74 61  NCT 33 ) FROM ta
6e30: 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
6e40: 20 4e 4f 54 20 28 20 2d 20 63 6f 6c 31 20 29 20   NOT ( - col1 ) 
6e50: 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e  <> NULL..----..N
6e60: 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ULL....query I r
6e70: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
6e80: 6f 6c 30 20 2a 20 37 33 20 41 53 20 63 6f 6c 31  ol0 * 73 AS col1
6e90: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
6ea0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 37 32 33 0d 0a  r0..----..3723..
6eb0: 36 32 30 35 0d 0a 36 36 34 33 0d 0a 0d 0a 6f 6e  6205..6643....on
6ec0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
6ed0: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
6ee0: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
6ef0: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
6f00: 2d 31 34 37 0d 0a 53 45 4c 45 43 54 20 2a 20 46  -147..SELECT * F
6f10: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
6f20: 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 20 2b 20   WHERE NULL < + 
6f30: 43 41 53 54 28 20 2d 20 63 6f 6c 31 20 41 53 20  CAST( - col1 AS 
6f40: 53 49 47 4e 45 44 20 29 20 2b 20 28 20 36 34 20  SIGNED ) + ( 64 
6f50: 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  )..----....skipi
6f60: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
6f70: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
6f80: 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
6f90: 6c 2d 31 34 37 0d 0a 53 45 4c 45 43 54 20 2a 20  l-147..SELECT * 
6fa0: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
6fb0: 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 20 2b  0 WHERE NULL < +
6fc0: 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 31 20 41   CAST ( - col1 A
6fd0: 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 28 20  S INTEGER ) + ( 
6fe0: 36 34 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  64 )..----....qu
6ff0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
7000: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
7010: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
7020: 45 20 28 20 4e 55 4c 4c 20 29 20 42 45 54 57 45  E ( NULL ) BETWE
7030: 45 4e 20 28 20 2b 20 63 6f 6c 32 20 29 20 41 4e  EN ( + col2 ) AN
7040: 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D NULL..----....
7050: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
7060: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
7070: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
7080: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
7090: 2d 31 34 39 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  -149..SELECT col
70a0: 30 20 2b 20 31 31 20 44 49 56 20 2b 20 63 6f 6c  0 + 11 DIV + col
70b0: 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
70c0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
70d0: 2d 0d 0a 31 35 0d 0a 38 38 0d 0a 39 37 0d 0a 0d  -..15..88..97...
70e0: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
70f0: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
7100: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
7110: 6c 61 62 65 6c 2d 31 34 39 0d 0a 53 45 4c 45 43  label-149..SELEC
7120: 54 20 63 6f 6c 30 20 2b 20 31 31 20 2f 20 2b 20  T col0 + 11 / + 
7130: 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
7140: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
7150: 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 38 0d 0a 39 37  ----..15..88..97
7160: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
7170: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
7180: 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
7190: 62 31 20 57 48 45 52 45 20 63 6f 6c 31 20 2a 20  b1 WHERE col1 * 
71a0: 2b 20 63 6f 6c 31 20 42 45 54 57 45 45 4e 20 4e  + col1 BETWEEN N
71b0: 55 4c 4c 20 41 4e 44 20 63 6f 6c 30 20 2a 20 2b  ULL AND col0 * +
71c0: 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 30 0d 0a   col1 + + col0..
71d0: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
71e0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
71f0: 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
7200: 45 52 45 20 28 20 63 6f 6c 32 20 2b 20 63 6f 6c  ERE ( col2 + col
7210: 32 20 2f 20 35 33 20 29 20 49 53 20 4e 55 4c 4c  2 / 53 ) IS NULL
7220: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
7230: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
7240: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
7250: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 63  ROM tab1 WHERE c
7260: 6f 6c 31 20 2a 20 2d 20 63 6f 6c 31 20 49 53 20  ol1 * - col1 IS 
7270: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
7280: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
7290: 45 4c 45 43 54 20 63 6f 6c 32 20 2a 20 32 31 20  ELECT col2 * 21 
72a0: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
72b0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
72c0: 0a 32 30 37 39 0d 0a 32 31 30 0d 0a 39 38 37 0d  .2079..210..987.
72d0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
72e0: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
72f0: 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 2b   col0 * - col1 +
7300: 20 2b 20 35 38 20 41 53 20 63 6f 6c 31 20 46 52   + 58 AS col1 FR
7310: 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
7320: 0a 2d 2d 2d 2d 0d 0a 2d 32 32 38 38 0d 0a 2d 34  .----..-2288..-4
7330: 38 37 30 0d 0a 2d 34 39 36 37 0d 0a 0d 0a 71 75  870..-4967....qu
7340: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
7350: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
7360: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
7370: 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e  WHERE NOT NULL N
7380: 4f 54 20 42 45 54 57 45 45 4e 20 28 20 2d 20 31  OT BETWEEN ( - 1
7390: 20 29 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d   ) AND NULL..---
73a0: 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
73b0: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
73c0: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
73d0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
73e0: 6c 61 62 65 6c 2d 31 35 36 0d 0a 53 45 4c 45 43  label-156..SELEC
73f0: 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2d 20 2d  T ALL + col2 - -
7400: 20 43 41 53 54 28 20 63 6f 6c 31 20 41 53 20 53   CAST( col1 AS S
7410: 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
7420: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
7430: 0a 31 31 30 0d 0a 31 31 35 0d 0a 36 34 0d 0a 0d  .110..115..64...
7440: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
7450: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
7460: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
7470: 6c 61 62 65 6c 2d 31 35 36 0d 0a 53 45 4c 45 43  label-156..SELEC
7480: 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2d 20 2d  T ALL + col2 - -
7490: 20 43 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20   CAST ( col1 AS 
74a0: 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74  INTEGER ) FROM t
74b0: 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
74c0: 2d 0d 0a 31 31 30 0d 0a 31 31 35 0d 0a 36 34 0d  -..110..115..64.
74d0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
74e0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
74f0: 4e 43 54 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  NCT - col1 FROM 
7500: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
7510: 52 45 20 2b 20 34 38 20 49 53 20 4e 4f 54 20 4e  RE + 48 IS NOT N
7520: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  ULL..----..-1..-
7530: 32 31 0d 0a 2d 38 31 0d 0a 0d 0a 71 75 65 72 79  21..-81....query
7540: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
7550: 43 54 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c  CT - col2 AS col
7560: 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
7570: 6f 72 30 20 57 48 45 52 45 20 28 20 2d 20 28 20  or0 WHERE ( - ( 
7580: 2d 20 35 34 20 29 20 2d 20 63 6f 6c 30 20 29 20  - 54 ) - col0 ) 
7590: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
75a0: 2d 0d 0a 2d 32 33 0d 0a 2d 34 30 0d 0a 2d 35 38  -..-23..-40..-58
75b0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
75c0: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
75d0: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
75e0: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
75f0: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
7600: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
7610: 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20  LECT ALL + col2 
7620: 2d 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c  - + col1 * + col
7630: 32 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  2 col1 FROM tab2
7640: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
7650: 2d 31 31 35 30 0d 0a 2d 33 30 34 30 0d 0a 2d 33  -1150..-3040..-3
7660: 38 32 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  828....onlyif my
7670: 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
7680: 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
7690: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
76a0: 74 20 6c 61 62 65 6c 2d 31 36 30 0d 0a 53 45 4c  t label-160..SEL
76b0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b  ECT DISTINCT - +
76c0: 20 63 6f 6c 32 20 44 49 56 20 63 6f 6c 32 20 2b   col2 DIV col2 +
76d0: 20 33 35 20 46 52 4f 4d 20 74 61 62 30 20 63 6f   35 FROM tab0 co
76e0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a 0d 0a  r0..----..34....
76f0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
7700: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
7710: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
7720: 61 62 65 6c 2d 31 36 30 0d 0a 53 45 4c 45 43 54  abel-160..SELECT
7730: 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f   DISTINCT - + co
7740: 6c 32 20 2f 20 63 6f 6c 32 20 2b 20 33 35 20 46  l2 / col2 + 35 F
7750: 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d  ROM tab0 cor0..-
7760: 2d 2d 2d 0d 0a 33 34 0d 0a 0d 0a 6f 6e 6c 79 69  ---..34....onlyi
7770: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
7780: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
7790: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
77a0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 31 0d  wsort label-161.
77b0: 0a 53 45 4c 45 43 54 20 41 56 47 20 28 20 2d 20  .SELECT AVG ( - 
77c0: 63 6f 6c 32 20 29 20 2a 20 2d 20 33 34 20 2d 20  col2 ) * - 34 - 
77d0: 2d 20 32 32 20 2a 20 2b 20 43 41 53 54 28 20 4e  - 22 * + CAST( N
77e0: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
77f0: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
7800: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
7810: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
7820: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
7830: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
7840: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36  rowsort label-16
7850: 31 0d 0a 53 45 4c 45 43 54 20 41 56 47 20 28 20  1..SELECT AVG ( 
7860: 2d 20 63 6f 6c 32 20 29 20 2a 20 2d 20 33 34 20  - col2 ) * - 34 
7870: 2d 20 2d 20 32 32 20 2a 20 2b 20 43 41 53 54 20  - - 22 * + CAST 
7880: 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
7890: 52 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  R ) AS col1 FROM
78a0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
78b0: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ---..NULL....que
78c0: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
78d0: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f  LECT DISTINCT co
78e0: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l2 FROM tab0 AS 
78f0: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28  cor0 WHERE NOT (
7900: 20 37 39 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d   79 ) IS NULL..-
7910: 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a 39 39 0d  ---..10..47..99.
7920: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
7930: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
7940: 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 46   col0 * - col2 F
7950: 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
7960: 4f 54 20 2d 20 34 39 20 2b 20 2b 20 63 6f 6c 32  OT - 49 + + col2
7970: 20 2a 20 2b 20 63 6f 6c 31 20 3c 3d 20 35 38 20   * + col1 <= 58 
7980: 2f 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  / - col1..----..
7990: 2d 31 30 35 38 0d 0a 2d 32 35 36 30 0d 0a 2d 34  -1058..-2560..-4
79a0: 33 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  350....query I r
79b0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
79c0: 4c 4c 20 37 34 20 2a 20 63 6f 6c 30 20 46 52 4f  LL 74 * col0 FRO
79d0: 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
79e0: 20 28 20 32 30 20 29 20 49 53 20 4e 55 4c 4c 0d   ( 20 ) IS NULL.
79f0: 0a 2d 2d 2d 2d 0d 0a 33 34 30 34 0d 0a 34 37 33  .----..3404..473
7a00: 36 0d 0a 35 35 35 30 0d 0a 0d 0a 71 75 65 72 79  6..5550....query
7a10: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
7a20: 43 54 20 34 20 46 52 4f 4d 20 74 61 62 31 20 57  CT 4 FROM tab1 W
7a30: 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f 54  HERE NULL IS NOT
7a40: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
7a50: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
7a60: 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20  SELECT ALL col2 
7a70: 2a 20 2b 20 2b 20 35 36 20 2b 20 37 32 20 41 53  * + + 56 + 72 AS
7a80: 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
7a90: 0a 2d 2d 2d 2d 0d 0a 31 33 36 30 0d 0a 32 33 31  .----..1360..231
7aa0: 32 0d 0a 33 33 32 30 0d 0a 0d 0a 6f 6e 6c 79 69  2..3320....onlyi
7ab0: 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
7ac0: 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
7ad0: 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
7ae0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 36 37 0d  wsort label-167.
7af0: 0a 53 45 4c 45 43 54 20 2d 20 35 35 20 44 49 56  .SELECT - 55 DIV
7b00: 20 28 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c   ( col0 ) AS col
7b10: 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
7b20: 2d 0d 0a 2d 31 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73  -..-1..0..0....s
7b30: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
7b40: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
7b50: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
7b60: 62 65 6c 2d 31 36 37 0d 0a 53 45 4c 45 43 54 20  bel-167..SELECT 
7b70: 2d 20 35 35 20 2f 20 28 20 63 6f 6c 30 20 29 20  - 55 / ( col0 ) 
7b80: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
7b90: 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 30 0d 0a  1..----..-1..0..
7ba0: 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
7bb0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 36  sort..SELECT - 6
7bc0: 39 20 2a 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 28  9 * + col2 * - (
7bd0: 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62   col2 ) FROM tab
7be0: 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 30 34 30 30 0d  2..----..110400.
7bf0: 0a 32 33 32 31 31 36 0d 0a 33 36 35 30 31 0d 0a  .232116..36501..
7c00: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7c10: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
7c20: 43 54 20 2b 20 35 35 20 2b 20 63 6f 6c 32 20 41  CT + 55 + col2 A
7c30: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
7c40: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
7c50: 4f 54 20 28 20 2b 20 63 6f 6c 32 20 2b 20 2d 20  OT ( + col2 + - 
7c60: 63 6f 6c 31 20 29 20 49 53 20 4e 4f 54 20 4e 55  col1 ) IS NOT NU
7c70: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
7c80: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
7c90: 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
7ca0: 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
7cb0: 6f 72 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 30  or0 WHERE + col0
7cc0: 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   < NULL..----...
7cd0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
7ce0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
7cf0: 54 20 2b 20 28 20 2b 20 2b 20 39 31 20 29 20 46  T + ( + + 91 ) F
7d00: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
7d10: 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a 6f 6e  ..----..91....on
7d20: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
7d30: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
7d40: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
7d50: 20 6c 61 62 65 6c 2d 31 37 32 0d 0a 53 45 4c 45   label-172..SELE
7d60: 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20  CT ALL - COUNT( 
7d70: 2a 20 29 20 2a 20 33 33 20 2a 20 2d 20 39 36 20  * ) * 33 * - 96 
7d80: 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a  FROM tab2 cor0..
7d90: 2d 2d 2d 2d 0d 0a 39 35 30 34 0d 0a 0d 0a 73 6b  ----..9504....sk
7da0: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
7db0: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
7dc0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
7dd0: 65 6c 2d 31 37 32 0d 0a 53 45 4c 45 43 54 20 41  el-172..SELECT A
7de0: 4c 4c 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29  LL - COUNT ( * )
7df0: 20 2a 20 33 33 20 2a 20 2d 20 39 36 20 46 52 4f   * 33 * - 96 FRO
7e00: 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
7e10: 2d 0d 0a 39 35 30 34 0d 0a 0d 0a 6f 6e 6c 79 69  -..9504....onlyi
7e20: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
7e30: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
7e40: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
7e50: 62 65 6c 2d 31 37 33 0d 0a 53 45 4c 45 43 54 20  bel-173..SELECT 
7e60: 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
7e70: 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ( * ) AS col2 FR
7e80: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20  OM tab1 WHERE ( 
7e90: 63 6f 6c 30 20 2d 20 2b 20 63 6f 6c 32 20 2a 20  col0 - + col2 * 
7ea0: 2b 20 33 34 20 49 4e 20 28 20 63 6f 6c 31 20 29  + 34 IN ( col1 )
7eb0: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73   )..----..0....s
7ec0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
7ed0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
7ee0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
7ef0: 62 65 6c 2d 31 37 33 0d 0a 53 45 4c 45 43 54 20  bel-173..SELECT 
7f00: 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
7f10: 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46   ( * ) AS col2 F
7f20: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28  ROM tab1 WHERE (
7f30: 20 63 6f 6c 30 20 2d 20 2b 20 63 6f 6c 32 20 2a   col0 - + col2 *
7f40: 20 2b 20 33 34 20 49 4e 20 28 20 63 6f 6c 31 20   + 34 IN ( col1 
7f50: 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ) )..----..0....
7f60: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
7f70: 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2a  .SELECT - col1 *
7f80: 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 2d 20 63 6f   + col0 * + - co
7f90: 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
7fa0: 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 30 31 30  tab1..----..2010
7fb0: 31 39 0d 0a 32 31 32 35 0d 0a 39 39 39 36 0d 0a  19..2125..9996..
7fc0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
7fd0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
7fe0: 2d 20 39 30 20 46 52 4f 4d 20 74 61 62 32 20 41  - 90 FROM tab2 A
7ff0: 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
8000: 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a  N tab0 AS cor1..
8010: 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
8020: 61 73 68 69 6e 67 20 74 6f 20 66 36 66 32 36 62  ashing to f6f26b
8030: 39 61 30 34 64 61 31 34 38 30 37 32 30 38 62 39  9a04da14807208b9
8040: 33 64 35 30 37 30 39 35 63 35 0d 0a 0d 0a 6f 6e  3d507095c5....on
8050: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
8060: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
8070: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
8080: 20 6c 61 62 65 6c 2d 31 37 36 0d 0a 53 45 4c 45   label-176..SELE
8090: 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e  CT DISTINCT COUN
80a0: 54 28 20 41 4c 4c 20 2d 20 31 36 20 29 20 2a 20  T( ALL - 16 ) * 
80b0: 35 37 20 46 52 4f 4d 20 74 61 62 32 2c 20 74 61  57 FROM tab2, ta
80c0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
80d0: 0d 0a 35 31 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..513....skipif 
80e0: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
80f0: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
8100: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37  rowsort label-17
8110: 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  6..SELECT DISTIN
8120: 43 54 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 2d  CT COUNT ( ALL -
8130: 20 31 36 20 29 20 2a 20 35 37 20 46 52 4f 4d 20   16 ) * 57 FROM 
8140: 74 61 62 32 2c 20 74 61 62 30 20 41 53 20 63 6f  tab2, tab0 AS co
8150: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 33 0d 0a 0d  r0..----..513...
8160: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
8170: 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20  ..SELECT - col1 
8180: 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46  + col1 AS col1 F
8190: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
81a0: 4f 54 20 28 20 2d 20 63 6f 6c 32 20 29 20 3e 20  OT ( - col2 ) > 
81b0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
81c0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
81d0: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
81e0: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
81f0: 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20 42  E NOT NULL NOT B
8200: 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
8210: 2b 20 28 20 2d 20 37 32 20 29 0d 0a 2d 2d 2d 2d  + ( - 72 )..----
8220: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
8230: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
8240: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
8250: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 37 39  owsort label-179
8260: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
8270: 54 20 2d 20 43 4f 55 4e 54 28 20 2d 20 36 36 20  T - COUNT( - 66 
8280: 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
8290: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  or0 WHERE NOT ( 
82a0: 4e 55 4c 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20  NULL ) NOT IN ( 
82b0: 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + col2 )..----..
82c0: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
82d0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
82e0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
82f0: 6f 72 74 20 6c 61 62 65 6c 2d 31 37 39 0d 0a 53  ort label-179..S
8300: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
8310: 20 43 4f 55 4e 54 20 28 20 2d 20 36 36 20 29 20   COUNT ( - 66 ) 
8320: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
8330: 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55  0 WHERE NOT ( NU
8340: 4c 4c 20 29 20 4e 4f 54 20 49 4e 20 28 20 2b 20  LL ) NOT IN ( + 
8350: 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  col2 )..----..0.
8360: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
8370: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
8380: 4e 43 54 20 2d 20 39 37 20 2a 20 63 6f 6c 31 20  NCT - 97 * col1 
8390: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
83a0: 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  1 cor0..----..-1
83b0: 33 35 38 0d 0a 2d 34 35 35 39 0d 0a 2d 34 38 35  358..-4559..-485
83c0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
83d0: 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
83e0: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
83f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
8400: 61 62 65 6c 2d 31 38 31 0d 0a 53 45 4c 45 43 54  abel-181..SELECT
8410: 20 44 49 53 54 49 4e 43 54 20 43 41 53 54 28 20   DISTINCT CAST( 
8420: 63 6f 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29  col1 AS SIGNED )
8430: 20 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20   + + CAST( NULL 
8440: 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d  AS SIGNED ) FROM
8450: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
8460: 45 52 45 20 36 32 20 3e 3d 20 28 20 4e 55 4c 4c  ERE 62 >= ( NULL
8470: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70   )..----....skip
8480: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
8490: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
84a0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
84b0: 2d 31 38 31 0d 0a 53 45 4c 45 43 54 20 44 49 53  -181..SELECT DIS
84c0: 54 49 4e 43 54 20 43 41 53 54 20 28 20 63 6f 6c  TINCT CAST ( col
84d0: 31 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b  1 AS INTEGER ) +
84e0: 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   + CAST ( NULL A
84f0: 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d  S INTEGER ) FROM
8500: 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
8510: 45 52 45 20 36 32 20 3e 3d 20 28 20 4e 55 4c 4c  ERE 62 >= ( NULL
8520: 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79   )..----....only
8530: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
8540: 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74  syntax: aggregat
8550: 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  e syntax: SIGNED
8560: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
8570: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
8580: 38 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  82..SELECT DISTI
8590: 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  NCT + COUNT( * )
85a0: 20 2a 20 2b 20 34 30 20 2b 20 2d 20 2b 20 41 56   * + 40 + - + AV
85b0: 47 20 28 20 41 4c 4c 20 2b 20 43 41 53 54 28 20  G ( ALL + CAST( 
85c0: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
85d0: 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
85e0: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
85f0: 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
8600: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
8610: 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
8620: 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
8630: 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
8640: 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
8650: 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
8660: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
8670: 20 6c 61 62 65 6c 2d 31 38 32 0d 0a 53 45 4c 45   label-182..SELE
8680: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f  CT DISTINCT + CO
8690: 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 34 30  UNT ( * ) * + 40
86a0: 20 2b 20 2d 20 2b 20 41 56 47 20 28 20 41 4c 4c   + - + AVG ( ALL
86b0: 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   + CAST ( NULL A
86c0: 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 63 6f  S INTEGER ) ) co
86d0: 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
86e0: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  cor0..----..NULL
86f0: 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
8700: 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
8710: 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
8720: 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
8730: 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
8740: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
8750: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
8760: 35 38 20 2b 20 2d 20 36 38 20 63 6f 6c 30 20 46  58 + - 68 col0 F
8770: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
8780: 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 36 0d 0a 0d 0a  ..----..-126....
8790: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
87a0: 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
87b0: 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
87c0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
87d0: 2d 31 38 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -184..SELECT ALL
87e0: 20 2d 20 63 6f 6c 30 20 44 49 56 20 63 6f 6c 32   - col0 DIV col2
87f0: 20 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c   * - col0 AS col
8800: 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
8810: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 38 35  or0..----..0..85
8820: 0d 0a 39 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..91....skipif m
8830: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
8840: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
8850: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38 34  owsort label-184
8860: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
8870: 6f 6c 30 20 2f 20 63 6f 6c 32 20 2a 20 2d 20 63  ol0 / col2 * - c
8880: 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
8890: 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
88a0: 2d 2d 2d 0d 0a 30 0d 0a 38 35 0d 0a 39 31 0d 0a  ---..0..85..91..
88b0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
88c0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
88d0: 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  INCT * FROM tab2
88e0: 20 57 48 45 52 45 20 4e 55 4c 4c 20 3d 20 36 37   WHERE NULL = 67
88f0: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
8900: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
8910: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
8920: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
8930: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 38 36 0d 0a  sort label-186..
8940: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34 36 20  SELECT ALL - 46 
8950: 2b 20 2d 20 43 41 53 54 28 20 2d 20 2d 20 63 6f  + - CAST( - - co
8960: 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 2d  l0 AS SIGNED ) -
8970: 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
8980: 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
8990: 31 31 31 0d 0a 2d 31 33 36 0d 0a 2d 31 38 34 0d  111..-136..-184.
89a0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
89b0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
89c0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
89d0: 74 20 6c 61 62 65 6c 2d 31 38 36 0d 0a 53 45 4c  t label-186..SEL
89e0: 45 43 54 20 41 4c 4c 20 2d 20 34 36 20 2b 20 2d  ECT ALL - 46 + -
89f0: 20 43 41 53 54 20 28 20 2d 20 2d 20 63 6f 6c 30   CAST ( - - col0
8a00: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2d 20   AS INTEGER ) - 
8a10: 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f  col1 AS col2 FRO
8a20: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
8a30: 31 31 0d 0a 2d 31 33 36 0d 0a 2d 31 38 34 0d 0a  11..-136..-184..
8a40: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
8a50: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
8a60: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20  OM tab1 WHERE ( 
8a70: 2d 20 2d 20 63 6f 6c 31 20 29 20 49 53 20 4e 4f  - - col1 ) IS NO
8a80: 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  T NULL..----..9 
8a90: 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
8aa0: 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30  o c6c0a4111b36d0
8ab0: 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63  4dbc811a11e4d54c
8ac0: 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  ad....query III 
8ad0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
8ae0: 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
8af0: 74 61 62 30 20 57 48 45 52 45 20 2d 20 63 6f 6c  tab0 WHERE - col
8b00: 31 20 2d 20 2b 20 2d 20 63 6f 6c 31 20 49 53 20  1 - + - col1 IS 
8b10: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
8b20: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
8b30: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
8b40: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
8b50: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
8b60: 38 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  89..SELECT ALL +
8b70: 20 31 39 20 2b 20 2b 20 43 41 53 54 28 20 2d 20   19 + + CAST( - 
8b80: 33 37 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b  37 AS SIGNED ) +
8b90: 20 2b 20 35 38 20 46 52 4f 4d 20 74 61 62 30 0d   + 58 FROM tab0.
8ba0: 0a 2d 2d 2d 2d 0d 0a 34 30 0d 0a 34 30 0d 0a 34  .----..40..40..4
8bb0: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
8bc0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
8bd0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
8be0: 6f 72 74 20 6c 61 62 65 6c 2d 31 38 39 0d 0a 53  ort label-189..S
8bf0: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 31 39 20 2b  ELECT ALL + 19 +
8c00: 20 2b 20 43 41 53 54 20 28 20 2d 20 33 37 20 41   + CAST ( - 37 A
8c10: 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20  S INTEGER ) + + 
8c20: 35 38 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  58 FROM tab0..--
8c30: 2d 2d 0d 0a 34 30 0d 0a 34 30 0d 0a 34 30 0d 0a  --..40..40..40..
8c40: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8c50: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32  t..SELECT - col2
8c60: 20 2a 20 2b 20 31 30 20 46 52 4f 4d 20 74 61 62   * + 10 FROM tab
8c70: 30 20 57 48 45 52 45 20 37 35 20 2b 20 2d 20 63  0 WHERE 75 + - c
8c80: 6f 6c 31 20 42 45 54 57 45 45 4e 20 63 6f 6c 31  ol1 BETWEEN col1
8c90: 20 41 4e 44 20 28 20 2d 20 63 6f 6c 32 20 29 0d   AND ( - col2 ).
8ca0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
8cb0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
8cc0: 20 2d 20 39 38 20 2a 20 39 33 20 2b 20 28 20 2b   - 98 * 93 + ( +
8cd0: 20 35 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52   51 ) AS col2 FR
8ce0: 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45  OM tab2 cor0 WHE
8cf0: 52 45 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57  RE NULL NOT BETW
8d00: 45 45 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e 44  EEN ( NULL ) AND
8d10: 20 31 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c   11..----....onl
8d20: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
8d30: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
8d40: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
8d50: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39  rowsort label-19
8d60: 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  2..SELECT DISTIN
8d70: 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20  CT + CAST( NULL 
8d80: 41 53 20 53 49 47 4e 45 44 20 29 20 2f 20 41 56  AS SIGNED ) / AV
8d90: 47 20 28 20 34 36 20 2a 20 63 6f 6c 32 20 29 20  G ( 46 * col2 ) 
8da0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
8db0: 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30  0 WHERE NOT col0
8dc0: 20 2f 20 2d 20 2b 20 28 20 2d 20 2d 20 63 6f 6c   / - + ( - - col
8dd0: 31 20 29 20 3c 20 2d 20 35 39 20 2b 20 2b 20 63  1 ) < - 59 + + c
8de0: 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ol2..----..NULL.
8df0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
8e00: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
8e10: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
8e20: 74 20 6c 61 62 65 6c 2d 31 39 32 0d 0a 53 45 4c  t label-192..SEL
8e30: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
8e40: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
8e50: 54 45 47 45 52 20 29 20 2f 20 41 56 47 20 28 20  TEGER ) / AVG ( 
8e60: 34 36 20 2a 20 63 6f 6c 32 20 29 20 46 52 4f 4d  46 * col2 ) FROM
8e70: 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
8e80: 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2f 20 2d  ERE NOT col0 / -
8e90: 20 2b 20 28 20 2d 20 2d 20 63 6f 6c 31 20 29 20   + ( - - col1 ) 
8ea0: 3c 20 2d 20 35 39 20 2b 20 2b 20 63 6f 6c 32 0d  < - 59 + + col2.
8eb0: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .----..NULL....q
8ec0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
8ed0: 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
8ee0: 31 20 2b 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 2d  1 + - col2 + - -
8ef0: 20 63 6f 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 31   col1 * + - col1
8f00: 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
8f10: 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  2 cor0..----..-2
8f20: 36 35 32 0d 0a 2d 34 35 35 36 0d 0a 2d 36 30 30  652..-4556..-600
8f30: 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
8f40: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 37  sort..SELECT + 7
8f50: 39 20 2a 20 2b 20 2b 20 63 6f 6c 32 20 2a 20 2d  9 * + + col2 * -
8f60: 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
8f70: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
8f80: 0a 2d 32 37 34 39 39 39 0d 0a 2d 33 36 35 32 39  .-274999..-36529
8f90: 36 0d 0a 2d 37 32 38 30 36 34 0d 0a 0d 0a 71 75  6..-728064....qu
8fa0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
8fb0: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30  ELECT ALL + col0
8fc0: 20 2a 20 2d 20 2b 20 38 39 20 46 52 4f 4d 20 74   * - + 89 FROM t
8fd0: 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
8fe0: 2d 0d 0a 2d 31 33 33 35 0d 0a 2d 37 37 34 33 0d  -..-1335..-7743.
8ff0: 0a 2d 38 36 33 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  .-8633....onlyif
9000: 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
9010: 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
9020: 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
9030: 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 36 0d 0a  sort label-196..
9040: 53 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20 2b  SELECT + CAST( +
9050: 20 2b 20 63 6f 6c 30 20 41 53 20 53 49 47 4e 45   + col0 AS SIGNE
9060: 44 20 29 20 46 52 4f 4d 20 74 61 62 30 20 63 6f  D ) FROM tab0 co
9070: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 37  r0..----..15..87
9080: 0d 0a 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..97....skipif m
9090: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
90a0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
90b0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 39 36  owsort label-196
90c0: 0d 0a 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20  ..SELECT + CAST 
90d0: 28 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20 49 4e  ( + + col0 AS IN
90e0: 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62  TEGER ) FROM tab
90f0: 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  0 cor0..----..15
9100: 0d 0a 38 37 0d 0a 39 37 0d 0a 0d 0a 6f 6e 6c 79  ..87..97....only
9110: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
9120: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
9130: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
9140: 61 62 65 6c 2d 31 39 37 0d 0a 53 45 4c 45 43 54  abel-197..SELECT
9150: 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e   DISTINCT - COUN
9160: 54 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20 2d 20  T( + col1 ) + - 
9170: 36 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  68 AS col1 FROM 
9180: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
9190: 2d 2d 0d 0a 2d 37 31 0d 0a 0d 0a 73 6b 69 70 69  --..-71....skipi
91a0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
91b0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
91c0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
91d0: 31 39 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  197..SELECT DIST
91e0: 49 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2b  INCT - COUNT ( +
91f0: 20 63 6f 6c 31 20 29 20 2b 20 2d 20 36 38 20 41   col1 ) + - 68 A
9200: 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
9210: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
9220: 2d 37 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -71....query I r
9230: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
9240: 4c 4c 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 31 31  LL + col1 + + 11
9250: 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
9260: 0d 0a 31 36 0d 0a 32 35 0d 0a 35 38 0d 0a 0d 0a  ..16..25..58....
9270: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
9280: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
9290: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
92a0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
92b0: 2d 31 39 39 0d 0a 53 45 4c 45 43 54 20 44 49 53  -199..SELECT DIS
92c0: 54 49 4e 43 54 20 41 56 47 20 28 20 41 4c 4c 20  TINCT AVG ( ALL 
92d0: 2d 20 63 6f 6c 31 20 29 20 2d 20 43 41 53 54 28  - col1 ) - CAST(
92e0: 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
92f0: 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  ) FROM tab0..---
9300: 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  -..NULL....skipi
9310: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
9320: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
9330: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9340: 31 39 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  199..SELECT DIST
9350: 49 4e 43 54 20 41 56 47 20 28 20 41 4c 4c 20 2d  INCT AVG ( ALL -
9360: 20 63 6f 6c 31 20 29 20 2d 20 43 41 53 54 20 28   col1 ) - CAST (
9370: 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
9380: 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
9390: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  --..NULL....only
93a0: 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
93b0: 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
93c0: 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
93d0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30 30  owsort label-200
93e0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
93f0: 54 20 2b 20 34 30 20 2b 20 2b 20 2d 20 43 41 53  T + 40 + + - CAS
9400: 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
9410: 44 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  D ) AS col2 FROM
9420: 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab0..----..NUL
9430: 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
9440: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
9450: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
9460: 6f 72 74 20 6c 61 62 65 6c 2d 32 30 30 0d 0a 53  ort label-200..S
9470: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
9480: 20 34 30 20 2b 20 2b 20 2d 20 43 41 53 54 20 28   40 + + - CAST (
9490: 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
94a0: 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
94b0: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab0..----..NULL
94c0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
94d0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 35 36 20 2d  ort..SELECT 56 -
94e0: 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20   - col1 AS col2 
94f0: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
9500: 0a 31 30 33 0d 0a 36 31 0d 0a 37 30 0d 0a 0d 0a  .103..61..70....
9510: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
9520: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
9530: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
9540: 72 74 20 6c 61 62 65 6c 2d 32 30 32 0d 0a 53 45  rt label-202..SE
9550: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
9560: 39 33 20 2d 20 2d 20 2d 20 4d 41 58 28 20 2b 20  93 - - - MAX( + 
9570: 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32  col0 ) FROM tab2
9580: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
9590: 2d 31 36 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -168....skipif m
95a0: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
95b0: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
95c0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 30 32  owsort label-202
95d0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
95e0: 54 20 2d 20 39 33 20 2d 20 2d 20 2d 20 4d 41 58  T - 93 - - - MAX
95f0: 20 28 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d   ( + col0 ) FROM
9600: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
9610: 2d 2d 2d 0d 0a 2d 31 36 38 0d 0a 0d 0a 6f 6e 6c  ---..-168....onl
9620: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
9630: 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
9640: 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
9650: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
9660: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
9670: 32 30 33 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20  203..SELECT - - 
9680: 53 55 4d 28 20 2d 20 43 41 53 54 28 20 4e 55 4c  SUM( - CAST( NUL
9690: 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 29 20  L AS SIGNED ) ) 
96a0: 2b 20 43 4f 55 4e 54 28 20 43 41 53 54 28 20 2b  + COUNT( CAST( +
96b0: 20 32 38 20 41 53 20 53 49 47 4e 45 44 20 29 20   28 AS SIGNED ) 
96c0: 29 20 2d 20 38 31 20 46 52 4f 4d 20 74 61 62 31  ) - 81 FROM tab1
96d0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
96e0: 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
96f0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
9700: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
9710: 6f 72 74 20 6c 61 62 65 6c 2d 32 30 33 0d 0a 53  ort label-203..S
9720: 45 4c 45 43 54 20 2d 20 2d 20 53 55 4d 20 28 20  ELECT - - SUM ( 
9730: 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
9740: 20 49 4e 54 45 47 45 52 20 29 20 29 20 2b 20 43   INTEGER ) ) + C
9750: 4f 55 4e 54 20 28 20 43 41 53 54 20 28 20 2b 20  OUNT ( CAST ( + 
9760: 32 38 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  28 AS INTEGER ) 
9770: 29 20 2d 20 38 31 20 46 52 4f 4d 20 74 61 62 31  ) - 81 FROM tab1
9780: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
9790: 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
97a0: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
97b0: 20 32 35 20 2d 20 2b 20 2d 20 36 34 20 46 52 4f   25 - + - 64 FRO
97c0: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
97d0: 2d 2d 2d 2d 0d 0a 38 39 0d 0a 38 39 0d 0a 38 39  ----..89..89..89
97e0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
97f0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  ort..SELECT - co
9800: 6c 32 20 2b 20 2b 20 63 6f 6c 31 20 2d 20 2b 20  l2 + + col1 - + 
9810: 37 36 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  76 FROM tab2 AS 
9820: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 39 0d  cor0..----..-39.
9830: 0a 2d 34 38 0d 0a 2d 36 37 0d 0a 0d 0a 71 75 65  .-48..-67....que
9840: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
9850: 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
9860: 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
9870: 20 2b 20 37 31 20 2d 20 2b 20 37 37 20 49 53 20   + 71 - + 77 IS 
9880: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
9890: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
98a0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
98b0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
98c0: 20 6c 61 62 65 6c 2d 32 30 37 0d 0a 53 45 4c 45   label-207..SELE
98d0: 43 54 20 41 4c 4c 20 2b 20 53 55 4d 28 20 35 20  CT ALL + SUM( 5 
98e0: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
98f0: 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
9900: 45 20 2b 20 28 20 2b 20 2d 20 31 36 20 29 20 2b  E + ( + - 16 ) +
9910: 20 2b 20 63 6f 6c 30 20 49 4e 20 28 20 2b 20 63   + col0 IN ( + c
9920: 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c  ol2 )..----..NUL
9930: 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
9940: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
9950: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
9960: 6f 72 74 20 6c 61 62 65 6c 2d 32 30 37 0d 0a 53  ort label-207..S
9970: 45 4c 45 43 54 20 41 4c 4c 20 2b 20 53 55 4d 20  ELECT ALL + SUM 
9980: 28 20 35 20 29 20 41 53 20 63 6f 6c 32 20 46 52  ( 5 ) AS col2 FR
9990: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
99a0: 57 48 45 52 45 20 2b 20 28 20 2b 20 2d 20 31 36  WHERE + ( + - 16
99b0: 20 29 20 2b 20 2b 20 63 6f 6c 30 20 49 4e 20 28   ) + + col0 IN (
99c0: 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d   + col2 )..----.
99d0: 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .NULL....onlyif 
99e0: 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
99f0: 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
9a00: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
9a10: 6f 72 74 20 6c 61 62 65 6c 2d 32 30 38 0d 0a 53  ort label-208..S
9a20: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
9a30: 20 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 41 53 20   col2 * col2 AS 
9a40: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57  col2 FROM tab0 W
9a50: 48 45 52 45 20 4e 4f 54 20 43 41 53 54 28 20 63  HERE NOT CAST( c
9a60: 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol2 AS SIGNED ) 
9a70: 2a 20 36 37 20 2a 20 2b 20 63 6f 6c 30 20 49 53  * 67 * + col0 IS
9a80: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30   NULL..----..-10
9a90: 30 0d 0a 2d 32 32 30 39 0d 0a 2d 39 38 30 31 0d  0..-2209..-9801.
9aa0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
9ab0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
9ac0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
9ad0: 74 20 6c 61 62 65 6c 2d 32 30 38 0d 0a 53 45 4c  t label-208..SEL
9ae0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63  ECT DISTINCT - c
9af0: 6f 6c 32 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f  ol2 * col2 AS co
9b00: 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l2 FROM tab0 WHE
9b10: 52 45 20 4e 4f 54 20 43 41 53 54 20 28 20 63 6f  RE NOT CAST ( co
9b20: 6c 32 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  l2 AS INTEGER ) 
9b30: 2a 20 36 37 20 2a 20 2b 20 63 6f 6c 30 20 49 53  * 67 * + col0 IS
9b40: 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30   NULL..----..-10
9b50: 30 0d 0a 2d 32 32 30 39 0d 0a 2d 39 38 30 31 0d  0..-2209..-9801.
9b60: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
9b70: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
9b80: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
9b90: 4f 54 20 28 20 63 6f 6c 31 20 2b 20 34 35 20 4e  OT ( col1 + 45 N
9ba0: 4f 54 20 49 4e 20 28 20 39 20 29 20 29 0d 0a 2d  OT IN ( 9 ) )..-
9bb0: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
9bc0: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
9bd0: 41 4c 4c 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31  ALL col0 AS col1
9be0: 2c 20 28 20 2b 20 31 32 20 29 20 2b 20 63 6f 6c  , ( + 12 ) + col
9bf0: 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
9c00: 2d 0d 0a 35 31 0d 0a 31 30 38 0d 0a 38 35 0d 0a  -..51..108..85..
9c10: 37 31 0d 0a 39 31 0d 0a 38 30 0d 0a 0d 0a 71 75  71..91..80....qu
9c20: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
9c30: 45 4c 45 43 54 20 28 20 2b 20 2d 20 63 6f 6c 30  ELECT ( + - col0
9c40: 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
9c50: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d  tab2..----..-46.
9c60: 0a 2d 36 34 0d 0a 2d 37 35 0d 0a 0d 0a 6f 6e 6c  .-64..-75....onl
9c70: 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
9c80: 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
9c90: 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
9ca0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 31  rowsort label-21
9cb0: 32 0d 0a 53 45 4c 45 43 54 20 2d 20 32 32 20 46  2..SELECT - 22 F
9cc0: 52 4f 4d 20 74 61 62 30 2c 20 74 61 62 32 20 41  ROM tab0, tab2 A
9cd0: 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c  S cor0 WHERE NUL
9ce0: 4c 20 3e 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  L > CAST( NULL A
9cf0: 53 20 53 49 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d  S SIGNED )..----
9d00: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
9d10: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
9d20: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
9d30: 72 74 20 6c 61 62 65 6c 2d 32 31 32 0d 0a 53 45  rt label-212..SE
9d40: 4c 45 43 54 20 2d 20 32 32 20 46 52 4f 4d 20 74  LECT - 22 FROM t
9d50: 61 62 30 2c 20 74 61 62 32 20 41 53 20 63 6f 72  ab0, tab2 AS cor
9d60: 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3e 20 43  0 WHERE NULL > C
9d70: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
9d80: 54 45 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d  TEGER )..----...
9d90: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
9da0: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
9db0: 37 39 2c 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  79, col2 FROM ta
9dc0: 62 30 0d 0a 2d 2d 2d 2d 0d 0a 37 39 0d 0a 31 30  b0..----..79..10
9dd0: 0d 0a 37 39 0d 0a 34 37 0d 0a 37 39 0d 0a 39 39  ..79..47..79..99
9de0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
9df0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
9e00: 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 31 20 2a 20  INCT + - col1 * 
9e10: 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46  - col2 AS col1 F
9e20: 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28  ROM tab1 WHERE (
9e30: 20 2b 20 36 30 20 49 53 20 4e 55 4c 4c 20 29 0d   + 60 IS NULL ).
9e40: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
9e50: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
9e60: 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61  CT ALL * FROM ta
9e70: 62 31 20 57 48 45 52 45 20 28 20 4e 4f 54 20 2d  b1 WHERE ( NOT -
9e80: 20 33 36 20 3d 20 2d 20 63 6f 6c 30 20 29 0d 0a   36 = - col0 )..
9e90: 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
9ea0: 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34  ashing to c6c0a4
9eb0: 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61  111b36d04dbc811a
9ec0: 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75  11e4d54cad....qu
9ed0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
9ee0: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
9ef0: 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
9f00: 52 45 20 2b 20 2b 20 63 6f 6c 30 20 3e 20 2d 20  RE + + col0 > - 
9f10: 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  - col0..----....
9f20: 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
9f30: 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
9f40: 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
9f50: 28 20 2b 20 63 6f 6c 31 20 29 20 2a 20 63 6f 6c  ( + col1 ) * col
9f60: 31 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  1 < NULL..----..
9f70: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
9f80: 72 74 0d 0a 53 45 4c 45 43 54 20 32 32 2c 20 2b  rt..SELECT 22, +
9f90: 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 30 20 41   col2 + + col0 A
9fa0: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
9fb0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
9fc0: 32 32 0d 0a 31 39 36 0d 0a 32 32 0d 0a 36 32 0d  22..196..22..62.
9fd0: 0a 32 32 0d 0a 39 37 0d 0a 0d 0a 71 75 65 72 79  .22..97....query
9fe0: 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
9ff0: 45 43 54 20 2b 20 35 34 20 41 53 20 63 6f 6c 31  ECT + 54 AS col1
a000: 2c 20 38 35 20 41 53 20 63 6f 6c 31 20 46 52 4f  , 85 AS col1 FRO
a010: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
a020: 2d 2d 2d 2d 0d 0a 35 34 0d 0a 38 35 0d 0a 35 34  ----..54..85..54
a030: 0d 0a 38 35 0d 0a 35 34 0d 0a 38 35 0d 0a 0d 0a  ..85..54..85....
a040: 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
a050: 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
a060: 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
a070: 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
a080: 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
a090: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
a0a0: 54 20 2d 20 2b 20 63 6f 6c 30 20 63 6f 6c 32 2c  T - + col0 col2,
a0b0: 20 63 6f 6c 30 20 2a 20 36 38 20 46 52 4f 4d 20   col0 * 68 FROM 
a0c0: 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
a0d0: 0a 2d 34 36 0d 0a 33 31 32 38 0d 0a 2d 36 34 0d  .-46..3128..-64.
a0e0: 0a 34 33 35 32 0d 0a 2d 37 35 0d 0a 35 31 30 30  .4352..-75..5100
a0f0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
a100: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
a110: 33 36 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  36 FROM tab2 WHE
a120: 52 45 20 63 6f 6c 30 20 42 45 54 57 45 45 4e 20  RE col0 BETWEEN 
a130: 63 6f 6c 31 20 41 4e 44 20 28 20 2d 20 63 6f 6c  col1 AND ( - col
a140: 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  1 )..----....ski
a150: 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
a160: 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
a170: 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
a180: 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
a190: 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
a1a0: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
a1b0: 53 54 49 4e 43 54 20 2d 20 38 30 20 2a 20 63 6f  STINCT - 80 * co
a1c0: 6c 32 20 2d 20 2b 20 2b 20 28 20 2b 20 2b 20 63  l2 - + + ( + + c
a1d0: 6f 6c 30 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20  ol0 ) col1 FROM 
a1e0: 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
a1f0: 2d 2d 0d 0a 2d 34 38 30 35 0d 0a 2d 35 35 33 31  --..-4805..-5531
a200: 0d 0a 2d 37 37 33 31 0d 0a 0d 0a 71 75 65 72 79  ..-7731....query
a210: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
a220: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
a230: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
a240: 28 20 63 6f 6c 31 20 2b 20 2d 20 37 31 20 29 20  ( col1 + - 71 ) 
a250: 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
a260: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
a270: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  sort..SELECT - -
a280: 20 33 30 20 2b 20 2d 20 34 37 20 2a 20 2d 20 2b   30 + - 47 * - +
a290: 20 63 6f 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 32   col1 * + - col2
a2a0: 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
a2b0: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
a2c0: 0d 0a 2d 31 34 34 37 33 30 0d 0a 2d 31 38 32 36  ..-144730..-1826
a2d0: 31 32 0d 0a 2d 35 35 31 30 31 0d 0a 0d 0a 71 75  12..-55101....qu
a2e0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
a2f0: 45 4c 45 43 54 20 37 20 41 53 20 63 6f 6c 31 20  ELECT 7 AS col1 
a300: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
a310: 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 32 33  0 WHERE NOT + 23
a320: 20 2a 20 63 6f 6c 31 20 2a 20 2b 20 32 20 2a 20   * col1 * + 2 * 
a330: 2d 20 2b 20 34 35 20 49 4e 20 28 20 2d 20 2d 20  - + 45 IN ( - - 
a340: 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 37 0d  col0 )..----..7.
a350: 0a 37 0d 0a 37 0d 0a 0d 0a 71 75 65 72 79 20 49  .7..7....query I
a360: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
a370: 20 41 4c 4c 20 2d 20 31 38 20 2a 20 2b 20 63 6f   ALL - 18 * + co
a380: 6c 30 20 2a 20 33 34 20 41 53 20 63 6f 6c 32 20  l0 * 34 AS col2 
a390: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
a3a0: 30 20 57 48 45 52 45 20 37 37 20 49 4e 20 28 20  0 WHERE 77 IN ( 
a3b0: 2d 20 2d 20 63 6f 6c 30 2c 20 37 34 20 2b 20 63  - - col0, 74 + c
a3c0: 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ol0 )..----....q
a3d0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
a3e0: 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
a3f0: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
a400: 20 57 48 45 52 45 20 63 6f 6c 31 20 4e 4f 54 20   WHERE col1 NOT 
a410: 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c 31 20 2a  BETWEEN - col1 *
a420: 20 63 6f 6c 31 20 41 4e 44 20 2b 20 63 6f 6c 30   col1 AND + col0
a430: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
a440: 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
a450: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
a460: 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
a470: 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ULL NOT BETWEEN 
a480: 28 20 4e 55 4c 4c 20 29 20 41 4e 44 20 28 20 4e  ( NULL ) AND ( N
a490: 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  ULL )..----....o
a4a0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
a4b0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
a4c0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
a4d0: 74 20 6c 61 62 65 6c 2d 32 32 39 0d 0a 53 45 4c  t label-229..SEL
a4e0: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 32  ECT DISTINCT + 2
a4f0: 30 20 2a 20 2b 20 36 20 2b 20 53 55 4d 28 20 44  0 * + 6 + SUM( D
a500: 49 53 54 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 32  ISTINCT + - col2
a510: 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
a520: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab2..----..-1..
a530: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
a540: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
a550: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
a560: 20 6c 61 62 65 6c 2d 32 32 39 0d 0a 53 45 4c 45   label-229..SELE
a570: 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 32 30  CT DISTINCT + 20
a580: 20 2a 20 2b 20 36 20 2b 20 53 55 4d 20 28 20 44   * + 6 + SUM ( D
a590: 49 53 54 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 32  ISTINCT + - col2
a5a0: 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
a5b0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab2..----..-1..
a5c0: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
a5d0: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
a5e0: 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
a5f0: 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
a600: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
a610: 61 62 65 6c 2d 32 33 30 0d 0a 53 45 4c 45 43 54  abel-230..SELECT
a620: 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e   DISTINCT + COUN
a630: 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46  T( * ) AS col1 F
a640: 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2d  ROM tab2 WHERE -
a650: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
a660: 49 47 4e 45 44 20 29 20 49 53 20 4e 55 4c 4c 0d  IGNED ) IS NULL.
a670: 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70  .----..3....skip
a680: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
a690: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
a6a0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
a6b0: 2d 32 33 30 0d 0a 53 45 4c 45 43 54 20 44 49 53  -230..SELECT DIS
a6c0: 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20  TINCT + COUNT ( 
a6d0: 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  * ) AS col1 FROM
a6e0: 20 74 61 62 32 20 57 48 45 52 45 20 2d 20 43 41   tab2 WHERE - CA
a6f0: 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
a700: 45 47 45 52 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  EGER ) IS NULL..
a710: 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69  ----..3....onlyi
a720: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
a730: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
a740: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
a750: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 31 0d  wsort label-231.
a760: 0a 53 45 4c 45 43 54 20 43 41 53 54 28 20 2d 20  .SELECT CAST( - 
a770: 2b 20 35 39 20 41 53 20 53 49 47 4e 45 44 20 29  + 59 AS SIGNED )
a780: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
a790: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 2d  b2..----..-59..-
a7a0: 35 39 0d 0a 2d 35 39 0d 0a 0d 0a 73 6b 69 70 69  59..-59....skipi
a7b0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
a7c0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
a7d0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
a7e0: 32 33 31 0d 0a 53 45 4c 45 43 54 20 43 41 53 54  231..SELECT CAST
a7f0: 20 28 20 2d 20 2b 20 35 39 20 41 53 20 49 4e 54   ( - + 59 AS INT
a800: 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20 46  EGER ) AS col1 F
a810: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
a820: 2d 35 39 0d 0a 2d 35 39 0d 0a 2d 35 39 0d 0a 0d  -59..-59..-59...
a830: 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
a840: 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
a850: 63 6f 6c 32 20 2b 20 2d 20 34 38 20 2b 20 2d 20  col2 + - 48 + - 
a860: 31 31 2c 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  11, + col1 AS co
a870: 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
a880: 2d 2d 0d 0a 2d 31 30 36 0d 0a 38 31 0d 0a 2d 31  --..-106..81..-1
a890: 35 38 0d 0a 31 0d 0a 2d 36 39 0d 0a 32 31 0d 0a  58..1..-69..21..
a8a0: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
a8b0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
a8c0: 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
a8d0: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
a8e0: 63 6f 6c 32 20 2b 20 63 6f 6c 31 20 3c 3d 20 4e  col2 + col1 <= N
a8f0: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
a900: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
a910: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
a920: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
a930: 6c 61 62 65 6c 2d 32 33 34 0d 0a 53 45 4c 45 43  label-234..SELEC
a940: 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2d 20 2b  T COUNT( * ) - +
a950: 20 36 35 20 46 52 4f 4d 20 74 61 62 31 20 41 53   65 FROM tab1 AS
a960: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 32   cor0..----..-62
a970: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
a980: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
a990: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
a9a0: 72 74 20 6c 61 62 65 6c 2d 32 33 34 0d 0a 53 45  rt label-234..SE
a9b0: 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29  LECT COUNT ( * )
a9c0: 20 2d 20 2b 20 36 35 20 46 52 4f 4d 20 74 61 62   - + 65 FROM tab
a9d0: 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
a9e0: 0a 2d 36 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-62....query II
a9f0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
aa00: 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
aa10: 20 63 6f 72 30 20 57 48 45 52 45 20 32 35 20 2a   cor0 WHERE 25 *
aa20: 20 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d   - col2 IS NULL.
aa30: 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
aa40: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
aa50: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
aa60: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
aa70: 6c 2d 32 33 36 0d 0a 53 45 4c 45 43 54 20 41 4c  l-236..SELECT AL
aa80: 4c 20 2b 20 4d 41 58 28 20 2d 20 63 6f 6c 30 20  L + MAX( - col0 
aa90: 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
aaa0: 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
aab0: 2d 34 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -46....skipif my
aac0: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
aad0: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
aae0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 36 0d  wsort label-236.
aaf0: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 4d 41  .SELECT ALL + MA
ab00: 58 20 28 20 2d 20 63 6f 6c 30 20 29 20 41 53 20  X ( - col0 ) AS 
ab10: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63  col1 FROM tab2 c
ab20: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a  or0..----..-46..
ab30: 0d 0a 71 75 65 72 79 20 49 49 49 49 49 49 20 72  ..query IIIIII r
ab40: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
ab50: 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
ab60: 61 62 32 20 41 53 20 63 6f 72 30 20 4c 45 46 54  ab2 AS cor0 LEFT
ab70: 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f   JOIN tab2 AS co
ab80: 72 31 20 4f 4e 20 4e 55 4c 4c 20 49 53 20 4e 55  r1 ON NULL IS NU
ab90: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35 34 20 76 61 6c  LL..----..54 val
aba0: 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 65  ues hashing to e
abb0: 65 35 31 32 39 62 61 65 35 32 39 33 39 33 35 61  e5129bae5293935a
abc0: 65 35 35 38 65 62 65 39 35 32 39 30 65 32 39 0d  e558ebe95290e29.
abd0: 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
abe0: 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
abf0: 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
ac00: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33 38 0d  wsort label-238.
ac10: 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
ac20: 20 2d 20 4d 49 4e 28 20 2d 20 2d 20 33 38 20 29   - MIN( - - 38 )
ac30: 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
ac40: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
ac50: 0d 0a 2d 33 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-38....skipif 
ac60: 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
ac70: 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
ac80: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 33  rowsort label-23
ac90: 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  8..SELECT DISTIN
aca0: 43 54 20 2d 20 4d 49 4e 20 28 20 2d 20 2d 20 33  CT - MIN ( - - 3
acb0: 38 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  8 ) AS col1 FROM
acc0: 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
acd0: 2d 2d 2d 0d 0a 2d 33 38 0d 0a 0d 0a 71 75 65 72  ---..-38....quer
ace0: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
acf0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
ad00: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
ad10: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  r0 WHERE NOT + c
ad20: 6f 6c 31 20 2a 20 2d 20 28 20 2d 20 63 6f 6c 31  ol1 * - ( - col1
ad30: 20 29 20 2a 20 2b 20 34 37 20 3e 3d 20 63 6f 6c   ) * + 47 >= col
ad40: 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  2..----....query
ad50: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
ad60: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  LECT * FROM tab2
ad70: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
ad80: 4f 54 20 36 32 20 3e 20 2d 20 63 6f 6c 31 0d 0a  OT 62 > - col1..
ad90: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
ada0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
adb0: 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48  T * FROM tab1 WH
adc0: 45 52 45 20 4e 4f 54 20 2b 20 2d 20 63 6f 6c 32  ERE NOT + - col2
add0: 20 3d 20 28 20 2d 20 2d 20 63 6f 6c 31 20 29 0d   = ( - - col1 ).
ade0: 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
adf0: 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61  hashing to c6c0a
ae00: 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31  4111b36d04dbc811
ae10: 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 6f  a11e4d54cad....o
ae20: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
ae30: 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
ae40: 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
ae50: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
ae60: 32 34 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  242..SELECT ALL 
ae70: 39 20 44 49 56 20 37 33 20 46 52 4f 4d 20 74 61  9 DIV 73 FROM ta
ae80: 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  b2..----..0..0..
ae90: 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
aea0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
aeb0: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
aec0: 6f 72 74 20 6c 61 62 65 6c 2d 32 34 32 0d 0a 53  ort label-242..S
aed0: 45 4c 45 43 54 20 41 4c 4c 20 39 20 2f 20 37 33  ELECT ALL 9 / 73
aee0: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
aef0: 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65  ..0..0..0....que
af00: 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
af10: 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20  LECT ALL + col0 
af20: 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
af30: 32 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f  2 WHERE NOT - co
af40: 6c 30 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 31  l0 NOT BETWEEN 1
af50: 37 20 2a 20 63 6f 6c 32 20 2d 20 34 34 20 2d 20  7 * col2 - 44 - 
af60: 2b 20 33 31 20 2b 20 2b 20 63 6f 6c 32 20 2b 20  + 31 + + col2 + 
af70: 2d 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c  - + col0 + + col
af80: 32 20 2a 20 63 6f 6c 31 20 41 4e 44 20 2b 20 28  2 * col1 AND + (
af90: 20 39 36 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   96 )..----....q
afa0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
afb0: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
afc0: 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 2b  tab1 WHERE NOT +
afd0: 20 32 34 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d   24 < NULL..----
afe0: 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
aff0: 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
b000: 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
b010: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 35  owsort label-245
b020: 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 44 49  ..SELECT MAX( DI
b030: 53 54 49 4e 43 54 20 2b 20 2b 20 37 32 20 29 20  STINCT + + 72 ) 
b040: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
b050: 0a 37 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .72....skipif my
b060: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
b070: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
b080: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 35 0d  wsort label-245.
b090: 0a 53 45 4c 45 43 54 20 4d 41 58 20 28 20 44 49  .SELECT MAX ( DI
b0a0: 53 54 49 4e 43 54 20 2b 20 2b 20 37 32 20 29 20  STINCT + + 72 ) 
b0b0: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
b0c0: 0a 37 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .72....onlyif my
b0d0: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
b0e0: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
b0f0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
b100: 74 20 6c 61 62 65 6c 2d 32 34 36 0d 0a 53 45 4c  t label-246..SEL
b110: 45 43 54 20 43 41 53 54 28 20 2d 20 63 6f 6c 31  ECT CAST( - col1
b120: 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d   AS SIGNED ) * -
b130: 20 34 31 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f   41 * + col2 FRO
b140: 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 32  M tab1..----..12
b150: 30 39 35 0d 0a 31 33 31 30 33 36 0d 0a 35 35 31  095..131036..551
b160: 30 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  04....skipif mys
b170: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
b180: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
b190: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 34 36 0d 0a  sort label-246..
b1a0: 53 45 4c 45 43 54 20 43 41 53 54 20 28 20 2d 20  SELECT CAST ( - 
b1b0: 63 6f 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20  col1 AS INTEGER 
b1c0: 29 20 2a 20 2d 20 34 31 20 2a 20 2b 20 63 6f 6c  ) * - 41 * + col
b1d0: 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
b1e0: 2d 0d 0a 31 32 30 39 35 0d 0a 31 33 31 30 33 36  -..12095..131036
b1f0: 0d 0a 35 35 31 30 34 0d 0a 0d 0a 73 6b 69 70 69  ..55104....skipi
b200: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
b210: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
b220: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
b230: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
b240: 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
b250: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31 35 20 2a  ort..SELECT 15 *
b260: 20 2b 20 2d 20 63 6f 6c 30 20 63 6f 6c 32 20 46   + - col0 col2 F
b270: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
b280: 2d 31 31 32 35 0d 0a 2d 36 39 30 0d 0a 2d 39 36  -1125..-690..-96
b290: 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
b2a0: 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
b2b0: 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
b2c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
b2d0: 6c 61 62 65 6c 2d 32 34 38 0d 0a 53 45 4c 45 43  label-248..SELEC
b2e0: 54 20 41 4c 4c 20 2b 20 32 38 20 44 49 56 20 2b  T ALL + 28 DIV +
b2f0: 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
b300: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
b310: 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
b320: 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
b330: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b340: 20 6c 61 62 65 6c 2d 32 34 38 0d 0a 53 45 4c 45   label-248..SELE
b350: 43 54 20 41 4c 4c 20 2b 20 32 38 20 2f 20 2b 20  CT ALL + 28 / + 
b360: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col0 FROM tab2..
b370: 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d  ----..0..0..0...
b380: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
b390: 0d 0a 53 45 4c 45 43 54 20 2d 20 39 35 20 2a 20  ..SELECT - 95 * 
b3a0: 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  - col0 FROM tab0
b3b0: 0d 0a 2d 2d 2d 2d 0d 0a 31 34 32 35 0d 0a 38 32  ..----..1425..82
b3c0: 36 35 0d 0a 39 32 31 35 0d 0a 0d 0a 6f 6e 6c 79  65..9215....only
b3d0: 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
b3e0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
b3f0: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
b400: 61 62 65 6c 2d 32 35 30 0d 0a 53 45 4c 45 43 54  abel-250..SELECT
b410: 20 41 4c 4c 20 28 20 28 20 2d 20 28 20 2d 20 2d   ALL ( ( - ( - -
b420: 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 29 20   COUNT( * ) ) ) 
b430: 29 20 2a 20 2b 20 2b 20 31 39 20 41 53 20 63 6f  ) * + + 19 AS co
b440: 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
b450: 2d 2d 0d 0a 2d 35 37 0d 0a 0d 0a 73 6b 69 70 69  --..-57....skipi
b460: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
b470: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
b480: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
b490: 32 35 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  250..SELECT ALL 
b4a0: 28 20 28 20 2d 20 28 20 2d 20 2d 20 43 4f 55 4e  ( ( - ( - - COUN
b4b0: 54 20 28 20 2a 20 29 20 29 20 29 20 29 20 2a 20  T ( * ) ) ) ) * 
b4c0: 2b 20 2b 20 31 39 20 41 53 20 63 6f 6c 32 20 46  + + 19 AS col2 F
b4d0: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
b4e0: 2d 35 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  -57....query III
b4f0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
b500: 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
b510: 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
b520: 28 20 2d 20 63 6f 6c 31 20 29 20 49 53 20 4e 55  ( - col1 ) IS NU
b530: 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
b540: 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
b550: 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
b560: 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
b570: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
b580: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
b590: 47 4e 45 44 20 74 79 70 65 3a 20 44 49 56 20 66  GNED type: DIV f
b5a0: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
b5b0: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ion: ..query II 
b5c0: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35  rowsort label-25
b5d0: 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  2..SELECT DISTIN
b5e0: 43 54 20 39 34 20 63 6f 6c 31 2c 20 63 6f 6c 30  CT 94 col1, col0
b5f0: 20 44 49 56 20 2d 20 43 41 53 54 28 20 2b 20 34   DIV - CAST( + 4
b600: 32 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20  2 AS SIGNED ) + 
b610: 2d 20 37 32 20 2a 20 2b 20 2d 20 63 6f 6c 32 20  - 72 * + - col2 
b620: 2b 20 2d 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  + - + col2 AS co
b630: 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
b640: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a  cor0..----..94..
b650: 31 36 33 32 0d 0a 39 34 0d 0a 32 38 33 39 0d 0a  1632..94..2839..
b660: 39 34 0d 0a 34 31 31 37 0d 0a 0d 0a 73 6b 69 70  94..4117....skip
b670: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
b680: 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
b690: 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
b6a0: 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
b6b0: 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
b6c0: 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
b6d0: 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ns..query II row
b6e0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 35 32 0d 0a  sort label-252..
b6f0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
b700: 39 34 20 63 6f 6c 31 2c 20 63 6f 6c 30 20 2f 20  94 col1, col0 / 
b710: 2d 20 43 41 53 54 20 28 20 2b 20 34 32 20 41 53  - CAST ( + 42 AS
b720: 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2d 20 37   INTEGER ) + - 7
b730: 32 20 2a 20 2b 20 2d 20 63 6f 6c 32 20 2b 20 2d  2 * + - col2 + -
b740: 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20   + col2 AS col2 
b750: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
b760: 30 0d 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a 31 36 33  0..----..94..163
b770: 32 0d 0a 39 34 0d 0a 32 38 33 39 0d 0a 39 34 0d  2..94..2839..94.
b780: 0a 34 31 31 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .4117....onlyif 
b790: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
b7a0: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
b7b0: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
b7c0: 65 6c 2d 32 35 33 0d 0a 53 45 4c 45 43 54 20 2d  el-253..SELECT -
b7d0: 20 39 36 20 41 53 20 63 6f 6c 30 2c 20 53 55 4d   96 AS col0, SUM
b7e0: 28 20 41 4c 4c 20 2d 20 37 38 20 29 20 2a 20 38  ( ALL - 78 ) * 8
b7f0: 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  0 col0 FROM tab0
b800: 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 36 0d 0a 2d 31 38  ..----..-96..-18
b810: 37 32 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  720....skipif my
b820: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
b830: 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
b840: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
b850: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
b860: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
b870: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
b880: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
b890: 6c 61 62 65 6c 2d 32 35 33 0d 0a 53 45 4c 45 43  label-253..SELEC
b8a0: 54 20 2d 20 39 36 20 41 53 20 63 6f 6c 30 2c 20  T - 96 AS col0, 
b8b0: 53 55 4d 20 28 20 41 4c 4c 20 2d 20 37 38 20 29  SUM ( ALL - 78 )
b8c0: 20 2a 20 38 30 20 63 6f 6c 30 20 46 52 4f 4d 20   * 80 col0 FROM 
b8d0: 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 36 0d  tab0..----..-96.
b8e0: 0a 2d 31 38 37 32 30 0d 0a 0d 0a 71 75 65 72 79  .-18720....query
b8f0: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
b900: 43 54 20 2b 20 39 20 41 53 20 63 6f 6c 30 20 46  CT + 9 AS col0 F
b910: 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e  ROM tab2 WHERE N
b920: 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d  OT NULL IS NULL.
b930: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
b940: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
b950: 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20 41   DISTINCT col0 A
b960: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
b970: 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
b980: 4f 54 20 63 6f 6c 31 20 49 53 20 4e 4f 54 20 4e  OT col1 IS NOT N
b990: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
b9a0: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
b9b0: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
b9c0: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
b9d0: 20 6c 61 62 65 6c 2d 32 35 36 0d 0a 53 45 4c 45   label-256..SELE
b9e0: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f  CT DISTINCT - CO
b9f0: 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  UNT( * ) AS col1
ba00: 2c 20 2d 20 4d 41 58 28 20 63 6f 6c 31 20 29 20  , - MAX( col1 ) 
ba10: 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a  FROM tab2 cor0..
ba20: 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 37 37 0d 0a 0d  ----..-3..-77...
ba30: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
ba40: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
ba50: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
ba60: 20 6c 61 62 65 6c 2d 32 35 36 0d 0a 53 45 4c 45   label-256..SELE
ba70: 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f  CT DISTINCT - CO
ba80: 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
ba90: 31 2c 20 2d 20 4d 41 58 20 28 20 63 6f 6c 31 20  1, - MAX ( col1 
baa0: 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  ) FROM tab2 cor0
bab0: 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 2d 37 37 0d  ..----..-3..-77.
bac0: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
bad0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
bae0: 4e 43 54 20 2b 20 28 20 2d 20 28 20 2b 20 31 33  NCT + ( - ( + 13
baf0: 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   ) ) AS col2 FRO
bb00: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
bb10: 2d 2d 2d 2d 0d 0a 2d 31 33 0d 0a 0d 0a 6f 6e 6c  ----..-13....onl
bb20: 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
bb30: 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
bb40: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
bb50: 6c 61 62 65 6c 2d 32 35 38 0d 0a 53 45 4c 45 43  label-258..SELEC
bb60: 54 20 41 4c 4c 20 4d 41 58 28 20 41 4c 4c 20 2b  T ALL MAX( ALL +
bb70: 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20   col2 ) AS col2 
bb80: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
bb90: 30 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 0d 0a 73  0..----..96....s
bba0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
bbb0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
bbc0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
bbd0: 62 65 6c 2d 32 35 38 0d 0a 53 45 4c 45 43 54 20  bel-258..SELECT 
bbe0: 41 4c 4c 20 4d 41 58 20 28 20 41 4c 4c 20 2b 20  ALL MAX ( ALL + 
bbf0: 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46  col2 ) AS col2 F
bc00: 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
bc10: 0d 0a 2d 2d 2d 2d 0d 0a 39 36 0d 0a 0d 0a 6f 6e  ..----..96....on
bc20: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
bc30: 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
bc40: 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
bc50: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
bc60: 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
bc70: 6c 2d 32 35 39 0d 0a 53 45 4c 45 43 54 20 44 49  l-259..SELECT DI
bc80: 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20  STINCT COUNT( * 
bc90: 29 20 63 6f 6c 30 2c 20 43 41 53 54 28 20 2b 20  ) col0, CAST( + 
bca0: 4d 41 58 28 20 2b 20 43 41 53 54 28 20 2d 20 2d  MAX( + CAST( - -
bcb0: 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
bcc0: 49 47 4e 45 44 20 29 20 41 53 20 53 49 47 4e 45  IGNED ) AS SIGNE
bcd0: 44 20 29 20 29 20 41 53 20 53 49 47 4e 45 44 20  D ) ) AS SIGNED 
bce0: 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
bcf0: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 4e 55  or0..----..3..NU
bd00: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
bd10: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
bd20: 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
bd30: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
bd40: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
bd50: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
bd60: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
bd70: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
bd80: 61 62 65 6c 2d 32 35 39 0d 0a 53 45 4c 45 43 54  abel-259..SELECT
bd90: 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20   DISTINCT COUNT 
bda0: 28 20 2a 20 29 20 63 6f 6c 30 2c 20 43 41 53 54  ( * ) col0, CAST
bdb0: 20 28 20 2b 20 4d 41 58 20 28 20 2b 20 43 41 53   ( + MAX ( + CAS
bdc0: 54 20 28 20 2d 20 2d 20 43 41 53 54 20 28 20 4e  T ( - - CAST ( N
bdd0: 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
bde0: 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
bdf0: 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
be00: 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
be10: 2d 2d 2d 2d 0d 0a 33 0d 0a 4e 55 4c 4c 0d 0a 0d  ----..3..NULL...
be20: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
be30: 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
be40: 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
be50: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
be60: 6c 2d 32 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20  l-260..SELECT - 
be70: 2d 20 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20 2b  - ( + col1 ) + +
be80: 20 63 6f 6c 32 20 44 49 56 20 2d 20 63 6f 6c 32   col2 DIV - col2
be90: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
bea0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
beb0: 0d 0a 30 0d 0a 32 30 0d 0a 38 30 0d 0a 0d 0a 73  ..0..20..80....s
bec0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
bed0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
bee0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
bef0: 62 65 6c 2d 32 36 30 0d 0a 53 45 4c 45 43 54 20  bel-260..SELECT 
bf00: 2d 20 2d 20 28 20 2b 20 63 6f 6c 31 20 29 20 2b  - - ( + col1 ) +
bf10: 20 2b 20 63 6f 6c 32 20 2f 20 2d 20 63 6f 6c 32   + col2 / - col2
bf20: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
bf30: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
bf40: 0d 0a 30 0d 0a 32 30 0d 0a 38 30 0d 0a 0d 0a 6f  ..0..20..80....o
bf50: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
bf60: 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
bf70: 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
bf80: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
bf90: 32 36 31 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  261..SELECT - co
bfa0: 6c 32 20 2b 20 2d 20 43 41 53 54 28 20 2b 20 63  l2 + - CAST( + c
bfb0: 6f 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol1 AS SIGNED ) 
bfc0: 2a 20 2d 20 2d 20 37 33 20 46 52 4f 4d 20 74 61  * - - 73 FROM ta
bfd0: 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 31 38 0d  b1..----..-1118.
bfe0: 0a 2d 33 34 39 39 0d 0a 2d 34 32 34 0d 0a 0d 0a  .-3499..-424....
bff0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
c000: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
c010: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
c020: 61 62 65 6c 2d 32 36 31 0d 0a 53 45 4c 45 43 54  abel-261..SELECT
c030: 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 43 41 53 54   - col2 + - CAST
c040: 20 28 20 2b 20 63 6f 6c 31 20 41 53 20 49 4e 54   ( + col1 AS INT
c050: 45 47 45 52 20 29 20 2a 20 2d 20 2d 20 37 33 20  EGER ) * - - 73 
c060: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
c070: 0a 2d 31 31 31 38 0d 0a 2d 33 34 39 39 0d 0a 2d  .-1118..-3499..-
c080: 34 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  424....query III
c090: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
c0a0: 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45   * FROM tab0 WHE
c0b0: 52 45 20 2d 20 31 39 20 3e 3d 20 37 34 0d 0a 2d  RE - 19 >= 74..-
c0c0: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
c0d0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
c0e0: 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
c0f0: 52 45 20 2b 20 36 31 20 42 45 54 57 45 45 4e 20  RE + 61 BETWEEN 
c100: 2b 20 63 6f 6c 32 20 2a 20 2d 20 28 20 2d 20 63  + col2 * - ( - c
c110: 6f 6c 32 20 29 20 2b 20 2b 20 63 6f 6c 31 20 41  ol2 ) + + col1 A
c120: 4e 44 20 2d 20 37 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  ND - 7..----....
c130: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
c140: 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49  AST syntax: DECI
c150: 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  MAL type: ..quer
c160: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
c170: 6c 2d 32 36 34 0d 0a 53 45 4c 45 43 54 20 33 36  l-264..SELECT 36
c180: 20 2b 20 2d 20 2b 20 43 41 53 54 28 20 4e 55 4c   + - + CAST( NUL
c190: 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20 2a  L AS DECIMAL ) *
c1a0: 20 2d 20 34 32 20 41 53 20 63 6f 6c 31 20 46 52   - 42 AS col1 FR
c1b0: 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
c1c0: 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
c1d0: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
c1e0: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
c1f0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
c200: 74 20 6c 61 62 65 6c 2d 32 36 34 0d 0a 53 45 4c  t label-264..SEL
c210: 45 43 54 20 33 36 20 2b 20 2d 20 2b 20 43 41 53  ECT 36 + - + CAS
c220: 54 20 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c  T ( NULL AS REAL
c230: 20 29 20 2a 20 2d 20 34 32 20 41 53 20 63 6f 6c   ) * - 42 AS col
c240: 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
c250: 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
c260: 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
c270: 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
c280: 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
c290: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
c2a0: 32 36 35 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  265..SELECT + CO
c2b0: 55 4e 54 28 20 2b 20 2d 20 35 32 20 29 20 2b 20  UNT( + - 52 ) + 
c2c0: 41 56 47 20 28 20 41 4c 4c 20 33 37 20 29 20 2b  AVG ( ALL 37 ) +
c2d0: 20 2d 20 4d 49 4e 28 20 63 6f 6c 30 20 29 20 63   - MIN( col0 ) c
c2e0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol1 FROM tab2 WH
c2f0: 45 52 45 20 2d 20 35 37 20 49 53 20 4e 55 4c 4c  ERE - 57 IS NULL
c300: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
c310: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
c320: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
c330: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
c340: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
c350: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
c360: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
c370: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
c380: 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36  rowsort label-26
c390: 35 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e  5..SELECT + COUN
c3a0: 54 20 28 20 2b 20 2d 20 35 32 20 29 20 2b 20 41  T ( + - 52 ) + A
c3b0: 56 47 20 28 20 41 4c 4c 20 33 37 20 29 20 2b 20  VG ( ALL 37 ) + 
c3c0: 2d 20 4d 49 4e 20 28 20 63 6f 6c 30 20 29 20 63  - MIN ( col0 ) c
c3d0: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol1 FROM tab2 WH
c3e0: 45 52 45 20 2d 20 35 37 20 49 53 20 4e 55 4c 4c  ERE - 57 IS NULL
c3f0: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
c400: 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
c410: 0d 0a 53 45 4c 45 43 54 20 36 39 20 41 53 20 63  ..SELECT 69 AS c
c420: 6f 6c 31 2c 20 63 6f 6c 32 20 2a 20 39 20 2a 20  ol1, col2 * 9 * 
c430: 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f  col1 AS col0 FRO
c440: 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b 20 63  M tab2 WHERE + c
c450: 6f 6c 31 20 2d 20 2b 20 2d 20 63 6f 6c 30 20 49  ol1 - + - col0 I
c460: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
c470: 0d 0a 36 39 0d 0a 31 30 35 35 37 0d 0a 36 39 0d  ..69..10557..69.
c480: 0a 32 37 37 32 30 0d 0a 36 39 0d 0a 33 34 39 37  .27720..69..3497
c490: 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  4....onlyif mysq
c4a0: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
c4b0: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
c4c0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
c4d0: 6c 61 62 65 6c 2d 32 36 37 0d 0a 53 45 4c 45 43  label-267..SELEC
c4e0: 54 20 41 4c 4c 20 63 6f 6c 32 20 46 52 4f 4d 20  T ALL col2 FROM 
c4f0: 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab0 WHERE NOT N
c500: 55 4c 4c 20 42 45 54 57 45 45 4e 20 2d 20 63 6f  ULL BETWEEN - co
c510: 6c 31 20 41 4e 44 20 43 41 53 54 28 20 4e 55 4c  l1 AND CAST( NUL
c520: 4c 20 41 53 20 53 49 47 4e 45 44 20 29 0d 0a 2d  L AS SIGNED )..-
c530: 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ---....skipif my
c540: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
c550: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
c560: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 37 0d  wsort label-267.
c570: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32  .SELECT ALL col2
c580: 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
c590: 20 4e 4f 54 20 4e 55 4c 4c 20 42 45 54 57 45 45   NOT NULL BETWEE
c5a0: 4e 20 2d 20 63 6f 6c 31 20 41 4e 44 20 43 41 53  N - col1 AND CAS
c5b0: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
c5c0: 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f  GER )..----....o
c5d0: 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
c5e0: 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
c5f0: 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
c600: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
c610: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
c620: 6c 2d 32 36 38 0d 0a 53 45 4c 45 43 54 20 41 4c  l-268..SELECT AL
c630: 4c 20 28 20 2d 20 43 41 53 54 28 20 2b 20 43 4f  L ( - CAST( + CO
c640: 55 4e 54 28 20 2a 20 29 20 41 53 20 53 49 47 4e  UNT( * ) AS SIGN
c650: 45 44 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46  ED ) ) AS col0 F
c660: 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
c670: 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b  ..----..-3....sk
c680: 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
c690: 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
c6a0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
c6b0: 65 6c 2d 32 36 38 0d 0a 53 45 4c 45 43 54 20 41  el-268..SELECT A
c6c0: 4c 4c 20 28 20 2d 20 43 41 53 54 20 28 20 2b 20  LL ( - CAST ( + 
c6d0: 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 49  COUNT ( * ) AS I
c6e0: 4e 54 45 47 45 52 20 29 20 29 20 41 53 20 63 6f  NTEGER ) ) AS co
c6f0: 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
c700: 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  cor0..----..-3..
c710: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
c720: 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
c730: 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
c740: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 36 39 0d 0a  sort label-269..
c750: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
c760: 43 4f 55 4e 54 28 20 2b 20 63 6f 6c 32 20 29 20  COUNT( + col2 ) 
c770: 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
c780: 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
c790: 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .3....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 39 0d 0a  sort label-269..
c7d0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
c7e0: 43 4f 55 4e 54 20 28 20 2b 20 63 6f 6c 32 20 29  COUNT ( + col2 )
c7f0: 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
c800: 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
c810: 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ..3....onlyif my
c820: 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
c830: 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
c840: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
c850: 74 20 6c 61 62 65 6c 2d 32 37 30 0d 0a 53 45 4c  t label-270..SEL
c860: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 28  ECT DISTINCT + (
c870: 20 63 6f 6c 32 20 29 20 2d 20 2b 20 2d 20 43 41   col2 ) - + - CA
c880: 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
c890: 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  ED ) FROM tab2 A
c8a0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
c8b0: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
c8c0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
c8d0: 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
c8e0: 73 6f 72 74 20 6c 61 62 65 6c 2d 32 37 30 0d 0a  sort label-270..
c8f0: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
c900: 2b 20 28 20 63 6f 6c 32 20 29 20 2d 20 2b 20 2d  + ( col2 ) - + -
c910: 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
c920: 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74  INTEGER ) FROM t
c930: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
c940: 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
c950: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
c960: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
c970: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
c980: 62 65 6c 2d 32 37 31 0d 0a 53 45 4c 45 43 54 20  bel-271..SELECT 
c990: 41 4c 4c 20 2b 20 33 30 20 2a 20 43 4f 55 4e 54  ALL + 30 * COUNT
c9a0: 28 20 2a 20 29 20 2b 20 2d 20 36 33 20 46 52 4f  ( * ) + - 63 FRO
c9b0: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
c9c0: 2d 2d 2d 2d 0d 0a 32 37 0d 0a 0d 0a 73 6b 69 70  ----..27....skip
c9d0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
c9e0: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
c9f0: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
ca00: 2d 32 37 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -271..SELECT ALL
ca10: 20 2b 20 33 30 20 2a 20 43 4f 55 4e 54 20 28 20   + 30 * COUNT ( 
ca20: 2a 20 29 20 2b 20 2d 20 36 33 20 46 52 4f 4d 20  * ) + - 63 FROM 
ca30: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
ca40: 2d 2d 0d 0a 32 37 0d 0a 0d 0a 71 75 65 72 79 20  --..27....query 
ca50: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
ca60: 43 54 20 2b 20 31 39 20 2a 20 2d 20 2d 20 63 6f  CT + 19 * - - co
ca70: 6c 32 2c 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  l2, + col1 FROM 
ca80: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
ca90: 2d 2d 0d 0a 31 31 30 32 0d 0a 36 37 0d 0a 34 33  --..1102..67..43
caa0: 37 0d 0a 35 31 0d 0a 37 36 30 0d 0a 37 37 0d 0a  7..51..760..77..
cab0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
cac0: 74 0d 0a 53 45 4c 45 43 54 20 2d 20 34 32 20 41  t..SELECT - 42 A
cad0: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
cae0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32   cor0..----..-42
caf0: 0d 0a 2d 34 32 0d 0a 2d 34 32 0d 0a 0d 0a 71 75  ..-42..-42....qu
cb00: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
cb10: 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2a 20 2d  ELECT - col1 * -
cb20: 20 34 35 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 2d   45 + + col0 * -
cb30: 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
cb40: 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  2 cor0..----..-1
cb50: 33 33 35 0d 0a 31 32 33 37 0d 0a 39 30 35 0d 0a  335..1237..905..
cb60: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
cb70: 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72   DIV for integer
cb80: 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65   division: ..que
cb90: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
cba0: 65 6c 2d 32 37 35 0d 0a 53 45 4c 45 43 54 20 39  el-275..SELECT 9
cbb0: 30 20 44 49 56 20 63 6f 6c 31 20 46 52 4f 4d 20  0 DIV col1 FROM 
cbc0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
cbd0: 2d 2d 0d 0a 31 0d 0a 34 0d 0a 39 30 0d 0a 0d 0a  --..1..4..90....
cbe0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
cbf0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
cc00: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
cc10: 61 62 65 6c 2d 32 37 35 0d 0a 53 45 4c 45 43 54  abel-275..SELECT
cc20: 20 39 30 20 2f 20 63 6f 6c 31 20 46 52 4f 4d 20   90 / col1 FROM 
cc30: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
cc40: 2d 2d 0d 0a 31 0d 0a 34 0d 0a 39 30 0d 0a 0d 0a  --..1..4..90....
cc50: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
cc60: 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
cc70: 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
cc80: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
cc90: 2d 32 37 36 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -276..SELECT - C
cca0: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
ccb0: 4e 45 44 20 29 20 2d 20 2d 20 63 6f 6c 31 20 46  NED ) - - col1 F
ccc0: 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
ccd0: 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
cce0: 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  LL..NULL....skip
ccf0: 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
cd00: 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
cd10: 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
cd20: 2d 32 37 36 0d 0a 53 45 4c 45 43 54 20 2d 20 43  -276..SELECT - C
cd30: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
cd40: 54 45 47 45 52 20 29 20 2d 20 2d 20 63 6f 6c 31  TEGER ) - - col1
cd50: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
cd60: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
cd70: 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  NULL..NULL....qu
cd80: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
cd90: 53 45 4c 45 43 54 20 2b 20 32 32 20 41 53 20 63  SELECT + 22 AS c
cda0: 6f 6c 31 2c 20 2d 20 31 32 20 46 52 4f 4d 20 74  ol1, - 12 FROM t
cdb0: 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab0 AS cor0 CROS
cdc0: 53 20 4a 4f 49 4e 20 74 61 62 32 20 63 6f 72 31  S JOIN tab2 cor1
cdd0: 0d 0a 2d 2d 2d 2d 0d 0a 31 38 20 76 61 6c 75 65  ..----..18 value
cde0: 73 20 68 61 73 68 69 6e 67 20 74 6f 20 36 61 30  s hashing to 6a0
cdf0: 37 63 30 61 34 65 65 31 65 34 35 61 64 36 62 66  7c0a4ee1e45ad6bf
ce00: 63 62 64 62 34 63 37 62 30 37 37 64 65 0d 0a 0d  cbdb4c7b077de...
ce10: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
ce20: 0d 0a 53 45 4c 45 43 54 20 2b 20 39 31 20 2a 20  ..SELECT + 91 * 
ce30: 2b 20 2d 20 63 6f 6c 31 20 2a 20 38 35 20 41 53  + - col1 * 85 AS
ce40: 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
ce50: 57 48 45 52 45 20 28 20 2b 20 63 6f 6c 31 20 2a  WHERE ( + col1 *
ce60: 20 2b 20 28 20 63 6f 6c 31 20 29 20 2b 20 2d 20   + ( col1 ) + - 
ce70: 31 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  1 ) IS NULL..---
ce80: 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  -....query III r
ce90: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
cea0: 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
ceb0: 20 2b 20 63 6f 6c 32 20 2f 20 2d 20 36 33 20 49   + col2 / - 63 I
cec0: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
ced0: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
cee0: 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33  ng to 75c998aa53
cef0: 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36  ac83218cbf2feb96
cf00: 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20  2d0a49....query 
cf10: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
cf20: 54 20 41 4c 4c 20 2d 20 38 38 20 41 53 20 63 6f  T ALL - 88 AS co
cf30: 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  l2 FROM tab2 WHE
cf40: 52 45 20 35 33 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d  RE 53 < NULL..--
cf50: 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
cf60: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
cf70: 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
cf80: 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
cf90: 52 45 20 2d 20 63 6f 6c 32 20 4e 4f 54 20 49 4e  RE - col2 NOT IN
cfa0: 20 28 20 2b 20 63 6f 6c 32 20 2f 20 2d 20 2b 20   ( + col2 / - + 
cfb0: 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 32 20 2b 20  col2 * + col2 + 
cfc0: 2b 20 36 38 2c 20 32 38 2c 20 2b 20 63 6f 6c 32  + 68, 28, + col2
cfd0: 20 2b 20 2b 20 2b 20 37 38 20 29 0d 0a 2d 2d 2d   + + + 78 )..---
cfe0: 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
cff0: 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31  ing to c6c0a4111
d000: 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65  b36d04dbc811a11e
d010: 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79  4d54cad....query
d020: 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
d030: 43 54 20 39 39 20 41 53 20 63 6f 6c 31 20 46 52  CT 99 AS col1 FR
d040: 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
d050: 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49  WHERE NOT NULL I
d060: 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
d070: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
d080: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
d090: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
d0a0: 72 74 20 6c 61 62 65 6c 2d 32 38 33 0d 0a 53 45  rt label-283..SE
d0b0: 4c 45 43 54 20 2b 20 53 55 4d 28 20 41 4c 4c 20  LECT + SUM( ALL 
d0c0: 28 20 2b 20 2b 20 63 6f 6c 30 20 29 20 29 20 41  ( + + col0 ) ) A
d0d0: 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
d0e0: 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
d0f0: 31 38 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  185....skipif my
d100: 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
d110: 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
d120: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 32 38 33 0d  wsort label-283.
d130: 0a 53 45 4c 45 43 54 20 2b 20 53 55 4d 20 28 20  .SELECT + SUM ( 
d140: 41 4c 4c 20 28 20 2b 20 2b 20 63 6f 6c 30 20 29  ALL ( + + col0 )
d150: 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
d160: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
d170: 2d 2d 0d 0a 31 38 35 0d 0a 0d 0a 71 75 65 72 79  --..185....query
d180: 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
d190: 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
d1a0: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
d1b0: 63 6f 6c 32 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d  col2 = NULL..---
d1c0: 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  -....skipif post
d1d0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
d1e0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
d1f0: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
d200: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
d210: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
d220: 53 45 4c 45 43 54 20 2d 20 2d 20 63 6f 6c 30 20  SELECT - - col0 
d230: 63 6f 6c 30 2c 20 63 6f 6c 32 20 46 52 4f 4d 20  col0, col2 FROM 
d240: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
d250: 2d 2d 0d 0a 31 35 0d 0a 34 37 0d 0a 38 37 0d 0a  --..15..47..87..
d260: 31 30 0d 0a 39 37 0d 0a 39 39 0d 0a 0d 0a 73 6b  10..97..99....sk
d270: 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
d280: 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
d290: 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
d2a0: 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
d2b0: 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
d2c0: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
d2d0: 20 2b 20 34 32 20 63 6f 6c 32 20 46 52 4f 4d 20   + 42 col2 FROM 
d2e0: 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
d2f0: 0a 34 32 0d 0a 34 32 0d 0a 34 32 0d 0a 0d 0a 73  .42..42..42....s
d300: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
d310: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
d320: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
d330: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
d340: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
d350: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
d360: 20 2d 20 63 6f 6c 30 2c 20 63 6f 6c 31 20 2a 20   - col0, col1 * 
d370: 2d 20 2d 20 31 39 20 2b 20 2b 20 63 6f 6c 32 20  - - 19 + + col2 
d380: 2a 20 36 33 20 2b 20 2b 20 2b 20 63 6f 6c 32 20  * 63 + + + col2 
d390: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41  col2 FROM tab1 A
d3a0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  S cor0..----..-5
d3b0: 31 0d 0a 36 34 31 30 0d 0a 2d 38 35 0d 0a 33 38  1..6410..-85..38
d3c0: 37 31 0d 0a 2d 39 31 0d 0a 35 32 34 35 0d 0a 0d  71..-91..5245...
d3d0: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
d3e0: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
d3f0: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
d400: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
d410: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
d420: 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
d430: 43 54 20 63 6f 6c 30 20 63 6f 6c 31 2c 20 32 39  CT col0 col1, 29
d440: 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20   + col0 AS col1 
d450: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
d460: 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 37 35 0d  0..----..46..75.
d470: 0a 36 34 0d 0a 39 33 0d 0a 37 35 0d 0a 31 30 34  .64..93..75..104
d480: 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
d490: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
d4a0: 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  L * FROM tab0 AS
d4b0: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
d4c0: 20 3c 3d 20 63 6f 6c 31 20 2b 20 2b 20 32 39 0d   <= col1 + + 29.
d4d0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
d4e0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
d4f0: 54 20 2b 20 2b 20 63 6f 6c 31 2c 20 2d 20 28 20  T + + col1, - ( 
d500: 63 6f 6c 30 20 29 20 2a 20 2d 20 2b 20 63 6f 6c  col0 ) * - + col
d510: 31 20 2d 20 2d 20 2b 20 38 32 20 46 52 4f 4d 20  1 - - + 82 FROM 
d520: 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
d530: 2d 2d 0d 0a 35 31 0d 0a 32 34 32 38 0d 0a 36 37  --..51..2428..67
d540: 0d 0a 35 31 30 37 0d 0a 37 37 0d 0a 35 30 31 30  ..5107..77..5010
d550: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
d560: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
d570: 49 4e 43 54 20 2d 20 2d 20 39 30 20 2a 20 63 6f  INCT - - 90 * co
d580: 6c 32 20 2b 20 2b 20 2b 20 33 31 20 41 53 20 63  l2 + + + 31 AS c
d590: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
d5a0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 33 34   cor0..----..534
d5b0: 31 0d 0a 36 31 35 31 0d 0a 38 36 37 31 0d 0a 0d  1..6151..8671...
d5c0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
d5d0: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
d5e0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53  regate syntax: S
d5f0: 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
d600: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
d610: 62 65 6c 2d 32 39 32 0d 0a 53 45 4c 45 43 54 20  bel-292..SELECT 
d620: 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ALL - COUNT( * )
d630: 20 2f 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   / - CAST( NULL 
d640: 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f 6c 32  AS SIGNED ) col2
d650: 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
d660: 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
d670: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
d680: 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
d690: 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
d6a0: 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
d6b0: 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
d6c0: 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
d6d0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
d6e0: 74 20 6c 61 62 65 6c 2d 32 39 32 0d 0a 53 45 4c  t label-292..SEL
d6f0: 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 20  ECT ALL - COUNT 
d700: 28 20 2a 20 29 20 2f 20 2d 20 43 41 53 54 20 28  ( * ) / - CAST (
d710: 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
d720: 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   ) col2 FROM tab
d730: 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
d740: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
d750: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
d760: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
d770: 6f 72 74 20 6c 61 62 65 6c 2d 32 39 33 0d 0a 53  ort label-293..S
d780: 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
d790: 20 2a 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20   * ( - COUNT( * 
d7a0: 29 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ) ) FROM tab2..-
d7b0: 2d 2d 2d 0d 0a 2d 39 0d 0a 0d 0a 73 6b 69 70 69  ---..-9....skipi
d7c0: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
d7d0: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
d7e0: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
d7f0: 32 39 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  293..SELECT COUN
d800: 54 20 28 20 2a 20 29 20 2a 20 28 20 2d 20 43 4f  T ( * ) * ( - CO
d810: 55 4e 54 20 28 20 2a 20 29 20 29 20 46 52 4f 4d  UNT ( * ) ) FROM
d820: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 0d   tab2..----..-9.
d830: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
d840: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
d850: 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
d860: 4f 54 20 2b 20 37 35 20 2b 20 2d 20 37 34 20 49  OT + 75 + - 74 I
d870: 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  S NULL..----..9 
d880: 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
d890: 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65  o c4b42765dff94e
d8a0: 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33  aaa46040e537fb43
d8b0: 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  b7....onlyif mys
d8c0: 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
d8d0: 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
d8e0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
d8f0: 20 6c 61 62 65 6c 2d 32 39 35 0d 0a 53 45 4c 45   label-295..SELE
d900: 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 44 49  CT ALL - col2 DI
d910: 56 20 2b 20 2b 20 28 20 2d 20 35 30 20 29 20 46  V + + ( - 50 ) F
d920: 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
d930: 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69  1..1..1....skipi
d940: 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
d950: 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
d960: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
d970: 32 39 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  295..SELECT ALL 
d980: 2d 20 63 6f 6c 32 20 2f 20 2b 20 2b 20 28 20 2d  - col2 / + + ( -
d990: 20 35 30 20 29 20 46 52 4f 4d 20 74 61 62 31 0d   50 ) FROM tab1.
d9a0: 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a  .----..1..1..1..
d9b0: 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
d9c0: 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
d9d0: 4e 43 54 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63  NCT - col1 * + c
d9e0: 6f 6c 32 20 41 53 20 63 6f 6c 30 2c 20 2b 20 35  ol2 AS col0, + 5
d9f0: 34 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  4 FROM tab2..---
da00: 2d 0d 0a 2d 31 31 37 33 0d 0a 35 34 0d 0a 2d 33  -..-1173..54..-3
da10: 30 38 30 0d 0a 35 34 0d 0a 2d 33 38 38 36 0d 0a  080..54..-3886..
da20: 35 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  54....onlyif mys
da30: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
da40: 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  : aggregate synt
da50: 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
da60: 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
da70: 6f 72 74 20 6c 61 62 65 6c 2d 32 39 37 0d 0a 53  ort label-297..S
da80: 45 4c 45 43 54 20 43 41 53 54 28 20 2d 20 43 41  ELECT CAST( - CA
da90: 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
daa0: 45 44 20 29 20 41 53 20 53 49 47 4e 45 44 20 29  ED ) AS SIGNED )
dab0: 20 41 53 20 63 6f 6c 31 2c 20 2d 20 28 20 2b 20   AS col1, - ( + 
dac0: 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 2a  - COUNT( * ) ) *
dad0: 20 2b 20 39 39 20 2d 20 2b 20 43 4f 55 4e 54 28   + 99 - + COUNT(
dae0: 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   * ) AS col1 FRO
daf0: 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
db00: 2d 0d 0a 4e 55 4c 4c 0d 0a 32 39 34 0d 0a 0d 0a  -..NULL..294....
db10: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
db20: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
db30: 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
db40: 6c 61 62 65 6c 2d 32 39 37 0d 0a 53 45 4c 45 43  label-297..SELEC
db50: 54 20 43 41 53 54 20 28 20 2d 20 43 41 53 54 20  T CAST ( - CAST 
db60: 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
db70: 52 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29  R ) AS INTEGER )
db80: 20 41 53 20 63 6f 6c 31 2c 20 2d 20 28 20 2b 20   AS col1, - ( + 
db90: 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20  - COUNT ( * ) ) 
dba0: 2a 20 2b 20 39 39 20 2d 20 2b 20 43 4f 55 4e 54  * + 99 - + COUNT
dbb0: 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46   ( * ) AS col1 F
dbc0: 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
dbd0: 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 32 39 34 0d 0a  ---..NULL..294..
dbe0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
dbf0: 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
dc00: 43 54 20 2b 20 31 31 20 2a 20 2d 20 63 6f 6c 32  CT + 11 * - col2
dc10: 20 2b 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c   + - col2 AS col
dc20: 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  2 FROM tab1..---
dc30: 2d 0d 0a 2d 31 31 35 32 0d 0a 2d 37 30 38 0d 0a  -..-1152..-708..
dc40: 2d 38 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -816....query I 
dc50: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
dc60: 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 31 20 2a 20  col0 * - col1 * 
dc70: 28 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  ( col1 ) FROM ta
dc80: 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63  b0 WHERE NOT - c
dc90: 6f 6c 31 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol1 IS NOT NULL.
dca0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
dcb0: 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
dcc0: 20 2d 20 2d 20 38 39 20 46 52 4f 4d 20 74 61 62   - - 89 FROM tab
dcd0: 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  1 AS cor0 CROSS 
dce0: 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72  JOIN tab2 AS cor
dcf0: 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  1..----..9 value
dd00: 73 20 68 61 73 68 69 6e 67 20 74 6f 20 35 63 38  s hashing to 5c8
dd10: 34 32 38 65 39 66 31 65 37 64 65 33 64 30 39 63  428e9f1e7de3d09c
dd20: 62 30 38 31 34 62 34 63 63 31 37 34 33 0d 0a 0d  b0814b4cc1743...
dd30: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
dd40: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
dd50: 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
dd60: 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
dd70: 65 6c 2d 33 30 31 0d 0a 53 45 4c 45 43 54 20 44  el-301..SELECT D
dd80: 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 28 20  ISTINCT + CAST( 
dd90: 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
dda0: 20 2a 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32   * col0 * - col2
ddb0: 20 63 6f 6c 32 2c 20 2d 20 39 20 46 52 4f 4d 20   col2, - 9 FROM 
ddc0: 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
ddd0: 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 2d 39 0d 0a 0d 0a  --..NULL..-9....
dde0: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
ddf0: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
de00: 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
de10: 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
de20: 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
de30: 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
de40: 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
de50: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
de60: 30 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  01..SELECT DISTI
de70: 4e 43 54 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  NCT + CAST ( NUL
de80: 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a  L AS INTEGER ) *
de90: 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 63   col0 * - col2 c
dea0: 6f 6c 32 2c 20 2d 20 39 20 46 52 4f 4d 20 74 61  ol2, - 9 FROM ta
deb0: 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
dec0: 0d 0a 4e 55 4c 4c 0d 0a 2d 39 0d 0a 0d 0a 6f 6e  ..NULL..-9....on
ded0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
dee0: 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
def0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
df00: 20 6c 61 62 65 6c 2d 33 30 32 0d 0a 53 45 4c 45   label-302..SELE
df10: 43 54 20 41 4c 4c 20 38 35 20 2a 20 43 4f 55 4e  CT ALL 85 * COUN
df20: 54 28 20 2a 20 29 20 2a 20 2b 20 2b 20 43 4f 55  T( * ) * + + COU
df30: 4e 54 28 20 2d 20 63 6f 6c 31 20 29 20 41 53 20  NT( - col1 ) AS 
df40: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
df50: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 36  S cor0..----..76
df60: 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  5....skipif mysq
df70: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
df80: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
df90: 6f 72 74 20 6c 61 62 65 6c 2d 33 30 32 0d 0a 53  ort label-302..S
dfa0: 45 4c 45 43 54 20 41 4c 4c 20 38 35 20 2a 20 43  ELECT ALL 85 * C
dfb0: 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 2b  OUNT ( * ) * + +
dfc0: 20 43 4f 55 4e 54 20 28 20 2d 20 63 6f 6c 31 20   COUNT ( - col1 
dfd0: 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
dfe0: 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
dff0: 2d 0d 0a 37 36 35 0d 0a 0d 0a 71 75 65 72 79 20  -..765....query 
e000: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
e010: 54 20 2d 20 35 33 20 2b 20 2b 20 63 6f 6c 31 20  T - 53 + + col1 
e020: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
e030: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 0d 0a 31 34 0d  0..----..-2..14.
e040: 0a 32 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .24....query I r
e050: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32  owsort..SELECT 2
e060: 32 20 2b 20 2b 20 32 37 20 2b 20 2d 20 2d 20 28  2 + + 27 + - - (
e070: 20 2d 20 63 6f 6c 32 20 29 20 2a 20 63 6f 6c 30   - col2 ) * col0
e080: 20 2a 20 2d 20 2d 20 63 6f 6c 31 20 41 53 20 63   * - - col1 AS c
e090: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
e0a0: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38   cor0..----..-18
e0b0: 32 32 31 0d 0a 2d 35 37 30 35 36 0d 0a 2d 39 35  221..-57056..-95
e0c0: 35 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  54....onlyif mys
e0d0: 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
e0e0: 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
e0f0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
e100: 20 6c 61 62 65 6c 2d 33 30 35 0d 0a 53 45 4c 45   label-305..SELE
e110: 43 54 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 63 6f  CT - col2 * + co
e120: 6c 31 20 2a 20 43 41 53 54 28 20 4e 55 4c 4c 20  l1 * CAST( NULL 
e130: 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
e140: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
e150: 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   cor0..----..NUL
e160: 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d  L..NULL..NULL...
e170: 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
e180: 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
e190: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
e1a0: 6c 61 62 65 6c 2d 33 30 35 0d 0a 53 45 4c 45 43  label-305..SELEC
e1b0: 54 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c  T - col2 * + col
e1c0: 31 20 2a 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  1 * CAST ( NULL 
e1d0: 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
e1e0: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
e1f0: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  S cor0..----..NU
e200: 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
e210: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
e220: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
e230: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
e240: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
e250: 61 62 65 6c 2d 33 30 36 0d 0a 53 45 4c 45 43 54  abel-306..SELECT
e260: 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
e270: 63 6f 72 30 20 57 48 45 52 45 20 28 20 2b 20 43  cor0 WHERE ( + C
e280: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
e290: 4e 45 44 20 29 20 29 20 4e 4f 54 20 42 45 54 57  NED ) ) NOT BETW
e2a0: 45 45 4e 20 63 6f 6c 31 20 41 4e 44 20 2d 20 2d  EEN col1 AND - -
e2b0: 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73   col0..----....s
e2c0: 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
e2d0: 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
e2e0: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
e2f0: 6c 61 62 65 6c 2d 33 30 36 0d 0a 53 45 4c 45 43  label-306..SELEC
e300: 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53  T * FROM tab2 AS
e310: 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 2b 20   cor0 WHERE ( + 
e320: 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
e330: 4e 54 45 47 45 52 20 29 20 29 20 4e 4f 54 20 42  NTEGER ) ) NOT B
e340: 45 54 57 45 45 4e 20 63 6f 6c 31 20 41 4e 44 20  ETWEEN col1 AND 
e350: 2d 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  - - col0..----..
e360: 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
e370: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
e380: 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
e390: 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c  or0 WHERE NULL <
e3a0: 3e 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 33 30 0d  > - col0 + + 30.
e3b0: 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
e3c0: 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
e3d0: 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
e3e0: 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
e3f0: 6c 2d 33 30 38 0d 0a 53 45 4c 45 43 54 20 44 49  l-308..SELECT DI
e400: 53 54 49 4e 43 54 20 43 4f 55 4e 54 28 20 2a 20  STINCT COUNT( * 
e410: 29 20 2b 20 2d 20 39 37 20 2a 20 2d 20 31 30 20  ) + - 97 * - 10 
e420: 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
e430: 0a 39 37 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .973....skipif m
e440: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
e450: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
e460: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 30 38  owsort label-308
e470: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
e480: 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20  T COUNT ( * ) + 
e490: 2d 20 39 37 20 2a 20 2d 20 31 30 20 46 52 4f 4d  - 97 * - 10 FROM
e4a0: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 37 33   tab2..----..973
e4b0: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
e4c0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
e4d0: 49 4e 43 54 20 63 6f 6c 32 20 2b 20 2b 20 2d 20  INCT col2 + + - 
e4e0: 63 6f 6c 30 20 2d 20 2d 20 35 33 20 2b 20 2d 20  col0 - - 53 + - 
e4f0: 63 6f 6c 31 20 2a 20 63 6f 6c 31 20 2a 20 2b 20  col1 * col1 * + 
e500: 2d 20 33 31 20 2d 20 2d 20 32 34 20 41 53 20 63  - 31 - - 24 AS c
e510: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
e520: 2d 2d 2d 0d 0a 31 33 39 32 31 39 0d 0a 31 38 33  ---..139219..183
e530: 38 35 32 0d 0a 38 30 36 38 35 0d 0a 0d 0a 71 75  852..80685....qu
e540: 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
e550: 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
e560: 61 62 30 20 57 48 45 52 45 20 2b 20 2d 20 39 36  ab0 WHERE + - 96
e570: 20 2a 20 2b 20 36 39 20 2b 20 63 6f 6c 31 20 2d   * + 69 + col1 -
e580: 20 63 6f 6c 31 20 49 4e 20 28 20 2d 20 2d 20 63   col1 IN ( - - c
e590: 6f 6c 31 20 2d 20 31 36 2c 20 28 20 2b 20 63 6f  ol1 - 16, ( + co
e5a0: 6c 30 20 29 20 2b 20 2d 20 30 20 29 0d 0a 2d 2d  l0 ) + - 0 )..--
e5b0: 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  --....skipif pos
e5c0: 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
e5d0: 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
e5e0: 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
e5f0: 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
e600: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
e610: 53 45 4c 45 43 54 20 2d 20 34 35 20 63 6f 6c 31  SELECT - 45 col1
e620: 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
e630: 0d 0a 2d 34 35 0d 0a 2d 34 35 0d 0a 2d 34 35 0d  ..-45..-45..-45.
e640: 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
e650: 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
e660: 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  TINCT * FROM tab
e670: 32 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  2 WHERE NOT NULL
e680: 20 3c 3d 20 38 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   <= 8..----....q
e690: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
e6a0: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
e6b0: 74 61 62 30 20 57 48 45 52 45 20 34 20 49 53 20  tab0 WHERE 4 IS 
e6c0: 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
e6d0: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
e6e0: 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41  T syntax: DECIMA
e6f0: 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  L type: ..query 
e700: 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
e710: 33 31 34 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41  314..SELECT - CA
e720: 53 54 28 20 2d 20 63 6f 6c 31 20 41 53 20 44 45  ST( - col1 AS DE
e730: 43 49 4d 41 4c 20 29 20 41 53 20 63 6f 6c 30 20  CIMAL ) AS col0 
e740: 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
e750: 2b 20 2d 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c  + - col1 IS NULL
e760: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
e770: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
e780: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
e790: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
e7a0: 31 34 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53  14..SELECT - CAS
e7b0: 54 20 28 20 2d 20 63 6f 6c 31 20 41 53 20 52 45  T ( - col1 AS RE
e7c0: 41 4c 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f  AL ) AS col0 FRO
e7d0: 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b 20 2d  M tab2 WHERE + -
e7e0: 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d   col1 IS NULL..-
e7f0: 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
e800: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
e810: 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 2d 20  DISTINCT col1 - 
e820: 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 2c 20  - col2 AS col1, 
e830: 2d 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 31 20  - col2 + + col1 
e840: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
e850: 0a 31 30 30 0d 0a 2d 39 38 0d 0a 31 32 38 0d 0a  .100..-98..128..
e860: 33 34 0d 0a 33 31 0d 0a 31 31 0d 0a 0d 0a 71 75  34..31..11....qu
e870: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
e880: 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a  ELECT ALL col2 *
e890: 20 2b 20 31 30 20 2b 20 2d 20 34 38 20 41 53 20   + 10 + - 48 AS 
e8a0: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
e8b0: 2d 2d 2d 2d 0d 0a 34 32 32 0d 0a 35 32 0d 0a 39  ----..422..52..9
e8c0: 34 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  42....onlyif mys
e8d0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
e8e0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
e8f0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
e900: 31 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  17..SELECT DISTI
e910: 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  NCT + COUNT( * )
e920: 20 2d 20 2d 20 34 20 41 53 20 63 6f 6c 30 20 46   - - 4 AS col0 F
e930: 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
e940: 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
e950: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
e960: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
e970: 6f 72 74 20 6c 61 62 65 6c 2d 33 31 37 0d 0a 53  ort label-317..S
e980: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
e990: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20 2d   COUNT ( * ) - -
e9a0: 20 34 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   4 AS col0 FROM 
e9b0: 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 37 0d 0a 0d  tab2..----..7...
e9c0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
e9d0: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
e9e0: 54 20 39 34 20 2b 20 2d 20 2d 20 63 6f 6c 30 20  T 94 + - - col0 
e9f0: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
ea00: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 30 0d 0a 31 35  0..----..140..15
ea10: 38 0d 0a 31 36 39 0d 0a 0d 0a 71 75 65 72 79 20  8..169....query 
ea20: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
ea30: 54 20 41 4c 4c 20 2b 20 2b 20 33 20 2d 20 2b 20  T ALL + + 3 - + 
ea40: 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
ea50: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
ea60: 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 2d 33 37 0d 0a  ----..-20..-37..
ea70: 2d 35 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -55....query I r
ea80: 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
ea90: 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 46 52 4f  ISTINCT col2 FRO
eaa0: 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52  M tab1 cor0 WHER
eab0: 45 20 4e 4f 54 20 63 6f 6c 32 20 2b 20 2b 20 36  E NOT col2 + + 6
eac0: 34 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  4 IS NOT NULL..-
ead0: 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  ---....skipif po
eae0: 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
eaf0: 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
eb00: 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
eb10: 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
eb20: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
eb30: 0a 53 45 4c 45 43 54 20 2b 20 2d 20 28 20 2b 20  .SELECT + - ( + 
eb40: 2d 20 39 36 20 29 20 2b 20 2b 20 63 6f 6c 30 20  - 96 ) + + col0 
eb50: 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
eb60: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34  S cor0..----..14
eb70: 32 0d 0a 31 36 30 0d 0a 31 37 31 0d 0a 0d 0a 71  2..160..171....q
eb80: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
eb90: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
eba0: 63 6f 6c 32 20 2a 20 2d 20 31 35 20 46 52 4f 4d  col2 * - 15 FROM
ebb0: 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34   tab2..----..-34
ebc0: 35 0d 0a 2d 36 30 30 0d 0a 2d 38 37 30 0d 0a 0d  5..-600..-870...
ebd0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
ebe0: 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
ebf0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
ec00: 6f 72 74 20 6c 61 62 65 6c 2d 33 32 33 0d 0a 53  ort label-323..S
ec10: 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
ec20: 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
ec30: 20 4e 4f 54 20 35 37 20 49 53 20 4e 4f 54 20 4e   NOT 57 IS NOT N
ec40: 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ULL..----..0....
ec50: 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
ec60: 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
ec70: 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
ec80: 61 62 65 6c 2d 33 32 33 0d 0a 53 45 4c 45 43 54  abel-323..SELECT
ec90: 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
eca0: 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
ecb0: 20 35 37 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   57 IS NOT NULL.
ecc0: 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
ecd0: 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
ece0: 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
ecf0: 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
ed00: 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
ed10: 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  mns..query II ro
ed20: 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
ed30: 4c 20 2d 20 63 6f 6c 32 2c 20 63 6f 6c 31 20 63  L - col2, col1 c
ed40: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
ed50: 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
ed60: 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
ed70: 2d 35 39 0d 0a 35 0d 0a 2d 36 38 0d 0a 34 37 0d  -59..5..-68..47.
ed80: 0a 2d 39 36 0d 0a 31 34 0d 0a 0d 0a 71 75 65 72  .-96..14....quer
ed90: 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
eda0: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
edb0: 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
edc0: 72 30 20 57 48 45 52 45 20 4e 4f 54 20 32 33 20  r0 WHERE NOT 23 
edd0: 2a 20 2d 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c  * - col2 IS NULL
ede0: 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
edf0: 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39   hashing to 75c9
ee00: 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66  98aa53ac83218cbf
ee10: 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a  2feb962d0a49....
ee20: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
ee30: 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20 46 52 4f  .SELECT col1 FRO
ee40: 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
ee50: 48 45 52 45 20 4e 4f 54 20 2d 20 37 34 20 2f 20  HERE NOT - 74 / 
ee60: 2b 20 2d 20 39 20 2d 20 2d 20 63 6f 6c 31 20 2f  + - 9 - - col1 /
ee70: 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 63 6f 6c 31   - col1 + - col1
ee80: 20 4e 4f 54 20 49 4e 20 28 20 63 6f 6c 30 20 29   NOT IN ( col0 )
ee90: 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
eea0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
eeb0: 54 20 34 36 20 41 53 20 63 6f 6c 30 20 46 52 4f  T 46 AS col0 FRO
eec0: 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab0 cor0..---
eed0: 2d 0d 0a 34 36 0d 0a 34 36 0d 0a 34 36 0d 0a 0d  -..46..46..46...
eee0: 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
eef0: 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43  CAST syntax: DEC
ef00: 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65  IMAL type: ..que
ef10: 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
ef20: 62 65 6c 2d 33 32 38 0d 0a 53 45 4c 45 43 54 20  bel-328..SELECT 
ef30: 63 6f 6c 30 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c  col0 col0, + col
ef40: 30 20 2a 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  0 * CAST( NULL A
ef50: 53 20 44 45 43 49 4d 41 4c 20 29 20 2b 20 2d 20  S DECIMAL ) + - 
ef60: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
ef70: 2d 2d 2d 2d 0d 0a 35 31 0d 0a 4e 55 4c 4c 0d 0a  ----..51..NULL..
ef80: 38 35 0d 0a 4e 55 4c 4c 0d 0a 39 31 0d 0a 4e 55  85..NULL..91..NU
ef90: 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
efa0: 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
efb0: 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
efc0: 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
efd0: 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
efe0: 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
eff0: 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
f000: 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
f010: 61 62 65 6c 2d 33 32 38 0d 0a 53 45 4c 45 43 54  abel-328..SELECT
f020: 20 63 6f 6c 30 20 63 6f 6c 30 2c 20 2b 20 63 6f   col0 col0, + co
f030: 6c 30 20 2a 20 43 41 53 54 20 28 20 4e 55 4c 4c  l0 * CAST ( NULL
f040: 20 41 53 20 52 45 41 4c 20 29 20 2b 20 2d 20 63   AS REAL ) + - c
f050: 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
f060: 2d 2d 2d 0d 0a 35 31 0d 0a 4e 55 4c 4c 0d 0a 38  ---..51..NULL..8
f070: 35 0d 0a 4e 55 4c 4c 0d 0a 39 31 0d 0a 4e 55 4c  5..NULL..91..NUL
f080: 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
f090: 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
f0a0: 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
f0b0: 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
f0c0: 6c 61 62 65 6c 2d 33 32 39 0d 0a 53 45 4c 45 43  label-329..SELEC
f0d0: 54 20 2d 20 31 37 20 2a 20 43 41 53 54 28 20 4e  T - 17 * CAST( N
f0e0: 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
f0f0: 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
f100: 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
f110: 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
f120: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
f130: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
f140: 6f 72 74 20 6c 61 62 65 6c 2d 33 32 39 0d 0a 53  ort label-329..S
f150: 45 4c 45 43 54 20 2d 20 31 37 20 2a 20 43 41 53  ELECT - 17 * CAS
f160: 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
f170: 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31 0d  GER ) FROM tab1.
f180: 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
f190: 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  L..NULL....onlyi
f1a0: 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
f1b0: 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
f1c0: 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
f1d0: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33 30 0d  wsort label-330.
f1e0: 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20 43  .SELECT col0 * C
f1f0: 41 53 54 28 20 2b 20 63 6f 6c 30 20 41 53 20 53  AST( + col0 AS S
f200: 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20  IGNED ) AS col1 
f210: 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
f220: 0a 32 32 35 0d 0a 37 35 36 39 0d 0a 39 34 30 39  .225..7569..9409
f230: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
f240: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
f250: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
f260: 72 74 20 6c 61 62 65 6c 2d 33 33 30 0d 0a 53 45  rt label-330..SE
f270: 4c 45 43 54 20 63 6f 6c 30 20 2a 20 43 41 53 54  LECT col0 * CAST
f280: 20 28 20 2b 20 63 6f 6c 30 20 41 53 20 49 4e 54   ( + col0 AS INT
f290: 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20 46  EGER ) AS col1 F
f2a0: 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
f2b0: 32 32 35 0d 0a 37 35 36 39 0d 0a 39 34 30 39 0d  225..7569..9409.
f2c0: 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  ...query II rows
f2d0: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
f2e0: 49 4e 43 54 20 2d 20 63 6f 6c 30 20 41 53 20 63  INCT - col0 AS c
f2f0: 6f 6c 32 2c 20 2d 20 63 6f 6c 30 20 2b 20 2b 20  ol2, - col0 + + 
f300: 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
f310: 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a 35 0d 0a 2d 36  ----..-46..5..-6
f320: 34 0d 0a 31 33 0d 0a 2d 37 35 0d 0a 2d 38 0d 0a  4..13..-75..-8..
f330: 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
f340: 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
f350: 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
f360: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
f370: 61 62 65 6c 2d 33 33 32 0d 0a 53 45 4c 45 43 54  abel-332..SELECT
f380: 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31   ALL * FROM tab1
f390: 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
f3a0: 3c 20 2d 20 2b 20 63 6f 6c 30 20 2b 20 28 20 2d  < - + col0 + ( -
f3b0: 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   - CAST( NULL AS
f3c0: 20 53 49 47 4e 45 44 20 29 20 29 0d 0a 2d 2d 2d   SIGNED ) )..---
f3d0: 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  -....skipif mysq
f3e0: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
f3f0: 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  le..query III ro
f400: 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33 32 0d  wsort label-332.
f410: 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
f420: 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
f430: 54 20 4e 55 4c 4c 20 3c 20 2d 20 2b 20 63 6f 6c  T NULL < - + col
f440: 30 20 2b 20 28 20 2d 20 2d 20 43 41 53 54 20 28  0 + ( - - CAST (
f450: 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
f460: 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e   ) )..----....on
f470: 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
f480: 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
f490: 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
f4a0: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
f4b0: 2d 33 33 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -333..SELECT ALL
f4c0: 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
f4d0: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 43  cor0 WHERE NOT C
f4e0: 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
f4f0: 4e 45 44 20 29 20 2a 20 2d 20 63 6f 6c 30 20 49  NED ) * - col0 I
f500: 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
f510: 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
f520: 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35 64 66  ng to c4b42765df
f530: 66 39 34 65 61 61 61 34 36 30 34 30 65 35 33 37  f94eaaa46040e537
f540: 66 62 34 33 62 37 0d 0a 0d 0a 73 6b 69 70 69 66  fb43b7....skipif
f550: 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
f560: 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
f570: 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
f580: 2d 33 33 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -333..SELECT ALL
f590: 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
f5a0: 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 43  cor0 WHERE NOT C
f5b0: 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
f5c0: 54 45 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 30  TEGER ) * - col0
f5d0: 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
f5e0: 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
f5f0: 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35  hing to c4b42765
f600: 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35  dff94eaaa46040e5
f610: 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72  37fb43b7....quer
f620: 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
f630: 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 2a  ECT ALL - col0 *
f640: 20 2d 20 2b 20 32 38 20 41 53 20 63 6f 6c 30 20   - + 28 AS col0 
f650: 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
f660: 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 38 38 0d 0a 31  0..----..1288..1
f670: 37 39 32 0d 0a 32 31 30 30 0d 0a 0d 0a 71 75 65  792..2100....que
f680: 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
f690: 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
f6a0: 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
f6b0: 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  or0 WHERE NOT co
f6c0: 6c 31 20 2b 20 63 6f 6c 32 20 49 53 20 4e 55 4c  l1 + col2 IS NUL
f6d0: 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
f6e0: 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63  s hashing to 75c
f6f0: 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63 62  998aa53ac83218cb
f700: 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d  f2feb962d0a49...
f710: 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
f720: 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
f730: 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
f740: 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
f750: 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
f760: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
f770: 54 20 2d 20 28 20 2b 20 2b 20 37 37 20 29 20 63  T - ( + + 77 ) c
f780: 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol0 FROM tab1 co
f790: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 37 0d 0a 2d  r0..----..-77..-
f7a0: 37 37 0d 0a 2d 37 37 0d 0a 0d 0a 6f 6e 6c 79 69  77..-77....onlyi
f7b0: 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
f7c0: 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
f7d0: 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
f7e0: 62 65 6c 2d 33 33 37 0d 0a 53 45 4c 45 43 54 20  bel-337..SELECT 
f7f0: 41 4c 4c 20 28 20 2b 20 34 38 20 29 20 2a 20 2b  ALL ( + 48 ) * +
f800: 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20   + COUNT( * ) + 
f810: 2b 20 34 38 20 41 53 20 63 6f 6c 32 20 46 52 4f  + 48 AS col2 FRO
f820: 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 39  M tab2..----..19
f830: 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  2....skipif mysq
f840: 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
f850: 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
f860: 6f 72 74 20 6c 61 62 65 6c 2d 33 33 37 0d 0a 53  ort label-337..S
f870: 45 4c 45 43 54 20 41 4c 4c 20 28 20 2b 20 34 38  ELECT ALL ( + 48
f880: 20 29 20 2a 20 2b 20 2b 20 43 4f 55 4e 54 20 28   ) * + + COUNT (
f890: 20 2a 20 29 20 2b 20 2b 20 34 38 20 41 53 20 63   * ) + + 48 AS c
f8a0: 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
f8b0: 2d 2d 2d 0d 0a 31 39 32 0d 0a 0d 0a 6f 6e 6c 79  ---..192....only
f8c0: 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
f8d0: 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
f8e0: 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
f8f0: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33 38  owsort label-338
f900: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
f910: 54 20 2d 20 35 34 20 44 49 56 20 2b 20 63 6f 6c  T - 54 DIV + col
f920: 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
f930: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d  or0..----..-1..-
f940: 35 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  5..0....skipif m
f950: 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
f960: 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
f970: 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 33 38  owsort label-338
f980: 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
f990: 54 20 2d 20 35 34 20 2f 20 2b 20 63 6f 6c 32 20  T - 54 / + col2 
f9a0: 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
f9b0: 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 35 0d  0..----..-1..-5.
f9c0: 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
f9d0: 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
f9e0: 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
f9f0: 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
fa00: 33 39 0d 0a 53 45 4c 45 43 54 20 2b 20 32 35 20  39..SELECT + 25 
fa10: 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  + COUNT( * ) AS 
fa20: 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
fa30: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38  S cor0..----..28
fa40: 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
fa50: 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
fa60: 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
fa70: 72 74 20 6c 61 62 65 6c 2d 33 33 39 0d 0a 53 45  rt label-339..SE
fa80: 4c 45 43 54 20 2b 20 32 35 20 2b 20 43 4f 55 4e  LECT + 25 + COUN
fa90: 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
faa0: 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
fab0: 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38 0d 0a 0d 0a 71  0..----..28....q
fac0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
fad0: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
fae0: 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
faf0: 52 45 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 35 20  RE + col0 * + 5 
fb00: 4e 4f 54 20 49 4e 20 28 20 34 34 2c 20 2d 20 31  NOT IN ( 44, - 1
fb10: 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  2 )..----..9 val
fb20: 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
fb30: 34 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61  4b42765dff94eaaa
fb40: 34 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d  46040e537fb43b7.
fb50: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
fb60: 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 33 30 20  rt..SELECT - 30 
fb70: 2b 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31  + + col1 AS col1
fb80: 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
fb90: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 0d 0a 2d  r0..----..-16..-
fba0: 32 35 0d 0a 31 37 0d 0a 0d 0a 71 75 65 72 79 20  25..17....query 
fbb0: 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
fbc0: 54 20 2b 20 33 34 20 2b 20 2d 20 28 20 2b 20 2b  T + 34 + - ( + +
fbd0: 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62   col1 ) FROM tab
fbe0: 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
fbf0: 0a 2d 34 37 0d 0a 31 33 0d 0a 33 33 0d 0a 0d 0a  .-47..13..33....
fc00: 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
fc10: 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
fc20: 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
fc30: 72 74 20 6c 61 62 65 6c 2d 33 34 33 0d 0a 53 45  rt label-343..SE
fc40: 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  LECT COUNT( * ) 
fc50: 2b 20 28 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a  + ( + + COUNT( *
fc60: 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41   ) ) FROM tab0 A
fc70: 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d  S cor0..----..6.
fc80: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
fc90: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
fca0: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
fcb0: 74 20 6c 61 62 65 6c 2d 33 34 33 0d 0a 53 45 4c  t label-343..SEL
fcc0: 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  ECT COUNT ( * ) 
fcd0: 2b 20 28 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20  + ( + + COUNT ( 
fce0: 2a 20 29 20 29 20 46 52 4f 4d 20 74 61 62 30 20  * ) ) FROM tab0 
fcf0: 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36  AS cor0..----..6
fd00: 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
fd10: 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
fd20: 49 4e 43 54 20 63 6f 6c 32 20 46 52 4f 4d 20 74  INCT col2 FROM t
fd30: 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab2 AS cor0 WHER
fd40: 45 20 4e 4f 54 20 28 20 4e 4f 54 20 2b 20 2b 20  E NOT ( NOT + + 
fd50: 38 39 20 2a 20 28 20 2b 20 63 6f 6c 31 20 29 20  89 * ( + col1 ) 
fd60: 49 53 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d  IS NULL )..----.
fd70: 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
fd80: 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 31  rt..SELECT ALL 1
fd90: 35 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32  5 + col2 AS col2
fda0: 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
fdb0: 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 34 0d 0a 32  r0..----..114..2
fdc0: 35 0d 0a 36 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  5..62....onlyif 
fdd0: 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
fde0: 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
fdf0: 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
fe00: 6f 72 74 20 6c 61 62 65 6c 2d 33 34 36 0d 0a 53  ort label-346..S
fe10: 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
fe20: 20 63 6f 6c 30 20 44 49 56 20 2b 20 32 39 20 41   col0 DIV + 29 A
fe30: 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
fe40: 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 0d 0a 33 0d  ..----..1..2..3.
fe50: 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
fe60: 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
fe70: 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
fe80: 74 20 6c 61 62 65 6c 2d 33 34 36 0d 0a 53 45 4c  t label-346..SEL
fe90: 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
fea0: 6f 6c 30 20 2f 20 2b 20 32 39 20 41 53 20 63 6f  ol0 / + 29 AS co
feb0: 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l2 FROM tab1..--
fec0: 2d 2d 0d 0a 31 0d 0a 32 0d 0a 33 0d 0a 0d 0a 71  --..1..2..3....q
fed0: 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
fee0: 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
fef0: 74 61 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20  tab1 WHERE NULL 
ff00: 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44  BETWEEN NULL AND
ff10: 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 36 31 20 2b   + col1 * - 61 +
ff20: 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 34 38 0d 0a   + col1 + + 48..
ff30: 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
ff40: 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
ff50: 41 4c 4c 20 2d 20 63 6f 6c 30 20 2b 20 2b 20 31  ALL - col0 + + 1
ff60: 39 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  9 FROM tab0 AS c
ff70: 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 38 0d 0a  or0..----..-68..
ff80: 2d 37 38 0d 0a 34 0d 0a 0d 0a 6f 6e 6c 79 69 66  -78..4....onlyif
ff90: 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
ffa0: 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
ffb0: 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
ffc0: 65 6c 2d 33 34 39 0d 0a 53 45 4c 45 43 54 20 2b  el-349..SELECT +
ffd0: 20 2d 20 28 20 53 55 4d 28 20 2b 20 63 6f 6c 31   - ( SUM( + col1
ffe0: 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f   ) ) AS col1 FRO
fff0: 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
10000 2d 2d 2d 2d 0d 0a 2d 31 39 35 0d 0a 0d 0a 73 6b  ----..-195....sk
10010 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
10020 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
10030 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
10040 65 6c 2d 33 34 39 0d 0a 53 45 4c 45 43 54 20 2b  el-349..SELECT +
10050 20 2d 20 28 20 53 55 4d 20 28 20 2b 20 63 6f 6c   - ( SUM ( + col
10060 31 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46 52  1 ) ) AS col1 FR
10070 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
10080 0a 2d 2d 2d 2d 0d 0a 2d 31 39 35 0d 0a 0d 0a 71  .----..-195....q
10090 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
100a0 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20  SELECT ALL col0 
100b0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
100c0 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
100d0 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c  NOT NULL IS NULL
100e0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
100f0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
10100 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
10110 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48  ROM tab2 cor0 WH
10120 45 52 45 20 4e 4f 54 20 28 20 2d 20 28 20 2b 20  ERE NOT ( - ( + 
10130 2b 20 63 6f 6c 32 20 29 20 29 20 2a 20 2b 20 63  + col2 ) ) * + c
10140 6f 6c 32 20 2d 20 2d 20 63 6f 6c 30 20 2a 20 2d  ol2 - - col0 * -
10150 20 2b 20 63 6f 6c 31 20 2a 20 63 6f 6c 32 20 2a   + col1 * col2 *
10160 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c   col0 IS NOT NUL
10170 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
10180 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
10190 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
101a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
101b0 62 65 6c 2d 33 35 32 0d 0a 53 45 4c 45 43 54 20  bel-352..SELECT 
101c0 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d  + COUNT( * ) * -
101d0 20 2d 20 34 34 20 41 53 20 63 6f 6c 31 20 46 52   - 44 AS col1 FR
101e0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
101f0 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20  CROSS JOIN tab2 
10200 41 53 20 63 6f 72 31 20 57 48 45 52 45 20 4e 55  AS cor1 WHERE NU
10210 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  LL IS NOT NULL..
10220 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  ----..0....skipi
10230 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
10240 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
10250 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
10260 33 35 32 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  352..SELECT + CO
10270 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 2d 20  UNT ( * ) * - - 
10280 34 34 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  44 AS col1 FROM 
10290 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f  tab1 AS cor0 CRO
102a0 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20  SS JOIN tab2 AS 
102b0 63 6f 72 31 20 57 48 45 52 45 20 4e 55 4c 4c 20  cor1 WHERE NULL 
102c0 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
102d0 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  -..0....skipif p
102e0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
102f0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
10300 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
10310 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
10320 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
10330 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 35 38 20  ..SELECT ALL 58 
10340 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
10350 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
10360 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31 0d 0a  N tab0 AS cor1..
10370 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
10380 61 73 68 69 6e 67 20 74 6f 20 65 66 36 65 36 33  ashing to ef6e63
10390 61 65 65 64 32 35 38 31 61 31 36 38 66 30 37 36  aeed2581a168f076
103a0 34 36 64 32 35 38 66 36 36 36 0d 0a 0d 0a 71 75  46d258f666....qu
103b0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
103c0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
103d0 2d 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c 32 20 2d  - col2, + col2 -
103e0 20 2d 20 37 35 20 2b 20 63 6f 6c 30 20 46 52 4f   - 75 + col0 FRO
103f0 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
10400 20 2d 20 2b 20 39 20 49 53 20 4e 4f 54 20 4e 55   - + 9 IS NOT NU
10410 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
10420 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
10430 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
10440 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2b 20  2 WHERE NOT ( + 
10450 31 39 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 29  19 IS NOT NULL )
10460 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
10470 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
10480 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
10490 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
104a0 73 6f 72 74 20 6c 61 62 65 6c 2d 33 35 36 0d 0a  sort label-356..
104b0 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20  SELECT ALL col1 
104c0 2a 20 2d 20 28 20 2b 20 43 41 53 54 28 20 4e 55  * - ( + CAST( NU
104d0 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 29  LL AS SIGNED ) )
104e0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
104f0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
10500 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
10510 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
10520 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
10530 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
10540 65 6c 2d 33 35 36 0d 0a 53 45 4c 45 43 54 20 41  el-356..SELECT A
10550 4c 4c 20 63 6f 6c 31 20 2a 20 2d 20 28 20 2b 20  LL col1 * - ( + 
10560 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
10570 4e 54 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20  NTEGER ) ) FROM 
10580 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
10590 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
105a0 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
105b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
105c0 2d 20 63 6f 6c 30 20 2a 20 2d 20 2b 20 63 6f 6c  - col0 * - + col
105d0 30 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 46 52 4f  0 * - + col1 FRO
105e0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
105f0 2d 2d 2d 2d 0d 0a 2d 31 30 37 39 31 36 0d 0a 2d  ----..-107916..-
10600 33 31 35 33 39 32 0d 0a 2d 33 37 36 38 37 35 0d  315392..-376875.
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 44 49 53 54 49  rt..SELECT DISTI
10630 4e 43 54 20 2d 20 34 31 20 2a 20 32 38 20 2b 20  NCT - 41 * 28 + 
10640 2b 20 34 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  + 42 AS col1 FRO
10650 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
10660 2d 2d 2d 2d 0d 0a 2d 31 31 30 36 0d 0a 0d 0a 6f  ----..-1106....o
10670 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
10680 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
10690 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
106a0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
106b0 2d 33 35 39 0d 0a 53 45 4c 45 43 54 20 2b 20 63  -359..SELECT + c
106c0 6f 6c 31 20 63 6f 6c 30 2c 20 63 6f 6c 30 20 44  ol1 col0, col0 D
106d0 49 56 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32  IV col0 * - col2
106e0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
106f0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 2d 39  r0..----..14..-9
10700 36 0d 0a 34 37 0d 0a 2d 36 38 0d 0a 35 0d 0a 2d  6..47..-68..5..-
10710 35 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  59....skipif mys
10720 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
10730 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
10740 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
10750 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
10760 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
10770 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
10780 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
10790 61 62 65 6c 2d 33 35 39 0d 0a 53 45 4c 45 43 54  abel-359..SELECT
107a0 20 2b 20 63 6f 6c 31 20 63 6f 6c 30 2c 20 63 6f   + col1 col0, co
107b0 6c 30 20 2f 20 63 6f 6c 30 20 2a 20 2d 20 63 6f  l0 / col0 * - co
107c0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
107d0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a  cor0..----..14..
107e0 2d 39 36 0d 0a 34 37 0d 0a 2d 36 38 0d 0a 35 0d  -96..47..-68..5.
107f0 0a 2d 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49  .-59....query II
10800 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
10810 20 41 4c 4c 20 37 35 20 41 53 20 63 6f 6c 32 2c   ALL 75 AS col2,
10820 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52   col0 AS col0 FR
10830 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
10840 0a 2d 2d 2d 2d 0d 0a 37 35 0d 0a 35 31 0d 0a 37  .----..75..51..7
10850 35 0d 0a 38 35 0d 0a 37 35 0d 0a 39 31 0d 0a 0d  5..85..75..91...
10860 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
10870 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
10880 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
10890 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
108a0 62 65 6c 2d 33 36 31 0d 0a 53 45 4c 45 43 54 20  bel-361..SELECT 
108b0 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
108c0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20  or0 WHERE NOT ( 
108d0 4e 55 4c 4c 20 29 20 49 4e 20 28 20 63 6f 6c 32  NULL ) IN ( col2
108e0 2c 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  , + CAST( NULL A
108f0 53 20 53 49 47 4e 45 44 20 29 20 2b 20 2b 20 63  S SIGNED ) + + c
10900 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73  ol2 )..----....s
10910 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
10920 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
10930 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
10940 6c 61 62 65 6c 2d 33 36 31 0d 0a 53 45 4c 45 43  label-361..SELEC
10950 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
10960 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
10970 28 20 4e 55 4c 4c 20 29 20 49 4e 20 28 20 63 6f  ( NULL ) IN ( co
10980 6c 32 2c 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  l2, + CAST ( NUL
10990 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b  L AS INTEGER ) +
109a0 20 2b 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d   + col2 )..----.
109b0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
109c0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
109d0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
109e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 36 32 0d  wsort label-362.
109f0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
10a00 20 2b 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54   + MIN( DISTINCT
10a10 20 2d 20 30 20 29 20 41 53 20 63 6f 6c 30 20 46   - 0 ) AS col0 F
10a20 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
10a30 20 57 48 45 52 45 20 2b 20 28 20 2d 20 63 6f 6c   WHERE + ( - col
10a40 31 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  1 ) IS NOT NULL.
10a50 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
10a60 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
10a70 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
10a80 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
10a90 2d 33 36 32 0d 0a 53 45 4c 45 43 54 20 44 49 53  -362..SELECT DIS
10aa0 54 49 4e 43 54 20 2b 20 4d 49 4e 20 28 20 44 49  TINCT + MIN ( DI
10ab0 53 54 49 4e 43 54 20 2d 20 30 20 29 20 41 53 20  STINCT - 0 ) AS 
10ac0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
10ad0 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 28  S cor0 WHERE + (
10ae0 20 2d 20 63 6f 6c 31 20 29 20 49 53 20 4e 4f 54   - col1 ) IS NOT
10af0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
10b00 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
10b10 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
10b20 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
10b30 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
10b40 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
10b50 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
10b60 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 36 20  CT DISTINCT - 6 
10b70 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
10b80 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  S cor0..----..-6
10b90 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
10ba0 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
10bb0 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
10bc0 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
10bd0 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
10be0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
10bf0 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30 20  LECT ALL + col0 
10c00 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 57  col1 FROM tab0 W
10c10 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55 4c  HERE NULL IS NUL
10c20 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 37 0d  L..----..15..87.
10c30 0a 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  .97....skipif po
10c40 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
10c50 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
10c60 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
10c70 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
10c80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
10c90 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2a  .SELECT - col2 *
10ca0 20 2d 20 63 6f 6c 32 20 63 6f 6c 32 20 46 52 4f   - col2 col2 FRO
10cb0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 34  M tab1..----..34
10cc0 38 31 0d 0a 34 36 32 34 0d 0a 39 32 31 36 0d 0a  81..4624..9216..
10cd0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
10ce0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
10cf0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
10d00 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
10d10 61 62 65 6c 2d 33 36 36 0d 0a 53 45 4c 45 43 54  abel-366..SELECT
10d20 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
10d30 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2f 20 2d 20  RE NOT col0 / - 
10d40 2b 20 63 6f 6c 32 20 2d 20 63 6f 6c 30 20 42 45  + col2 - col0 BE
10d50 54 57 45 45 4e 20 2d 20 63 6f 6c 32 20 41 4e 44  TWEEN - col2 AND
10d60 20 2b 20 43 41 53 54 28 20 2b 20 35 35 20 41 53   + CAST( + 55 AS
10d70 20 53 49 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d   SIGNED )..----.
10d80 0a 38 35 0d 0a 35 0d 0a 35 39 0d 0a 39 31 0d 0a  .85..5..59..91..
10d90 34 37 0d 0a 36 38 0d 0a 0d 0a 73 6b 69 70 69 66  47..68....skipif
10da0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
10db0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
10dc0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
10dd0 2d 33 36 36 0d 0a 53 45 4c 45 43 54 20 2a 20 46  -366..SELECT * F
10de0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
10df0 4f 54 20 63 6f 6c 30 20 2f 20 2d 20 2b 20 63 6f  OT col0 / - + co
10e00 6c 32 20 2d 20 63 6f 6c 30 20 42 45 54 57 45 45  l2 - col0 BETWEE
10e10 4e 20 2d 20 63 6f 6c 32 20 41 4e 44 20 2b 20 43  N - col2 AND + C
10e20 41 53 54 20 28 20 2b 20 35 35 20 41 53 20 49 4e  AST ( + 55 AS IN
10e30 54 45 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 38  TEGER )..----..8
10e40 35 0d 0a 35 0d 0a 35 39 0d 0a 39 31 0d 0a 34 37  5..5..59..91..47
10e50 0d 0a 36 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..68....onlyif m
10e60 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
10e70 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
10e80 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
10e90 72 74 20 6c 61 62 65 6c 2d 33 36 37 0d 0a 53 45  rt label-367..SE
10ea0 4c 45 43 54 20 28 20 2b 20 39 20 29 20 44 49 56  LECT ( + 9 ) DIV
10eb0 20 2b 20 2b 20 31 35 20 2a 20 2b 20 2b 20 63 6f   + + 15 * + + co
10ec0 6c 32 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d 20  l2 + - col2 * - 
10ed0 2b 20 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d  + col2 col1 FROM
10ee0 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
10ef0 0d 0a 31 36 30 30 0d 0a 33 33 36 34 0d 0a 35 32  ..1600..3364..52
10f00 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
10f10 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
10f20 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  le..skipif postg
10f30 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
10f40 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
10f50 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
10f60 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
10f70 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
10f80 65 6c 2d 33 36 37 0d 0a 53 45 4c 45 43 54 20 28  el-367..SELECT (
10f90 20 2b 20 39 20 29 20 2f 20 2b 20 2b 20 31 35 20   + 9 ) / + + 15 
10fa0 2a 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 63  * + + col2 + - c
10fb0 6f 6c 32 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 63  ol2 * - + col2 c
10fc0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol1 FROM tab2 co
10fd0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 30 30 0d 0a  r0..----..1600..
10fe0 33 33 36 34 0d 0a 35 32 39 0d 0a 0d 0a 71 75 65  3364..529....que
10ff0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
11000 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
11010 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
11020 48 45 52 45 20 63 6f 6c 32 20 4e 4f 54 20 42 45  HERE col2 NOT BE
11030 54 57 45 45 4e 20 2b 20 2d 20 39 33 20 41 4e 44  TWEEN + - 93 AND
11040 20 2d 20 2d 20 63 6f 6c 30 20 2f 20 63 6f 6c 31   - - col0 / col1
11050 20 2d 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 36 30   - + col0 + + 60
11060 20 2a 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 30   * col1 * + col0
11070 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 63 6f   * - col1 + - co
11080 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  l1..----..9 valu
11090 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
110a0 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
110b0 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
110c0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
110d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
110e0 2a 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  * FROM tab0 cor0
110f0 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 4f 54   WHERE NOT ( NOT
11100 20 2b 20 38 35 20 4e 4f 54 20 42 45 54 57 45 45   + 85 NOT BETWEE
11110 4e 20 2b 20 35 34 20 41 4e 44 20 4e 55 4c 4c 20  N + 54 AND NULL 
11120 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  )..----....query
11130 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
11140 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32  CT DISTINCT col2
11150 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
11160 62 30 20 57 48 45 52 45 20 2d 20 2b 20 34 33 20  b0 WHERE - + 43 
11170 2d 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a  - col1 IS NULL..
11180 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
11190 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
111a0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
111b0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
111c0 72 74 20 6c 61 62 65 6c 2d 33 37 31 0d 0a 53 45  rt label-371..SE
111d0 4c 45 43 54 20 41 4c 4c 20 43 41 53 54 28 20 63  LECT ALL CAST( c
111e0 6f 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20  ol0 AS SIGNED ) 
111f0 2a 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  * - col2 FROM ta
11200 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 30 35 0d 0a  b0..----..-705..
11210 2d 38 37 30 0d 0a 2d 39 36 30 33 0d 0a 0d 0a 73  -870..-9603....s
11220 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
11230 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
11240 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
11250 62 65 6c 2d 33 37 31 0d 0a 53 45 4c 45 43 54 20  bel-371..SELECT 
11260 41 4c 4c 20 43 41 53 54 20 28 20 63 6f 6c 30 20  ALL CAST ( col0 
11270 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2d  AS INTEGER ) * -
11280 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
11290 0a 2d 2d 2d 2d 0d 0a 2d 37 30 35 0d 0a 2d 38 37  .----..-705..-87
112a0 30 0d 0a 2d 39 36 30 33 0d 0a 0d 0a 71 75 65 72  0..-9603....quer
112b0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
112c0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 33  ECT DISTINCT - 3
112d0 37 20 2b 20 2d 20 39 39 20 2b 20 34 33 20 2b 20  7 + - 99 + 43 + 
112e0 2d 20 63 6f 6c 32 20 2a 20 2d 20 2d 20 63 6f 6c  - col2 * - - col
112f0 30 20 2a 20 2b 20 33 35 20 46 52 4f 4d 20 74 61  0 * + 35 FROM ta
11300 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
11310 20 4e 4f 54 20 63 6f 6c 32 20 3d 20 36 35 20 2a   NOT col2 = 65 *
11320 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 31 0d 0a   col2 * + col1..
11330 2d 2d 2d 2d 0d 0a 2d 31 35 32 33 34 33 0d 0a 2d  ----..-152343..-
11340 33 37 31 32 33 0d 0a 2d 38 39 36 39 33 0d 0a 0d  37123..-89693...
11350 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11360 0d 0a 53 45 4c 45 43 54 20 2d 20 37 33 20 2b 20  ..SELECT - 73 + 
11370 2b 20 33 35 20 46 52 4f 4d 20 74 61 62 30 20 41  + 35 FROM tab0 A
11380 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c  S cor0 WHERE NUL
11390 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  L IS NULL..----.
113a0 0a 2d 33 38 0d 0a 2d 33 38 0d 0a 2d 33 38 0d 0a  .-38..-38..-38..
113b0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
113c0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
113d0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
113e0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
113f0 61 62 65 6c 2d 33 37 34 0d 0a 53 45 4c 45 43 54  abel-374..SELECT
11400 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72   * FROM tab1 cor
11410 30 20 57 48 45 52 45 20 2b 20 43 41 53 54 28 20  0 WHERE + CAST( 
11420 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
11430 20 2f 20 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d   / col0 IS NULL.
11440 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
11450 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61  hashing to c6c0a
11460 34 31 31 31 62 33 36 64 30 34 64 62 63 38 31 31  4111b36d04dbc811
11470 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 73  a11e4d54cad....s
11480 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
11490 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
114a0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
114b0 6c 61 62 65 6c 2d 33 37 34 0d 0a 53 45 4c 45 43  label-374..SELEC
114c0 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  T * FROM tab1 co
114d0 72 30 20 57 48 45 52 45 20 2b 20 43 41 53 54 20  r0 WHERE + CAST 
114e0 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
114f0 52 20 29 20 2f 20 63 6f 6c 30 20 49 53 20 4e 55  R ) / col0 IS NU
11500 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
11510 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36  es hashing to c6
11520 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63  c0a4111b36d04dbc
11530 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a  811a11e4d54cad..
11540 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
11550 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
11560 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
11570 73 6f 72 74 20 6c 61 62 65 6c 2d 33 37 35 0d 0a  sort label-375..
11580 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
11590 2b 20 2d 20 43 4f 55 4e 54 28 20 2d 20 63 6f 6c  + - COUNT( - col
115a0 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
115b0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
115c0 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69  ---..-3....skipi
115d0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
115e0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
115f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
11600 33 37 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  375..SELECT DIST
11610 49 4e 43 54 20 2b 20 2d 20 43 4f 55 4e 54 20 28  INCT + - COUNT (
11620 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   - col1 ) AS col
11630 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
11640 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d  or0..----..-3...
11650 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11660 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
11670 54 20 34 37 20 46 52 4f 4d 20 74 61 62 32 2c 20  T 47 FROM tab2, 
11680 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
11690 0a 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .47....query III
116a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
116b0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
116c0 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
116d0 2d 20 32 37 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  - 27 IS NULL..--
116e0 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
116f0 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61  hing to 75c998aa
11700 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65 62  53ac83218cbf2feb
11710 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72  962d0a49....quer
11720 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
11730 45 43 54 20 2b 20 63 6f 6c 30 20 2d 20 38 36 20  ECT + col0 - 86 
11740 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
11750 0a 2d 31 31 0d 0a 2d 32 32 0d 0a 2d 34 30 0d 0a  .-11..-22..-40..
11760 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
11770 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
11780 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
11790 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
117a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
117b0 61 62 65 6c 2d 33 37 39 0d 0a 53 45 4c 45 43 54  abel-379..SELECT
117c0 20 2d 20 4d 49 4e 28 20 2b 20 63 6f 6c 32 20 29   - MIN( + col2 )
117d0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
117e0 57 48 45 52 45 20 2b 20 2d 20 34 30 20 2a 20 63  WHERE + - 40 * c
117f0 6f 6c 32 20 2f 20 2b 20 2d 20 43 41 53 54 28 20  ol2 / + - CAST( 
11800 32 37 20 41 53 20 53 49 47 4e 45 44 20 29 20 3c  27 AS SIGNED ) <
11810 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  > NULL..----..NU
11820 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
11830 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
11840 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
11850 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
11860 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
11870 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
11880 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
11890 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
118a0 62 65 6c 2d 33 37 39 0d 0a 53 45 4c 45 43 54 20  bel-379..SELECT 
118b0 2d 20 4d 49 4e 20 28 20 2b 20 63 6f 6c 32 20 29  - MIN ( + col2 )
118c0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
118d0 57 48 45 52 45 20 2b 20 2d 20 34 30 20 2a 20 63  WHERE + - 40 * c
118e0 6f 6c 32 20 2f 20 2b 20 2d 20 43 41 53 54 20 28  ol2 / + - CAST (
118f0 20 32 37 20 41 53 20 49 4e 54 45 47 45 52 20 29   27 AS INTEGER )
11900 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   <> NULL..----..
11910 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 70  NULL....skipif p
11920 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
11930 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
11940 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
11950 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
11960 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
11970 0d 0a 53 45 4c 45 43 54 20 35 37 20 2d 20 2b 20  ..SELECT 57 - + 
11980 63 6f 6c 32 20 2d 20 2d 20 2b 20 63 6f 6c 31 20  col2 - - + col1 
11990 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
119a0 2d 2d 2d 2d 0d 0a 2d 32 35 0d 0a 33 0d 0a 33 36  ----..-25..3..36
119b0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
119c0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
119d0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
119e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 31  owsort label-381
119f0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
11a00 54 20 38 31 20 2a 20 43 4f 55 4e 54 28 20 2a 20  T 81 * COUNT( * 
11a10 29 20 2d 20 2d 20 2b 20 36 32 20 46 52 4f 4d 20  ) - - + 62 FROM 
11a20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 30 35 0d  tab2..----..305.
11a30 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
11a40 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
11a50 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
11a60 74 20 6c 61 62 65 6c 2d 33 38 31 0d 0a 53 45 4c  t label-381..SEL
11a70 45 43 54 20 44 49 53 54 49 4e 43 54 20 38 31 20  ECT DISTINCT 81 
11a80 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2d 20  * COUNT ( * ) - 
11a90 2d 20 2b 20 36 32 20 46 52 4f 4d 20 74 61 62 32  - + 62 FROM tab2
11aa0 0d 0a 2d 2d 2d 2d 0d 0a 33 30 35 0d 0a 0d 0a 6f  ..----..305....o
11ab0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
11ac0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
11ad0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
11ae0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
11af0 33 38 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  382..SELECT DIST
11b00 49 4e 43 54 20 43 41 53 54 28 20 2b 20 2d 20 37  INCT CAST( + - 7
11b10 39 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  9 AS SIGNED ) AS
11b20 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
11b30 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55  WHERE NULL IS NU
11b40 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 39 0d 0a 0d  LL..----..-79...
11b50 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
11b60 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
11b70 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
11b80 6c 61 62 65 6c 2d 33 38 32 0d 0a 53 45 4c 45 43  label-382..SELEC
11b90 54 20 44 49 53 54 49 4e 43 54 20 43 41 53 54 20  T DISTINCT CAST 
11ba0 28 20 2b 20 2d 20 37 39 20 41 53 20 49 4e 54 45  ( + - 79 AS INTE
11bb0 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20 46 52  GER ) AS col1 FR
11bc0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 55  OM tab2 WHERE NU
11bd0 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
11be0 0d 0a 2d 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-79....query I
11bf0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
11c00 20 41 4c 4c 20 2d 20 31 33 20 2b 20 63 6f 6c 31   ALL - 13 + col1
11c10 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 41 53 20 63   + - + col0 AS c
11c20 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
11c30 2d 2d 2d 0d 0a 2d 32 31 0d 0a 2d 38 0d 0a 30 0d  ---..-21..-8..0.
11c40 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
11c50 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
11c60 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
11c70 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 34 0d  wsort label-384.
11c80 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28  .SELECT - COUNT(
11c90 20 41 4c 4c 20 2d 20 37 34 20 29 20 63 6f 6c 32   ALL - 74 ) col2
11ca0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
11cb0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a  r0..----..-3....
11cc0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
11cd0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73  ot compatible..s
11ce0 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
11cf0 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
11d00 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
11d10 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
11d20 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
11d30 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38  rowsort label-38
11d40 34 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e  4..SELECT - COUN
11d50 54 20 28 20 41 4c 4c 20 2d 20 37 34 20 29 20 63  T ( ALL - 74 ) c
11d60 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
11d70 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   cor0..----..-3.
11d80 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
11d90 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
11da0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
11db0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 35 0d  wsort label-385.
11dc0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f  .SELECT ALL + CO
11dd0 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2b 20 43  UNT( * ) * + + C
11de0 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74  OUNT( * ) FROM t
11df0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a  ab2..----..9....
11e00 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
11e10 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
11e20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
11e30 61 62 65 6c 2d 33 38 35 0d 0a 53 45 4c 45 43 54  abel-385..SELECT
11e40 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2a   ALL + COUNT ( *
11e50 20 29 20 2a 20 2b 20 2b 20 43 4f 55 4e 54 20 28   ) * + + COUNT (
11e60 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a   * ) FROM tab2..
11e70 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69  ----..9....onlyi
11e80 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
11e90 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
11ea0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
11eb0 62 65 6c 2d 33 38 36 0d 0a 53 45 4c 45 43 54 20  bel-386..SELECT 
11ec0 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2b 20 4d  DISTINCT - ( + M
11ed0 41 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2d  AX( DISTINCT + -
11ee0 20 28 20 63 6f 6c 30 20 29 20 29 20 29 20 41 53   ( col0 ) ) ) AS
11ef0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
11f00 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a 73 6b 69  .----..51....ski
11f10 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
11f20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
11f30 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
11f40 6c 2d 33 38 36 0d 0a 53 45 4c 45 43 54 20 44 49  l-386..SELECT DI
11f50 53 54 49 4e 43 54 20 2d 20 28 20 2b 20 4d 41 58  STINCT - ( + MAX
11f60 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20   ( DISTINCT + - 
11f70 28 20 63 6f 6c 30 20 29 20 29 20 29 20 41 53 20  ( col0 ) ) ) AS 
11f80 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
11f90 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a 6f 6e 6c 79  ----..51....only
11fa0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
11fb0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
11fc0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
11fd0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33   rowsort label-3
11fe0 38 37 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  87..SELECT * FRO
11ff0 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
12000 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20 3c   col1 + + col2 <
12010 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   + CAST( NULL AS
12020 20 53 49 47 4e 45 44 20 29 20 2a 20 2b 20 32 0d   SIGNED ) * + 2.
12030 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
12040 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
12050 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
12060 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
12070 33 38 37 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  387..SELECT * FR
12080 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
12090 54 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32 20  T col1 + + col2 
120a0 3c 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  < + CAST ( NULL 
120b0 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 2b  AS INTEGER ) * +
120c0 20 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72   2..----....quer
120d0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
120e0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
120f0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
12100 72 30 20 57 48 45 52 45 20 28 20 28 20 2b 20 28  r0 WHERE ( ( + (
12110 20 37 37 20 29 20 29 20 2a 20 63 6f 6c 30 20 2b   77 ) ) * col0 +
12120 20 2b 20 37 33 20 29 20 49 53 20 4e 4f 54 20 4e   + 73 ) IS NOT N
12130 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
12140 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63  ues hashing to c
12150 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64 62  6c0a4111b36d04db
12160 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64 0d  c811a11e4d54cad.
12170 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
12180 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
12190 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
121a0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
121b0 61 62 65 6c 2d 33 38 39 0d 0a 53 45 4c 45 43 54  abel-389..SELECT
121c0 20 41 4c 4c 20 2d 20 63 6f 6c 32 20 41 53 20 63   ALL - col2 AS c
121d0 6f 6c 31 2c 20 63 6f 6c 32 20 2a 20 2b 20 2d 20  ol1, col2 * + - 
121e0 43 41 53 54 28 20 2d 20 63 6f 6c 30 20 41 53 20  CAST( - col0 AS 
121f0 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
12200 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
12210 0d 0a 2d 35 39 0d 0a 35 30 31 35 0d 0a 2d 36 38  ..-59..5015..-68
12220 0d 0a 36 31 38 38 0d 0a 2d 39 36 0d 0a 34 38 39  ..6188..-96..489
12230 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  6....skipif mysq
12240 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
12250 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  le..query II row
12260 73 6f 72 74 20 6c 61 62 65 6c 2d 33 38 39 0d 0a  sort label-389..
12270 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
12280 32 20 41 53 20 63 6f 6c 31 2c 20 63 6f 6c 32 20  2 AS col1, col2 
12290 2a 20 2b 20 2d 20 43 41 53 54 20 28 20 2d 20 63  * + - CAST ( - c
122a0 6f 6c 30 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol0 AS INTEGER )
122b0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
122c0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 35  r0..----..-59..5
122d0 30 31 35 0d 0a 2d 36 38 0d 0a 36 31 38 38 0d 0a  015..-68..6188..
122e0 2d 39 36 0d 0a 34 38 39 36 0d 0a 0d 0a 6f 6e 6c  -96..4896....onl
122f0 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
12300 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
12310 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
12320 44 20 74 79 70 65 3a 20 44 49 56 20 66 6f 72 20  D type: DIV for 
12330 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
12340 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
12350 6f 72 74 20 6c 61 62 65 6c 2d 33 39 30 0d 0a 53  ort label-390..S
12360 45 4c 45 43 54 20 41 4c 4c 20 2b 20 38 20 44 49  ELECT ALL + 8 DI
12370 56 20 2d 20 34 34 20 2a 20 2b 20 43 41 53 54 28  V - 44 * + CAST(
12380 20 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   - - COUNT( * ) 
12390 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
123a0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ol2 FROM tab1 co
123b0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  r0..----..0....s
123c0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
123d0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
123e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
123f0 62 65 6c 2d 33 39 30 0d 0a 53 45 4c 45 43 54 20  bel-390..SELECT 
12400 41 4c 4c 20 2b 20 38 20 2f 20 2d 20 34 34 20 2a  ALL + 8 / - 44 *
12410 20 2b 20 43 41 53 54 20 28 20 2d 20 2d 20 43 4f   + CAST ( - - CO
12420 55 4e 54 20 28 20 2a 20 29 20 41 53 20 49 4e 54  UNT ( * ) AS INT
12430 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32 20 46  EGER ) AS col2 F
12440 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
12450 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..0....onlyif
12460 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
12470 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
12480 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
12490 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
124a0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39 31  owsort label-391
124b0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43  ..SELECT ALL + C
124c0 4f 55 4e 54 28 20 2d 20 2d 20 43 41 53 54 28 20  OUNT( - - CAST( 
124d0 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
124e0 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   ) col0 FROM tab
124f0 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
12500 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
12510 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
12520 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
12530 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
12540 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
12550 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
12560 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
12570 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
12580 62 65 6c 2d 33 39 31 0d 0a 53 45 4c 45 43 54 20  bel-391..SELECT 
12590 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28 20 2d 20  ALL + COUNT ( - 
125a0 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
125b0 20 49 4e 54 45 47 45 52 20 29 20 29 20 63 6f 6c   INTEGER ) ) col
125c0 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
125d0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  or0..----..0....
125e0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
125f0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
12600 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
12610 72 74 20 6c 61 62 65 6c 2d 33 39 32 0d 0a 53 45  rt label-392..SE
12620 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
12630 4d 41 58 28 20 2b 20 63 6f 6c 31 20 29 20 41 53  MAX( + col1 ) AS
12640 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
12650 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  AS cor0..----..7
12660 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
12670 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
12680 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
12690 6f 72 74 20 6c 61 62 65 6c 2d 33 39 32 0d 0a 53  ort label-392..S
126a0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
126b0 20 4d 41 58 20 28 20 2b 20 63 6f 6c 31 20 29 20   MAX ( + col1 ) 
126c0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
126d0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
126e0 0a 37 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .77....query III
126f0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
12700 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
12710 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
12720 20 63 6f 6c 31 20 3c 3d 20 2b 20 2b 20 63 6f 6c   col1 <= + + col
12730 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 31 0d  0..----..15..81.
12740 0a 34 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .47....onlyif my
12750 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
12760 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
12770 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12780 74 20 6c 61 62 65 6c 2d 33 39 34 0d 0a 53 45 4c  t label-394..SEL
12790 45 43 54 20 2d 20 2b 20 43 41 53 54 28 20 2d 20  ECT - + CAST( - 
127a0 32 35 20 41 53 20 53 49 47 4e 45 44 20 29 20 46  25 AS SIGNED ) F
127b0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
127c0 0d 0a 2d 2d 2d 2d 0d 0a 32 35 0d 0a 32 35 0d 0a  ..----..25..25..
127d0 32 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  25....skipif mys
127e0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
127f0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
12800 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39 34 0d 0a  sort label-394..
12810 53 45 4c 45 43 54 20 2d 20 2b 20 43 41 53 54 20  SELECT - + CAST 
12820 28 20 2d 20 32 35 20 41 53 20 49 4e 54 45 47 45  ( - 25 AS INTEGE
12830 52 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  R ) FROM tab2 AS
12840 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 35 0d   cor0..----..25.
12850 0a 32 35 0d 0a 32 35 0d 0a 0d 0a 6f 6e 6c 79 69  .25..25....onlyi
12860 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
12870 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
12880 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
12890 61 62 65 6c 2d 33 39 35 0d 0a 53 45 4c 45 43 54  abel-395..SELECT
128a0 20 43 4f 55 4e 54 28 20 2a 20 29 20 63 6f 6c 32   COUNT( * ) col2
128b0 2c 20 4d 49 4e 28 20 41 4c 4c 20 2b 20 2d 20 63  , MIN( ALL + - c
128c0 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 30 0d  ol0 ) FROM tab0.
128d0 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 2d 39 37 0d 0a 0d  .----..3..-97...
128e0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
128f0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
12900 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
12910 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
12920 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
12930 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
12940 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
12950 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
12960 33 39 35 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e  395..SELECT COUN
12970 54 20 28 20 2a 20 29 20 63 6f 6c 32 2c 20 4d 49  T ( * ) col2, MI
12980 4e 20 28 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 30  N ( ALL + - col0
12990 20 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d   ) FROM tab0..--
129a0 2d 2d 0d 0a 33 0d 0a 2d 39 37 0d 0a 0d 0a 6f 6e  --..3..-97....on
129b0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
129c0 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41  T syntax: DECIMA
129d0 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  L type: ..query 
129e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
129f0 33 39 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  396..SELECT ALL 
12a00 2b 20 37 37 20 2a 20 28 20 28 20 2b 20 63 6f 6c  + 77 * ( ( + col
12a10 30 20 29 20 29 20 2a 20 43 41 53 54 28 20 4e 55  0 ) ) * CAST( NU
12a20 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29 20  LL AS DECIMAL ) 
12a30 2b 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 31 35 20  + - col1 + - 15 
12a40 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
12a50 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  2..----..NULL..N
12a60 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
12a70 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
12a80 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
12a90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
12aa0 6c 2d 33 39 36 0d 0a 53 45 4c 45 43 54 20 41 4c  l-396..SELECT AL
12ab0 4c 20 2b 20 37 37 20 2a 20 28 20 28 20 2b 20 63  L + 77 * ( ( + c
12ac0 6f 6c 30 20 29 20 29 20 2a 20 43 41 53 54 20 28  ol0 ) ) * CAST (
12ad0 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29 20   NULL AS REAL ) 
12ae0 2b 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 31 35 20  + - col1 + - 15 
12af0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
12b00 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  2..----..NULL..N
12b10 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ULL..NULL....que
12b20 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
12b30 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
12b40 20 2d 20 36 33 2c 20 63 6f 6c 31 20 46 52 4f 4d   - 63, col1 FROM
12b50 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
12b60 2d 2d 2d 0d 0a 2d 36 33 0d 0a 35 31 0d 0a 2d 36  ---..-63..51..-6
12b70 33 0d 0a 36 37 0d 0a 2d 36 33 0d 0a 37 37 0d 0a  3..67..-63..77..
12b80 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
12b90 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 34  rt..SELECT - - 4
12ba0 36 20 41 53 20 63 6f 6c 30 2c 20 35 32 20 2d 20  6 AS col0, 52 - 
12bb0 2b 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30  + + col2 AS col0
12bc0 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
12bd0 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 2d 31 36 0d 0a  .----..46..-16..
12be0 34 36 0d 0a 2d 34 34 0d 0a 34 36 0d 0a 2d 37 0d  46..-44..46..-7.
12bf0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
12c00 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
12c10 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72  ax: ..query II r
12c20 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 33 39 39  owsort label-399
12c30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
12c40 54 20 2d 20 38 32 20 41 53 20 63 6f 6c 32 2c 20  T - 82 AS col2, 
12c50 2b 20 28 20 2b 20 2d 20 53 55 4d 28 20 41 4c 4c  + ( + - SUM( ALL
12c60 20 2d 20 63 6f 6c 32 20 29 20 29 20 63 6f 6c 31   - col2 ) ) col1
12c70 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
12c80 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 32 0d 0a 31  r0..----..-82..1
12c90 35 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  56....skipif mys
12ca0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
12cb0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
12cc0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
12cd0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
12ce0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
12cf0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
12d00 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
12d10 61 62 65 6c 2d 33 39 39 0d 0a 53 45 4c 45 43 54  abel-399..SELECT
12d20 20 44 49 53 54 49 4e 43 54 20 2d 20 38 32 20 41   DISTINCT - 82 A
12d30 53 20 63 6f 6c 32 2c 20 2b 20 28 20 2b 20 2d 20  S col2, + ( + - 
12d40 53 55 4d 20 28 20 41 4c 4c 20 2d 20 63 6f 6c 32  SUM ( ALL - col2
12d50 20 29 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74   ) ) col1 FROM t
12d60 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
12d70 2d 0d 0a 2d 38 32 0d 0a 31 35 36 0d 0a 0d 0a 71  -..-82..156....q
12d80 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
12d90 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
12da0 74 61 62 31 20 57 48 45 52 45 20 63 6f 6c 31 20  tab1 WHERE col1 
12db0 3c 20 2d 20 31 33 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  < - 13..----....
12dc0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
12dd0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
12de0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
12df0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
12e00 2d 34 30 31 0d 0a 53 45 4c 45 43 54 20 34 32 20  -401..SELECT 42 
12e10 44 49 56 20 63 6f 6c 31 20 63 6f 6c 30 20 46 52  DIV col1 col0 FR
12e20 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab1..----..0
12e30 0d 0a 33 0d 0a 38 0d 0a 0d 0a 73 6b 69 70 69 66  ..3..8....skipif
12e40 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
12e50 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
12e60 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
12e70 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
12e80 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
12e90 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
12ea0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
12eb0 74 20 6c 61 62 65 6c 2d 34 30 31 0d 0a 53 45 4c  t label-401..SEL
12ec0 45 43 54 20 34 32 20 2f 20 63 6f 6c 31 20 63 6f  ECT 42 / col1 co
12ed0 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l0 FROM tab1..--
12ee0 2d 2d 0d 0a 30 0d 0a 33 0d 0a 38 0d 0a 0d 0a 71  --..0..3..8....q
12ef0 75 65 72 79 20 49 49 49 49 49 49 20 72 6f 77 73  uery IIIIII rows
12f00 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
12f10 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
12f20 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
12f30 61 62 32 20 41 53 20 63 6f 72 31 20 57 48 45 52  ab2 AS cor1 WHER
12f40 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45 54 57 45  E NOT NULL BETWE
12f50 45 4e 20 2d 20 28 20 2b 20 32 36 20 29 20 41 4e  EN - ( + 26 ) AN
12f60 44 20 2b 20 28 20 2b 20 37 39 20 29 0d 0a 2d 2d  D + ( + 79 )..--
12f70 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
12f80 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
12f90 36 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  60 AS col1 FROM 
12fa0 74 61 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f  tab1 AS cor0 CRO
12fb0 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20  SS JOIN tab0 AS 
12fc0 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  cor1..----..9 va
12fd0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
12fe0 61 39 37 35 36 31 65 31 37 65 63 61 61 36 31 38  a97561e17ecaa618
12ff0 32 32 37 63 37 35 61 35 37 62 32 36 38 66 33 33  227c75a57b268f33
13000 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
13010 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
13020 49 4e 43 54 20 2b 20 34 39 20 2b 20 2d 20 37 32  INCT + 49 + - 72
13030 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
13040 62 31 2c 20 74 61 62 32 20 41 53 20 63 6f 72 30  b1, tab2 AS cor0
13050 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 0d 0a 71  ..----..-23....q
13060 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
13070 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
13080 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53  T * FROM tab2 AS
13090 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
130a0 63 6f 6c 31 20 2d 20 2b 20 63 6f 6c 30 20 2a 20  col1 - + col0 * 
130b0 2d 20 63 6f 6c 31 20 3c 3d 20 4e 55 4c 4c 0d 0a  - col1 <= NULL..
130c0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
130d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
130e0 2d 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 35 30 20  - - col0 + - 50 
130f0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
13100 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 31 34 0d  0..----..-4..14.
13110 0a 32 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .25....onlyif my
13120 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
13130 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e  x: aggregate syn
13140 74 61 78 3a 20 44 45 43 49 4d 41 4c 20 74 79 70  tax: DECIMAL typ
13150 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
13160 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 37 0d 0a  sort label-407..
13170 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54 28 20  SELECT - COUNT( 
13180 39 35 20 29 20 2a 20 2d 20 31 38 20 2b 20 2d 20  95 ) * - 18 + - 
13190 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
131a0 44 45 43 49 4d 41 4c 20 29 20 2a 20 2d 20 2d 20  DECIMAL ) * - - 
131b0 38 31 20 2b 20 2b 20 35 37 20 41 53 20 63 6f 6c  81 + + 57 AS col
131c0 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
131d0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
131e0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
131f0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
13200 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
13210 74 20 6c 61 62 65 6c 2d 34 30 37 0d 0a 53 45 4c  t label-407..SEL
13220 45 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 39 35  ECT - COUNT ( 95
13230 20 29 20 2a 20 2d 20 31 38 20 2b 20 2d 20 2d 20   ) * - 18 + - - 
13240 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 52  CAST ( NULL AS R
13250 45 41 4c 20 29 20 2a 20 2d 20 2d 20 38 31 20 2b  EAL ) * - - 81 +
13260 20 2b 20 35 37 20 41 53 20 63 6f 6c 31 20 46 52   + 57 AS col1 FR
13270 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
13280 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .----..NULL....o
13290 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
132a0 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
132b0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
132c0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
132d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
132e0 6c 2d 34 30 38 0d 0a 53 45 4c 45 43 54 20 2b 20  l-408..SELECT + 
132f0 37 31 20 2b 20 2b 20 2b 20 43 41 53 54 28 20 2d  71 + + + CAST( -
13300 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20 39   MIN( DISTINCT 9
13310 39 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20  9 ) AS SIGNED ) 
13320 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
13330 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
13340 0a 2d 32 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-28....skipif m
13350 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
13360 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
13370 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 30 38  owsort label-408
13380 0d 0a 53 45 4c 45 43 54 20 2b 20 37 31 20 2b 20  ..SELECT + 71 + 
13390 2b 20 2b 20 43 41 53 54 20 28 20 2d 20 4d 49 4e  + + CAST ( - MIN
133a0 20 28 20 44 49 53 54 49 4e 43 54 20 39 39 20 29   ( DISTINCT 99 )
133b0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53   AS INTEGER ) AS
133c0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
133d0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
133e0 32 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  28....query I ro
133f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
13400 2b 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 31 20  + col0 * + col1 
13410 2a 20 2b 20 31 20 2b 20 2d 20 63 6f 6c 30 20 2a  * + 1 + - col0 *
13420 20 63 6f 6c 30 20 2a 20 63 6f 6c 30 20 41 53 20   col0 * col0 AS 
13430 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 63  col0 FROM tab1 c
13440 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 33 33  or0..----..-1333
13450 36 35 0d 0a 2d 36 31 34 35 35 30 0d 0a 2d 37 35  65..-614550..-75
13460 37 38 34 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  7848....onlyif m
13470 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
13480 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
13490 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
134a0 2d 34 31 30 0d 0a 53 45 4c 45 43 54 20 2d 20 4d  -410..SELECT - M
134b0 49 4e 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20 2b  IN( - - col0 ) +
134c0 20 2b 20 34 39 20 41 53 20 63 6f 6c 30 20 46 52   + 49 AS col0 FR
134d0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33  OM tab2..----..3
134e0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
134f0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
13500 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
13510 72 74 20 6c 61 62 65 6c 2d 34 31 30 0d 0a 53 45  rt label-410..SE
13520 4c 45 43 54 20 2d 20 4d 49 4e 20 28 20 2d 20 2d  LECT - MIN ( - -
13530 20 63 6f 6c 30 20 29 20 2b 20 2b 20 34 39 20 41   col0 ) + + 49 A
13540 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
13550 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65  ..----..3....que
13560 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
13570 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
13580 62 31 20 57 48 45 52 45 20 63 6f 6c 30 20 3c 3d  b1 WHERE col0 <=
13590 20 28 20 2b 20 63 6f 6c 31 20 2d 20 2b 20 63 6f   ( + col1 - + co
135a0 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  l2 )..----....qu
135b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
135c0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 30  ELECT ALL + col0
135d0 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d   * + + col1 FROM
135e0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 34   tab2..----..234
135f0 36 0d 0a 34 39 32 38 0d 0a 35 30 32 35 0d 0a 0d  6..4928..5025...
13600 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
13610 74 0d 0a 53 45 4c 45 43 54 20 32 37 2c 20 2b 20  t..SELECT 27, + 
13620 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f  col2 AS col1 FRO
13630 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 37  M tab1..----..27
13640 0d 0a 35 39 0d 0a 32 37 0d 0a 36 38 0d 0a 32 37  ..59..27..68..27
13650 0d 0a 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..96....onlyif m
13660 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
13670 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
13680 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
13690 2d 34 31 34 0d 0a 53 45 4c 45 43 54 20 44 49 53  -414..SELECT DIS
136a0 54 49 4e 43 54 20 2d 20 4d 41 58 28 20 2b 20 31  TINCT - MAX( + 1
136b0 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
136c0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  cor0..----..-1..
136d0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
136e0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
136f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
13700 20 6c 61 62 65 6c 2d 34 31 34 0d 0a 53 45 4c 45   label-414..SELE
13710 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d 41  CT DISTINCT - MA
13720 58 20 28 20 2b 20 31 20 29 20 46 52 4f 4d 20 74  X ( + 1 ) FROM t
13730 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
13740 2d 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72 79 20 49  -..-1....query I
13750 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
13760 20 41 4c 4c 20 31 31 20 41 53 20 63 6f 6c 32 20   ALL 11 AS col2 
13770 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
13780 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
13790 30 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 20  0 cor1..----..9 
137a0 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
137b0 6f 20 66 34 64 31 39 39 35 38 34 62 34 34 37 33  o f4d199584b4473
137c0 32 66 31 61 38 39 37 65 36 36 39 31 62 34 65 61  2f1a897e6691b4ea
137d0 30 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  00....query I ro
137e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
137f0 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20  STINCT + col0 * 
13800 28 20 2d 20 2b 20 63 6f 6c 31 20 29 20 41 53 20  ( - + col1 ) AS 
13810 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
13820 2d 2d 2d 2d 0d 0a 2d 34 32 35 0d 0a 2d 34 32 37  ----..-425..-427
13830 37 0d 0a 2d 37 31 34 0d 0a 0d 0a 71 75 65 72 79  7..-714....query
13840 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
13850 43 54 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 39 36  CT - col1 * - 96
13860 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
13870 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 38 39 36 0d 0a  b2..----..4896..
13880 36 34 33 32 0d 0a 37 33 39 32 0d 0a 0d 0a 71 75  6432..7392....qu
13890 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
138a0 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
138b0 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
138c0 45 20 4e 4f 54 20 2d 20 34 38 20 3c 20 2b 20 33  E NOT - 48 < + 3
138d0 37 20 2a 20 2d 20 35 33 20 2b 20 2d 20 63 6f 6c  7 * - 53 + - col
138e0 32 20 2b 20 35 37 20 2a 20 63 6f 6c 30 0d 0a 2d  2 + 57 * col0..-
138f0 2d 2d 2d 0d 0a 31 35 0d 0a 38 31 0d 0a 34 37 0d  ---..15..81..47.
13900 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
13910 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
13920 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
13930 52 45 20 28 20 4e 55 4c 4c 20 3d 20 63 6f 6c 30  RE ( NULL = col0
13940 20 2f 20 63 6f 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d   / col2 )..----.
13950 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
13960 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
13970 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2b  ROM tab2 WHERE +
13980 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20 2b 20 2d   col0 * col2 + -
13990 20 38 31 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d   81 IS NOT NULL.
139a0 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
139b0 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39  hashing to 75c99
139c0 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32  8aa53ac83218cbf2
139d0 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71  feb962d0a49....q
139e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
139f0 53 45 4c 45 43 54 20 41 4c 4c 20 34 33 20 46 52  SELECT ALL 43 FR
13a00 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20  OM tab1 WHERE ( 
13a10 34 35 20 29 20 42 45 54 57 45 45 4e 20 4e 55 4c  45 ) BETWEEN NUL
13a20 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  L AND NULL..----
13a30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
13a40 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
13a50 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20 2b 20  col1 * - col2 + 
13a60 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
13a70 2d 2d 2d 2d 0d 0a 2d 31 32 33 0d 0a 2d 32 0d 0a  ----..-123..-2..
13a80 2d 33 37 39 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -3792....onlyif 
13a90 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
13aa0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
13ab0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
13ac0 6c 2d 34 32 33 0d 0a 53 45 4c 45 43 54 20 44 49  l-423..SELECT DI
13ad0 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20  STINCT + COUNT( 
13ae0 44 49 53 54 49 4e 43 54 20 2d 20 38 31 20 29 20  DISTINCT - 81 ) 
13af0 2b 20 2b 20 53 55 4d 28 20 41 4c 4c 20 2d 20 63  + + SUM( ALL - c
13b00 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  ol2 ) FROM tab2.
13b10 0a 2d 2d 2d 2d 0d 0a 2d 31 32 30 0d 0a 0d 0a 73  .----..-120....s
13b20 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
13b30 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
13b40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
13b50 62 65 6c 2d 34 32 33 0d 0a 53 45 4c 45 43 54 20  bel-423..SELECT 
13b60 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54  DISTINCT + COUNT
13b70 20 28 20 44 49 53 54 49 4e 43 54 20 2d 20 38 31   ( DISTINCT - 81
13b80 20 29 20 2b 20 2b 20 53 55 4d 20 28 20 41 4c 4c   ) + + SUM ( ALL
13b90 20 2d 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74   - col2 ) FROM t
13ba0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 30 0d  ab2..----..-120.
13bb0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
13bc0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
13bd0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
13be0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 32 34 0d  wsort label-424.
13bf0 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a  .SELECT COUNT( *
13c00 20 29 20 2a 20 2b 20 37 33 20 46 52 4f 4d 20 74   ) * + 73 FROM t
13c10 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 31 39 0d 0a  ab1..----..219..
13c20 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
13c30 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
13c40 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
13c50 20 6c 61 62 65 6c 2d 34 32 34 0d 0a 53 45 4c 45   label-424..SELE
13c60 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a  CT COUNT ( * ) *
13c70 20 2b 20 37 33 20 46 52 4f 4d 20 74 61 62 31 0d   + 73 FROM tab1.
13c80 0a 2d 2d 2d 2d 0d 0a 32 31 39 0d 0a 0d 0a 71 75  .----..219....qu
13c90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
13ca0 45 4c 45 43 54 20 41 4c 4c 20 32 39 20 41 53 20  ELECT ALL 29 AS 
13cb0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41  col0 FROM tab0 A
13cc0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 39  S cor0..----..29
13cd0 0d 0a 32 39 0d 0a 32 39 0d 0a 0d 0a 6f 6e 6c 79  ..29..29....only
13ce0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
13cf0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
13d00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
13d10 61 62 65 6c 2d 34 32 36 0d 0a 53 45 4c 45 43 54  abel-426..SELECT
13d20 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 28   DISTINCT COUNT(
13d30 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32 20   col0 ) AS col2 
13d40 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
13d50 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b  0..----..3....sk
13d60 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
13d70 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
13d80 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
13d90 65 6c 2d 34 32 36 0d 0a 53 45 4c 45 43 54 20 44  el-426..SELECT D
13da0 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20  ISTINCT COUNT ( 
13db0 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46  col0 ) AS col2 F
13dc0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
13dd0 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c  ..----..3....onl
13de0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
13df0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
13e00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
13e10 6c 61 62 65 6c 2d 34 32 37 0d 0a 53 45 4c 45 43  label-427..SELEC
13e20 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55  T DISTINCT + COU
13e30 4e 54 28 20 2b 20 63 6f 6c 31 20 29 20 41 53 20  NT( + col1 ) AS 
13e40 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
13e50 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  S cor0..----..3.
13e60 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
13e70 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
13e80 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
13e90 74 20 6c 61 62 65 6c 2d 34 32 37 0d 0a 53 45 4c  t label-427..SEL
13ea0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 43  ECT DISTINCT + C
13eb0 4f 55 4e 54 20 28 20 2b 20 63 6f 6c 31 20 29 20  OUNT ( + col1 ) 
13ec0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
13ed0 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
13ee0 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .3....query I ro
13ef0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
13f00 63 6f 6c 32 20 2d 20 2b 20 36 35 20 2a 20 2d 20  col2 - + 65 * - 
13f10 63 6f 6c 32 20 2a 20 2b 20 39 38 20 2b 20 2d 20  col2 * + 98 + - 
13f20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  + col1 FROM tab0
13f30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f 54 20   WHERE NULL NOT 
13f40 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c 30 20 41  BETWEEN - col0 A
13f50 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  ND NULL..----...
13f60 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
13f70 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
13f80 54 20 2d 20 63 6f 6c 32 20 2d 20 2b 20 2d 20 63  T - col2 - + - c
13f90 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol2 FROM tab2 AS
13fa0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
13fb0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
13fc0 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 33  rt..SELECT + + 3
13fd0 38 20 41 53 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c  8 AS col2, + col
13fe0 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  0 FROM tab1 AS c
13ff0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 38 0d 0a 35  or0..----..38..5
14000 31 0d 0a 33 38 0d 0a 38 35 0d 0a 33 38 0d 0a 39  1..38..85..38..9
14010 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
14020 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
14030 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
14040 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
14050 6c 61 62 65 6c 2d 34 33 31 0d 0a 53 45 4c 45 43  label-431..SELEC
14060 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 37  T DISTINCT - - 7
14070 37 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  7 + - CAST( NULL
14080 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
14090 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
140a0 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  -..NULL....skipi
140b0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
140c0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
140d0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
140e0 34 33 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  431..SELECT DIST
140f0 49 4e 43 54 20 2d 20 2d 20 37 37 20 2b 20 2d 20  INCT - - 77 + - 
14100 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
14110 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61  NTEGER ) FROM ta
14120 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  b2 cor0..----..N
14130 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
14140 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
14150 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
14160 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
14170 72 74 20 6c 61 62 65 6c 2d 34 33 32 0d 0a 53 45  rt label-432..SE
14180 4c 45 43 54 20 2b 20 2d 20 63 6f 6c 32 20 63 6f  LECT + - col2 co
14190 6c 31 2c 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  l1, - CAST( NULL
141a0 20 41 53 20 53 49 47 4e 45 44 20 29 20 63 6f 6c   AS SIGNED ) col
141b0 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
141c0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a  or0..----..-59..
141d0 4e 55 4c 4c 0d 0a 2d 36 38 0d 0a 4e 55 4c 4c 0d  NULL..-68..NULL.
141e0 0a 2d 39 36 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  .-96..NULL....sk
141f0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
14200 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
14210 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
14220 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
14230 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
14240 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
14250 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
14260 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 33 32  owsort label-432
14270 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 63 6f 6c  ..SELECT + - col
14280 32 20 63 6f 6c 31 2c 20 2d 20 43 41 53 54 20 28  2 col1, - CAST (
14290 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
142a0 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   ) col1 FROM tab
142b0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
142c0 0a 2d 35 39 0d 0a 4e 55 4c 4c 0d 0a 2d 36 38 0d  .-59..NULL..-68.
142d0 0a 4e 55 4c 4c 0d 0a 2d 39 36 0d 0a 4e 55 4c 4c  .NULL..-96..NULL
142e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
142f0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
14300 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
14310 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 33 33  owsort label-433
14320 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 53  ..SELECT ALL - S
14330 55 4d 28 20 2b 20 2d 20 33 32 20 29 20 63 6f 6c  UM( + - 32 ) col
14340 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
14350 2d 0d 0a 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..96....skipif 
14360 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
14370 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
14380 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
14390 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
143a0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
143b0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
143c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
143d0 20 6c 61 62 65 6c 2d 34 33 33 0d 0a 53 45 4c 45   label-433..SELE
143e0 43 54 20 41 4c 4c 20 2d 20 53 55 4d 20 28 20 2b  CT ALL - SUM ( +
143f0 20 2d 20 33 32 20 29 20 63 6f 6c 32 20 46 52 4f   - 32 ) col2 FRO
14400 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 36  M tab2..----..96
14410 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
14420 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 39 37  ort..SELECT + 97
14430 20 2a 20 2d 20 2d 20 33 32 20 41 53 20 63 6f 6c   * - - 32 AS col
14440 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  0 FROM tab0..---
14450 2d 0d 0a 33 31 30 34 0d 0a 33 31 30 34 0d 0a 33  -..3104..3104..3
14460 31 30 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  104....onlyif my
14470 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
14480 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
14490 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
144a0 34 33 35 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  435..SELECT + - 
144b0 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20 2b 20  SUM( DISTINCT + 
144c0 2d 20 31 39 20 29 20 63 6f 6c 31 20 46 52 4f 4d  - 19 ) col1 FROM
144d0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
144e0 2d 2d 2d 0d 0a 31 39 0d 0a 0d 0a 73 6b 69 70 69  ---..19....skipi
144f0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
14500 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66  mpatible..skipif
14510 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
14520 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
14530 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
14540 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
14550 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
14560 72 74 20 6c 61 62 65 6c 2d 34 33 35 0d 0a 53 45  rt label-435..SE
14570 4c 45 43 54 20 2b 20 2d 20 53 55 4d 20 28 20 44  LECT + - SUM ( D
14580 49 53 54 49 4e 43 54 20 2b 20 2d 20 31 39 20 29  ISTINCT + - 19 )
14590 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20   col1 FROM tab0 
145a0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
145b0 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
145c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
145d0 54 49 4e 43 54 20 2b 20 35 37 20 46 52 4f 4d 20  TINCT + 57 FROM 
145e0 74 61 62 30 2c 20 74 61 62 31 20 63 6f 72 30 0d  tab0, tab1 cor0.
145f0 0a 2d 2d 2d 2d 0d 0a 35 37 0d 0a 0d 0a 6f 6e 6c  .----..57....onl
14600 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
14610 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
14620 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
14630 6c 61 62 65 6c 2d 34 33 37 0d 0a 53 45 4c 45 43  label-437..SELEC
14640 54 20 44 49 53 54 49 4e 43 54 20 4d 49 4e 28 20  T DISTINCT MIN( 
14650 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46  col0 ) AS col2 F
14660 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
14670 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a 73 6b  ..----..51....sk
14680 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
14690 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
146a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
146b0 65 6c 2d 34 33 37 0d 0a 53 45 4c 45 43 54 20 44  el-437..SELECT D
146c0 49 53 54 49 4e 43 54 20 4d 49 4e 20 28 20 63 6f  ISTINCT MIN ( co
146d0 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l0 ) AS col2 FRO
146e0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
146f0 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a 71 75 65 72  ----..51....quer
14700 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
14710 45 43 54 20 2d 20 2b 20 32 20 2b 20 2d 20 39 37  ECT - + 2 + - 97
14720 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
14730 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  r0 WHERE NOT NUL
14740 4c 20 3d 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d  L = ( NULL )..--
14750 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
14760 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
14770 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
14780 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14790 20 6c 61 62 65 6c 2d 34 33 39 0d 0a 53 45 4c 45   label-439..SELE
147a0 43 54 20 2b 20 63 6f 6c 32 20 44 49 56 20 2b 20  CT + col2 DIV + 
147b0 2d 20 39 39 20 44 49 56 20 63 6f 6c 30 20 2a 20  - 99 DIV col0 * 
147c0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
147d0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  S cor0..----..0.
147e0 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .0..0....skipif 
147f0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
14800 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
14810 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 33  rowsort label-43
14820 39 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32  9..SELECT + col2
14830 20 2f 20 2b 20 2d 20 39 39 20 2f 20 63 6f 6c 30   / + - 99 / col0
14840 20 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   * col0 FROM tab
14850 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
14860 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79  .0..0..0....only
14870 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
14880 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
14890 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
148a0 61 62 65 6c 2d 34 34 30 0d 0a 53 45 4c 45 43 54  abel-440..SELECT
148b0 20 41 4c 4c 20 43 4f 55 4e 54 28 20 44 49 53 54   ALL COUNT( DIST
148c0 49 4e 43 54 20 2b 20 28 20 2d 20 38 32 20 29 20  INCT + ( - 82 ) 
148d0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
148e0 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
148f0 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
14900 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
14910 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
14920 6f 72 74 20 6c 61 62 65 6c 2d 34 34 30 0d 0a 53  ort label-440..S
14930 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 20  ELECT ALL COUNT 
14940 28 20 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2d  ( DISTINCT + ( -
14950 20 38 32 20 29 20 29 20 41 53 20 63 6f 6c 32 20   82 ) ) AS col2 
14960 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a  FROM tab2 cor0..
14970 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79  ----..1....query
14980 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
14990 43 54 20 2d 20 28 20 34 31 20 29 20 41 53 20 63  CT - ( 41 ) AS c
149a0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
149b0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 31   cor0..----..-41
149c0 0d 0a 2d 34 31 0d 0a 2d 34 31 0d 0a 0d 0a 71 75  ..-41..-41....qu
149d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
149e0 45 4c 45 43 54 20 2b 20 34 39 20 2b 20 2d 20 32  ELECT + 49 + - 2
149f0 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  1 AS col0 FROM t
14a00 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
14a10 32 38 0d 0a 32 38 0d 0a 32 38 0d 0a 0d 0a 71 75  28..28..28....qu
14a20 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
14a30 53 45 4c 45 43 54 20 2b 20 2d 20 63 6f 6c 31 20  SELECT + - col1 
14a40 41 53 20 63 6f 6c 32 2c 20 2b 20 63 6f 6c 30 20  AS col2, + col0 
14a50 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
14a60 30 20 57 48 45 52 45 20 2b 20 32 35 20 42 45 54  0 WHERE + 25 BET
14a70 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20  WEEN NULL AND + 
14a80 31 33 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  13..----....quer
14a90 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
14aa0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
14ab0 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
14ac0 20 63 6f 6c 30 20 3c 20 2d 20 28 20 2b 20 37 36   col0 < - ( + 76
14ad0 20 29 20 41 4e 44 20 4e 4f 54 20 2b 20 34 30 20   ) AND NOT + 40 
14ae0 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  IS NULL..----...
14af0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
14b00 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
14b10 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
14b20 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
14b30 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
14b40 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
14b50 54 20 44 49 53 54 49 4e 43 54 20 38 33 20 2b 20  T DISTINCT 83 + 
14b60 35 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  5 col1 FROM tab2
14b70 0d 0a 2d 2d 2d 2d 0d 0a 38 38 0d 0a 0d 0a 6f 6e  ..----..88....on
14b80 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
14b90 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
14ba0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
14bb0 20 6c 61 62 65 6c 2d 34 34 36 0d 0a 53 45 4c 45   label-446..SELE
14bc0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 4d 49  CT DISTINCT + MI
14bd0 4e 28 20 41 4c 4c 20 2d 20 2d 20 34 32 20 29 20  N( ALL - - 42 ) 
14be0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
14bf0 2d 2d 2d 2d 0d 0a 34 32 0d 0a 0d 0a 73 6b 69 70  ----..42....skip
14c00 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
14c10 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
14c20 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
14c30 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
14c40 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
14c50 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
14c60 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
14c70 6f 72 74 20 6c 61 62 65 6c 2d 34 34 36 0d 0a 53  ort label-446..S
14c80 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
14c90 20 4d 49 4e 20 28 20 41 4c 4c 20 2d 20 2d 20 34   MIN ( ALL - - 4
14ca0 32 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  2 ) col0 FROM ta
14cb0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 34 32 0d 0a 0d 0a  b1..----..42....
14cc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
14cd0 0a 53 45 4c 45 43 54 20 31 39 20 2b 20 2d 20 63  .SELECT 19 + - c
14ce0 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
14cf0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37   tab2..----..-27
14d00 0d 0a 2d 34 35 0d 0a 2d 35 36 0d 0a 0d 0a 71 75  ..-45..-56....qu
14d10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
14d20 45 4c 45 43 54 20 2d 20 35 37 20 2a 20 2b 20 2b  ELECT - 57 * + +
14d30 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 20 2a 20 2b   col2 + col2 * +
14d40 20 63 6f 6c 32 20 2a 20 2b 20 38 38 20 2a 20 2b   col2 * + 88 * +
14d50 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
14d60 0a 2d 2d 2d 2d 0d 0a 31 30 38 33 39 33 32 30 0d  .----..10839320.
14d70 0a 31 39 38 33 30 38 33 38 0d 0a 32 33 37 32 38  .19830838..23728
14d80 34 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  41....query III 
14d90 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
14da0 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
14db0 45 20 39 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  E 91 IS NULL..--
14dc0 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
14dd0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
14de0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
14df0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
14e00 72 74 20 6c 61 62 65 6c 2d 34 35 30 0d 0a 53 45  rt label-450..SE
14e10 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
14e20 20 57 48 45 52 45 20 4e 4f 54 20 36 33 20 3c 20   WHERE NOT 63 < 
14e30 4e 55 4c 4c 20 41 4e 44 20 4e 4f 54 20 2d 20 63  NULL AND NOT - c
14e40 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32 20 2a 20 63  ol1 * - col2 * c
14e50 6f 6c 31 20 2a 20 2d 20 28 20 2b 20 63 6f 6c 32  ol1 * - ( + col2
14e60 20 29 20 2a 20 2d 20 63 6f 6c 31 20 42 45 54 57   ) * - col1 BETW
14e70 45 45 4e 20 2d 20 35 35 20 2a 20 28 20 63 6f 6c  EEN - 55 * ( col
14e80 32 20 29 20 41 4e 44 20 2d 20 43 41 53 54 28 20  2 ) AND - CAST( 
14e90 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
14ea0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
14eb0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
14ec0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
14ed0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
14ee0 2d 34 35 30 0d 0a 53 45 4c 45 43 54 20 2a 20 46  -450..SELECT * F
14ef0 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
14f00 4f 54 20 36 33 20 3c 20 4e 55 4c 4c 20 41 4e 44  OT 63 < NULL AND
14f10 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 2a 20 2d 20   NOT - col1 * - 
14f20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 2a 20 2d 20  col2 * col1 * - 
14f30 28 20 2b 20 63 6f 6c 32 20 29 20 2a 20 2d 20 63  ( + col2 ) * - c
14f40 6f 6c 31 20 42 45 54 57 45 45 4e 20 2d 20 35 35  ol1 BETWEEN - 55
14f50 20 2a 20 28 20 63 6f 6c 32 20 29 20 41 4e 44 20   * ( col2 ) AND 
14f60 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
14f70 20 49 4e 54 45 47 45 52 20 29 0d 0a 2d 2d 2d 2d   INTEGER )..----
14f80 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
14f90 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
14fa0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
14fb0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
14fc0 61 62 65 6c 2d 34 35 31 0d 0a 53 45 4c 45 43 54  abel-451..SELECT
14fd0 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 2a 20 2b 20   ALL - col1 * + 
14fe0 31 38 20 2b 20 2b 20 2b 20 43 41 53 54 28 20 38  18 + + + CAST( 8
14ff0 34 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  4 AS SIGNED ) AS
15000 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
15010 0a 2d 2d 2d 2d 0d 0a 2d 31 33 37 34 0d 0a 2d 32  .----..-1374..-2
15020 39 34 0d 0a 36 36 0d 0a 0d 0a 73 6b 69 70 69 66  94..66....skipif
15030 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
15040 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
15050 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
15060 35 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  51..SELECT ALL -
15070 20 63 6f 6c 31 20 2a 20 2b 20 31 38 20 2b 20 2b   col1 * + 18 + +
15080 20 2b 20 43 41 53 54 20 28 20 38 34 20 41 53 20   + CAST ( 84 AS 
15090 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c  INTEGER ) AS col
150a0 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  0 FROM tab0..---
150b0 2d 0d 0a 2d 31 33 37 34 0d 0a 2d 32 39 34 0d 0a  -..-1374..-294..
150c0 36 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  66....query I ro
150d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
150e0 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 2a 20  STINCT - col0 * 
150f0 2b 20 37 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 70 AS col0 FRO
15100 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
15110 2d 2d 2d 2d 0d 0a 2d 33 35 37 30 0d 0a 2d 35 39  ----..-3570..-59
15120 35 30 0d 0a 2d 36 33 37 30 0d 0a 0d 0a 6f 6e 6c  50..-6370....onl
15130 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
15140 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
15150 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
15160 6c 61 62 65 6c 2d 34 35 33 0d 0a 53 45 4c 45 43  label-453..SELEC
15170 54 20 2d 20 2d 20 4d 41 58 28 20 2b 20 37 34 20  T - - MAX( + 74 
15180 29 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52  ) FROM tab1 WHER
15190 45 20 4e 55 4c 4c 20 3c 20 4e 55 4c 4c 0d 0a 2d  E NULL < NULL..-
151a0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
151b0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
151c0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
151d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
151e0 6c 2d 34 35 33 0d 0a 53 45 4c 45 43 54 20 2d 20  l-453..SELECT - 
151f0 2d 20 4d 41 58 20 28 20 2b 20 37 34 20 29 20 46  - MAX ( + 74 ) F
15200 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e  ROM tab1 WHERE N
15210 55 4c 4c 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  ULL < NULL..----
15220 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..NULL....onlyif
15230 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
15240 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
15250 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
15260 62 65 6c 2d 34 35 34 0d 0a 53 45 4c 45 43 54 20  bel-454..SELECT 
15270 41 4c 4c 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ALL - COUNT( * )
15280 20 2d 20 2d 20 38 34 20 2b 20 2d 20 43 4f 55 4e   - - 84 + - COUN
15290 54 28 20 2a 20 29 2c 20 43 4f 55 4e 54 28 20 2a  T( * ), COUNT( *
152a0 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
152b0 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
152c0 2d 2d 0d 0a 37 38 0d 0a 33 0d 0a 0d 0a 73 6b 69  --..78..3....ski
152d0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
152e0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
152f0 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
15300 65 6c 2d 34 35 34 0d 0a 53 45 4c 45 43 54 20 41  el-454..SELECT A
15310 4c 4c 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29  LL - COUNT ( * )
15320 20 2d 20 2d 20 38 34 20 2b 20 2d 20 43 4f 55 4e   - - 84 + - COUN
15330 54 20 28 20 2a 20 29 2c 20 43 4f 55 4e 54 20 28  T ( * ), COUNT (
15340 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   * ) AS col0 FRO
15350 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
15360 2d 2d 2d 2d 0d 0a 37 38 0d 0a 33 0d 0a 0d 0a 71  ----..78..3....q
15370 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
15380 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
15390 63 6f 6c 30 20 2b 20 2b 20 2b 20 36 37 20 46 52  col0 + + + 67 FR
153a0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
153b0 0a 2d 2d 2d 2d 0d 0a 31 35 34 0d 0a 31 36 34 0d  .----..154..164.
153c0 0a 38 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .82....query I r
153d0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
153e0 20 63 6f 6c 31 20 2b 20 2d 20 2d 20 63 6f 6c 31   col1 + - - col1
153f0 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30   + col0 * - col0
15400 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
15410 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 31 34 0d  r0..----..-2014.
15420 0a 2d 33 39 34 32 0d 0a 2d 35 34 39 31 0d 0a 0d  .-3942..-5491...
15430 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
15440 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 46 52  ..SELECT col2 FR
15450 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
15460 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 3c  WHERE ( NULL ) <
15470 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  = NULL..----....
15480 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
15490 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 46 52 4f  .SELECT col0 FRO
154a0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
154b0 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20  HERE NOT + col1 
154c0 42 45 54 57 45 45 4e 20 2d 20 2d 20 63 6f 6c 30  BETWEEN - - col0
154d0 20 41 4e 44 20 2d 20 38 20 2a 20 2b 20 63 6f 6c   AND - 8 * + col
154e0 32 20 2b 20 32 35 0d 0a 2d 2d 2d 2d 0d 0a 34 36  2 + 25..----..46
154f0 0d 0a 36 34 0d 0a 37 35 0d 0a 0d 0a 71 75 65 72  ..64..75....quer
15500 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
15510 45 43 54 20 41 4c 4c 20 2b 20 2d 20 63 6f 6c 30  ECT ALL + - col0
15520 20 2a 20 2d 20 36 38 20 41 53 20 63 6f 6c 30 20   * - 68 AS col0 
15530 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
15540 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 36 38 0d 0a 35  0..----..3468..5
15550 37 38 30 0d 0a 36 31 38 38 0d 0a 0d 0a 6f 6e 6c  780..6188....onl
15560 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
15570 20 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c   syntax: DECIMAL
15580 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
15590 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
155a0 34 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41  460..SELECT - CA
155b0 53 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49  ST( NULL AS DECI
155c0 4d 41 4c 20 29 20 41 53 20 63 6f 6c 30 2c 20 2d  MAL ) AS col0, -
155d0 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 46   col0 * - col0 F
155e0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
155f0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 32 36  ..----..NULL..26
15600 30 31 0d 0a 4e 55 4c 4c 0d 0a 37 32 32 35 0d 0a  01..NULL..7225..
15610 4e 55 4c 4c 0d 0a 38 32 38 31 0d 0a 0d 0a 73 6b  NULL..8281....sk
15620 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
15630 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
15640 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
15650 62 65 6c 2d 34 36 30 0d 0a 53 45 4c 45 43 54 20  bel-460..SELECT 
15660 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
15670 20 52 45 41 4c 20 29 20 41 53 20 63 6f 6c 30 2c   REAL ) AS col0,
15680 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 30   - col0 * - col0
15690 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
156a0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
156b0 32 36 30 31 0d 0a 4e 55 4c 4c 0d 0a 37 32 32 35  2601..NULL..7225
156c0 0d 0a 4e 55 4c 4c 0d 0a 38 32 38 31 0d 0a 0d 0a  ..NULL..8281....
156d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
156e0 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2a  .SELECT - col2 *
156f0 20 2d 20 2b 20 31 30 20 2a 20 2d 20 2b 20 63 6f   - + 10 * - + co
15700 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72  l2 FROM tab1 cor
15710 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 34 38 31 30 0d  0..----..-34810.
15720 0a 2d 34 36 32 34 30 0d 0a 2d 39 32 31 36 30 0d  .-46240..-92160.
15730 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
15740 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
15750 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
15760 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 32 0d  wsort label-462.
15770 0a 53 45 4c 45 43 54 20 2d 20 4d 41 58 28 20 35  .SELECT - MAX( 5
15780 37 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  7 ) FROM tab0 AS
15790 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 37   cor0..----..-57
157a0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
157b0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
157c0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
157d0 72 74 20 6c 61 62 65 6c 2d 34 36 32 0d 0a 53 45  rt label-462..SE
157e0 4c 45 43 54 20 2d 20 4d 41 58 20 28 20 35 37 20  LECT - MAX ( 57 
157f0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
15800 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 37 0d 0a  or0..----..-57..
15810 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
15820 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
15830 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
15840 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 33 0d 0a  sort label-463..
15850 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
15860 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20  - COUNT( * ) AS 
15870 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63  col2 FROM tab1 c
15880 6f 72 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 31  or0 WHERE - col1
15890 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
158a0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
158b0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
158c0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
158d0 6f 72 74 20 6c 61 62 65 6c 2d 34 36 33 0d 0a 53  ort label-463..S
158e0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
158f0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20   COUNT ( * ) AS 
15900 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 63  col2 FROM tab1 c
15910 6f 72 30 20 57 48 45 52 45 20 2d 20 63 6f 6c 31  or0 WHERE - col1
15920 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
15930 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
15940 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
15950 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d   DECIMAL type: .
15960 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
15970 20 6c 61 62 65 6c 2d 34 36 34 0d 0a 53 45 4c 45   label-464..SELE
15980 43 54 20 41 4c 4c 20 2d 20 2b 20 43 41 53 54 28  CT ALL - + CAST(
15990 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c   NULL AS DECIMAL
159a0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
159b0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
159c0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
159d0 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
159e0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
159f0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
15a00 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 34  owsort label-464
15a10 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b  ..SELECT ALL - +
15a20 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
15a30 52 45 41 4c 20 29 20 41 53 20 63 6f 6c 31 20 46  REAL ) AS col1 F
15a40 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
15a50 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
15a60 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
15a70 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
15a80 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63  ECT DISTINCT + c
15a90 6f 6c 30 20 2a 20 2b 20 2d 20 28 20 2d 20 63 6f  ol0 * + - ( - co
15aa0 6c 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f  l2 ) AS col1 FRO
15ab0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 34 38  M tab1..----..48
15ac0 39 36 0d 0a 35 30 31 35 0d 0a 36 31 38 38 0d 0a  96..5015..6188..
15ad0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
15ae0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
15af0 43 54 20 36 33 20 46 52 4f 4d 20 74 61 62 30 2c  CT 63 FROM tab0,
15b00 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab0 cor0..----
15b10 0d 0a 36 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..63....query II
15b20 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
15b30 20 2b 20 38 38 2c 20 63 6f 6c 32 20 2a 20 36 32   + 88, col2 * 62
15b40 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
15b50 62 30 0d 0a 2d 2d 2d 2d 0d 0a 38 38 0d 0a 32 39  b0..----..88..29
15b60 31 34 0d 0a 38 38 0d 0a 36 31 33 38 0d 0a 38 38  14..88..6138..88
15b70 0d 0a 36 32 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..620....onlyif 
15b80 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
15b90 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
15ba0 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
15bb0 73 6f 72 74 20 6c 61 62 65 6c 2d 34 36 38 0d 0a  sort label-468..
15bc0 53 45 4c 45 43 54 20 63 6f 6c 30 2c 20 63 6f 6c  SELECT col0, col
15bd0 32 20 44 49 56 20 2b 20 2b 20 33 31 20 41 53 20  2 DIV + + 31 AS 
15be0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col1 FROM tab0..
15bf0 2d 2d 2d 2d 0d 0a 31 35 0d 0a 31 0d 0a 38 37 0d  ----..15..1..87.
15c00 0a 30 0d 0a 39 37 0d 0a 33 0d 0a 0d 0a 73 6b 69  .0..97..3....ski
15c10 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
15c20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
15c30 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
15c40 65 6c 2d 34 36 38 0d 0a 53 45 4c 45 43 54 20 63  el-468..SELECT c
15c50 6f 6c 30 2c 20 63 6f 6c 32 20 2f 20 2b 20 2b 20  ol0, col2 / + + 
15c60 33 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  31 AS col1 FROM 
15c70 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a  tab0..----..15..
15c80 31 0d 0a 38 37 0d 0a 30 0d 0a 39 37 0d 0a 33 0d  1..87..0..97..3.
15c90 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
15ca0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
15cb0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
15cc0 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20   WHERE NOT col1 
15cd0 2a 20 2d 20 2b 20 63 6f 6c 31 20 3e 20 4e 55 4c  * - + col1 > NUL
15ce0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
15cf0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
15d00 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
15d10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
15d20 62 65 6c 2d 34 37 30 0d 0a 53 45 4c 45 43 54 20  bel-470..SELECT 
15d30 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54  DISTINCT + COUNT
15d40 28 20 2a 20 29 20 2a 20 2d 20 2d 20 34 20 46 52  ( * ) * - - 4 FR
15d50 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
15d60 2d 2d 0d 0a 31 32 0d 0a 0d 0a 73 6b 69 70 69 66  --..12....skipif
15d70 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
15d80 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
15d90 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34   rowsort label-4
15da0 37 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  70..SELECT DISTI
15db0 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  NCT + COUNT ( * 
15dc0 29 20 2a 20 2d 20 2d 20 34 20 46 52 4f 4d 20 74  ) * - - 4 FROM t
15dd0 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab2 cor0..----..
15de0 31 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  12....query II r
15df0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
15e00 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 2c 20  ISTINCT + col1, 
15e10 2b 20 34 30 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 40 AS col0 FRO
15e20 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
15e30 2d 2d 2d 2d 0d 0a 31 0d 0a 34 30 0d 0a 32 31 0d  ----..1..40..21.
15e40 0a 34 30 0d 0a 38 31 0d 0a 34 30 0d 0a 0d 0a 71  .40..81..40....q
15e50 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
15e60 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
15e70 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab0 WHERE NOT N
15e80 55 4c 4c 20 42 45 54 57 45 45 4e 20 2b 20 34 39  ULL BETWEEN + 49
15e90 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d   AND NULL..----.
15ea0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
15eb0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
15ec0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
15ed0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 33 0d  wsort label-473.
15ee0 0a 53 45 4c 45 43 54 20 2b 20 31 33 20 2b 20 2b  .SELECT + 13 + +
15ef0 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
15f00 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
15f10 2d 2d 2d 0d 0a 31 36 0d 0a 0d 0a 73 6b 69 70 69  ---..16....skipi
15f20 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
15f30 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
15f40 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
15f50 34 37 33 0d 0a 53 45 4c 45 43 54 20 2b 20 31 33  473..SELECT + 13
15f60 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
15f70 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
15f80 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d 0a 0d 0a  b1..----..16....
15f90 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
15fa0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
15fb0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
15fc0 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
15fd0 65 6c 2d 34 37 34 0d 0a 53 45 4c 45 43 54 20 44  el-474..SELECT D
15fe0 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2a  ISTINCT + col0 *
15ff0 20 2b 20 34 32 20 41 53 20 63 6f 6c 32 2c 20 2d   + 42 AS col2, -
16000 20 63 6f 6c 30 20 2a 20 63 6f 6c 30 20 44 49 56   col0 * col0 DIV
16010 20 31 39 20 41 53 20 63 6f 6c 32 2c 20 2d 20 36   19 AS col2, - 6
16020 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  8 AS col1 FROM t
16030 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ab2..----..9 val
16040 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 61  ues hashing to a
16050 30 63 32 64 62 36 39 62 30 38 39 36 37 63 62 31  0c2db69b08967cb1
16060 61 33 37 62 62 35 38 61 62 35 34 66 64 34 61 0d  a37bb58ab54fd4a.
16070 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
16080 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
16090 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
160a0 6f 72 74 20 6c 61 62 65 6c 2d 34 37 34 0d 0a 53  ort label-474..S
160b0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
160c0 20 63 6f 6c 30 20 2a 20 2b 20 34 32 20 41 53 20   col0 * + 42 AS 
160d0 63 6f 6c 32 2c 20 2d 20 63 6f 6c 30 20 2a 20 63  col2, - col0 * c
160e0 6f 6c 30 20 2f 20 31 39 20 41 53 20 63 6f 6c 32  ol0 / 19 AS col2
160f0 2c 20 2d 20 36 38 20 41 53 20 63 6f 6c 31 20 46  , - 68 AS col1 F
16100 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
16110 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
16120 20 74 6f 20 61 30 63 32 64 62 36 39 62 30 38 39   to a0c2db69b089
16130 36 37 63 62 31 61 33 37 62 62 35 38 61 62 35 34  67cb1a37bb58ab54
16140 66 64 34 61 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  fd4a....onlyif m
16150 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
16160 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
16170 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
16180 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
16190 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 35 0d 0a  sort label-475..
161a0 53 45 4c 45 43 54 20 2d 20 32 39 20 2a 20 53 55  SELECT - 29 * SU
161b0 4d 28 20 2b 20 63 6f 6c 31 20 29 20 2b 20 2d 20  M( + col1 ) + - 
161c0 43 41 53 54 28 20 2d 20 35 33 20 41 53 20 53 49  CAST( - 53 AS SI
161d0 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62 32  GNED ) FROM tab2
161e0 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 36 30 32 0d 0a 0d  ..----..-5602...
161f0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
16200 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
16210 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
16220 6c 61 62 65 6c 2d 34 37 35 0d 0a 53 45 4c 45 43  label-475..SELEC
16230 54 20 2d 20 32 39 20 2a 20 53 55 4d 20 28 20 2b  T - 29 * SUM ( +
16240 20 63 6f 6c 31 20 29 20 2b 20 2d 20 43 41 53 54   col1 ) + - CAST
16250 20 28 20 2d 20 35 33 20 41 53 20 49 4e 54 45 47   ( - 53 AS INTEG
16260 45 52 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  ER ) FROM tab2..
16270 2d 2d 2d 2d 0d 0a 2d 35 36 30 32 0d 0a 0d 0a 6f  ----..-5602....o
16280 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
16290 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
162a0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
162b0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
162c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
162d0 6c 2d 34 37 36 0d 0a 53 45 4c 45 43 54 20 2d 20  l-476..SELECT - 
162e0 35 35 20 44 49 56 20 43 4f 55 4e 54 28 20 2a 20  55 DIV COUNT( * 
162f0 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  ) col1 FROM tab0
16300 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
16310 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72 31  OIN tab2 AS cor1
16320 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 0d 0a 0d 0a 73 6b  ..----..-6....sk
16330 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
16340 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
16350 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
16360 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
16370 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
16380 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
16390 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
163a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 34 37 36 0d  wsort label-476.
163b0 0a 53 45 4c 45 43 54 20 2d 20 35 35 20 2f 20 43  .SELECT - 55 / C
163c0 4f 55 4e 54 20 28 20 2a 20 29 20 63 6f 6c 31 20  OUNT ( * ) col1 
163d0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
163e0 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
163f0 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  2 AS cor1..----.
16400 0a 2d 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .-6....query II 
16410 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
16420 2d 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c  - + col0 + + col
16430 32 20 2a 20 2d 20 2b 20 63 6f 6c 30 20 41 53 20  2 * - + col0 AS 
16440 63 6f 6c 31 2c 20 36 32 20 46 52 4f 4d 20 74 61  col1, 62 FROM ta
16450 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
16460 0d 0a 2d 31 31 30 34 0d 0a 36 32 0d 0a 2d 32 36  ..-1104..62..-26
16470 32 34 0d 0a 36 32 0d 0a 2d 34 34 32 35 0d 0a 36  24..62..-4425..6
16480 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  2....query II ro
16490 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
164a0 53 54 49 4e 43 54 20 63 6f 6c 32 20 2a 20 2d 20  STINCT col2 * - 
164b0 38 39 2c 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 28  89, - col2 + + (
164c0 20 2b 20 63 6f 6c 32 20 29 20 41 53 20 63 6f 6c   + col2 ) AS col
164d0 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
164e0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 34 37  or0..----..-2047
164f0 0d 0a 30 0d 0a 2d 33 35 36 30 0d 0a 30 0d 0a 2d  ..0..-3560..0..-
16500 35 31 36 32 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69  5162..0....onlyi
16510 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
16520 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
16530 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16540 62 65 6c 2d 34 37 39 0d 0a 53 45 4c 45 43 54 20  bel-479..SELECT 
16550 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ALL + COUNT( * )
16560 20 2a 20 2d 20 53 55 4d 28 20 2b 20 39 31 20 29   * - SUM( + 91 )
16570 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
16580 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 31 39 0d 0a  r0..----..-819..
16590 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
165a0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
165b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
165c0 20 6c 61 62 65 6c 2d 34 37 39 0d 0a 53 45 4c 45   label-479..SELE
165d0 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 20 28  CT ALL + COUNT (
165e0 20 2a 20 29 20 2a 20 2d 20 53 55 4d 20 28 20 2b   * ) * - SUM ( +
165f0 20 39 31 20 29 20 46 52 4f 4d 20 74 61 62 32 20   91 ) FROM tab2 
16600 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
16610 38 31 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  819....query I r
16620 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
16630 20 32 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   25 AS col2 FROM
16640 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
16650 45 52 45 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e  ERE NULL BETWEEN
16660 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 63 6f 6c 31   NULL AND + col1
16670 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
16680 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
16690 54 20 44 49 53 54 49 4e 43 54 20 2d 20 31 33 20  T DISTINCT - 13 
166a0 2a 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  * + col1 AS col0
166b0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
166c0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 35 33 0d  r0..----..-1053.
166d0 0a 2d 31 33 0d 0a 2d 32 37 33 0d 0a 0d 0a 71 75  .-13..-273....qu
166e0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
166f0 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2a  ELECT ALL col1 *
16700 20 2d 20 2d 20 39 35 20 2b 20 2b 20 37 35 20 46   - - 95 + + 75 F
16710 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
16720 0d 0a 2d 2d 2d 2d 0d 0a 31 37 30 0d 0a 32 30 37  ..----..170..207
16730 30 0d 0a 37 37 37 30 0d 0a 0d 0a 71 75 65 72 79  0..7770....query
16740 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
16750 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f  CT DISTINCT - co
16760 6c 31 20 2a 20 63 6f 6c 31 20 2a 20 2d 20 32 31  l1 * col1 * - 21
16770 20 2b 20 2d 20 34 31 20 41 53 20 63 6f 6c 31 20   + - 41 AS col1 
16780 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
16790 2d 2d 2d 2d 0d 0a 34 30 37 35 0d 0a 34 36 33 34  ----..4075..4634
167a0 38 0d 0a 34 38 34 0d 0a 0d 0a 73 6b 69 70 69 66  8..484....skipif
167b0 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
167c0 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
167d0 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
167e0 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
167f0 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  s..query I rowso
16800 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
16810 4e 43 54 20 63 6f 6c 32 20 2a 20 2d 20 2b 20 63  NCT col2 * - + c
16820 6f 6c 30 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  ol0 col0 FROM ta
16830 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
16840 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 30   - col1 * - col0
16850 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
16860 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16870 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
16880 34 30 20 2a 20 63 6f 6c 30 20 2a 20 2b 20 2d 20  40 * col0 * + - 
16890 63 6f 6c 30 20 2b 20 63 6f 6c 30 20 46 52 4f 4d  col0 + col0 FROM
168a0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30   tab1..----..-10
168b0 33 39 38 39 0d 0a 2d 32 38 38 39 31 35 0d 0a 2d  3989..-288915..-
168c0 33 33 31 31 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  331149....onlyif
168d0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
168e0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
168f0 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
16900 73 6f 72 74 20 6c 61 62 65 6c 2d 34 38 36 0d 0a  sort label-486..
16910 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
16920 2d 20 63 6f 6c 30 20 2b 20 2b 20 33 32 20 2b 20  - col0 + + 32 + 
16930 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
16940 47 4e 45 44 20 29 20 2b 20 35 31 20 46 52 4f 4d  GNED ) + 51 FROM
16950 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab1..----..NUL
16960 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
16970 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
16980 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
16990 6f 72 74 20 6c 61 62 65 6c 2d 34 38 36 0d 0a 53  ort label-486..S
169a0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
169b0 20 63 6f 6c 30 20 2b 20 2b 20 33 32 20 2b 20 43   col0 + + 32 + C
169c0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
169d0 54 45 47 45 52 20 29 20 2b 20 35 31 20 46 52 4f  TEGER ) + 51 FRO
169e0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab1..----..NU
169f0 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  LL....query I ro
16a00 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
16a10 53 54 49 4e 43 54 20 2d 20 33 20 2b 20 2b 20 63  STINCT - 3 + + c
16a20 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol0 AS col2 FROM
16a30 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 0d   tab0..----..12.
16a40 0a 38 34 0d 0a 39 34 0d 0a 0d 0a 6f 6e 6c 79 69  .84..94....onlyi
16a50 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
16a60 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
16a70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
16a80 62 65 6c 2d 34 38 38 0d 0a 53 45 4c 45 43 54 20  bel-488..SELECT 
16a90 2d 20 37 39 20 2a 20 43 4f 55 4e 54 28 20 2a 20  - 79 * COUNT( * 
16aa0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
16ab0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 37 0d  ab1..----..-237.
16ac0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
16ad0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
16ae0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16af0 74 20 6c 61 62 65 6c 2d 34 38 38 0d 0a 53 45 4c  t label-488..SEL
16b00 45 43 54 20 2d 20 37 39 20 2a 20 43 4f 55 4e 54  ECT - 79 * COUNT
16b10 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46   ( * ) AS col2 F
16b20 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
16b30 2d 32 33 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -237....query I 
16b40 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
16b50 44 49 53 54 49 4e 43 54 20 2b 20 28 20 2b 20 63  DISTINCT + ( + c
16b60 6f 6c 31 20 29 20 2a 20 2b 20 63 6f 6c 30 20 2d  ol1 ) * + col0 -
16b70 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   - col1 FROM tab
16b80 31 0d 0a 2d 2d 2d 2d 0d 0a 34 33 30 0d 0a 34 33  1..----..430..43
16b90 32 34 0d 0a 37 32 38 0d 0a 0d 0a 71 75 65 72 79  24..728....query
16ba0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
16bb0 43 54 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 2d 20  CT + col2 + + - 
16bc0 35 33 20 2d 20 2d 20 2b 20 63 6f 6c 31 20 46 52  53 - - + col1 FR
16bd0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
16be0 0a 2d 2d 2d 2d 0d 0a 32 31 0d 0a 36 34 0d 0a 37  .----..21..64..7
16bf0 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  2....onlyif mysq
16c00 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
16c10 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
16c20 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
16c30 6c 61 62 65 6c 2d 34 39 31 0d 0a 53 45 4c 45 43  label-491..SELEC
16c40 54 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 2d 20 2b  T ALL - col0 - +
16c50 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
16c60 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61 62  IGNED ) FROM tab
16c70 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
16c80 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .NULL..NULL..NUL
16c90 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  L....skipif mysq
16ca0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
16cb0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
16cc0 6f 72 74 20 6c 61 62 65 6c 2d 34 39 31 0d 0a 53  ort label-491..S
16cd0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30  ELECT ALL - col0
16ce0 20 2d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c   - + CAST ( NULL
16cf0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
16d00 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
16d10 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
16d20 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  L..NULL....query
16d30 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
16d40 43 54 20 2b 20 2b 20 32 32 20 2b 20 63 6f 6c 30  CT + + 22 + col0
16d50 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
16d60 0a 2d 2d 2d 2d 0d 0a 31 30 39 0d 0a 31 31 39 0d  .----..109..119.
16d70 0a 33 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .37....onlyif my
16d80 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
16d90 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
16da0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
16db0 74 20 6c 61 62 65 6c 2d 34 39 33 0d 0a 53 45 4c  t label-493..SEL
16dc0 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
16dd0 32 20 44 49 56 20 2d 20 63 6f 6c 31 20 2a 20 2b  2 DIV - col1 * +
16de0 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20   - col0 AS col0 
16df0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
16e00 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b  0..----..0....sk
16e10 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
16e20 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
16e30 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
16e40 65 6c 2d 34 39 33 0d 0a 53 45 4c 45 43 54 20 44  el-493..SELECT D
16e50 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2f 20 2d  ISTINCT col2 / -
16e60 20 63 6f 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 30   col1 * + - col0
16e70 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
16e80 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
16e90 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ..0....query I r
16ea0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
16eb0 20 63 6f 6c 31 20 2b 20 2d 20 2b 20 63 6f 6c 32   col1 + - + col2
16ec0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
16ed0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 37 0d 0a  r0..----..-117..
16ee0 2d 31 32 35 0d 0a 2d 37 34 0d 0a 0d 0a 71 75 65  -125..-74....que
16ef0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
16f00 45 4c 45 43 54 20 2b 20 63 6f 6c 31 2c 20 63 6f  ELECT + col1, co
16f10 6c 32 20 2a 20 63 6f 6c 30 20 46 52 4f 4d 20 74  l2 * col0 FROM t
16f20 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
16f30 45 20 2d 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20  E - col0 IS NOT 
16f40 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 39  NULL..----..1..9
16f50 36 30 33 0d 0a 32 31 0d 0a 38 37 30 0d 0a 38 31  603..21..870..81
16f60 0d 0a 37 30 35 0d 0a 0d 0a 71 75 65 72 79 20 49  ..705....query I
16f70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
16f80 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30   DISTINCT - col0
16f90 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20   - col0 AS col2 
16fa0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
16fb0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 38 0d 0a 2d  0..----..-128..-
16fc0 31 35 30 0d 0a 2d 39 32 0d 0a 0d 0a 6f 6e 6c 79  150..-92....only
16fd0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
16fe0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
16ff0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
17000 61 62 65 6c 2d 34 39 37 0d 0a 53 45 4c 45 43 54  abel-497..SELECT
17010 20 2d 20 35 39 20 2b 20 43 4f 55 4e 54 28 20 2a   - 59 + COUNT( *
17020 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
17030 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 36 0d  cor0..----..-56.
17040 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
17050 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
17060 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
17070 74 20 6c 61 62 65 6c 2d 34 39 37 0d 0a 53 45 4c  t label-497..SEL
17080 45 43 54 20 2d 20 35 39 20 2b 20 43 4f 55 4e 54  ECT - 59 + COUNT
17090 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30   ( * ) FROM tab0
170a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
170b0 2d 35 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  -56....query I r
170c0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
170d0 6f 6c 31 20 2a 20 63 6f 6c 31 20 2b 20 2b 20 63  ol1 * col1 + + c
170e0 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol1 AS col0 FROM
170f0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 32 0d 0a   tab0..----..2..
17100 34 36 32 0d 0a 36 36 34 32 0d 0a 0d 0a 6f 6e 6c  462..6642....onl
17110 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
17120 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
17130 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
17140 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
17150 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
17160 34 39 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  499..SELECT DIST
17170 49 4e 43 54 20 2b 20 4d 49 4e 28 20 41 4c 4c 20  INCT + MIN( ALL 
17180 2d 20 43 41 53 54 28 20 2b 20 2d 20 34 38 20 41  - CAST( + - 48 A
17190 53 20 53 49 47 4e 45 44 20 29 20 29 20 2a 20 2b  S SIGNED ) ) * +
171a0 20 32 39 20 46 52 4f 4d 20 74 61 62 32 2c 20 74   29 FROM tab2, t
171b0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
171c0 2d 0d 0a 31 33 39 32 0d 0a 0d 0a 73 6b 69 70 69  -..1392....skipi
171d0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
171e0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
171f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
17200 34 39 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  499..SELECT DIST
17210 49 4e 43 54 20 2b 20 4d 49 4e 20 28 20 41 4c 4c  INCT + MIN ( ALL
17220 20 2d 20 43 41 53 54 20 28 20 2b 20 2d 20 34 38   - CAST ( + - 48
17230 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
17240 2a 20 2b 20 32 39 20 46 52 4f 4d 20 74 61 62 32  * + 29 FROM tab2
17250 2c 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  , tab1 AS cor0..
17260 2d 2d 2d 2d 0d 0a 31 33 39 32 0d 0a 0d 0a 6f 6e  ----..1392....on
17270 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
17280 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
17290 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
172a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
172b0 30 30 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20  00..SELECT col2 
172c0 44 49 56 20 2d 20 2d 20 32 30 20 46 52 4f 4d 20  DIV - - 20 FROM 
172d0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 32  tab0..----..0..2
172e0 0d 0a 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..4....skipif my
172f0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
17300 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
17310 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 30 30 0d  wsort label-500.
17320 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2f 20 2d  .SELECT col2 / -
17330 20 2d 20 32 30 20 46 52 4f 4d 20 74 61 62 30 0d   - 20 FROM tab0.
17340 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 32 0d 0a 34 0d 0a  .----..0..2..4..
17350 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
17360 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
17370 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
17380 6f 72 30 20 57 48 45 52 45 20 35 38 20 42 45 54  or0 WHERE 58 BET
17390 57 45 45 4e 20 2d 20 31 34 20 41 4e 44 20 2d 20  WEEN - 14 AND - 
173a0 39 37 20 2b 20 2b 20 2d 20 63 6f 6c 30 20 2a 20  97 + + - col0 * 
173b0 2d 20 2d 20 36 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  - - 61..----....
173c0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
173d0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
173e0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
173f0 72 74 20 6c 61 62 65 6c 2d 35 30 32 0d 0a 53 45  rt label-502..SE
17400 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  LECT COUNT( * ) 
17410 2a 20 2d 20 35 20 63 6f 6c 30 20 46 52 4f 4d 20  * - 5 col0 FROM 
17420 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 0d  tab2..----..-15.
17430 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
17440 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
17450 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
17460 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
17470 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
17480 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
17490 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
174a0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
174b0 2d 35 30 32 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -502..SELECT COU
174c0 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20 35 20 63  NT ( * ) * - 5 c
174d0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
174e0 2d 2d 2d 0d 0a 2d 31 35 0d 0a 0d 0a 71 75 65 72  ---..-15....quer
174f0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
17500 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
17510 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
17520 2d 20 2b 20 31 39 20 42 45 54 57 45 45 4e 20 4e  - + 19 BETWEEN N
17530 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d  ULL AND NULL..--
17540 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
17550 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
17560 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
17570 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
17580 30 34 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55  04..SELECT + COU
17590 4e 54 28 20 2b 20 63 6f 6c 30 20 29 20 41 53 20  NT( + col0 ) AS 
175a0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
175b0 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ----..3....skipi
175c0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
175d0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
175e0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
175f0 35 30 34 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f  504..SELECT + CO
17600 55 4e 54 20 28 20 2b 20 63 6f 6c 30 20 29 20 41  UNT ( + col0 ) A
17610 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
17620 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65  ..----..3....que
17630 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
17640 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
17650 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
17660 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 4e 55   NULL BETWEEN NU
17670 4c 4c 20 41 4e 44 20 2d 20 34 35 0d 0a 2d 2d 2d  LL AND - 45..---
17680 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
17690 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
176a0 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20 2d 20 2d  TINCT - col2 - -
176b0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
176c0 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 49  WHERE NOT col0 I
176d0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
176e0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
176f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
17700 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
17710 4e 4f 54 20 2b 20 2b 20 63 6f 6c 32 20 42 45 54  NOT + + col2 BET
17720 57 45 45 4e 20 2b 20 2b 20 35 20 41 4e 44 20 4e  WEEN + + 5 AND N
17730 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
17740 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
17750 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
17760 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b2 WHERE NOT NUL
17770 4c 20 49 4e 20 28 20 2d 20 34 30 20 2d 20 2b 20  L IN ( - 40 - + 
17780 63 6f 6c 30 2c 20 2b 20 63 6f 6c 30 20 29 0d 0a  col0, + col0 )..
17790 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
177a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
177b0 20 2d 20 38 35 20 2b 20 2d 20 2d 20 37 39 20 2a   - 85 + - - 79 *
177c0 20 2b 20 33 30 20 41 53 20 63 6f 6c 31 2c 20 37   + 30 AS col1, 7
177d0 37 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  7 AS col1 FROM t
177e0 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  ab2 WHERE NOT co
177f0 6c 31 20 3c 3e 20 63 6f 6c 30 20 2b 20 2d 20 63  l1 <> col0 + - c
17800 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ol1..----....onl
17810 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
17820 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
17830 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
17840 6c 61 62 65 6c 2d 35 31 30 0d 0a 53 45 4c 45 43  label-510..SELEC
17850 54 20 44 49 53 54 49 4e 43 54 20 2b 20 4d 41 58  T DISTINCT + MAX
17860 28 20 2d 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f  ( - + col2 ) FRO
17870 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
17880 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 0d 0a 73 6b 69  ----..-23....ski
17890 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
178a0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
178b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
178c0 6c 2d 35 31 30 0d 0a 53 45 4c 45 43 54 20 44 49  l-510..SELECT DI
178d0 53 54 49 4e 43 54 20 2b 20 4d 41 58 20 28 20 2d  STINCT + MAX ( -
178e0 20 2b 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74   + col2 ) FROM t
178f0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
17900 2d 0d 0a 2d 32 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  -..-23....onlyif
17910 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
17920 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
17930 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
17940 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 31 0d 0a  sort label-511..
17950 53 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54 28  SELECT ALL CAST(
17960 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
17970 29 20 2a 20 2d 20 63 6f 6c 32 20 2a 20 63 6f 6c  ) * - col2 * col
17980 32 20 2b 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  2 + - col2 FROM 
17990 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
179a0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
179b0 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
179c0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
179d0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
179e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 31  owsort label-511
179f0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 43 41 53  ..SELECT ALL CAS
17a00 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
17a10 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 32 20 2a  GER ) * - col2 *
17a20 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 32 20 46   col2 + - col2 F
17a30 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
17a40 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
17a50 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
17a60 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
17a70 45 43 54 20 37 36 20 2a 20 2b 20 63 6f 6c 32 20  ECT 76 * + col2 
17a80 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
17a90 0a 33 35 37 32 0d 0a 37 35 32 34 0d 0a 37 36 30  .3572..7524..760
17aa0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
17ab0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32 35 20 2a  ort..SELECT 25 *
17ac0 20 2b 20 2b 20 34 20 41 53 20 63 6f 6c 31 20 46   + + 4 AS col1 F
17ad0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
17ae0 31 30 30 0d 0a 31 30 30 0d 0a 31 30 30 0d 0a 0d  100..100..100...
17af0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
17b00 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
17b10 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
17b20 6f 72 74 20 6c 61 62 65 6c 2d 35 31 34 0d 0a 53  ort label-514..S
17b30 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
17b40 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52   - COUNT( * ) FR
17b50 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
17b60 54 20 4e 55 4c 4c 20 3c 3e 20 2d 20 63 6f 6c 30  T NULL <> - col0
17b70 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
17b80 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
17b90 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
17ba0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
17bb0 6c 2d 35 31 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-514..SELECT DI
17bc0 53 54 49 4e 43 54 20 2d 20 2d 20 43 4f 55 4e 54  STINCT - - COUNT
17bd0 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 32   ( * ) FROM tab2
17be0 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
17bf0 3c 3e 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  <> - col0..----.
17c00 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
17c10 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
17c20 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
17c30 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17c40 20 6c 61 62 65 6c 2d 35 31 35 0d 0a 53 45 4c 45   label-515..SELE
17c50 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30  CT DISTINCT col0
17c60 20 44 49 56 20 63 6f 6c 30 20 2d 20 63 6f 6c 32   DIV col0 - col2
17c70 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
17c80 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
17c90 0d 0a 2d 34 36 0d 0a 2d 39 0d 0a 2d 39 38 0d 0a  ..-46..-9..-98..
17ca0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
17cb0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
17cc0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
17cd0 20 6c 61 62 65 6c 2d 35 31 35 0d 0a 53 45 4c 45   label-515..SELE
17ce0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30  CT DISTINCT col0
17cf0 20 2f 20 63 6f 6c 30 20 2d 20 63 6f 6c 32 20 41   / col0 - col2 A
17d00 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
17d10 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
17d20 2d 34 36 0d 0a 2d 39 0d 0a 2d 39 38 0d 0a 0d 0a  -46..-9..-98....
17d30 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
17d40 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
17d50 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
17d60 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
17d70 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
17d80 62 65 6c 2d 35 31 36 0d 0a 53 45 4c 45 43 54 20  bel-516..SELECT 
17d90 44 49 53 54 49 4e 43 54 20 2d 20 38 20 41 53 20  DISTINCT - 8 AS 
17da0 63 6f 6c 30 2c 20 53 55 4d 28 20 44 49 53 54 49  col0, SUM( DISTI
17db0 4e 43 54 20 2d 20 2d 20 43 41 53 54 28 20 4e 55  NCT - - CAST( NU
17dc0 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 29  LL AS SIGNED ) )
17dd0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
17de0 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
17df0 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3c 3d   NOT ( NULL ) <=
17e00 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d   - col0..----..-
17e10 38 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  8..NULL....skipi
17e20 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
17e30 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
17e40 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
17e50 2d 35 31 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -516..SELECT DIS
17e60 54 49 4e 43 54 20 2d 20 38 20 41 53 20 63 6f 6c  TINCT - 8 AS col
17e70 30 2c 20 53 55 4d 20 28 20 44 49 53 54 49 4e 43  0, SUM ( DISTINC
17e80 54 20 2d 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  T - - CAST ( NUL
17e90 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29  L AS INTEGER ) )
17ea0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
17eb0 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
17ec0 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29 20 3c 3d   NOT ( NULL ) <=
17ed0 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 2d   - col0..----..-
17ee0 38 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  8..NULL....onlyi
17ef0 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f  f mysql # DIV fo
17f00 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69  r integer divisi
17f10 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  on: ..query I ro
17f20 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 37 0d  wsort label-517.
17f30 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
17f40 6c 30 20 44 49 56 20 2b 20 2d 20 34 32 20 41 53  l0 DIV + - 42 AS
17f50 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
17f60 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31  cor0..----..1..1
17f70 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..1....skipif my
17f80 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
17f90 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
17fa0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 31 37 0d  wsort label-517.
17fb0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
17fc0 6c 30 20 2f 20 2b 20 2d 20 34 32 20 41 53 20 63  l0 / + - 42 AS c
17fd0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f  ol0 FROM tab2 co
17fe0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a  r0..----..1..1..
17ff0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
18000 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
18010 54 49 4e 43 54 20 2b 20 37 36 20 2b 20 2d 20 2b  TINCT + 76 + - +
18020 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
18030 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d  OM tab0 cor0..--
18040 2d 2d 0d 0a 2d 35 0d 0a 35 35 0d 0a 37 35 0d 0a  --..-5..55..75..
18050 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18060 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31  t..SELECT - col1
18070 20 2b 20 2d 20 2b 20 35 38 20 46 52 4f 4d 20 74   + - + 58 FROM t
18080 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
18090 2d 0d 0a 2d 31 30 35 0d 0a 2d 36 33 0d 0a 2d 37  -..-105..-63..-7
180a0 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  2....query II ro
180b0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
180c0 4c 20 2d 20 2b 20 63 6f 6c 30 2c 20 63 6f 6c 31  L - + col0, col1
180d0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
180e0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
180f0 0d 0a 2d 31 35 0d 0a 38 31 0d 0a 2d 38 37 0d 0a  ..-15..81..-87..
18100 32 31 0d 0a 2d 39 37 0d 0a 31 0d 0a 0d 0a 71 75  21..-97..1....qu
18110 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
18120 53 45 4c 45 43 54 20 41 4c 4c 20 34 20 2b 20 63  SELECT ALL 4 + c
18130 6f 6c 31 20 41 53 20 63 6f 6c 30 2c 20 2b 20 31  ol1 AS col0, + 1
18140 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
18150 0d 0a 35 35 0d 0a 31 0d 0a 37 31 0d 0a 31 0d 0a  ..55..1..71..1..
18160 38 31 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  81..1....onlyif 
18170 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
18180 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
18190 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
181a0 6f 72 74 20 6c 61 62 65 6c 2d 35 32 32 0d 0a 53  ort label-522..S
181b0 45 4c 45 43 54 20 2b 20 32 34 20 2b 20 2d 20 2b  ELECT + 24 + - +
181c0 20 43 41 53 54 28 20 2b 20 2b 20 63 6f 6c 30 20   CAST( + + col0 
181d0 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
181e0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
181f0 2d 2d 2d 0d 0a 2d 32 37 0d 0a 2d 36 31 0d 0a 2d  ---..-27..-61..-
18200 36 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  67....skipif mys
18210 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
18220 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
18230 73 6f 72 74 20 6c 61 62 65 6c 2d 35 32 32 0d 0a  sort label-522..
18240 53 45 4c 45 43 54 20 2b 20 32 34 20 2b 20 2d 20  SELECT + 24 + - 
18250 2b 20 43 41 53 54 20 28 20 2b 20 2b 20 63 6f 6c  + CAST ( + + col
18260 30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  0 AS INTEGER ) A
18270 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
18280 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d 0a 2d 36 31  ..----..-27..-61
18290 0d 0a 2d 36 37 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-67....query I
182a0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
182b0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57  CT * FROM tab2 W
182c0 48 45 52 45 20 4e 55 4c 4c 20 3e 20 2d 20 63 6f  HERE NULL > - co
182d0 6c 32 20 2f 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  l2 / col0..----.
182e0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
182f0 72 74 0d 0a 53 45 4c 45 43 54 20 32 31 20 41 53  rt..SELECT 21 AS
18300 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 2c   col2 FROM tab1,
18310 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab1 cor0..----
18320 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
18330 6e 67 20 74 6f 20 63 35 32 37 32 66 61 63 64 61  ng to c5272facda
18340 61 61 31 31 66 38 38 34 63 38 63 63 30 64 39 64  aa11f884c8cc0d9d
18350 34 66 34 31 63 37 0d 0a 0d 0a 71 75 65 72 79 20  4f41c7....query 
18360 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
18370 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
18380 61 62 32 20 57 48 45 52 45 20 28 20 2d 20 63 6f  ab2 WHERE ( - co
18390 6c 30 20 2b 20 63 6f 6c 30 20 49 53 20 4e 4f 54  l0 + col0 IS NOT
183a0 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39   NULL )..----..9
183b0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
183c0 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38  to 75c998aa53ac8
183d0 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30  3218cbf2feb962d0
183e0 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  a49....query I r
183f0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
18400 4c 4c 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20  LL col1 AS col0 
18410 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
18420 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32  0 WHERE NOT col2
18430 20 3d 20 2b 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d   = + - col0..---
18440 2d 0d 0a 31 0d 0a 32 31 0d 0a 38 31 0d 0a 0d 0a  -..1..21..81....
18450 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
18460 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
18470 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
18480 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
18490 2d 35 32 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -527..SELECT DIS
184a0 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20 44 49 56  TINCT + col0 DIV
184b0 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 20 2a 20 2d   col2 + col2 * -
184c0 20 63 6f 6c 32 20 2b 20 39 30 20 46 52 4f 4d 20   col2 + 90 FROM 
184d0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
184e0 2d 2d 0d 0a 2d 31 35 30 39 0d 0a 2d 33 32 37 33  --..-1509..-3273
184f0 0d 0a 2d 34 33 37 0d 0a 0d 0a 73 6b 69 70 69 66  ..-437....skipif
18500 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
18510 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
18520 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
18530 32 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  27..SELECT DISTI
18540 4e 43 54 20 2b 20 63 6f 6c 30 20 2f 20 63 6f 6c  NCT + col0 / col
18550 32 20 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c  2 + col2 * - col
18560 32 20 2b 20 39 30 20 46 52 4f 4d 20 74 61 62 32  2 + 90 FROM tab2
18570 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
18580 2d 31 35 30 39 0d 0a 2d 33 32 37 33 0d 0a 2d 34  -1509..-3273..-4
18590 33 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  37....query II r
185a0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
185b0 20 38 30 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c   80, col0 AS col
185c0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
185d0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 30 0d 0a 35  or0..----..80..5
185e0 31 0d 0a 38 30 0d 0a 38 35 0d 0a 38 30 0d 0a 39  1..80..85..80..9
185f0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  1....query III r
18600 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
18610 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
18620 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 35  r0 WHERE NOT + 5
18630 37 20 49 4e 20 28 20 63 6f 6c 31 20 2d 20 2d 20  7 IN ( col1 - - 
18640 2d 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  - col1 )..----..
18650 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
18660 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33 36   to c6c0a4111b36
18670 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64 35  d04dbc811a11e4d5
18680 34 63 61 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  4cad....onlyif m
18690 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
186a0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
186b0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
186c0 72 74 20 6c 61 62 65 6c 2d 35 33 30 0d 0a 53 45  rt label-530..SE
186d0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
186e0 63 6f 6c 31 20 44 49 56 20 28 20 2d 20 32 37 20  col1 DIV ( - 27 
186f0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
18700 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
18710 2d 0d 0a 31 0d 0a 32 0d 0a 0d 0a 73 6b 69 70 69  -..1..2....skipi
18720 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
18730 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
18740 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
18750 35 33 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  530..SELECT DIST
18760 49 4e 43 54 20 2d 20 63 6f 6c 31 20 2f 20 28 20  INCT - col1 / ( 
18770 2d 20 32 37 20 29 20 41 53 20 63 6f 6c 32 20 46  - 27 ) AS col2 F
18780 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
18790 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 0d 0a 0d 0a  ..----..1..2....
187a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
187b0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
187c0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
187d0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
187e0 2d 35 33 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -531..SELECT ALL
187f0 20 2d 20 2b 20 31 33 20 44 49 56 20 2d 20 63 6f   - + 13 DIV - co
18800 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
18810 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  cor0..----..0..0
18820 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
18830 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
18840 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
18850 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 31 0d  wsort label-531.
18860 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20  .SELECT ALL - + 
18870 31 33 20 2f 20 2d 20 63 6f 6c 30 20 46 52 4f 4d  13 / - col0 FROM
18880 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
18890 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a  ---..0..0..0....
188a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
188b0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30  .SELECT ALL col0
188c0 20 2a 20 2d 20 2d 20 36 33 20 46 52 4f 4d 20 74   * - - 63 FROM t
188d0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
188e0 2d 0d 0a 35 34 38 31 0d 0a 36 31 31 31 0d 0a 39  -..5481..6111..9
188f0 34 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  45....onlyif mys
18900 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
18910 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
18920 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
18930 33 33 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e  33..SELECT - MIN
18940 28 20 2b 20 36 35 20 29 20 41 53 20 63 6f 6c 30  ( + 65 ) AS col0
18950 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
18960 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35 0d 0a 0d  r0..----..-65...
18970 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
18980 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
18990 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
189a0 6c 61 62 65 6c 2d 35 33 33 0d 0a 53 45 4c 45 43  label-533..SELEC
189b0 54 20 2d 20 4d 49 4e 20 28 20 2b 20 36 35 20 29  T - MIN ( + 65 )
189c0 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
189d0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
189e0 0d 0a 2d 36 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-65....onlyif 
189f0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
18a00 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
18a10 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
18a20 6c 2d 35 33 34 0d 0a 53 45 4c 45 43 54 20 2b 20  l-534..SELECT + 
18a30 36 38 20 2a 20 2b 20 2d 20 28 20 2d 20 43 4f 55  68 * + - ( - COU
18a40 4e 54 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c  NT( * ) ) AS col
18a50 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
18a60 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  or0 WHERE NOT NU
18a70 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  LL IS NULL..----
18a80 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
18a90 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
18aa0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
18ab0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 34 0d  wsort label-534.
18ac0 0a 53 45 4c 45 43 54 20 2b 20 36 38 20 2a 20 2b  .SELECT + 68 * +
18ad0 20 2d 20 28 20 2d 20 43 4f 55 4e 54 20 28 20 2a   - ( - COUNT ( *
18ae0 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   ) ) AS col2 FRO
18af0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
18b00 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53  HERE NOT NULL IS
18b10 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
18b20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
18b30 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
18b40 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
18b50 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2b  WHERE NOT col0 +
18b60 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32   - col1 * + col2
18b70 20 3c 20 28 20 2b 20 63 6f 6c 30 20 2b 20 2b 20   < ( + col0 + + 
18b80 2d 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  - col1 )..----..
18b90 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
18ba0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
18bb0 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32  INCT * FROM tab2
18bc0 20 63 6f 72 30 20 57 48 45 52 45 20 34 30 20 2a   cor0 WHERE 40 *
18bd0 20 63 6f 6c 30 20 2b 20 63 6f 6c 30 20 49 53 20   col0 + col0 IS 
18be0 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  NOT NULL..----..
18bf0 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
18c00 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63   to 75c998aa53ac
18c10 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64  83218cbf2feb962d
18c20 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  0a49....onlyif m
18c30 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
18c40 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
18c50 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
18c60 72 74 20 6c 61 62 65 6c 2d 35 33 37 0d 0a 53 45  rt label-537..SE
18c70 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 2d 20 63  LECT ALL + ( - c
18c80 6f 6c 30 20 29 20 2a 20 2d 20 2b 20 63 6f 6c 31  ol0 ) * - + col1
18c90 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
18ca0 20 2d 20 35 32 20 2a 20 2d 20 43 41 53 54 28 20   - 52 * - CAST( 
18cb0 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
18cc0 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
18cd0 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
18ce0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
18cf0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
18d00 73 6f 72 74 20 6c 61 62 65 6c 2d 35 33 37 0d 0a  sort label-537..
18d10 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 28 20 2d  SELECT ALL + ( -
18d20 20 63 6f 6c 30 20 29 20 2a 20 2d 20 2b 20 63 6f   col0 ) * - + co
18d30 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45  l1 FROM tab1 WHE
18d40 52 45 20 2d 20 35 32 20 2a 20 2d 20 43 41 53 54  RE - 52 * - CAST
18d50 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
18d60 45 52 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  ER ) IS NOT NULL
18d70 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
18d80 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
18d90 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
18da0 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49  ab0 WHERE NULL I
18db0 53 20 4e 55 4c 4c 20 4f 52 20 4e 55 4c 4c 20 3c  S NULL OR NULL <
18dc0 3e 20 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 31 0d  > col2 * + col1.
18dd0 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
18de0 68 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32  hashing to c4b42
18df0 37 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34  765dff94eaaa4604
18e00 30 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 6f  0e537fb43b7....o
18e10 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
18e20 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
18e30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18e40 74 20 6c 61 62 65 6c 2d 35 33 39 0d 0a 53 45 4c  t label-539..SEL
18e50 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
18e60 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c  OUNT( * ) AS col
18e70 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  2 FROM tab2 WHER
18e80 45 20 4e 4f 54 20 63 6f 6c 31 20 49 53 20 4e 4f  E NOT col1 IS NO
18e90 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  T NULL..----..0.
18ea0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
18eb0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
18ec0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
18ed0 74 20 6c 61 62 65 6c 2d 35 33 39 0d 0a 53 45 4c  t label-539..SEL
18ee0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43  ECT DISTINCT - C
18ef0 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f  OUNT ( * ) AS co
18f00 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  l2 FROM tab2 WHE
18f10 52 45 20 4e 4f 54 20 63 6f 6c 31 20 49 53 20 4e  RE NOT col1 IS N
18f20 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30  OT NULL..----..0
18f30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
18f40 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
18f50 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
18f60 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34 30  owsort label-540
18f70 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
18f80 28 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63  ( DISTINCT - + c
18f90 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 32 0d  ol0 ) FROM tab2.
18fa0 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69  .----..-3....ski
18fb0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
18fc0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
18fd0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
18fe0 6c 2d 35 34 30 0d 0a 53 45 4c 45 43 54 20 2d 20  l-540..SELECT - 
18ff0 43 4f 55 4e 54 20 28 20 44 49 53 54 49 4e 43 54  COUNT ( DISTINCT
19000 20 2d 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d   - + col0 ) FROM
19010 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   tab2..----..-3.
19020 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
19030 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
19040 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
19050 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 34 31 0d  wsort label-541.
19060 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 2d 20 31  .SELECT MAX( - 1
19070 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
19080 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a  tab0..----..-1..
19090 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
190a0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
190b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
190c0 20 6c 61 62 65 6c 2d 35 34 31 0d 0a 53 45 4c 45   label-541..SELE
190d0 43 54 20 4d 41 58 20 28 20 2d 20 31 20 29 20 41  CT MAX ( - 1 ) A
190e0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
190f0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 6f 6e  ..----..-1....on
19100 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
19110 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
19120 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
19130 20 6c 61 62 65 6c 2d 35 34 32 0d 0a 53 45 4c 45   label-542..SELE
19140 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20  CT COUNT( * ) * 
19150 2b 20 4d 41 58 28 20 2b 20 2b 20 37 32 20 29 20  + MAX( + + 72 ) 
19160 2a 20 2b 20 43 4f 55 4e 54 28 20 41 4c 4c 20 2d  * + COUNT( ALL -
19170 20 2d 20 38 38 20 29 20 46 52 4f 4d 20 74 61 62   - 88 ) FROM tab
19180 31 0d 0a 2d 2d 2d 2d 0d 0a 36 34 38 0d 0a 0d 0a  1..----..648....
19190 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
191a0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
191b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
191c0 61 62 65 6c 2d 35 34 32 0d 0a 53 45 4c 45 43 54  abel-542..SELECT
191d0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b   COUNT ( * ) * +
191e0 20 4d 41 58 20 28 20 2b 20 2b 20 37 32 20 29 20   MAX ( + + 72 ) 
191f0 2a 20 2b 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20  * + COUNT ( ALL 
19200 2d 20 2d 20 38 38 20 29 20 46 52 4f 4d 20 74 61  - - 88 ) FROM ta
19210 62 31 0d 0a 2d 2d 2d 2d 0d 0a 36 34 38 0d 0a 0d  b1..----..648...
19220 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
19230 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
19240 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
19250 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
19260 6c 2d 35 34 33 0d 0a 53 45 4c 45 43 54 20 2d 20  l-543..SELECT - 
19270 28 20 2b 20 63 6f 6c 30 20 29 20 44 49 56 20 2b  ( + col0 ) DIV +
19280 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52   col0 AS col0 FR
19290 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d  OM tab1 cor0..--
192a0 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d 31 0d 0a  --..-1..-1..-1..
192b0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
192c0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
192d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
192e0 20 6c 61 62 65 6c 2d 35 34 33 0d 0a 53 45 4c 45   label-543..SELE
192f0 43 54 20 2d 20 28 20 2b 20 63 6f 6c 30 20 29 20  CT - ( + col0 ) 
19300 2f 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  / + col0 AS col0
19310 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
19320 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d  .----..-1..-1..-
19330 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  1....query II ro
19340 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
19350 28 20 35 35 20 29 20 2a 20 2d 20 2b 20 28 20 63  ( 55 ) * - + ( c
19360 6f 6c 32 20 29 2c 20 28 20 63 6f 6c 31 20 29 20  ol2 ), ( col1 ) 
19370 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
19380 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
19390 0a 32 35 38 35 0d 0a 38 31 0d 0a 35 34 34 35 0d  .2585..81..5445.
193a0 0a 31 0d 0a 35 35 30 0d 0a 32 31 0d 0a 0d 0a 71  .1..550..21....q
193b0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
193c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
193d0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
193e0 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20   WHERE ( NULL ) 
193f0 4e 4f 54 20 49 4e 20 28 20 2b 20 2b 20 63 6f 6c  NOT IN ( + + col
19400 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  0 )..----....que
19410 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
19420 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
19430 62 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b2 AS cor0 WHERE
19440 20 4e 4f 54 20 37 36 20 3c 3d 20 34 39 20 2b 20   NOT 76 <= 49 + 
19450 2d 20 33 35 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61  - 35..----..9 va
19460 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
19470 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31  75c998aa53ac8321
19480 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39  8cbf2feb962d0a49
19490 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
194a0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
194b0 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  L * FROM tab0 AS
194c0 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 38 35   cor0 WHERE + 85
194d0 20 3c 3e 20 37 35 0d 0a 2d 2d 2d 2d 0d 0a 39 20   <> 75..----..9 
194e0 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
194f0 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65  o c4b42765dff94e
19500 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33  aaa46040e537fb43
19510 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  b7....skipif pos
19520 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
19530 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
19540 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
19550 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
19560 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
19570 53 45 4c 45 43 54 20 2b 20 2b 20 36 36 20 2b 20  SELECT + + 66 + 
19580 2d 20 63 6f 6c 30 20 2f 20 63 6f 6c 32 20 2a 20  - col0 / col2 * 
19590 2d 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 31 20  - col2 + + col1 
195a0 2f 20 2d 20 28 20 2d 20 2b 20 31 20 29 20 2b 20  / - ( - + 1 ) + 
195b0 63 6f 6c 31 20 2a 20 63 6f 6c 31 20 2a 20 2d 20  col1 * col1 * - 
195c0 2b 20 63 6f 6c 32 20 63 6f 6c 31 20 46 52 4f 4d  + col2 col1 FROM
195d0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
195e0 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29  ERE NOT ( NULL )
195f0 20 3c 20 2d 20 32 36 0d 0a 2d 2d 2d 2d 0d 0a 0d   < - 26..----...
19600 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
19610 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 37 20  ..SELECT ALL 87 
19620 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  + + col0 FROM ta
19630 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 38 0d 0a 31  b1..----..138..1
19640 37 32 0d 0a 31 37 38 0d 0a 0d 0a 6f 6e 6c 79 69  72..178....onlyi
19650 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
19660 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
19670 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19680 62 65 6c 2d 35 35 30 0d 0a 53 45 4c 45 43 54 20  bel-550..SELECT 
19690 44 49 53 54 49 4e 43 54 20 4d 49 4e 28 20 41 4c  DISTINCT MIN( AL
196a0 4c 20 2d 20 63 6f 6c 32 20 29 20 2b 20 38 20 41  L - col2 ) + 8 A
196b0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
196c0 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 31 0d 0a 0d 0a 73  ..----..-91....s
196d0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
196e0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
196f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19700 62 65 6c 2d 35 35 30 0d 0a 53 45 4c 45 43 54 20  bel-550..SELECT 
19710 44 49 53 54 49 4e 43 54 20 4d 49 4e 20 28 20 41  DISTINCT MIN ( A
19720 4c 4c 20 2d 20 63 6f 6c 32 20 29 20 2b 20 38 20  LL - col2 ) + 8 
19730 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
19740 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 31 0d 0a 0d 0a  0..----..-91....
19750 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
19760 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 2b  .SELECT + col0 +
19770 20 2d 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c   - - col0 AS col
19780 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
19790 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 34 0d 0a  or0..----..174..
197a0 31 39 34 0d 0a 33 30 0d 0a 0d 0a 71 75 65 72 79  194..30....query
197b0 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
197c0 45 43 54 20 2b 20 2b 20 63 6f 6c 30 2c 20 33 38  ECT + + col0, 38
197d0 20 2d 20 34 20 46 52 4f 4d 20 74 61 62 31 20 41   - 4 FROM tab1 A
197e0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31  S cor0..----..51
197f0 0d 0a 33 34 0d 0a 38 35 0d 0a 33 34 0d 0a 39 31  ..34..85..34..91
19800 0d 0a 33 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..34....query I 
19810 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
19820 41 4c 4c 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 2d  ALL + col0 + - -
19830 20 39 33 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   93 AS col2 FROM
19840 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
19850 2d 2d 2d 0d 0a 31 34 34 0d 0a 31 37 38 0d 0a 31  ---..144..178..1
19860 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  84....onlyif mys
19870 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
19880 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
19890 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
198a0 72 74 20 6c 61 62 65 6c 2d 35 35 34 0d 0a 53 45  rt label-554..SE
198b0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
198c0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b   AS cor0 WHERE +
198d0 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c   col0 IS NOT NUL
198e0 4c 20 4f 52 20 4e 4f 54 20 2d 20 2b 20 63 6f 6c  L OR NOT - + col
198f0 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 43 41  2 NOT BETWEEN CA
19900 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
19910 45 44 20 29 20 2f 20 2b 20 63 6f 6c 32 20 41 4e  ED ) / + col2 AN
19920 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  D NULL..----..9 
19930 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
19940 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65  o c4b42765dff94e
19950 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33  aaa46040e537fb43
19960 62 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  b7....skipif mys
19970 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
19980 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20 72  ble..query III r
19990 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 35 34  owsort label-554
199a0 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
199b0 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
199c0 52 45 20 2b 20 63 6f 6c 30 20 49 53 20 4e 4f 54  RE + col0 IS NOT
199d0 20 4e 55 4c 4c 20 4f 52 20 4e 4f 54 20 2d 20 2b   NULL OR NOT - +
199e0 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45   col2 NOT BETWEE
199f0 4e 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  N CAST ( NULL AS
19a00 20 49 4e 54 45 47 45 52 20 29 20 2f 20 2b 20 63   INTEGER ) / + c
19a10 6f 6c 32 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d  ol2 AND NULL..--
19a20 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
19a30 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35  hing to c4b42765
19a40 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35  dff94eaaa46040e5
19a50 33 37 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79  37fb43b7....only
19a60 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
19a70 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
19a80 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
19a90 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 35 35  owsort label-555
19aa0 0d 0a 53 45 4c 45 43 54 20 2d 20 36 37 20 44 49  ..SELECT - 67 DI
19ab0 56 20 2d 20 39 36 20 41 53 20 63 6f 6c 32 20 46  V - 96 AS col2 F
19ac0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
19ad0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d  ..----..0..0..0.
19ae0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
19af0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
19b00 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19b10 74 20 6c 61 62 65 6c 2d 35 35 35 0d 0a 53 45 4c  t label-555..SEL
19b20 45 43 54 20 2d 20 36 37 20 2f 20 2d 20 39 36 20  ECT - 67 / - 96 
19b30 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
19b40 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
19b50 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79  .0..0..0....only
19b60 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
19b70 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
19b80 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
19b90 61 62 65 6c 2d 35 35 36 0d 0a 53 45 4c 45 43 54  abel-556..SELECT
19ba0 20 41 4c 4c 20 2b 20 2b 20 4d 49 4e 28 20 44 49   ALL + + MIN( DI
19bb0 53 54 49 4e 43 54 20 2d 20 2d 20 63 6f 6c 31 20  STINCT - - col1 
19bc0 29 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  ) FROM tab2 cor0
19bd0 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 33 20 2a   WHERE NOT + 3 *
19be0 20 63 6f 6c 31 20 3d 20 2d 20 32 34 0d 0a 2d 2d   col1 = - 24..--
19bf0 2d 2d 0d 0a 35 31 0d 0a 0d 0a 73 6b 69 70 69 66  --..51....skipif
19c00 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
19c10 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
19c20 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
19c30 35 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  56..SELECT ALL +
19c40 20 2b 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43   + MIN ( DISTINC
19c50 54 20 2d 20 2d 20 63 6f 6c 31 20 29 20 46 52 4f  T - - col1 ) FRO
19c60 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52  M tab2 cor0 WHER
19c70 45 20 4e 4f 54 20 2b 20 33 20 2a 20 63 6f 6c 31  E NOT + 3 * col1
19c80 20 3d 20 2d 20 32 34 0d 0a 2d 2d 2d 2d 0d 0a 35   = - 24..----..5
19c90 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
19ca0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
19cb0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
19cc0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 35  rowsort label-55
19cd0 37 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 4d 41  7..SELECT + ( MA
19ce0 58 28 20 63 6f 6c 31 20 29 20 29 20 41 53 20 63  X( col1 ) ) AS c
19cf0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
19d00 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 37 0d   cor0..----..77.
19d10 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
19d20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
19d30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
19d40 74 20 6c 61 62 65 6c 2d 35 35 37 0d 0a 53 45 4c  t label-557..SEL
19d50 45 43 54 20 2b 20 28 20 4d 41 58 20 28 20 63 6f  ECT + ( MAX ( co
19d60 6c 31 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46  l1 ) ) AS col0 F
19d70 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
19d80 0d 0a 2d 2d 2d 2d 0d 0a 37 37 0d 0a 0d 0a 71 75  ..----..77....qu
19d90 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
19da0 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
19db0 61 62 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c  ab0 WHERE NULL <
19dc0 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 2d 20 28 20   + col1 * - - ( 
19dd0 2d 20 63 6f 6c 32 20 29 20 2a 20 38 30 0d 0a 2d  - col2 ) * 80..-
19de0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
19df0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
19e00 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
19e10 52 45 20 2d 20 36 37 20 42 45 54 57 45 45 4e 20  RE - 67 BETWEEN 
19e20 63 6f 6c 31 20 41 4e 44 20 63 6f 6c 30 20 2b 20  col1 AND col0 + 
19e30 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col0..----....qu
19e40 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
19e50 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
19e60 20 39 39 20 2b 20 2b 20 32 34 20 46 52 4f 4d 20   99 + + 24 FROM 
19e70 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 33 0d  tab0..----..123.
19e80 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
19e90 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
19ea0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
19eb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19ec0 62 65 6c 2d 35 36 31 0d 0a 53 45 4c 45 43 54 20  bel-561..SELECT 
19ed0 2b 20 28 20 2b 20 2d 20 35 37 20 29 20 44 49 56  + ( + - 57 ) DIV
19ee0 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c   + + col0 AS col
19ef0 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
19f00 2d 0d 0a 2d 31 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73  -..-1..0..0....s
19f10 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
19f20 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
19f30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
19f40 62 65 6c 2d 35 36 31 0d 0a 53 45 4c 45 43 54 20  bel-561..SELECT 
19f50 2b 20 28 20 2b 20 2d 20 35 37 20 29 20 2f 20 2b  + ( + - 57 ) / +
19f60 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20   + col0 AS col2 
19f70 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
19f80 0a 2d 31 0d 0a 30 0d 0a 30 0d 0a 0d 0a 71 75 65  .-1..0..0....que
19f90 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
19fa0 4c 45 43 54 20 2b 20 36 20 2d 20 2d 20 2b 20 63  LECT + 6 - - + c
19fb0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol1 FROM tab2..-
19fc0 2d 2d 2d 0d 0a 35 37 0d 0a 37 33 0d 0a 38 33 0d  ---..57..73..83.
19fd0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
19fe0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38  rt..SELECT ALL 8
19ff0 34 20 2a 20 36 39 20 2b 20 2b 20 2b 20 63 6f 6c  4 * 69 + + + col
1a000 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
1a010 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 35 38 31 39 0d  ab2..----..5819.
1a020 0a 35 38 33 36 0d 0a 35 38 35 34 0d 0a 0d 0a 6f  .5836..5854....o
1a030 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
1a040 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
1a050 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1a060 74 20 6c 61 62 65 6c 2d 35 36 34 0d 0a 53 45 4c  t label-564..SEL
1a070 45 43 54 20 2d 20 4d 49 4e 28 20 2d 20 35 35 20  ECT - MIN( - 55 
1a080 29 20 2d 20 2d 20 36 38 20 41 53 20 63 6f 6c 32  ) - - 68 AS col2
1a090 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
1a0a0 0d 0a 31 32 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..123....skipif 
1a0b0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1a0c0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1a0d0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36  rowsort label-56
1a0e0 34 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20  4..SELECT - MIN 
1a0f0 28 20 2d 20 35 35 20 29 20 2d 20 2d 20 36 38 20  ( - 55 ) - - 68 
1a100 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1a110 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 33 0d 0a 0d 0a  0..----..123....
1a120 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1a130 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 33 31  .SELECT ALL - 31
1a140 20 2b 20 2d 20 39 39 20 46 52 4f 4d 20 74 61 62   + - 99 FROM tab
1a150 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 30 0d 0a 2d  1..----..-130..-
1a160 31 33 30 0d 0a 2d 31 33 30 0d 0a 0d 0a 6f 6e 6c  130..-130....onl
1a170 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1a180 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1a190 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1a1a0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36  rowsort label-56
1a1b0 36 0d 0a 53 45 4c 45 43 54 20 2b 20 33 39 20 2d  6..SELECT + 39 -
1a1c0 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   - CAST( NULL AS
1a1d0 20 53 49 47 4e 45 44 20 29 20 2a 20 2b 20 63 6f   SIGNED ) * + co
1a1e0 6c 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  l0 col2 FROM tab
1a1f0 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
1a200 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
1a210 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1a220 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70  compatible..skip
1a230 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20  if postgresql # 
1a240 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69  PostgreSQL requi
1a250 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61  res AS when rena
1a260 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75  ming output colu
1a270 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  mns..query I row
1a280 73 6f 72 74 20 6c 61 62 65 6c 2d 35 36 36 0d 0a  sort label-566..
1a290 53 45 4c 45 43 54 20 2b 20 33 39 20 2d 20 2d 20  SELECT + 39 - - 
1a2a0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
1a2b0 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 63 6f 6c  NTEGER ) * + col
1a2c0 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  0 col2 FROM tab0
1a2d0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
1a2e0 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
1a2f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1a300 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
1a310 31 20 2a 20 2b 20 2d 20 34 36 20 2a 20 2b 20 28  1 * + - 46 * + (
1a320 20 2d 20 63 6f 6c 32 20 29 20 2d 20 2d 20 63 6f   - col2 ) - - co
1a330 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
1a340 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 31 37  tab2..----..1417
1a350 35 37 0d 0a 31 37 38 38 32 33 0d 0a 35 34 30 30  57..178823..5400
1a360 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
1a370 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1a380 54 49 4e 43 54 20 2b 20 63 6f 6c 32 20 2d 20 2d  TINCT + col2 - -
1a390 20 63 6f 6c 30 20 2b 20 2d 20 2d 20 63 6f 6c 31   col0 + - - col1
1a3a0 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d   * - + col2 FROM
1a3b0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
1a3c0 2d 2d 2d 0d 0a 2d 31 31 30 34 0d 0a 2d 32 39 37  ---..-1104..-297
1a3d0 36 0d 0a 2d 33 37 35 33 0d 0a 0d 0a 71 75 65 72  6..-3753....quer
1a3e0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1a3f0 45 43 54 20 33 20 2b 20 2b 20 34 37 20 2b 20 2d  ECT 3 + + 47 + -
1a400 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
1a410 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1a420 31 0d 0a 2d 31 37 0d 0a 2d 32 37 0d 0a 0d 0a 71  1..-17..-27....q
1a430 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1a440 53 45 4c 45 43 54 20 41 4c 4c 20 35 20 2d 20 2d  SELECT ALL 5 - -
1a450 20 2b 20 34 30 20 2b 20 2b 20 28 20 2b 20 63 6f   + 40 + + ( + co
1a460 6c 31 20 29 20 2a 20 2d 20 63 6f 6c 30 20 41 53  l1 ) * - col0 AS
1a470 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
1a480 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
1a490 32 33 30 31 0d 0a 2d 34 38 38 33 0d 0a 2d 34 39  2301..-4883..-49
1a4a0 38 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  80....onlyif mys
1a4b0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
1a4c0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
1a4d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
1a4e0 37 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  71..SELECT DISTI
1a4f0 4e 43 54 20 2b 20 35 20 2a 20 2d 20 43 4f 55 4e  NCT + 5 * - COUN
1a500 54 28 20 2a 20 29 20 2a 20 34 30 20 2a 20 2b 20  T( * ) * 40 * + 
1a510 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
1a520 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
1a530 0a 2d 31 38 30 30 0d 0a 0d 0a 73 6b 69 70 69 66  .-1800....skipif
1a540 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1a550 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
1a560 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35   rowsort label-5
1a570 37 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  71..SELECT DISTI
1a580 4e 43 54 20 2b 20 35 20 2a 20 2d 20 43 4f 55 4e  NCT + 5 * - COUN
1a590 54 20 28 20 2a 20 29 20 2a 20 34 30 20 2a 20 2b  T ( * ) * 40 * +
1a5a0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
1a5b0 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
1a5c0 2d 0d 0a 2d 31 38 30 30 0d 0a 0d 0a 6f 6e 6c 79  -..-1800....only
1a5d0 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
1a5e0 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
1a5f0 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
1a600 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 37 32  owsort label-572
1a610 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1a620 54 20 2b 20 2b 20 34 35 20 2a 20 2b 20 2d 20 63  T + + 45 * + - c
1a630 6f 6c 32 20 2b 20 2d 20 63 6f 6c 32 20 44 49 56  ol2 + - col2 DIV
1a640 20 36 33 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f   63 * + col2 FRO
1a650 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
1a660 2d 2d 2d 2d 0d 0a 2d 31 30 33 35 0d 0a 2d 31 38  ----..-1035..-18
1a670 30 30 0d 0a 2d 32 36 31 30 0d 0a 0d 0a 73 6b 69  00..-2610....ski
1a680 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1a690 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1a6a0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1a6b0 6c 2d 35 37 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-572..SELECT DI
1a6c0 53 54 49 4e 43 54 20 2b 20 2b 20 34 35 20 2a 20  STINCT + + 45 * 
1a6d0 2b 20 2d 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c  + - col2 + - col
1a6e0 32 20 2f 20 36 33 20 2a 20 2b 20 63 6f 6c 32 20  2 / 63 * + col2 
1a6f0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1a700 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 33 35 0d 0a  0..----..-1035..
1a710 2d 31 38 30 30 0d 0a 2d 32 36 31 30 0d 0a 0d 0a  -1800..-2610....
1a720 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
1a730 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 63 6f 6c  ..SELECT + + col
1a740 32 2c 20 2b 20 36 38 20 2d 20 2d 20 2d 20 31 39  2, + 68 - - - 19
1a750 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1a760 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34 39  r0..----..23..49
1a770 0d 0a 34 30 0d 0a 34 39 0d 0a 35 38 0d 0a 34 39  ..40..49..58..49
1a780 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1a790 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1a7a0 2d 20 37 36 20 2a 20 2d 20 2d 20 63 6f 6c 31 20  - 76 * - - col1 
1a7b0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
1a7c0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 39 36 0d 0a  0..----..-1596..
1a7d0 2d 36 31 35 36 0d 0a 2d 37 36 0d 0a 0d 0a 6f 6e  -6156..-76....on
1a7e0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1a7f0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1a800 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1a810 20 6c 61 62 65 6c 2d 35 37 35 0d 0a 53 45 4c 45   label-575..SELE
1a820 43 54 20 41 4c 4c 20 4d 41 58 28 20 44 49 53 54  CT ALL MAX( DIST
1a830 49 4e 43 54 20 2b 20 36 31 20 29 20 41 53 20 63  INCT + 61 ) AS c
1a840 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
1a850 2d 2d 2d 0d 0a 36 31 0d 0a 0d 0a 73 6b 69 70 69  ---..61....skipi
1a860 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1a870 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1a880 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1a890 35 37 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  575..SELECT ALL 
1a8a0 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b  MAX ( DISTINCT +
1a8b0 20 36 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52   61 ) AS col2 FR
1a8c0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 36  OM tab2..----..6
1a8d0 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
1a8e0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28  sort..SELECT - (
1a8f0 20 2b 20 32 30 20 29 20 41 53 20 63 6f 6c 32 20   + 20 ) AS col2 
1a900 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
1a910 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 2d 32  0..----..-20..-2
1a920 30 0d 0a 2d 32 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  0..-20....onlyif
1a930 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
1a940 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
1a950 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1a960 65 6c 2d 35 37 37 0d 0a 53 45 4c 45 43 54 20 44  el-577..SELECT D
1a970 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28  ISTINCT + COUNT(
1a980 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
1a990 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
1a9a0 48 45 52 45 20 4e 55 4c 4c 20 3e 20 4e 55 4c 4c  HERE NULL > NULL
1a9b0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
1a9c0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1a9d0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1a9e0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1a9f0 6c 2d 35 37 37 0d 0a 53 45 4c 45 43 54 20 44 49  l-577..SELECT DI
1aa00 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 20 28  STINCT + COUNT (
1aa10 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
1aa20 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
1aa30 48 45 52 45 20 4e 55 4c 4c 20 3e 20 4e 55 4c 4c  HERE NULL > NULL
1aa40 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c  ..----..0....onl
1aa50 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1aa60 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
1aa70 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
1aa80 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 37  rowsort label-57
1aa90 38 0d 0a 53 45 4c 45 43 54 20 2d 20 37 39 20 2a  8..SELECT - 79 *
1aaa0 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53   - CAST( NULL AS
1aab0 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74   SIGNED ) FROM t
1aac0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
1aad0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
1aae0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1aaf0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1ab00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1ab10 62 65 6c 2d 35 37 38 0d 0a 53 45 4c 45 43 54 20  bel-578..SELECT 
1ab20 2d 20 37 39 20 2a 20 2d 20 43 41 53 54 20 28 20  - 79 * - CAST ( 
1ab30 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
1ab40 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
1ab50 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
1ab60 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ULL....query III
1ab70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1ab80 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31   ALL * FROM tab1
1ab90 20 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 4f 54   WHERE NOT ( NOT
1aba0 20 2d 20 35 20 2a 20 2d 20 63 6f 6c 30 20 4e 4f   - 5 * - col0 NO
1abb0 54 20 49 4e 20 28 20 2b 20 2d 20 63 6f 6c 30 2c  T IN ( + - col0,
1abc0 20 2d 20 63 6f 6c 31 20 2f 20 2b 20 2b 20 33 30   - col1 / + + 30
1abd0 2c 20 2d 20 38 32 20 2f 20 2b 20 63 6f 6c 32 20  , - 82 / + col2 
1abe0 2b 20 2b 20 63 6f 6c 30 20 2f 20 63 6f 6c 31 2c  + + col0 / col1,
1abf0 20 2d 20 2b 20 31 30 2c 20 2b 20 35 38 2c 20 63   - + 10, + 58, c
1ac00 6f 6c 32 2c 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c  ol2, col0, + col
1ac10 32 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76  2 ) )..----..9 v
1ac20 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
1ac30 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34   c6c0a4111b36d04
1ac40 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61  dbc811a11e4d54ca
1ac50 64 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  d....onlyif mysq
1ac60 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
1ac70 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
1ac80 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1ac90 6c 61 62 65 6c 2d 35 38 30 0d 0a 53 45 4c 45 43  label-580..SELEC
1aca0 54 20 41 4c 4c 20 2b 20 39 37 20 44 49 56 20 63  T ALL + 97 DIV c
1acb0 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ol0 AS col0 FROM
1acc0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   tab1..----..1..
1acd0 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  1..1....skipif m
1ace0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1acf0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1ad00 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38 30  owsort label-580
1ad10 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 39  ..SELECT ALL + 9
1ad20 37 20 2f 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  7 / col0 AS col0
1ad30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1ad40 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 71 75 65  ..1..1..1....que
1ad50 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1ad60 4c 45 43 54 20 41 4c 4c 20 28 20 2d 20 33 31 20  LECT ALL ( - 31 
1ad70 29 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  ) FROM tab0..---
1ad80 2d 0d 0a 2d 33 31 0d 0a 2d 33 31 0d 0a 2d 33 31  -..-31..-31..-31
1ad90 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
1ada0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1adb0 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
1adc0 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
1add0 20 4e 4f 54 20 32 30 20 2d 20 2b 20 31 34 20 49   NOT 20 - + 14 I
1ade0 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20  S NULL..----..9 
1adf0 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74  values hashing t
1ae00 6f 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65  o c4b42765dff94e
1ae10 61 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33  aaa46040e537fb43
1ae20 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  b7....query III 
1ae30 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1ae40 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
1ae50 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 32 20 3e  or0 WHERE col2 >
1ae60 20 2d 20 36 35 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   - 65..----..9 v
1ae70 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
1ae80 20 37 35 63 39 39 38 61 61 35 33 61 63 38 33 32   75c998aa53ac832
1ae90 31 38 63 62 66 32 66 65 62 39 36 32 64 30 61 34  18cbf2feb962d0a4
1aea0 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
1aeb0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1aec0 20 2b 20 2b 20 35 20 2b 20 2d 20 2d 20 63 6f 6c   + + 5 + - - col
1aed0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
1aee0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 31 0d 0a  or0..----..101..
1aef0 36 34 0d 0a 37 33 0d 0a 0d 0a 71 75 65 72 79 20  64..73....query 
1af00 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
1af10 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
1af20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 32  WHERE NOT + col2
1af30 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e   BETWEEN NULL AN
1af40 44 20 2b 20 34 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76  D + 4..----..9 v
1af50 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
1af60 20 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34   c6c0a4111b36d04
1af70 64 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61  dbc811a11e4d54ca
1af80 64 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  d....query III r
1af90 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
1afa0 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
1afb0 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  ab2 WHERE NOT NU
1afc0 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 28  LL NOT BETWEEN (
1afd0 20 32 34 20 2b 20 2d 20 63 6f 6c 32 20 29 20 41   24 + - col2 ) A
1afe0 4e 44 20 2d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d  ND - col2..----.
1aff0 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
1b000 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
1b010 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
1b020 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
1b030 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
1b040 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1b050 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 35  ECT DISTINCT + 5
1b060 31 20 2a 20 32 37 20 63 6f 6c 30 20 46 52 4f 4d  1 * 27 col0 FROM
1b070 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 33 37   tab0..----..137
1b080 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  7....query I row
1b090 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
1b0a0 20 2d 20 63 6f 6c 32 20 2a 20 34 31 20 46 52 4f   - col2 * 41 FRO
1b0b0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab1..----..-2
1b0c0 34 31 39 0d 0a 2d 32 37 38 38 0d 0a 2d 33 39 33  419..-2788..-393
1b0d0 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
1b0e0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
1b0f0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
1b100 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38  rowsort label-58
1b110 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
1b120 43 54 20 28 20 43 4f 55 4e 54 28 20 2a 20 29 20  CT ( COUNT( * ) 
1b130 29 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ) * + COUNT( * )
1b140 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1b150 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..9....skipif my
1b160 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1b170 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1b180 77 73 6f 72 74 20 6c 61 62 65 6c 2d 35 38 39 0d  wsort label-589.
1b190 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1b1a0 20 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29   ( COUNT ( * ) )
1b1b0 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   * + COUNT ( * )
1b1c0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1b1d0 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ..9....query III
1b1e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1b1f0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
1b200 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
1b210 63 6f 6c 32 20 3c 3d 20 2d 20 63 6f 6c 31 20 2b  col2 <= - col1 +
1b220 20 2d 20 39 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61   - 9..----..9 va
1b230 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
1b240 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64  c6c0a4111b36d04d
1b250 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64  bc811a11e4d54cad
1b260 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1b270 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1b280 63 6f 6c 32 20 2a 20 2d 20 36 37 20 2d 20 2b 20  col2 * - 67 - + 
1b290 37 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  72 FROM tab0 WHE
1b2a0 52 45 20 4e 55 4c 4c 20 3c 3e 20 63 6f 6c 30 20  RE NULL <> col0 
1b2b0 2b 20 63 6f 6c 30 20 2a 20 63 6f 6c 31 0d 0a 2d  + col0 * col1..-
1b2c0 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
1b2d0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1b2e0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1b2f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1b300 35 39 32 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20  592..SELECT + ( 
1b310 28 20 2d 20 4d 41 58 28 20 41 4c 4c 20 2b 20 63  ( - MAX( ALL + c
1b320 6f 6c 32 20 29 20 29 20 29 20 2a 20 2d 20 43 4f  ol2 ) ) ) * - CO
1b330 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
1b340 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 38 38 0d 0a 0d  b1..----..288...
1b350 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1b360 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1b370 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1b380 6c 61 62 65 6c 2d 35 39 32 0d 0a 53 45 4c 45 43  label-592..SELEC
1b390 54 20 2b 20 28 20 28 20 2d 20 4d 41 58 20 28 20  T + ( ( - MAX ( 
1b3a0 41 4c 4c 20 2b 20 63 6f 6c 32 20 29 20 29 20 29  ALL + col2 ) ) )
1b3b0 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   * - COUNT ( * )
1b3c0 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1b3d0 0d 0a 32 38 38 0d 0a 0d 0a 71 75 65 72 79 20 49  ..288....query I
1b3e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1b3f0 20 41 4c 4c 20 2d 20 63 6f 6c 31 20 2b 20 2d 20   ALL - col1 + - 
1b400 36 35 20 2a 20 32 34 20 46 52 4f 4d 20 74 61 62  65 * 24 FROM tab
1b410 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 31 31 0d 0a  2..----..-1611..
1b420 2d 31 36 32 37 0d 0a 2d 31 36 33 37 0d 0a 0d 0a  -1627..-1637....
1b430 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1b440 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20 2a  .SELECT + col1 *
1b450 20 38 36 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20   86 + col2 FROM 
1b460 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 30 30  tab1..----..1300
1b470 0d 0a 34 31 31 30 0d 0a 34 38 39 0d 0a 0d 0a 6f  ..4110..489....o
1b480 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
1b490 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
1b4a0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
1b4b0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
1b4c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1b4d0 6c 2d 35 39 35 0d 0a 53 45 4c 45 43 54 20 2d 20  l-595..SELECT - 
1b4e0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
1b4f0 47 4e 45 44 20 29 20 2a 20 4d 41 58 28 20 32 31  GNED ) * MAX( 21
1b500 20 2a 20 38 37 20 29 20 46 52 4f 4d 20 74 61 62   * 87 ) FROM tab
1b510 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  0..----..NULL...
1b520 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1b530 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1b540 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1b550 6c 61 62 65 6c 2d 35 39 35 0d 0a 53 45 4c 45 43  label-595..SELEC
1b560 54 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  T - CAST ( NULL 
1b570 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20 4d  AS INTEGER ) * M
1b580 41 58 20 28 20 32 31 20 2a 20 38 37 20 29 20 46  AX ( 21 * 87 ) F
1b590 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
1b5a0 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
1b5b0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1b5c0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1b5d0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1b5e0 2d 35 39 36 0d 0a 53 45 4c 45 43 54 20 2d 20 38  -596..SELECT - 8
1b5f0 39 20 2a 20 4d 41 58 28 20 41 4c 4c 20 2d 20 63  9 * MAX( ALL - c
1b600 6f 6c 31 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20  ol1 ) col0 FROM 
1b610 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35 33 39  tab2..----..4539
1b620 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1b630 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1b640 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  e..skipif postgr
1b650 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
1b660 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
1b670 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
1b680 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
1b690 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1b6a0 6c 2d 35 39 36 0d 0a 53 45 4c 45 43 54 20 2d 20  l-596..SELECT - 
1b6b0 38 39 20 2a 20 4d 41 58 20 28 20 41 4c 4c 20 2d  89 * MAX ( ALL -
1b6c0 20 63 6f 6c 31 20 29 20 63 6f 6c 30 20 46 52 4f   col1 ) col0 FRO
1b6d0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35  M tab2..----..45
1b6e0 33 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  39....query I ro
1b6f0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1b700 4c 20 2d 20 63 6f 6c 31 20 2a 20 36 31 20 2b 20  L - col1 * 61 + 
1b710 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  + col0 FROM tab0
1b720 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 39 34 0d 0a 2d  ..----..-1194..-
1b730 34 39 32 36 0d 0a 33 36 0d 0a 0d 0a 71 75 65 72  4926..36....quer
1b740 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1b750 45 43 54 20 35 30 20 2a 20 2b 20 63 6f 6c 32 20  ECT 50 * + col2 
1b760 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
1b770 0a 32 33 35 30 0d 0a 34 39 35 30 0d 0a 35 30 30  .2350..4950..500
1b780 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1b790 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39 33 20 2b  ort..SELECT 93 +
1b7a0 20 36 36 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d   66 FROM tab0..-
1b7b0 2d 2d 2d 0d 0a 31 35 39 0d 0a 31 35 39 0d 0a 31  ---..159..159..1
1b7c0 35 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  59....query I ro
1b7d0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
1b7e0 4c 20 2d 20 63 6f 6c 32 20 2a 20 39 20 46 52 4f  L - col2 * 9 FRO
1b7f0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab2..----..-2
1b800 30 37 0d 0a 2d 33 36 30 0d 0a 2d 35 32 32 0d 0a  07..-360..-522..
1b810 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1b820 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1b830 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1b840 73 6f 72 74 20 6c 61 62 65 6c 2d 36 30 31 0d 0a  sort label-601..
1b850 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20  SELECT COUNT( * 
1b860 29 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ) + - COUNT( * )
1b870 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
1b880 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
1b890 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1b8a0 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
1b8b0 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
1b8c0 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
1b8d0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
1b8e0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
1b8f0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
1b900 6f 72 74 20 6c 61 62 65 6c 2d 36 30 31 0d 0a 53  ort label-601..S
1b910 45 4c 45 43 54 20 43 4f 55 4e 54 20 28 20 2a 20  ELECT COUNT ( * 
1b920 29 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  ) + - COUNT ( * 
1b930 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  ) col1 FROM tab2
1b940 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65  ..----..0....que
1b950 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1b960 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 31 20  LECT ALL + col1 
1b970 2a 20 2d 20 37 31 20 41 53 20 63 6f 6c 32 20 46  * - 71 AS col2 F
1b980 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 28  ROM tab0 WHERE (
1b990 20 2d 20 34 38 20 2f 20 2b 20 31 37 20 2b 20 2b   - 48 / + 17 + +
1b9a0 20 63 6f 6c 30 20 29 20 3d 20 4e 55 4c 4c 0d 0a   col0 ) = NULL..
1b9b0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
1b9c0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
1b9d0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
1b9e0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1b9f0 2d 36 30 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -603..SELECT ALL
1ba00 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 4d 41   COUNT( * ) * MA
1ba10 58 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20 41 53  X( ALL col1 ) AS
1ba20 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
1ba30 0a 2d 2d 2d 2d 0d 0a 31 34 31 0d 0a 0d 0a 73 6b  .----..141....sk
1ba40 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1ba50 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1ba60 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1ba70 65 6c 2d 36 30 33 0d 0a 53 45 4c 45 43 54 20 41  el-603..SELECT A
1ba80 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a  LL COUNT ( * ) *
1ba90 20 4d 41 58 20 28 20 41 4c 4c 20 63 6f 6c 31 20   MAX ( ALL col1 
1baa0 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
1bab0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 31 0d 0a  ab1..----..141..
1bac0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1bad0 74 0d 0a 53 45 4c 45 43 54 20 36 38 20 2a 20 63  t..SELECT 68 * c
1bae0 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol1 AS col2 FROM
1baf0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 33 31 39   tab1..----..319
1bb00 36 0d 0a 33 34 30 0d 0a 39 35 32 0d 0a 0d 0a 71  6..340..952....q
1bb10 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1bb20 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1bb30 63 6f 6c 30 20 2a 20 2d 20 33 30 20 46 52 4f 4d  col0 * - 30 FROM
1bb40 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35   tab1..----..-15
1bb50 33 30 0d 0a 2d 32 35 35 30 0d 0a 2d 32 37 33 30  30..-2550..-2730
1bb60 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1bb70 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
1bb80 35 38 20 2a 20 34 39 20 46 52 4f 4d 20 74 61 62  58 * 49 FROM tab
1bb90 30 0d 0a 2d 2d 2d 2d 0d 0a 32 38 34 32 0d 0a 32  0..----..2842..2
1bba0 38 34 32 0d 0a 32 38 34 32 0d 0a 0d 0a 6f 6e 6c  842..2842....onl
1bbb0 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
1bbc0 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
1bbd0 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
1bbe0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
1bbf0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1bc00 36 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  607..SELECT DIST
1bc10 49 4e 43 54 20 2b 20 4d 41 58 28 20 44 49 53 54  INCT + MAX( DIST
1bc20 49 4e 43 54 20 2d 20 28 20 2d 20 43 41 53 54 28  INCT - ( - CAST(
1bc30 20 2b 20 63 6f 6c 31 20 41 53 20 53 49 47 4e 45   + col1 AS SIGNE
1bc40 44 20 29 20 29 20 29 20 41 53 20 63 6f 6c 31 20  D ) ) ) AS col1 
1bc50 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
1bc60 0a 38 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .81....skipif my
1bc70 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1bc80 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1bc90 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 30 37 0d  wsort label-607.
1bca0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1bcb0 20 2b 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43   + MAX ( DISTINC
1bcc0 54 20 2d 20 28 20 2d 20 43 41 53 54 20 28 20 2b  T - ( - CAST ( +
1bcd0 20 63 6f 6c 31 20 41 53 20 49 4e 54 45 47 45 52   col1 AS INTEGER
1bce0 20 29 20 29 20 29 20 41 53 20 63 6f 6c 31 20 46   ) ) ) AS col1 F
1bcf0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
1bd00 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  81....query I ro
1bd10 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1bd20 53 54 49 4e 43 54 20 63 6f 6c 30 20 46 52 4f 4d  STINCT col0 FROM
1bd30 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
1bd40 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  col0 IS NOT NULL
1bd50 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
1bd60 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
1bd70 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66  te syntax: DIV f
1bd80 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
1bd90 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
1bda0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 30 39  owsort label-609
1bdb0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 36 36 20  ..SELECT ALL 66 
1bdc0 44 49 56 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  DIV - COUNT( * )
1bdd0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
1bde0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32 0d 0a 0d  b1..----..-22...
1bdf0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1be00 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1be10 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1be20 6c 61 62 65 6c 2d 36 30 39 0d 0a 53 45 4c 45 43  label-609..SELEC
1be30 54 20 41 4c 4c 20 36 36 20 2f 20 2d 20 43 4f 55  T ALL 66 / - COU
1be40 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  NT ( * ) AS col1
1be50 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
1be60 0d 0a 2d 32 32 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-22....query I
1be70 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1be80 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
1be90 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
1bea0 54 20 4e 55 4c 4c 20 3e 3d 20 37 38 0d 0a 2d 2d  T NULL >= 78..--
1beb0 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
1bec0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
1bed0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
1bee0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1bef0 31 31 0d 0a 53 45 4c 45 43 54 20 2d 20 31 30 20  11..SELECT - 10 
1bf00 2b 20 2d 20 4d 49 4e 28 20 2d 20 28 20 2b 20 63  + - MIN( - ( + c
1bf10 6f 6c 32 20 29 20 2b 20 28 20 33 20 29 20 29 20  ol2 ) + ( 3 ) ) 
1bf20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
1bf30 0a 34 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .45....skipif my
1bf40 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1bf50 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1bf60 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 31 0d  wsort label-611.
1bf70 0a 53 45 4c 45 43 54 20 2d 20 31 30 20 2b 20 2d  .SELECT - 10 + -
1bf80 20 4d 49 4e 20 28 20 2d 20 28 20 2b 20 63 6f 6c   MIN ( - ( + col
1bf90 32 20 29 20 2b 20 28 20 33 20 29 20 29 20 46 52  2 ) + ( 3 ) ) FR
1bfa0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34  OM tab2..----..4
1bfb0 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  5....query III r
1bfc0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
1bfd0 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 41  LL * FROM tab1 A
1bfe0 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20 63  S cor0 WHERE - c
1bff0 6f 6c 30 20 2a 20 63 6f 6c 30 20 49 4e 20 28 20  ol0 * col0 IN ( 
1c000 2b 20 34 33 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  + 43 )..----....
1c010 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1c020 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1c030 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
1c040 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
1c050 65 6c 2d 36 31 33 0d 0a 53 45 4c 45 43 54 20 2a  el-613..SELECT *
1c060 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1c070 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63  r0 WHERE NOT - c
1c080 6f 6c 32 20 3c 3e 20 43 41 53 54 28 20 4e 55 4c  ol2 <> CAST( NUL
1c090 4c 20 41 53 20 53 49 47 4e 45 44 20 29 0d 0a 2d  L AS SIGNED )..-
1c0a0 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ---....skipif my
1c0b0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1c0c0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20  ible..query III 
1c0d0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31  rowsort label-61
1c0e0 33 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  3..SELECT * FROM
1c0f0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
1c100 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 3c  ERE NOT - col2 <
1c110 3e 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  > CAST ( NULL AS
1c120 20 49 4e 54 45 47 45 52 20 29 0d 0a 2d 2d 2d 2d   INTEGER )..----
1c130 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
1c140 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
1c150 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
1c160 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
1c170 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 3e 3d 20 63   NOT + col0 >= c
1c180 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol0..----....que
1c190 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1c1a0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 31 35  LECT DISTINCT 15
1c1b0 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   * col2 AS col0 
1c1c0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
1c1d0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 38 35 0d 0a 31  0..----..1485..1
1c1e0 35 30 0d 0a 37 30 35 0d 0a 0d 0a 71 75 65 72 79  50..705....query
1c1f0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1c200 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  CT DISTINCT col1
1c210 20 2a 20 28 20 2b 20 63 6f 6c 30 20 29 20 46 52   * ( + col0 ) FR
1c220 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1c230 0a 2d 2d 2d 2d 0d 0a 34 32 35 0d 0a 34 32 37 37  .----..425..4277
1c240 0d 0a 37 31 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..714....onlyif 
1c250 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
1c260 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
1c270 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1c280 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
1c290 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 31 37 0d  wsort label-617.
1c2a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1c2b0 20 2b 20 43 41 53 54 28 20 43 4f 55 4e 54 28 20   + CAST( COUNT( 
1c2c0 2a 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20  * ) AS SIGNED ) 
1c2d0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1c2e0 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
1c2f0 30 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b  0..----..9....sk
1c300 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1c310 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1c320 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1c330 65 6c 2d 36 31 37 0d 0a 53 45 4c 45 43 54 20 44  el-617..SELECT D
1c340 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 20 28  ISTINCT + CAST (
1c350 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20   COUNT ( * ) AS 
1c360 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74  INTEGER ) FROM t
1c370 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
1c380 53 20 4a 4f 49 4e 20 74 61 62 30 0d 0a 2d 2d 2d  S JOIN tab0..---
1c390 2d 0d 0a 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..9....query I 
1c3a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1c3b0 41 4c 4c 20 33 32 20 41 53 20 63 6f 6c 30 20 46  ALL 32 AS col0 F
1c3c0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1c3d0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30   CROSS JOIN tab0
1c3e0 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73  ..----..9 values
1c3f0 20 68 61 73 68 69 6e 67 20 74 6f 20 64 33 30 61   hashing to d30a
1c400 32 61 63 62 66 33 33 63 38 38 32 37 34 34 37 34  2acbf33c88274474
1c410 33 30 36 39 33 36 64 33 32 32 37 62 0d 0a 0d 0a  306936d3227b....
1c420 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1c430 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 38 20 2a  .SELECT ALL 88 *
1c440 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20   - col2 AS col1 
1c450 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
1c460 0a 2d 35 31 39 32 0d 0a 2d 35 39 38 34 0d 0a 2d  .-5192..-5984..-
1c470 38 34 34 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49  8448....query II
1c480 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1c490 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62  T ALL * FROM tab
1c4a0 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
1c4b0 4e 4f 54 20 35 35 20 4e 4f 54 20 42 45 54 57 45  NOT 55 NOT BETWE
1c4c0 45 4e 20 2b 20 28 20 2b 20 63 6f 6c 31 20 29 20  EN + ( + col1 ) 
1c4d0 2a 20 34 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d  * 4 AND NULL..--
1c4e0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
1c4f0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1c500 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ALL * FROM tab0 
1c510 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55  AS cor0 WHERE NU
1c520 4c 4c 20 3e 3d 20 63 6f 6c 32 20 2a 20 63 6f 6c  LL >= col2 * col
1c530 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  2..----....onlyi
1c540 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
1c550 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
1c560 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1c570 62 65 6c 2d 36 32 32 0d 0a 53 45 4c 45 43 54 20  bel-622..SELECT 
1c580 41 4c 4c 20 2d 20 53 55 4d 28 20 41 4c 4c 20 2b  ALL - SUM( ALL +
1c590 20 63 6f 6c 30 20 29 20 2a 20 2d 20 38 35 20 46   col0 ) * - 85 F
1c5a0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1c5b0 0d 0a 2d 2d 2d 2d 0d 0a 31 36 39 31 35 0d 0a 0d  ..----..16915...
1c5c0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1c5d0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1c5e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1c5f0 6c 61 62 65 6c 2d 36 32 32 0d 0a 53 45 4c 45 43  label-622..SELEC
1c600 54 20 41 4c 4c 20 2d 20 53 55 4d 20 28 20 41 4c  T ALL - SUM ( AL
1c610 4c 20 2b 20 63 6f 6c 30 20 29 20 2a 20 2d 20 38  L + col0 ) * - 8
1c620 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  5 FROM tab0 AS c
1c630 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 39 31 35  or0..----..16915
1c640 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1c650 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1c660 49 4e 43 54 20 28 20 2b 20 36 37 20 29 20 2a 20  INCT ( + 67 ) * 
1c670 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41  col2 FROM tab2 A
1c680 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  S cor0..----..15
1c690 34 31 0d 0a 32 36 38 30 0d 0a 33 38 38 36 0d 0a  41..2680..3886..
1c6a0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
1c6b0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
1c6c0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
1c6d0 73 6f 72 74 20 6c 61 62 65 6c 2d 36 32 34 0d 0a  sort label-624..
1c6e0 53 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20  SELECT COUNT( * 
1c6f0 29 20 2b 20 2b 20 35 31 20 41 53 20 63 6f 6c 31  ) + + 51 AS col1
1c700 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1c710 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63  r0 WHERE NOT - c
1c720 6f 6c 32 20 3c 3d 20 63 6f 6c 32 0d 0a 2d 2d 2d  ol2 <= col2..---
1c730 2d 0d 0a 35 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..51....skipif 
1c740 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
1c750 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
1c760 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 32  rowsort label-62
1c770 34 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20  4..SELECT COUNT 
1c780 28 20 2a 20 29 20 2b 20 2b 20 35 31 20 41 53 20  ( * ) + + 51 AS 
1c790 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
1c7a0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
1c7b0 20 2d 20 63 6f 6c 32 20 3c 3d 20 63 6f 6c 32 0d   - col2 <= col2.
1c7c0 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 0d 0a 6f 6e 6c  .----..51....onl
1c7d0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1c7e0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1c7f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1c800 6c 61 62 65 6c 2d 36 32 35 0d 0a 53 45 4c 45 43  label-625..SELEC
1c810 54 20 2d 20 37 38 20 2a 20 2b 20 4d 41 58 28 20  T - 78 * + MAX( 
1c820 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 29 20  DISTINCT col2 ) 
1c830 2b 20 2d 20 35 32 20 41 53 20 63 6f 6c 31 20 46  + - 52 AS col1 F
1c840 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1c850 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c   WHERE NOT - col
1c860 30 20 2b 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54  0 + col2 NOT BET
1c870 57 45 45 4e 20 28 20 4e 55 4c 4c 20 29 20 41 4e  WEEN ( NULL ) AN
1c880 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  D NULL..----..NU
1c890 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
1c8a0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1c8b0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1c8c0 73 6f 72 74 20 6c 61 62 65 6c 2d 36 32 35 0d 0a  sort label-625..
1c8d0 53 45 4c 45 43 54 20 2d 20 37 38 20 2a 20 2b 20  SELECT - 78 * + 
1c8e0 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 63  MAX ( DISTINCT c
1c8f0 6f 6c 32 20 29 20 2b 20 2d 20 35 32 20 41 53 20  ol2 ) + - 52 AS 
1c900 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
1c910 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
1c920 20 2d 20 63 6f 6c 30 20 2b 20 63 6f 6c 32 20 4e   - col0 + col2 N
1c930 4f 54 20 42 45 54 57 45 45 4e 20 28 20 4e 55 4c  OT BETWEEN ( NUL
1c940 4c 20 29 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d  L ) AND NULL..--
1c950 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
1c960 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
1c970 45 43 54 20 2d 20 36 35 20 2a 20 63 6f 6c 32 20  ECT - 65 * col2 
1c980 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1c990 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  1 AS cor0 WHERE 
1c9a0 4e 4f 54 20 4e 55 4c 4c 20 49 4e 20 28 20 63 6f  NOT NULL IN ( co
1c9b0 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  l1 )..----....qu
1c9c0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1c9d0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
1c9e0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
1c9f0 57 48 45 52 45 20 36 34 20 3e 3d 20 2d 20 63 6f  WHERE 64 >= - co
1ca00 6c 32 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d  l2 + col1..----.
1ca10 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
1ca20 67 20 74 6f 20 63 36 63 30 61 34 31 31 31 62 33  g to c6c0a4111b3
1ca30 36 64 30 34 64 62 63 38 31 31 61 31 31 65 34 64  6d04dbc811a11e4d
1ca40 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49  54cad....query I
1ca50 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1ca60 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 37 38   DISTINCT ( - 78
1ca70 20 29 20 2a 20 63 6f 6c 32 20 2b 20 37 39 20 41   ) * col2 + 79 A
1ca80 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
1ca90 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
1caa0 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ULL IS NOT NULL.
1cab0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
1cac0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1cad0 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 2a 20 39 33   ALL + col1 * 93
1cae0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1caf0 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  b1 cor0..----..1
1cb00 33 30 32 0d 0a 34 33 37 31 0d 0a 34 36 35 0d 0a  302..4371..465..
1cb10 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1cb20 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
1cb30 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
1cb40 54 20 38 20 2a 20 63 6f 6c 30 20 49 53 20 4e 55  T 8 * col0 IS NU
1cb50 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  LL..----..9 valu
1cb60 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
1cb70 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
1cb80 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
1cb90 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1cba0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
1cbb0 43 54 20 2b 20 33 37 20 2b 20 2d 20 33 34 20 2b  CT + 37 + - 34 +
1cbc0 20 33 38 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d   38 FROM tab0..-
1cbd0 2d 2d 2d 0d 0a 34 31 0d 0a 0d 0a 71 75 65 72 79  ---..41....query
1cbe0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1cbf0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32  CT DISTINCT col2
1cc00 20 2b 20 63 6f 6c 31 20 2d 20 2d 20 38 30 20 41   + col1 - - 80 A
1cc10 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
1cc20 0d 0a 2d 2d 2d 2d 0d 0a 31 35 34 0d 0a 31 39 37  ..----..154..197
1cc30 0d 0a 32 30 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..205....onlyif 
1cc40 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
1cc50 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
1cc60 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1cc70 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
1cc80 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 33 0d  wsort label-633.
1cc90 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 2d 20 43  .SELECT MAX( - C
1cca0 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
1ccb0 4e 45 44 20 29 20 29 20 2f 20 2b 20 43 4f 55 4e  NED ) ) / + COUN
1ccc0 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46  T( * ) AS col2 F
1ccd0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
1cce0 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
1ccf0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1cd00 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1cd10 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 33  owsort label-633
1cd20 0d 0a 53 45 4c 45 43 54 20 4d 41 58 20 28 20 2d  ..SELECT MAX ( -
1cd30 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
1cd40 49 4e 54 45 47 45 52 20 29 20 29 20 2f 20 2b 20  INTEGER ) ) / + 
1cd50 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
1cd60 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
1cd70 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ---..NULL....que
1cd80 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
1cd90 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
1cda0 31 20 2a 20 2d 20 37 34 20 46 52 4f 4d 20 74 61  1 * - 74 FROM ta
1cdb0 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b0 WHERE NOT NUL
1cdc0 4c 20 3c 3e 20 28 20 2d 20 28 20 2d 20 28 20 2d  L <> ( - ( - ( -
1cdd0 20 28 20 2b 20 38 36 20 29 20 29 20 29 20 29 0d   ( + 86 ) ) ) ).
1cde0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
1cdf0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
1ce00 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
1ce10 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1ce20 6c 2d 36 33 35 0d 0a 53 45 4c 45 43 54 20 44 49  l-635..SELECT DI
1ce30 53 54 49 4e 43 54 20 2b 20 2b 20 43 4f 55 4e 54  STINCT + + COUNT
1ce40 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55 4e 54 28  ( * ) * + COUNT(
1ce50 20 2a 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74   * ) col0 FROM t
1ce60 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
1ce70 53 20 4a 4f 49 4e 20 74 61 62 32 20 63 6f 72 31  S JOIN tab2 cor1
1ce80 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 0d 0a 73 6b  ..----..81....sk
1ce90 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1cea0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69   compatible..ski
1ceb0 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
1cec0 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
1ced0 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
1cee0 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
1cef0 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
1cf00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 35 0d  wsort label-635.
1cf10 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1cf20 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
1cf30 20 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   * + COUNT ( * )
1cf40 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
1cf50 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f  AS cor0 CROSS JO
1cf60 49 4e 20 74 61 62 32 20 63 6f 72 31 0d 0a 2d 2d  IN tab2 cor1..--
1cf70 2d 2d 0d 0a 38 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..81....onlyif
1cf80 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
1cf90 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
1cfa0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1cfb0 65 6c 2d 36 33 36 0d 0a 53 45 4c 45 43 54 20 41  el-636..SELECT A
1cfc0 4c 4c 20 36 20 2b 20 2b 20 43 4f 55 4e 54 28 20  LL 6 + + COUNT( 
1cfd0 41 4c 4c 20 63 6f 6c 32 20 29 20 2a 20 34 37 20  ALL col2 ) * 47 
1cfe0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
1cff0 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 37 0d 0a 0d 0a  2..----..147....
1d000 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
1d010 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
1d020 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1d030 61 62 65 6c 2d 36 33 36 0d 0a 53 45 4c 45 43 54  abel-636..SELECT
1d040 20 41 4c 4c 20 36 20 2b 20 2b 20 43 4f 55 4e 54   ALL 6 + + COUNT
1d050 20 28 20 41 4c 4c 20 63 6f 6c 32 20 29 20 2a 20   ( ALL col2 ) * 
1d060 34 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  47 AS col0 FROM 
1d070 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 34 37 0d  tab2..----..147.
1d080 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
1d090 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
1d0a0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
1d0b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1d0c0 62 65 6c 2d 36 33 37 0d 0a 53 45 4c 45 43 54 20  bel-637..SELECT 
1d0d0 2d 20 2d 20 28 20 63 6f 6c 31 20 29 20 2d 20 2d  - - ( col1 ) - -
1d0e0 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52   col0 AS col0 FR
1d0f0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
1d100 57 48 45 52 45 20 4e 55 4c 4c 20 3e 20 2b 20 43  WHERE NULL > + C
1d110 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
1d120 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73  NED )..----....s
1d130 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1d140 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1d150 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1d160 62 65 6c 2d 36 33 37 0d 0a 53 45 4c 45 43 54 20  bel-637..SELECT 
1d170 2d 20 2d 20 28 20 63 6f 6c 31 20 29 20 2d 20 2d  - - ( col1 ) - -
1d180 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52   col0 AS col0 FR
1d190 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
1d1a0 57 48 45 52 45 20 4e 55 4c 4c 20 3e 20 2b 20 43  WHERE NULL > + C
1d1b0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
1d1c0 54 45 47 45 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d  TEGER )..----...
1d1d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1d1e0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
1d1f0 54 20 2d 20 63 6f 6c 32 20 2d 20 2b 20 35 37 20  T - col2 - + 57 
1d200 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1d210 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
1d220 0a 2d 31 30 34 0d 0a 2d 31 35 36 0d 0a 2d 36 37  .-104..-156..-67
1d230 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1d240 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
1d250 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
1d260 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 39  owsort label-639
1d270 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55  ..SELECT - + COU
1d280 4e 54 28 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  NT( DISTINCT col
1d290 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  2 ) AS col2 FROM
1d2a0 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
1d2b0 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..-3....skipif m
1d2c0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1d2d0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1d2e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 33 39  owsort label-639
1d2f0 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 4f 55  ..SELECT - + COU
1d300 4e 54 20 28 20 44 49 53 54 49 4e 43 54 20 63 6f  NT ( DISTINCT co
1d310 6c 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l2 ) AS col2 FRO
1d320 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
1d330 2d 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49  -..-3....query I
1d340 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1d350 54 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c  T DISTINCT - col
1d360 31 20 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 32 20  1 AS col0, col2 
1d370 2b 20 2d 20 2d 20 38 36 20 41 53 20 63 6f 6c 30  + - - 86 AS col0
1d380 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
1d390 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 0d 0a 31  r0..----..-51..1
1d3a0 30 39 0d 0a 2d 36 37 0d 0a 31 34 34 0d 0a 2d 37  09..-67..144..-7
1d3b0 37 0d 0a 31 32 36 0d 0a 0d 0a 71 75 65 72 79 20  7..126....query 
1d3c0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
1d3d0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
1d3e0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1d3f0 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 28 20 2b   WHERE NOT - ( +
1d400 20 2b 20 31 34 20 29 20 49 53 20 4e 4f 54 20 4e   + 14 ) IS NOT N
1d410 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
1d420 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1d430 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
1d440 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
1d450 20 2b 20 28 20 2d 20 2b 20 38 30 20 29 20 2a 20   + ( - + 80 ) * 
1d460 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col2 IS NULL..--
1d470 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
1d480 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1d490 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
1d4a0 45 20 4e 55 4c 4c 20 3c 20 28 20 4e 55 4c 4c 20  E NULL < ( NULL 
1d4b0 29 20 41 4e 44 20 63 6f 6c 30 20 49 53 20 4e 4f  ) AND col0 IS NO
1d4c0 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
1d4d0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
1d4e0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
1d4f0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
1d500 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1d510 2d 36 34 34 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  -644..SELECT col
1d520 31 20 2d 20 2b 20 63 6f 6c 30 20 2d 20 2b 20 2d  1 - + col0 - + -
1d530 20 63 6f 6c 32 20 44 49 56 20 31 39 20 46 52 4f   col2 DIV 19 FRO
1d540 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  M tab0..----..-6
1d550 36 0d 0a 2d 39 31 0d 0a 36 38 0d 0a 0d 0a 73 6b  6..-91..68....sk
1d560 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
1d570 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
1d580 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1d590 65 6c 2d 36 34 34 0d 0a 53 45 4c 45 43 54 20 63  el-644..SELECT c
1d5a0 6f 6c 31 20 2d 20 2b 20 63 6f 6c 30 20 2d 20 2b  ol1 - + col0 - +
1d5b0 20 2d 20 63 6f 6c 32 20 2f 20 31 39 20 46 52 4f   - col2 / 19 FRO
1d5c0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  M tab0..----..-6
1d5d0 36 0d 0a 2d 39 31 0d 0a 36 38 0d 0a 0d 0a 73 6b  6..-91..68....sk
1d5e0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
1d5f0 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
1d600 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
1d610 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
1d620 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
1d630 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33  owsort..SELECT 3
1d640 39 20 2a 20 2d 20 63 6f 6c 30 20 63 6f 6c 31 20  9 * - col0 col1 
1d650 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
1d660 0a 2d 33 33 39 33 0d 0a 2d 33 37 38 33 0d 0a 2d  .-3393..-3783..-
1d670 35 38 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  585....onlyif my
1d680 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1d690 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1d6a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1d6b0 36 34 36 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20  646..SELECT + + 
1d6c0 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
1d6d0 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab2 WHERE NOT N
1d6e0 55 4c 4c 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ULL <> NULL..---
1d6f0 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -..0....skipif m
1d700 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1d710 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1d720 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 34 36  owsort label-646
1d730 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f 55  ..SELECT + + COU
1d740 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  NT ( * ) FROM ta
1d750 62 32 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c  b2 WHERE NOT NUL
1d760 4c 20 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  L <> NULL..----.
1d770 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  .0....onlyif mys
1d780 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
1d790 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
1d7a0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1d7b0 34 37 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 41 58  47..SELECT + MAX
1d7c0 28 20 41 4c 4c 20 2b 20 34 35 20 29 20 41 53 20  ( ALL + 45 ) AS 
1d7d0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col1 FROM tab2..
1d7e0 2d 2d 2d 2d 0d 0a 34 35 0d 0a 0d 0a 73 6b 69 70  ----..45....skip
1d7f0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
1d800 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
1d810 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1d820 2d 36 34 37 0d 0a 53 45 4c 45 43 54 20 2b 20 4d  -647..SELECT + M
1d830 41 58 20 28 20 41 4c 4c 20 2b 20 34 35 20 29 20  AX ( ALL + 45 ) 
1d840 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1d850 32 0d 0a 2d 2d 2d 2d 0d 0a 34 35 0d 0a 0d 0a 71  2..----..45....q
1d860 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1d870 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c  SELECT ALL - col
1d880 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  0 AS col2 FROM t
1d890 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
1d8a0 45 20 2d 20 34 36 20 2b 20 2d 20 2b 20 63 6f 6c  E - 46 + - + col
1d8b0 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
1d8c0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1d8d0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38  rt..SELECT ALL 8
1d8e0 39 20 2a 20 2b 20 39 32 20 46 52 4f 4d 20 74 61  9 * + 92 FROM ta
1d8f0 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
1d900 20 4e 4f 54 20 28 20 4e 4f 54 20 28 20 63 6f 6c   NOT ( NOT ( col
1d910 32 20 2a 20 2b 20 63 6f 6c 32 20 2b 20 37 30 20  2 * + col2 + 70 
1d920 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 20 29 0d  ) IS NOT NULL ).
1d930 0a 2d 2d 2d 2d 0d 0a 38 31 38 38 0d 0a 38 31 38  .----..8188..818
1d940 38 0d 0a 38 31 38 38 0d 0a 0d 0a 71 75 65 72 79  8..8188....query
1d950 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1d960 43 54 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20 74  CT - col2 FROM t
1d970 61 62 30 20 63 6f 72 30 20 57 48 45 52 45 20 4e  ab0 cor0 WHERE N
1d980 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57  OT NULL NOT BETW
1d990 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 37  EEN NULL AND + 7
1d9a0 35 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  5..----....query
1d9b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
1d9c0 43 54 20 2b 20 2d 20 28 20 2b 20 2b 20 28 20 2b  CT + - ( + + ( +
1d9d0 20 32 38 20 29 20 29 20 41 53 20 63 6f 6c 32 20   28 ) ) AS col2 
1d9e0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
1d9f0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 38 0d 0a 2d 32  0..----..-28..-2
1da00 38 0d 0a 2d 32 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  8..-28....onlyif
1da10 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
1da20 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
1da30 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
1da40 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 32 0d 0a  sort label-652..
1da50 53 45 4c 45 43 54 20 2d 20 43 41 53 54 28 20 39  SELECT - CAST( 9
1da60 36 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52  6 AS SIGNED ) FR
1da70 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
1da80 0a 2d 2d 2d 2d 0d 0a 2d 39 36 0d 0a 2d 39 36 0d  .----..-96..-96.
1da90 0a 2d 39 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  .-96....skipif m
1daa0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
1dab0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
1dac0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 35 32  owsort label-652
1dad0 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53 54 20  ..SELECT - CAST 
1dae0 28 20 39 36 20 41 53 20 49 4e 54 45 47 45 52 20  ( 96 AS INTEGER 
1daf0 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
1db00 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 36 0d 0a  or0..----..-96..
1db10 2d 39 36 0d 0a 2d 39 36 0d 0a 0d 0a 6f 6e 6c 79  -96..-96....only
1db20 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
1db30 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
1db40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1db50 61 62 65 6c 2d 36 35 33 0d 0a 53 45 4c 45 43 54  abel-653..SELECT
1db60 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2b 20   DISTINCT - ( + 
1db70 28 20 2b 20 28 20 2d 20 43 4f 55 4e 54 28 20 2a  ( + ( - COUNT( *
1db80 20 29 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61   ) ) ) ) FROM ta
1db90 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73  b2..----..3....s
1dba0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1dbb0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1dbc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1dbd0 62 65 6c 2d 36 35 33 0d 0a 53 45 4c 45 43 54 20  bel-653..SELECT 
1dbe0 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2b 20 28  DISTINCT - ( + (
1dbf0 20 2b 20 28 20 2d 20 43 4f 55 4e 54 20 28 20 2a   + ( - COUNT ( *
1dc00 20 29 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61   ) ) ) ) FROM ta
1dc10 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71  b2..----..3....q
1dc20 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
1dc30 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d 20 39  SELECT ALL ( - 9
1dc40 38 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  8 ) AS col0 FROM
1dc50 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 38   tab1..----..-98
1dc60 0d 0a 2d 39 38 0d 0a 2d 39 38 0d 0a 0d 0a 71 75  ..-98..-98....qu
1dc70 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1dc80 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
1dc90 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45   * FROM tab0 WHE
1dca0 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 32 20 2a 20  RE NOT - col2 * 
1dcb0 2b 20 2b 20 63 6f 6c 32 20 3c 20 63 6f 6c 32 0d  + + col2 < col2.
1dcc0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
1dcd0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
1dce0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
1dcf0 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
1dd00 6f 72 74 20 6c 61 62 65 6c 2d 36 35 36 0d 0a 53  ort label-656..S
1dd10 45 4c 45 43 54 20 2d 20 43 41 53 54 28 20 4e 55  ELECT - CAST( NU
1dd20 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a  LL AS SIGNED ) *
1dd30 20 2d 20 2b 20 41 56 47 20 28 20 2b 20 63 6f 6c   - + AVG ( + col
1dd40 32 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  2 ) AS col2 FROM
1dd50 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1dd60 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
1dd70 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
1dd80 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
1dd90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
1dda0 6c 2d 36 35 36 0d 0a 53 45 4c 45 43 54 20 2d 20  l-656..SELECT - 
1ddb0 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
1ddc0 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 2b 20 41  NTEGER ) * - + A
1ddd0 56 47 20 28 20 2b 20 63 6f 6c 32 20 29 20 41 53  VG ( + col2 ) AS
1dde0 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
1ddf0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
1de00 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
1de10 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
1de20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
1de30 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
1de40 2d 36 35 37 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -657..SELECT ALL
1de50 20 2b 20 36 33 2c 20 2d 20 28 20 43 4f 55 4e 54   + 63, - ( COUNT
1de60 28 20 2a 20 29 20 29 20 2a 20 2d 20 2d 20 34 35  ( * ) ) * - - 45
1de70 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2b 20 38 35   * + COUNT( + 85
1de80 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   ) col0 FROM tab
1de90 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 33  0 cor0..----..63
1dea0 0d 0a 2d 34 30 35 0d 0a 0d 0a 73 6b 69 70 69 66  ..-405....skipif
1deb0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
1dec0 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
1ded0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
1dee0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
1def0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
1df00 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
1df10 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
1df20 72 74 20 6c 61 62 65 6c 2d 36 35 37 0d 0a 53 45  rt label-657..SE
1df30 4c 45 43 54 20 41 4c 4c 20 2b 20 36 33 2c 20 2d  LECT ALL + 63, -
1df40 20 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29   ( COUNT ( * ) )
1df50 20 2a 20 2d 20 2d 20 34 35 20 2a 20 2b 20 43 4f   * - - 45 * + CO
1df60 55 4e 54 20 28 20 2b 20 38 35 20 29 20 63 6f 6c  UNT ( + 85 ) col
1df70 30 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  0 FROM tab0 cor0
1df80 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 2d 34 30 35  ..----..63..-405
1df90 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
1dfa0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
1dfb0 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
1dfc0 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 44  : SIGNED type: D
1dfd0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
1dfe0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
1dff0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
1e000 2d 36 35 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  -658..SELECT DIS
1e010 54 49 4e 43 54 20 2d 20 43 41 53 54 28 20 4d 49  TINCT - CAST( MI
1e020 4e 28 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 53  N( - col0 ) AS S
1e030 49 47 4e 45 44 20 29 20 44 49 56 20 37 38 20 41  IGNED ) DIV 78 A
1e040 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
1e050 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   cor0..----..1..
1e060 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1e070 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1e080 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1e090 20 6c 61 62 65 6c 2d 36 35 38 0d 0a 53 45 4c 45   label-658..SELE
1e0a0 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 41  CT DISTINCT - CA
1e0b0 53 54 20 28 20 4d 49 4e 20 28 20 2d 20 63 6f 6c  ST ( MIN ( - col
1e0c0 30 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29  0 ) AS INTEGER )
1e0d0 20 2f 20 37 38 20 41 53 20 63 6f 6c 31 20 46 52   / 78 AS col1 FR
1e0e0 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d  OM tab1 cor0..--
1e0f0 2d 2d 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49  --..1....query I
1e100 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
1e110 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
1e120 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
1e130 20 63 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45   col2 NOT BETWEE
1e140 4e 20 2b 20 36 30 20 2f 20 2b 20 63 6f 6c 30 20  N + 60 / + col0 
1e150 2d 20 35 35 20 2f 20 63 6f 6c 31 20 41 4e 44 20  - 55 / col1 AND 
1e160 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
1e170 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
1e180 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
1e190 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1e1a0 20 6c 61 62 65 6c 2d 36 36 30 0d 0a 53 45 4c 45   label-660..SELE
1e1b0 43 54 20 44 49 53 54 49 4e 43 54 20 4d 41 58 28  CT DISTINCT MAX(
1e1c0 20 63 6f 6c 32 20 29 20 2a 20 43 4f 55 4e 54 28   col2 ) * COUNT(
1e1d0 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41   * ) FROM tab0 A
1e1e0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 39  S cor0..----..29
1e1f0 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  7....skipif mysq
1e200 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1e210 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1e220 6f 72 74 20 6c 61 62 65 6c 2d 36 36 30 0d 0a 53  ort label-660..S
1e230 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d  ELECT DISTINCT M
1e240 41 58 20 28 20 63 6f 6c 32 20 29 20 2a 20 43 4f  AX ( col2 ) * CO
1e250 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74  UNT ( * ) FROM t
1e260 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
1e270 2d 0d 0a 32 39 37 0d 0a 0d 0a 71 75 65 72 79 20  -..297....query 
1e280 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1e290 54 20 41 4c 4c 20 2b 20 38 33 20 2a 20 63 6f 6c  T ALL + 83 * col
1e2a0 30 20 2a 20 35 37 20 2b 20 63 6f 6c 30 20 2d 20  0 * 57 + col0 - 
1e2b0 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f  col1 AS col0 FRO
1e2c0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
1e2d0 2d 2d 2d 2d 0d 0a 32 34 31 33 31 38 0d 0a 34 30  ----..241318..40
1e2e0 32 32 31 35 0d 0a 34 33 30 35 36 35 0d 0a 0d 0a  2215..430565....
1e2f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1e300 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 33 20 2b  .SELECT ALL 83 +
1e310 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20 46 52   col2 AS col1 FR
1e320 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57 48 45  OM tab1 cor0 WHE
1e330 52 45 20 4e 55 4c 4c 20 3c 3d 20 28 20 33 34 20  RE NULL <= ( 34 
1e340 2f 20 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d  / + col1 )..----
1e350 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
1e360 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
1e370 49 4e 43 54 20 2d 20 34 20 2b 20 2d 20 63 6f 6c  INCT - 4 + - col
1e380 30 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f  0 - + col1 AS co
1e390 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
1e3a0 2d 2d 0d 0a 2d 31 30 31 0d 0a 2d 31 34 35 0d 0a  --..-101..-145..
1e3b0 2d 31 34 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -146....query I 
1e3c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1e3d0 2b 20 28 20 2d 20 63 6f 6c 30 20 29 20 2d 20 2b  + ( - col0 ) - +
1e3e0 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 20 46 52   col0 AS col0 FR
1e3f0 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 63 6f  OM tab0 WHERE co
1e400 6c 32 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2d 20  l2 + + col2 + - 
1e410 2b 20 63 6f 6c 31 20 2f 20 2d 20 2d 20 63 6f 6c  + col1 / - - col
1e420 32 20 2b 20 2b 20 63 6f 6c 31 20 49 4e 20 28 20  2 + + col1 IN ( 
1e430 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c 32 20 2a 20  + col1 + col2 * 
1e440 36 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  61 )..----....qu
1e450 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1e460 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
1e470 20 37 37 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 2b   77 + - - col1 +
1e480 20 2b 20 39 31 20 41 53 20 63 6f 6c 31 20 46 52   + 91 AS col1 FR
1e490 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31  OM tab0..----..1
1e4a0 36 39 0d 0a 31 38 39 0d 0a 32 34 39 0d 0a 0d 0a  69..189..249....
1e4b0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
1e4c0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
1e4d0 45 44 20 74 79 70 65 3a 20 44 49 56 20 66 6f 72  ED type: DIV for
1e4e0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
1e4f0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
1e500 73 6f 72 74 20 6c 61 62 65 6c 2d 36 36 36 0d 0a  sort label-666..
1e510 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 44 49  SELECT - col1 DI
1e520 56 20 39 37 20 2b 20 2b 20 34 35 20 44 49 56 20  V 97 + + 45 DIV 
1e530 43 41 53 54 28 20 2b 20 32 35 20 41 53 20 53 49  CAST( + 25 AS SI
1e540 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20 46  GNED ) AS col0 F
1e550 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
1e560 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69  1..1..1....skipi
1e570 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1e580 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1e590 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1e5a0 36 36 36 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f  666..SELECT - co
1e5b0 6c 31 20 2f 20 39 37 20 2b 20 2b 20 34 35 20 2f  l1 / 97 + + 45 /
1e5c0 20 43 41 53 54 20 28 20 2b 20 32 35 20 41 53 20   CAST ( + 25 AS 
1e5d0 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c  INTEGER ) AS col
1e5e0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
1e5f0 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a 71 75  -..1..1..1....qu
1e600 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1e610 45 4c 45 43 54 20 36 31 20 2b 20 2b 20 28 20 2b  ELECT 61 + + ( +
1e620 20 2b 20 63 6f 6c 32 20 29 20 2a 20 2b 20 2d 20   + col2 ) * + - 
1e630 37 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  70 AS col2 FROM 
1e640 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 30 36  tab1..----..-406
1e650 39 0d 0a 2d 34 36 39 39 0d 0a 2d 36 36 35 39 0d  9..-4699..-6659.
1e660 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
1e670 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
1e680 4e 43 54 20 39 38 20 2a 20 2b 20 38 31 20 46 52  NCT 98 * + 81 FR
1e690 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 37  OM tab0..----..7
1e6a0 39 33 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  938....onlyif my
1e6b0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
1e6c0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
1e6d0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1e6e0 74 20 6c 61 62 65 6c 2d 36 36 39 0d 0a 53 45 4c  t label-669..SEL
1e6f0 45 43 54 20 2b 20 2b 20 37 36 20 44 49 56 20 2d  ECT + + 76 DIV -
1e700 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
1e710 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
1e720 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d  .----..-1..-1..-
1e730 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
1e740 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
1e750 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
1e760 6f 72 74 20 6c 61 62 65 6c 2d 36 36 39 0d 0a 53  ort label-669..S
1e770 45 4c 45 43 54 20 2b 20 2b 20 37 36 20 2f 20 2d  ELECT + + 76 / -
1e780 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
1e790 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
1e7a0 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d  .----..-1..-1..-
1e7b0 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
1e7c0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
1e7d0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
1e7e0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
1e7f0 20 6c 61 62 65 6c 2d 36 37 30 0d 0a 53 45 4c 45   label-670..SELE
1e800 43 54 20 2d 20 33 37 20 41 53 20 63 6f 6c 31 2c  CT - 37 AS col1,
1e810 20 63 6f 6c 30 20 44 49 56 20 2b 20 2d 20 63 6f   col0 DIV + - co
1e820 6c 30 20 2b 20 2b 20 2d 20 63 6f 6c 32 20 46 52  l0 + + - col2 FR
1e830 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1e840 0a 2d 2d 2d 2d 0d 0a 2d 33 37 0d 0a 2d 36 30 0d  .----..-37..-60.
1e850 0a 2d 33 37 0d 0a 2d 36 39 0d 0a 2d 33 37 0d 0a  .-37..-69..-37..
1e860 2d 39 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -97....skipif my
1e870 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1e880 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
1e890 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37 30  owsort label-670
1e8a0 0d 0a 53 45 4c 45 43 54 20 2d 20 33 37 20 41 53  ..SELECT - 37 AS
1e8b0 20 63 6f 6c 31 2c 20 63 6f 6c 30 20 2f 20 2b 20   col1, col0 / + 
1e8c0 2d 20 63 6f 6c 30 20 2b 20 2b 20 2d 20 63 6f 6c  - col0 + + - col
1e8d0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
1e8e0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 37 0d 0a  or0..----..-37..
1e8f0 2d 36 30 0d 0a 2d 33 37 0d 0a 2d 36 39 0d 0a 2d  -60..-37..-69..-
1e900 33 37 0d 0a 2d 39 37 0d 0a 0d 0a 6f 6e 6c 79 69  37..-97....onlyi
1e910 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
1e920 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
1e930 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1e940 62 65 6c 2d 36 37 31 0d 0a 53 45 4c 45 43 54 20  bel-671..SELECT 
1e950 41 4c 4c 20 4d 49 4e 28 20 2d 20 63 6f 6c 31 20  ALL MIN( - col1 
1e960 29 20 2a 20 2b 20 2b 20 38 36 20 2f 20 2b 20 36  ) * + + 86 / + 6
1e970 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  5 FROM tab0 AS c
1e980 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20 3c  or0 WHERE col1 <
1e990 20 2d 20 2b 20 33 36 0d 0a 2d 2d 2d 2d 0d 0a 4e   - + 36..----..N
1e9a0 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
1e9b0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1e9c0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1e9d0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37 31 0d  wsort label-671.
1e9e0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 20  .SELECT ALL MIN 
1e9f0 28 20 2d 20 63 6f 6c 31 20 29 20 2a 20 2b 20 2b  ( - col1 ) * + +
1ea00 20 38 36 20 2f 20 2b 20 36 35 20 46 52 4f 4d 20   86 / + 65 FROM 
1ea10 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
1ea20 52 45 20 63 6f 6c 31 20 3c 20 2d 20 2b 20 33 36  RE col1 < - + 36
1ea30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
1ea40 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
1ea50 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
1ea60 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
1ea70 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
1ea80 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
1ea90 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1eaa0 54 20 2d 20 63 6f 6c 31 20 63 6f 6c 30 2c 20 63  T - col1 col0, c
1eab0 6f 6c 31 20 2a 20 2b 20 63 6f 6c 32 20 46 52 4f  ol1 * + col2 FRO
1eac0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
1ead0 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 39 39 0d 0a 2d 32  ----..-1..99..-2
1eae0 31 0d 0a 32 31 30 0d 0a 2d 38 31 0d 0a 33 38 30  1..210..-81..380
1eaf0 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  7....query III r
1eb00 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
1eb10 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
1eb20 20 2b 20 2d 20 31 34 20 2a 20 2b 20 28 20 2d 20   + - 14 * + ( - 
1eb30 63 6f 6c 30 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  col0 ) IS NULL..
1eb40 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
1eb50 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1eb60 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57  col2 FROM tab2 W
1eb70 48 45 52 45 20 28 20 2b 20 63 6f 6c 32 20 29 20  HERE ( + col2 ) 
1eb80 3e 3d 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 2b 20  >= - col1 * + + 
1eb90 31 39 20 2a 20 2b 20 63 6f 6c 32 20 41 4e 44 20  19 * + col2 AND 
1eba0 4e 4f 54 20 37 39 20 2f 20 2b 20 35 30 20 49 53  NOT 79 / + 50 IS
1ebb0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d   NULL..----..23.
1ebc0 0a 34 30 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79 69  .40..58....onlyi
1ebd0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
1ebe0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
1ebf0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20  pe: ..query III 
1ec00 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 37  rowsort label-67
1ec10 35 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  5..SELECT * FROM
1ec20 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
1ec30 45 52 45 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  ERE - CAST( NULL
1ec40 20 41 53 20 53 49 47 4e 45 44 20 29 20 42 45 54   AS SIGNED ) BET
1ec50 57 45 45 4e 20 28 20 2b 20 2d 20 63 6f 6c 30 20  WEEN ( + - col0 
1ec60 2b 20 37 33 20 2a 20 2d 20 28 20 2b 20 2d 20 31  + 73 * - ( + - 1
1ec70 38 20 29 20 2a 20 2d 20 63 6f 6c 32 20 2f 20 63  8 ) * - col2 / c
1ec80 6f 6c 32 20 2b 20 63 6f 6c 32 20 29 20 41 4e 44  ol2 + col2 ) AND
1ec90 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d   - col1..----...
1eca0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
1ecb0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
1ecc0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
1ecd0 74 20 6c 61 62 65 6c 2d 36 37 35 0d 0a 53 45 4c  t label-675..SEL
1ece0 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
1ecf0 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
1ed00 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
1ed10 4e 54 45 47 45 52 20 29 20 42 45 54 57 45 45 4e  NTEGER ) BETWEEN
1ed20 20 28 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 37 33   ( + - col0 + 73
1ed30 20 2a 20 2d 20 28 20 2b 20 2d 20 31 38 20 29 20   * - ( + - 18 ) 
1ed40 2a 20 2d 20 63 6f 6c 32 20 2f 20 63 6f 6c 32 20  * - col2 / col2 
1ed50 2b 20 63 6f 6c 32 20 29 20 41 4e 44 20 2d 20 63  + col2 ) AND - c
1ed60 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol1..----....que
1ed70 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
1ed80 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30  ELECT ALL - col0
1ed90 20 2d 20 2b 20 34 38 2c 20 2d 20 63 6f 6c 30 20   - + 48, - col0 
1eda0 2b 20 2d 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f  + - - col1 AS co
1edb0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
1edc0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 33  cor0..----..-133
1edd0 0d 0a 2d 38 30 0d 0a 2d 31 33 39 0d 0a 2d 34 34  ..-80..-139..-44
1ede0 0d 0a 2d 39 39 0d 0a 2d 33 37 0d 0a 0d 0a 71 75  ..-99..-37....qu
1edf0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
1ee00 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
1ee10 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
1ee20 45 20 28 20 2d 20 32 34 20 4e 4f 54 20 42 45 54  E ( - 24 NOT BET
1ee30 57 45 45 4e 20 28 20 2b 20 2d 20 63 6f 6c 30 20  WEEN ( + - col0 
1ee40 29 20 41 4e 44 20 28 20 28 20 2d 20 28 20 2d 20  ) AND ( ( - ( - 
1ee50 63 6f 6c 30 20 29 20 29 20 2f 20 36 36 20 29 20  col0 ) ) / 66 ) 
1ee60 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  )..----....query
1ee70 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
1ee80 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
1ee90 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 32   cor0 WHERE col2
1eea0 20 49 4e 20 28 20 2b 20 39 35 20 2a 20 63 6f 6c   IN ( + 95 * col
1eeb0 30 20 2a 20 2b 20 37 38 2c 20 63 6f 6c 30 20 29  0 * + 78, col0 )
1eec0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
1eed0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
1eee0 54 20 41 4c 4c 20 37 20 2b 20 2b 20 63 6f 6c 31  T ALL 7 + + col1
1eef0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
1ef00 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a 32 31  r0..----..12..21
1ef10 0d 0a 35 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..54....query I 
1ef20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1ef30 41 4c 4c 20 2b 20 32 34 20 46 52 4f 4d 20 74 61  ALL + 24 FROM ta
1ef40 62 32 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  b2 cor0 WHERE NO
1ef50 54 20 63 6f 6c 30 20 3e 20 4e 55 4c 4c 0d 0a 2d  T col0 > NULL..-
1ef60 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
1ef70 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
1ef80 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 2c 20  + col1 AS col2, 
1ef90 63 6f 6c 32 20 2a 20 2b 20 2b 20 63 6f 6c 32 20  col2 * + + col2 
1efa0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
1efb0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 39 38 30 31  0..----..1..9801
1efc0 0d 0a 32 31 0d 0a 31 30 30 0d 0a 38 31 0d 0a 32  ..21..100..81..2
1efd0 32 30 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f  209....skipif po
1efe0 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
1eff0 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
1f000 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
1f010 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
1f020 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
1f030 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2a 20 35  .SELECT col2 * 5
1f040 37 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  7 col1 FROM tab1
1f050 0d 0a 2d 2d 2d 2d 0d 0a 33 33 36 33 0d 0a 33 38  ..----..3363..38
1f060 37 36 0d 0a 35 34 37 32 0d 0a 0d 0a 71 75 65 72  76..5472....quer
1f070 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
1f080 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a  ELECT DISTINCT *
1f090 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
1f0a0 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 42 45 54 57   NOT + col2 BETW
1f0b0 45 45 4e 20 63 6f 6c 32 20 2a 20 34 35 20 2f 20  EEN col2 * 45 / 
1f0c0 2b 20 32 39 20 41 4e 44 20 2b 20 63 6f 6c 30 20  + 29 AND + col0 
1f0d0 2a 20 2b 20 63 6f 6c 31 20 2b 20 35 37 20 4f 52  * + col1 + 57 OR
1f0e0 20 4e 4f 54 20 63 6f 6c 30 20 2a 20 39 38 20 2b   NOT col0 * 98 +
1f0f0 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d   + col1 IS NULL.
1f100 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
1f110 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39  hashing to 75c99
1f120 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32  8aa53ac83218cbf2
1f130 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71  feb962d0a49....q
1f140 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
1f150 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
1f160 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab0 WHERE NOT N
1f170 55 4c 4c 20 42 45 54 57 45 45 4e 20 2d 20 32 32  ULL BETWEEN - 22
1f180 20 2d 20 63 6f 6c 30 20 41 4e 44 20 4e 55 4c 4c   - col0 AND NULL
1f190 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..----....onlyif
1f1a0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
1f1b0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
1f1c0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
1f1d0 65 6c 2d 36 38 35 0d 0a 53 45 4c 45 43 54 20 2d  el-685..SELECT -
1f1e0 20 4d 41 58 28 20 2d 20 38 31 20 29 20 41 53 20   MAX( - 81 ) AS 
1f1f0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
1f200 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31  S cor0..----..81
1f210 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
1f220 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
1f230 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
1f240 72 74 20 6c 61 62 65 6c 2d 36 38 35 0d 0a 53 45  rt label-685..SE
1f250 4c 45 43 54 20 2d 20 4d 41 58 20 28 20 2d 20 38  LECT - MAX ( - 8
1f260 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
1f270 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
1f280 2d 2d 2d 0d 0a 38 31 0d 0a 0d 0a 73 6b 69 70 69  ---..81....skipi
1f290 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
1f2a0 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
1f2b0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
1f2c0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
1f2d0 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ns..query II row
1f2e0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  sort..SELECT + +
1f2f0 20 31 34 2c 20 63 6f 6c 32 20 63 6f 6c 32 20 46   14, col2 col2 F
1f300 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
1f310 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 35 39 0d 0a  ..----..14..59..
1f320 31 34 0d 0a 36 38 0d 0a 31 34 0d 0a 39 36 0d 0a  14..68..14..96..
1f330 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
1f340 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
1f350 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
1f360 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 32  WHERE NOT - col2
1f370 20 4e 4f 54 20 49 4e 20 28 20 2b 20 2b 20 63 6f   NOT IN ( + + co
1f380 6c 32 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  l2 )..----....qu
1f390 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
1f3a0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 38 33 20 2a  ELECT ALL - 83 *
1f3b0 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52   col1 AS col1 FR
1f3c0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
1f3d0 0a 2d 2d 2d 2d 0d 0a 2d 31 31 36 32 0d 0a 2d 33  .----..-1162..-3
1f3e0 39 30 31 0d 0a 2d 34 31 35 0d 0a 0d 0a 6f 6e 6c  901..-415....onl
1f3f0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1f400 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1f410 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1f420 6c 61 62 65 6c 2d 36 38 39 0d 0a 53 45 4c 45 43  label-689..SELEC
1f430 54 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20  T SUM( DISTINCT 
1f440 2d 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  - col1 ) FROM ta
1f450 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1 cor0..----..-
1f460 36 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  66....skipif mys
1f470 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1f480 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
1f490 73 6f 72 74 20 6c 61 62 65 6c 2d 36 38 39 0d 0a  sort label-689..
1f4a0 53 45 4c 45 43 54 20 53 55 4d 20 28 20 44 49 53  SELECT SUM ( DIS
1f4b0 54 49 4e 43 54 20 2d 20 63 6f 6c 31 20 29 20 46  TINCT - col1 ) F
1f4c0 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
1f4d0 2d 2d 2d 0d 0a 2d 36 36 0d 0a 0d 0a 6f 6e 6c 79  ---..-66....only
1f4e0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
1f4f0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
1f500 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
1f510 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39  rowsort label-69
1f520 30 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 28 20  0..SELECT + - ( 
1f530 2b 20 36 37 20 29 20 2b 20 2d 20 63 6f 6c 31 20  + 67 ) + - col1 
1f540 2b 20 2b 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c  + + - CAST( NULL
1f550 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d   AS SIGNED ) * -
1f560 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 2c 20 2b   col0 AS col0, +
1f570 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20   col2 FROM tab0 
1f580 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e  AS cor0..----..N
1f590 55 4c 4c 0d 0a 31 30 0d 0a 4e 55 4c 4c 0d 0a 34  ULL..10..NULL..4
1f5a0 37 0d 0a 4e 55 4c 4c 0d 0a 39 39 0d 0a 0d 0a 73  7..NULL..99....s
1f5b0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
1f5c0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
1f5d0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
1f5e0 61 62 65 6c 2d 36 39 30 0d 0a 53 45 4c 45 43 54  abel-690..SELECT
1f5f0 20 2b 20 2d 20 28 20 2b 20 36 37 20 29 20 2b 20   + - ( + 67 ) + 
1f600 2d 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 43 41 53  - col1 + + - CAS
1f610 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
1f620 47 45 52 20 29 20 2a 20 2d 20 63 6f 6c 30 20 41  GER ) * - col0 A
1f630 53 20 63 6f 6c 30 2c 20 2b 20 63 6f 6c 32 20 46  S col0, + col2 F
1f640 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
1f650 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31 30  ..----..NULL..10
1f660 0d 0a 4e 55 4c 4c 0d 0a 34 37 0d 0a 4e 55 4c 4c  ..NULL..47..NULL
1f670 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..99....query II
1f680 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
1f690 20 63 6f 6c 32 20 2a 20 2b 20 2d 20 63 6f 6c 31   col2 * + - col1
1f6a0 2c 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  , - col0 AS col0
1f6b0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
1f6c0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 31 30 0d 0a  r0..----..-210..
1f6d0 2d 38 37 0d 0a 2d 33 38 30 37 0d 0a 2d 31 35 0d  -87..-3807..-15.
1f6e0 0a 2d 39 39 0d 0a 2d 39 37 0d 0a 0d 0a 71 75 65  .-99..-97....que
1f6f0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
1f700 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
1f710 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
1f720 6f 72 30 20 57 48 45 52 45 20 28 20 2d 20 63 6f  or0 WHERE ( - co
1f730 6c 30 20 2d 20 2d 20 39 30 20 29 20 3e 3d 20 28  l0 - - 90 ) >= (
1f740 20 63 6f 6c 32 20 2d 20 2d 20 63 6f 6c 30 20 2a   col2 - - col0 *
1f750 20 2b 20 31 37 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d   + 17 )..----...
1f760 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
1f770 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20  t..SELECT ALL ( 
1f780 2b 20 63 6f 6c 32 20 29 20 2b 20 63 6f 6c 30 20  + col2 ) + col0 
1f790 2b 20 63 6f 6c 30 2c 20 63 6f 6c 32 20 41 53 20  + col0, col2 AS 
1f7a0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 41  col2 FROM tab0 A
1f7b0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38  S cor0..----..18
1f7c0 34 0d 0a 31 30 0d 0a 32 39 33 0d 0a 39 39 0d 0a  4..10..293..99..
1f7d0 37 37 0d 0a 34 37 0d 0a 0d 0a 6f 6e 6c 79 69 66  77..47....onlyif
1f7e0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
1f7f0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
1f800 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
1f810 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 34 0d 0a  sort label-694..
1f820 53 45 4c 45 43 54 20 63 6f 6c 32 20 41 53 20 63  SELECT col2 AS c
1f830 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol2 FROM tab1 AS
1f840 20 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 55   cor0 WHERE ( NU
1f850 4c 4c 20 29 20 3c 3d 20 2d 20 2b 20 39 38 20 2f  LL ) <= - + 98 /
1f860 20 28 20 2b 20 39 39 20 29 20 2b 20 2b 20 31 39   ( + 99 ) + + 19
1f870 20 2d 20 2d 20 2d 20 43 41 53 54 28 20 4e 55 4c   - - - CAST( NUL
1f880 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  L AS SIGNED ) * 
1f890 28 20 2d 20 63 6f 6c 32 20 29 20 2a 20 2b 20 38  ( - col2 ) * + 8
1f8a0 39 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  9..----....skipi
1f8b0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1f8c0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1f8d0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1f8e0 36 39 34 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32  694..SELECT col2
1f8f0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1f900 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
1f910 20 28 20 4e 55 4c 4c 20 29 20 3c 3d 20 2d 20 2b   ( NULL ) <= - +
1f920 20 39 38 20 2f 20 28 20 2b 20 39 39 20 29 20 2b   98 / ( + 99 ) +
1f930 20 2b 20 31 39 20 2d 20 2d 20 2d 20 43 41 53 54   + 19 - - - CAST
1f940 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
1f950 45 52 20 29 20 2a 20 28 20 2d 20 63 6f 6c 32 20  ER ) * ( - col2 
1f960 29 20 2a 20 2b 20 38 39 0d 0a 2d 2d 2d 2d 0d 0a  ) * + 89..----..
1f970 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
1f980 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
1f990 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 37 38  CT - col0 + - 78
1f9a0 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74   + + col1 FROM t
1f9b0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
1f9c0 2d 0d 0a 2d 31 32 0d 0a 2d 31 34 34 0d 0a 2d 31  -..-12..-144..-1
1f9d0 37 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  74....query I ro
1f9e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
1f9f0 63 6f 6c 31 20 2b 20 2d 20 2b 20 34 37 20 2b 20  col1 + - + 47 + 
1fa00 2d 20 33 33 20 2f 20 2d 20 35 35 20 2a 20 63 6f  - 33 / - 55 * co
1fa10 6c 32 20 2a 20 2d 20 63 6f 6c 31 20 2a 20 39 36  l2 * - col1 * 96
1fa20 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
1fa30 62 30 20 57 48 45 52 45 20 37 31 20 3e 3d 20 4e  b0 WHERE 71 >= N
1fa40 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
1fa50 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1fa60 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1fa70 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1fa80 6c 61 62 65 6c 2d 36 39 37 0d 0a 53 45 4c 45 43  label-697..SELEC
1fa90 54 20 41 4c 4c 20 39 34 20 2b 20 2d 20 43 4f 55  T ALL 94 + - COU
1faa0 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20  NT( * ) AS col1 
1fab0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
1fac0 0a 39 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .91....skipif my
1fad0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
1fae0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
1faf0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36 39 37 0d  wsort label-697.
1fb00 0a 53 45 4c 45 43 54 20 41 4c 4c 20 39 34 20 2b  .SELECT ALL 94 +
1fb10 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
1fb20 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
1fb30 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d 0a 6f 6e  ..----..91....on
1fb40 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
1fb50 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
1fb60 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
1fb70 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 36   rowsort label-6
1fb80 39 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  98..SELECT DISTI
1fb90 4e 43 54 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 63  NCT + col0 * + c
1fba0 6f 6c 30 20 2b 20 2d 20 2b 20 38 31 20 2a 20 2b  ol0 + - + 81 * +
1fbb0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
1fbc0 49 47 4e 45 44 20 29 20 63 6f 6c 30 20 46 52 4f  IGNED ) col0 FRO
1fbd0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab1..----..NU
1fbe0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
1fbf0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1fc00 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
1fc10 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
1fc20 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
1fc30 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
1fc40 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
1fc50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1fc60 62 65 6c 2d 36 39 38 0d 0a 53 45 4c 45 43 54 20  bel-698..SELECT 
1fc70 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 30 20  DISTINCT + col0 
1fc80 2a 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 2b 20 38  * + col0 + - + 8
1fc90 31 20 2a 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  1 * + CAST ( NUL
1fca0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 63  L AS INTEGER ) c
1fcb0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
1fcc0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c  ---..NULL....onl
1fcd0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
1fce0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
1fcf0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
1fd00 6c 61 62 65 6c 2d 36 39 39 0d 0a 53 45 4c 45 43  label-699..SELEC
1fd10 54 20 53 55 4d 28 20 41 4c 4c 20 2d 20 37 37 20  T SUM( ALL - 77 
1fd20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
1fd30 2d 0d 0a 2d 32 33 31 0d 0a 0d 0a 73 6b 69 70 69  -..-231....skipi
1fd40 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
1fd50 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
1fd60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
1fd70 36 39 39 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20  699..SELECT SUM 
1fd80 28 20 41 4c 4c 20 2d 20 37 37 20 29 20 46 52 4f  ( ALL - 77 ) FRO
1fd90 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab2..----..-2
1fda0 33 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  31....onlyif mys
1fdb0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
1fdc0 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
1fdd0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
1fde0 30 30 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28 20  00..SELECT MAX( 
1fdf0 2b 20 2d 20 34 31 20 29 20 63 6f 6c 32 20 46 52  + - 41 ) col2 FR
1fe00 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
1fe10 34 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  41....skipif mys
1fe20 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
1fe30 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
1fe40 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
1fe50 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
1fe60 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
1fe70 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
1fe80 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
1fe90 62 65 6c 2d 37 30 30 0d 0a 53 45 4c 45 43 54 20  bel-700..SELECT 
1fea0 4d 41 58 20 28 20 2b 20 2d 20 34 31 20 29 20 63  MAX ( + - 41 ) c
1feb0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
1fec0 2d 2d 2d 0d 0a 2d 34 31 0d 0a 0d 0a 6f 6e 6c 79  ---..-41....only
1fed0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
1fee0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
1fef0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
1ff00 61 62 65 6c 2d 37 30 31 0d 0a 53 45 4c 45 43 54  abel-701..SELECT
1ff10 20 33 30 20 2a 20 2d 20 43 4f 55 4e 54 28 20 41   30 * - COUNT( A
1ff20 4c 4c 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74  LL col1 ) FROM t
1ff30 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 30 0d 0a  ab1..----..-90..
1ff40 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
1ff50 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
1ff60 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
1ff70 20 6c 61 62 65 6c 2d 37 30 31 0d 0a 53 45 4c 45   label-701..SELE
1ff80 43 54 20 33 30 20 2a 20 2d 20 43 4f 55 4e 54 20  CT 30 * - COUNT 
1ff90 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20 46 52 4f  ( ALL col1 ) FRO
1ffa0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  M tab1..----..-9
1ffb0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
1ffc0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
1ffd0 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20 2b 20 2d  TINCT + col1 + -
1ffe0 20 2d 20 31 38 20 41 53 20 63 6f 6c 31 20 46 52   - 18 AS col1 FR
1fff0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
20000 0a 2d 2d 2d 2d 0d 0a 31 39 0d 0a 33 39 0d 0a 39  .----..19..39..9
20010 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
20020 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
20030 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
20040 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30  rowsort label-70
20050 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  3..SELECT DISTIN
20060 43 54 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20  CT + + COUNT( * 
20070 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  ) AS col0 FROM t
20080 61 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab2 AS cor0 CROS
20090 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63  S JOIN tab2 AS c
200a0 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a  or1..----..9....
200b0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
200c0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
200d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
200e0 61 62 65 6c 2d 37 30 33 0d 0a 53 45 4c 45 43 54  abel-703..SELECT
200f0 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 43 4f   DISTINCT + + CO
20100 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c  UNT ( * ) AS col
20110 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
20120 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
20130 61 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab2 AS cor1..---
20140 2d 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..9....onlyif m
20150 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
20160 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
20170 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77   ..query III row
20180 73 6f 72 74 20 6c 61 62 65 6c 2d 37 30 34 0d 0a  sort label-704..
20190 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
201a0 62 31 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e 4f  b1 WHERE NULL NO
201b0 54 20 42 45 54 57 45 45 4e 20 2d 20 2d 20 43 41  T BETWEEN - - CA
201c0 53 54 28 20 33 37 20 41 53 20 53 49 47 4e 45 44  ST( 37 AS SIGNED
201d0 20 29 20 2b 20 2b 20 35 20 41 4e 44 20 4e 55 4c   ) + + 5 AND NUL
201e0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69  L..----....skipi
201f0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
20200 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
20210 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
20220 6c 2d 37 30 34 0d 0a 53 45 4c 45 43 54 20 2a 20  l-704..SELECT * 
20230 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
20240 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45 45 4e  NULL NOT BETWEEN
20250 20 2d 20 2d 20 43 41 53 54 20 28 20 33 37 20 41   - - CAST ( 37 A
20260 53 20 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20  S INTEGER ) + + 
20270 35 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  5 AND NULL..----
20280 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
20290 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
202a0 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61  STINCT * FROM ta
202b0 62 32 20 57 48 45 52 45 20 2b 20 2b 20 37 38 20  b2 WHERE + + 78 
202c0 2d 20 36 31 20 2a 20 2d 20 39 31 20 49 53 20 4e  - 61 * - 91 IS N
202d0 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39  OT NULL..----..9
202e0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
202f0 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63 38  to 75c998aa53ac8
20300 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64 30  3218cbf2feb962d0
20310 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  a49....onlyif my
20320 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
20330 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
20340 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
20350 37 30 36 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49  706..SELECT + MI
20360 4e 28 20 31 32 20 29 20 46 52 4f 4d 20 74 61 62  N( 12 ) FROM tab
20370 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a 0d 0a 73  2..----..12....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 71 75  t compatible..qu
203a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
203b0 62 65 6c 2d 37 30 36 0d 0a 53 45 4c 45 43 54 20  bel-706..SELECT 
203c0 2b 20 4d 49 4e 20 28 20 31 32 20 29 20 46 52 4f  + MIN ( 12 ) FRO
203d0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 32  M tab2..----..12
203e0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
203f0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
20400 49 4e 43 54 20 2d 20 33 31 20 2d 20 37 30 20 2a  INCT - 31 - 70 *
20410 20 2d 20 2d 20 63 6f 6c 32 20 2b 20 33 36 20 2b   - - col2 + 36 +
20420 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 30 20 41   col2 + + col0 A
20430 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
20440 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 32 32 33 0d 0a 2d  ..----..-3223..-
20450 35 39 38 0d 0a 2d 36 37 32 39 0d 0a 0d 0a 71 75  598..-6729....qu
20460 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
20470 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2a  ELECT ALL col0 *
20480 20 2d 20 63 6f 6c 31 20 2d 20 2d 20 38 37 20 41   - col1 - - 87 A
20490 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
204a0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
204b0 2d 32 32 35 39 0d 0a 2d 34 38 34 31 0d 0a 2d 34  -2259..-4841..-4
204c0 39 33 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  938....query I r
204d0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
204e0 4c 4c 20 2b 20 2b 20 28 20 2b 20 2b 20 34 35 20  LL + + ( + + 45 
204f0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
20500 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
20510 2d 0d 0a 34 35 0d 0a 34 35 0d 0a 34 35 0d 0a 0d  -..45..45..45...
20520 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20530 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 38  ..SELECT ALL + 8
20540 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
20550 72 30 20 57 48 45 52 45 20 63 6f 6c 32 20 4e 4f  r0 WHERE col2 NO
20560 54 20 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c 32  T BETWEEN - col2
20570 20 41 4e 44 20 2d 20 37 38 20 2f 20 63 6f 6c 32   AND - 78 / col2
20580 0d 0a 2d 2d 2d 2d 0d 0a 38 0d 0a 38 0d 0a 38 0d  ..----..8..8..8.
20590 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
205a0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
205b0 20 28 20 63 6f 6c 32 20 29 20 2a 20 2b 20 28 20   ( col2 ) * + ( 
205c0 2d 20 63 6f 6c 32 20 29 20 2a 20 63 6f 6c 32 20  - col2 ) * col2 
205d0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
205e0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 30 0d 0a 31  0..----..1000..1
205f0 30 33 38 32 33 0d 0a 39 37 30 32 39 39 0d 0a 0d  03823..970299...
20600 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
20610 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63  ..SELECT ALL - c
20620 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 57 48  ol1 FROM tab1 WH
20630 45 52 45 20 4e 4f 54 20 31 34 20 2b 20 63 6f 6c  ERE NOT 14 + col
20640 32 20 3c 20 2d 20 28 20 2d 20 2d 20 38 38 20 29  2 < - ( - - 88 )
20650 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 0d 0a 2d 34 37  ..----..-14..-47
20660 0d 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..-5....onlyif m
20670 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
20680 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
20690 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77   ..query III row
206a0 73 6f 72 74 20 6c 61 62 65 6c 2d 37 31 33 0d 0a  sort label-713..
206b0 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
206c0 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
206d0 20 63 6f 6c 30 20 2b 20 63 6f 6c 32 20 4e 4f 54   col0 + col2 NOT
206e0 20 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c 31 20   BETWEEN - col1 
206f0 41 4e 44 20 28 20 2d 20 43 41 53 54 28 20 63 6f  AND ( - CAST( co
20700 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a  l1 AS SIGNED ) *
20710 20 2b 20 2d 20 32 31 20 29 0d 0a 2d 2d 2d 2d 0d   + - 21 )..----.
20720 0a 31 35 0d 0a 38 31 0d 0a 34 37 0d 0a 38 37 0d  .15..81..47..87.
20730 0a 32 31 0d 0a 31 30 0d 0a 0d 0a 73 6b 69 70 69  .21..10....skipi
20740 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
20750 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
20760 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  III rowsort labe
20770 6c 2d 37 31 33 0d 0a 53 45 4c 45 43 54 20 41 4c  l-713..SELECT AL
20780 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  L * FROM tab0 WH
20790 45 52 45 20 4e 4f 54 20 63 6f 6c 30 20 2b 20 63  ERE NOT col0 + c
207a0 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ol2 NOT BETWEEN 
207b0 2d 20 63 6f 6c 31 20 41 4e 44 20 28 20 2d 20 43  - col1 AND ( - C
207c0 41 53 54 20 28 20 63 6f 6c 31 20 41 53 20 49 4e  AST ( col1 AS IN
207d0 54 45 47 45 52 20 29 20 2a 20 2b 20 2d 20 32 31  TEGER ) * + - 21
207e0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 31   )..----..15..81
207f0 0d 0a 34 37 0d 0a 38 37 0d 0a 32 31 0d 0a 31 30  ..47..87..21..10
20800 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
20810 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
20820 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
20830 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
20840 61 62 65 6c 2d 37 31 34 0d 0a 53 45 4c 45 43 54  abel-714..SELECT
20850 20 2d 20 38 37 20 2f 20 2d 20 28 20 2b 20 43 41   - 87 / - ( + CA
20860 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
20870 45 44 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32  ED ) ) FROM tab2
20880 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
20890 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  LL..NULL....skip
208a0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
208b0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
208c0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
208d0 2d 37 31 34 0d 0a 53 45 4c 45 43 54 20 2d 20 38  -714..SELECT - 8
208e0 37 20 2f 20 2d 20 28 20 2b 20 43 41 53 54 20 28  7 / - ( + CAST (
208f0 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
20900 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a   ) ) FROM tab2..
20910 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
20920 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..NULL....onlyif
20930 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
20940 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
20950 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
20960 65 6c 2d 37 31 35 0d 0a 53 45 4c 45 43 54 20 41  el-715..SELECT A
20970 4c 4c 20 2b 20 35 39 20 2a 20 2d 20 43 4f 55 4e  LL + 59 * - COUN
20980 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31 20 46  T( * ) AS col1 F
20990 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
209a0 2d 31 37 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  -177....skipif m
209b0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
209c0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
209d0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 31 35  owsort label-715
209e0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 35  ..SELECT ALL + 5
209f0 39 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  9 * - COUNT ( * 
20a00 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
20a10 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 37 37 0d  ab0..----..-177.
20a20 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
20a30 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
20a40 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
20a50 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
20a60 62 65 6c 2d 37 31 36 0d 0a 53 45 4c 45 43 54 20  bel-716..SELECT 
20a70 41 4c 4c 20 2b 20 35 33 20 44 49 56 20 2b 20 2d  ALL + 53 DIV + -
20a80 20 35 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   50 AS col0 FROM
20a90 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d   tab2..----..-1.
20aa0 0a 2d 31 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69  .-1..-1....skipi
20ab0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
20ac0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
20ad0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
20ae0 37 31 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  716..SELECT ALL 
20af0 2b 20 35 33 20 2f 20 2b 20 2d 20 35 30 20 41 53  + 53 / + - 50 AS
20b00 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
20b10 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 31 0d 0a 2d  .----..-1..-1..-
20b20 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
20b30 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
20b40 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
20b50 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
20b60 20 6c 61 62 65 6c 2d 37 31 37 0d 0a 53 45 4c 45   label-717..SELE
20b70 43 54 20 63 6f 6c 30 20 44 49 56 20 63 6f 6c 30  CT col0 DIV col0
20b80 2c 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31  , - col2 AS col1
20b90 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
20ba0 0d 0a 31 0d 0a 2d 35 39 0d 0a 31 0d 0a 2d 36 38  ..1..-59..1..-68
20bb0 0d 0a 31 0d 0a 2d 39 36 0d 0a 0d 0a 73 6b 69 70  ..1..-96....skip
20bc0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
20bd0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
20be0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
20bf0 6c 2d 37 31 37 0d 0a 53 45 4c 45 43 54 20 63 6f  l-717..SELECT co
20c00 6c 30 20 2f 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c  l0 / col0, - col
20c10 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  2 AS col1 FROM t
20c20 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 2d 35  ab1..----..1..-5
20c30 39 0d 0a 31 0d 0a 2d 36 38 0d 0a 31 0d 0a 2d 39  9..1..-68..1..-9
20c40 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
20c50 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 35  sort..SELECT - 5
20c60 33 20 2a 20 2d 20 36 39 20 46 52 4f 4d 20 74 61  3 * - 69 FROM ta
20c70 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 36 35 37 0d 0a  b2..----..3657..
20c80 33 36 35 37 0d 0a 33 36 35 37 0d 0a 0d 0a 71 75  3657..3657....qu
20c90 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
20ca0 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 20 2a 20  SELECT + col2 * 
20cb0 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 2c 20  + col1 AS col2, 
20cc0 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  - col0 FROM tab1
20cd0 0d 0a 2d 2d 2d 2d 0d 0a 31 33 34 34 0d 0a 2d 35  ..----..1344..-5
20ce0 31 0d 0a 32 39 35 0d 0a 2d 38 35 0d 0a 33 31 39  1..295..-85..319
20cf0 36 0d 0a 2d 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  6..-91....onlyif
20d00 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
20d10 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
20d20 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
20d30 65 6c 2d 37 32 30 0d 0a 53 45 4c 45 43 54 20 2d  el-720..SELECT -
20d40 20 4d 41 58 28 20 2d 20 32 32 20 29 20 41 53 20   MAX( - 22 ) AS 
20d50 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
20d60 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32  S cor0..----..22
20d70 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
20d80 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
20d90 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
20da0 72 74 20 6c 61 62 65 6c 2d 37 32 30 0d 0a 53 45  rt label-720..SE
20db0 4c 45 43 54 20 2d 20 4d 41 58 20 28 20 2d 20 32  LECT - MAX ( - 2
20dc0 32 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  2 ) AS col0 FROM
20dd0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
20de0 2d 2d 2d 0d 0a 32 32 0d 0a 0d 0a 71 75 65 72 79  ---..22....query
20df0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
20e00 43 54 20 2b 20 2d 20 34 30 20 46 52 4f 4d 20 74  CT + - 40 FROM t
20e10 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
20e20 2d 34 30 0d 0a 2d 34 30 0d 0a 2d 34 30 0d 0a 0d  -40..-40..-40...
20e30 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
20e40 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 41  t..SELECT col0 A
20e50 53 20 63 6f 6c 32 2c 20 63 6f 6c 30 20 2a 20 34  S col2, col0 * 4
20e60 35 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  5 AS col2 FROM t
20e70 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 36  ab0..----..15..6
20e80 37 35 0d 0a 38 37 0d 0a 33 39 31 35 0d 0a 39 37  75..87..3915..97
20e90 0d 0a 34 33 36 35 0d 0a 0d 0a 71 75 65 72 79 20  ..4365....query 
20ea0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
20eb0 43 54 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 31 20  CT col0, - col1 
20ec0 2a 20 2b 20 2d 20 39 32 20 46 52 4f 4d 20 74 61  * + - 92 FROM ta
20ed0 62 32 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 34 36  b2..----..46..46
20ee0 39 32 0d 0a 36 34 0d 0a 37 30 38 34 0d 0a 37 35  92..64..7084..75
20ef0 0d 0a 36 31 36 34 0d 0a 0d 0a 71 75 65 72 79 20  ..6164....query 
20f00 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
20f10 54 20 44 49 53 54 49 4e 43 54 20 2b 20 34 33 20  T DISTINCT + 43 
20f20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
20f30 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col1 IS NULL..--
20f40 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
20f50 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
20f60 41 4c 4c 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ALL * FROM tab1 
20f70 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
20f80 54 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 32 20  T col2 + - col2 
20f90 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39  IS NULL..----..9
20fa0 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20   values hashing 
20fb0 74 6f 20 63 36 63 30 61 34 31 31 31 62 33 36 64  to c6c0a4111b36d
20fc0 30 34 64 62 63 38 31 31 61 31 31 65 34 64 35 34  04dbc811a11e4d54
20fd0 63 61 64 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  cad....query I r
20fe0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32  owsort..SELECT 2
20ff0 36 20 2a 20 2d 20 2b 20 63 6f 6c 30 20 41 53 20  6 * - + col0 AS 
21000 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63  col1 FROM tab2 c
21010 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 39 36  or0..----..-1196
21020 0d 0a 2d 31 36 36 34 0d 0a 2d 31 39 35 30 0d 0a  ..-1664..-1950..
21030 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
21040 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
21050 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
21060 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
21070 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
21080 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
21090 43 54 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20  CT DISTINCT ( - 
210a0 28 20 34 31 20 29 20 29 20 63 6f 6c 30 20 46 52  ( 41 ) ) col0 FR
210b0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
210c0 0a 2d 2d 2d 2d 0d 0a 2d 34 31 0d 0a 0d 0a 71 75  .----..-41....qu
210d0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
210e0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
210f0 20 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 30 20 2a   col0 + + col0 *
21100 20 2d 20 28 20 38 32 20 29 20 41 53 20 63 6f 6c   - ( 82 ) AS col
21110 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  2 FROM tab2 AS c
21120 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 38 31 38  or0..----..-3818
21130 0d 0a 2d 35 33 31 32 0d 0a 2d 36 32 32 35 0d 0a  ..-5312..-6225..
21140 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
21150 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  t..SELECT ALL + 
21160 2d 20 37 34 20 41 53 20 63 6f 6c 32 20 46 52 4f  - 74 AS col2 FRO
21170 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
21180 2d 0d 0a 2d 37 34 0d 0a 2d 37 34 0d 0a 2d 37 34  -..-74..-74..-74
21190 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
211a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31  ort..SELECT col1
211b0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
211c0 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 3e 20  r0 WHERE NULL > 
211d0 2b 20 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 32 20  + col2 * - col2 
211e0 2a 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  * - col1..----..
211f0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
21200 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
21210 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
21220 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
21230 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
21240 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
21250 43 54 20 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c 31  CT - col1 + col1
21260 20 2b 20 2d 20 34 39 20 2b 20 2d 20 2d 20 63 6f   + - 49 + - - co
21270 6c 30 20 2b 20 2d 20 63 6f 6c 31 20 63 6f 6c 31  l0 + - col1 col1
21280 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
21290 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 35 0d 0a  r0..----..-115..
212a0 31 37 0d 0a 34 37 0d 0a 0d 0a 71 75 65 72 79 20  17..47....query 
212b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
212c0 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 2d 20 32  T ALL col2 + - 2
212d0 37 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d  7 FROM tab0..---
212e0 2d 0d 0a 2d 31 37 0d 0a 32 30 0d 0a 37 32 0d 0a  -..-17..20..72..
212f0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
21300 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
21310 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2d 20  OM tab2 WHERE - 
21320 63 6f 6c 32 20 3e 3d 20 4e 55 4c 4c 20 4f 52 20  col2 >= NULL OR 
21330 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 28 20 2d  NULL BETWEEN ( -
21340 20 2d 20 63 6f 6c 32 20 2a 20 35 20 2a 20 2d 20   - col2 * 5 * - 
21350 63 6f 6c 31 20 2b 20 2b 20 2b 20 63 6f 6c 30 20  col1 + + + col0 
21360 29 20 41 4e 44 20 2d 20 63 6f 6c 32 20 2b 20 63  ) AND - col2 + c
21370 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ol1..----....que
21380 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
21390 4c 45 43 54 20 31 32 20 2b 20 2b 20 31 37 20 2a  LECT 12 + + 17 *
213a0 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20   + col2 AS col0 
213b0 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
213c0 0a 31 30 31 35 0d 0a 31 31 36 38 0d 0a 31 36 34  .1015..1168..164
213d0 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  4....query I row
213e0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
213f0 6f 6c 32 20 2b 20 2b 20 35 20 46 52 4f 4d 20 74  ol2 + + 5 FROM t
21400 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32 0d 0a  ab0..----..-42..
21410 2d 35 0d 0a 2d 39 34 0d 0a 0d 0a 71 75 65 72 79  -5..-94....query
21420 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
21430 43 54 20 2d 20 39 31 20 2b 20 2b 20 2d 20 63 6f  CT - 91 + + - co
21440 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
21450 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 32  tab2..----..-142
21460 0d 0a 2d 31 35 38 0d 0a 2d 31 36 38 0d 0a 0d 0a  ..-158..-168....
21470 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
21480 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
21490 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
214a0 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
214b0 65 6c 2d 37 33 37 0d 0a 53 45 4c 45 43 54 20 44  el-737..SELECT D
214c0 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74  ISTINCT * FROM t
214d0 61 62 32 20 57 48 45 52 45 20 28 20 2d 20 33 37  ab2 WHERE ( - 37
214e0 20 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d   ) NOT BETWEEN -
214f0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
21500 49 47 4e 45 44 20 29 20 41 4e 44 20 2b 20 2d 20  IGNED ) AND + - 
21510 38 39 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75  89..----..9 valu
21520 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37 35  es hashing to 75
21530 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38 63  c998aa53ac83218c
21540 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d 0a  bf2feb962d0a49..
21550 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
21560 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
21570 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
21580 72 74 20 6c 61 62 65 6c 2d 37 33 37 0d 0a 53 45  rt label-737..SE
21590 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
215a0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
215b0 28 20 2d 20 33 37 20 29 20 4e 4f 54 20 42 45 54  ( - 37 ) NOT BET
215c0 57 45 45 4e 20 2d 20 43 41 53 54 20 28 20 4e 55  WEEN - CAST ( NU
215d0 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
215e0 41 4e 44 20 2b 20 2d 20 38 39 0d 0a 2d 2d 2d 2d  AND + - 89..----
215f0 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69  ..9 values hashi
21600 6e 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33  ng to 75c998aa53
21610 61 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36  ac83218cbf2feb96
21620 32 64 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20  2d0a49....query 
21630 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
21640 54 20 2b 20 34 30 20 2b 20 35 30 20 2a 20 63 6f  T + 40 + 50 * co
21650 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l2 FROM tab0..--
21660 2d 2d 0d 0a 32 33 39 30 0d 0a 34 39 39 30 0d 0a  --..2390..4990..
21670 35 34 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  540....onlyif my
21680 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
21690 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
216a0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
216b0 37 33 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  739..SELECT ALL 
216c0 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2b  + COUNT( * ) + +
216d0 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20   COUNT( * ) * + 
216e0 2d 20 39 36 20 2d 20 2d 20 2d 20 37 38 20 46 52  - 96 - - - 78 FR
216f0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
21700 33 36 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  363....skipif my
21710 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
21720 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
21730 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 33 39 0d  wsort label-739.
21740 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f  .SELECT ALL + CO
21750 55 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20 43 4f  UNT ( * ) + + CO
21760 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b 20 2d 20  UNT ( * ) * + - 
21770 39 36 20 2d 20 2d 20 2d 20 37 38 20 46 52 4f 4d  96 - - - 78 FROM
21780 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 36   tab2..----..-36
21790 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
217a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20 2d  sort..SELECT ( -
217b0 20 28 20 63 6f 6c 31 20 29 20 29 20 41 53 20 63   ( col1 ) ) AS c
217c0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol1 FROM tab0..-
217d0 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 32 31 0d 0a 2d 38  ---..-1..-21..-8
217e0 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  1....onlyif mysq
217f0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
21800 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
21810 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34  rowsort label-74
21820 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  1..SELECT ALL - 
21830 2b 20 28 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a  + ( - + COUNT( *
21840 20 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   ) ) AS col0 FRO
21850 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
21860 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ----..3....skipi
21870 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
21880 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
21890 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
218a0 37 34 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  741..SELECT ALL 
218b0 2d 20 2b 20 28 20 2d 20 2b 20 43 4f 55 4e 54 20  - + ( - + COUNT 
218c0 28 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 30 20  ( * ) ) AS col0 
218d0 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
218e0 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b  0..----..3....sk
218f0 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
21900 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
21910 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
21920 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
21930 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20  lumns..query II 
21940 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
21950 2b 20 2d 20 63 6f 6c 31 20 2d 20 63 6f 6c 30 20  + - col1 - col0 
21960 41 53 20 63 6f 6c 32 2c 20 63 6f 6c 31 20 2a 20  AS col2, col1 * 
21970 2d 20 2b 20 63 6f 6c 32 20 63 6f 6c 32 20 46 52  - + col2 col2 FR
21980 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
21990 0a 2d 2d 2d 2d 0d 0a 2d 31 34 31 0d 0a 2d 33 30  .----..-141..-30
219a0 38 30 0d 0a 2d 31 34 32 0d 0a 2d 33 38 38 36 0d  80..-142..-3886.
219b0 0a 2d 39 37 0d 0a 2d 31 31 37 33 0d 0a 0d 0a 71  .-97..-1173....q
219c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
219d0 53 45 4c 45 43 54 20 32 37 20 2a 20 2d 20 2d 20  SELECT 27 * - - 
219e0 31 37 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  17 FROM tab2 cor
219f0 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
21a00 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  2 AS cor1..----.
21a10 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
21a20 67 20 74 6f 20 33 30 34 39 33 61 37 35 63 38 34  g to 30493a75c84
21a30 63 62 32 39 61 65 39 37 39 61 63 30 37 30 36 62  cb29ae979ac0706b
21a40 63 34 36 30 65 0d 0a 0d 0a 71 75 65 72 79 20 49  c460e....query I
21a50 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
21a60 20 28 20 2b 20 2b 20 63 6f 6c 31 20 29 20 41 53   ( + + col1 ) AS
21a70 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
21a80 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
21a90 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d 0a  T NULL IS NULL..
21aa0 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
21ab0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
21ac0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
21ad0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
21ae0 2d 37 34 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  -745..SELECT DIS
21af0 54 49 4e 43 54 20 2d 20 4d 41 58 28 20 41 4c 4c  TINCT - MAX( ALL
21b00 20 2d 20 32 30 20 29 20 46 52 4f 4d 20 74 61 62   - 20 ) FROM tab
21b10 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
21b20 0a 32 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .20....skipif my
21b30 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
21b40 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
21b50 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 34 35 0d  wsort label-745.
21b60 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
21b70 20 2d 20 4d 41 58 20 28 20 41 4c 4c 20 2d 20 32   - MAX ( ALL - 2
21b80 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53  0 ) FROM tab0 AS
21b90 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 0d   cor0..----..20.
21ba0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
21bb0 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
21bc0 20 2d 20 32 37 20 41 53 20 63 6f 6c 30 20 46 52   - 27 AS col0 FR
21bd0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
21be0 0a 2d 2d 2d 2d 0d 0a 2d 32 37 0d 0a 2d 32 37 0d  .----..-27..-27.
21bf0 0a 2d 32 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .-27....onlyif m
21c00 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
21c10 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
21c20 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
21c30 72 74 20 6c 61 62 65 6c 2d 37 34 37 0d 0a 53 45  rt label-747..SE
21c40 4c 45 43 54 20 2b 20 43 41 53 54 28 20 2d 20 2d  LECT + CAST( - -
21c50 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44 20   col2 AS SIGNED 
21c60 29 20 2a 20 36 34 20 2a 20 38 38 20 46 52 4f 4d  ) * 64 * 88 FROM
21c70 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
21c80 2d 2d 2d 0d 0a 32 36 34 37 30 34 0d 0a 35 35 37  ---..264704..557
21c90 35 36 38 0d 0a 35 36 33 32 30 0d 0a 0d 0a 73 6b  568..56320....sk
21ca0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
21cb0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
21cc0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
21cd0 65 6c 2d 37 34 37 0d 0a 53 45 4c 45 43 54 20 2b  el-747..SELECT +
21ce0 20 43 41 53 54 20 28 20 2d 20 2d 20 63 6f 6c 32   CAST ( - - col2
21cf0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20   AS INTEGER ) * 
21d00 36 34 20 2a 20 38 38 20 46 52 4f 4d 20 74 61 62  64 * 88 FROM tab
21d10 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
21d20 0a 32 36 34 37 30 34 0d 0a 35 35 37 35 36 38 0d  .264704..557568.
21d30 0a 35 36 33 32 30 0d 0a 0d 0a 71 75 65 72 79 20  .56320....query 
21d40 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
21d50 54 20 41 4c 4c 20 2d 20 33 38 20 2a 20 2d 20 2b  T ALL - 38 * - +
21d60 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
21d70 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
21d80 0a 2d 2d 2d 2d 0d 0a 31 37 38 36 0d 0a 31 39 30  .----..1786..190
21d90 0d 0a 35 33 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..532....onlyif 
21da0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
21db0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
21dc0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
21dd0 6c 2d 37 34 39 0d 0a 53 45 4c 45 43 54 20 44 49  l-749..SELECT DI
21de0 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20  STINCT - COUNT( 
21df0 41 4c 4c 20 63 6f 6c 32 20 29 20 63 6f 6c 31 20  ALL col2 ) col1 
21e00 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
21e10 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70  ----..-3....skip
21e20 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
21e30 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
21e40 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
21e50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
21e60 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
21e70 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
21e80 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
21e90 6f 72 74 20 6c 61 62 65 6c 2d 37 34 39 0d 0a 53  ort label-749..S
21ea0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
21eb0 20 43 4f 55 4e 54 20 28 20 41 4c 4c 20 63 6f 6c   COUNT ( ALL col
21ec0 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  2 ) col1 FROM ta
21ed0 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  b1 cor0..----..-
21ee0 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
21ef0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
21f00 20 35 31 20 2a 20 2d 20 31 34 20 46 52 4f 4d 20   51 * - 14 FROM 
21f10 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
21f20 2d 2d 0d 0a 2d 37 31 34 0d 0a 2d 37 31 34 0d 0a  --..-714..-714..
21f30 2d 37 31 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -714....onlyif m
21f40 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
21f50 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
21f60 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77   ..query III row
21f70 73 6f 72 74 20 6c 61 62 65 6c 2d 37 35 31 0d 0a  sort label-751..
21f80 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
21f90 62 30 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  b0 cor0 WHERE NO
21fa0 54 20 4e 55 4c 4c 20 4e 4f 54 20 42 45 54 57 45  T NULL NOT BETWE
21fb0 45 4e 20 2d 20 63 6f 6c 30 20 41 4e 44 20 2d 20  EN - col0 AND - 
21fc0 63 6f 6c 32 20 2f 20 32 37 20 2a 20 2b 20 43 41  col2 / 27 * + CA
21fd0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
21fe0 45 44 20 29 20 2a 20 34 33 20 2a 20 32 30 0d 0a  ED ) * 43 * 20..
21ff0 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ----....skipif m
22000 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
22010 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49  tible..query III
22020 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
22030 35 31 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  51..SELECT * FRO
22040 4d 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52  M tab0 cor0 WHER
22050 45 20 4e 4f 54 20 4e 55 4c 4c 20 4e 4f 54 20 42  E NOT NULL NOT B
22060 45 54 57 45 45 4e 20 2d 20 63 6f 6c 30 20 41 4e  ETWEEN - col0 AN
22070 44 20 2d 20 63 6f 6c 32 20 2f 20 32 37 20 2a 20  D - col2 / 27 * 
22080 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
22090 20 49 4e 54 45 47 45 52 20 29 20 2a 20 34 33 20   INTEGER ) * 43 
220a0 2a 20 32 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  * 20..----....on
220b0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
220c0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
220d0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
220e0 74 20 6c 61 62 65 6c 2d 37 35 32 0d 0a 53 45 4c  t label-752..SEL
220f0 45 43 54 20 44 49 53 54 49 4e 43 54 20 31 31 20  ECT DISTINCT 11 
22100 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 41  * + COUNT( * ) A
22110 53 20 63 6f 6c 32 2c 20 31 36 20 41 53 20 63 6f  S col2, 16 AS co
22120 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l1 FROM tab0..--
22130 2d 2d 0d 0a 33 33 0d 0a 31 36 0d 0a 0d 0a 73 6b  --..33..16....sk
22140 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
22150 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
22160 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
22170 62 65 6c 2d 37 35 32 0d 0a 53 45 4c 45 43 54 20  bel-752..SELECT 
22180 44 49 53 54 49 4e 43 54 20 31 31 20 2a 20 2b 20  DISTINCT 11 * + 
22190 43 4f 55 4e 54 20 28 20 2a 20 29 20 41 53 20 63  COUNT ( * ) AS c
221a0 6f 6c 32 2c 20 31 36 20 41 53 20 63 6f 6c 31 20  ol2, 16 AS col1 
221b0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
221c0 0a 33 33 0d 0a 31 36 0d 0a 0d 0a 71 75 65 72 79  .33..16....query
221d0 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
221e0 45 43 54 20 63 6f 6c 30 2c 20 2d 20 63 6f 6c 30  ECT col0, - col0
221f0 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 2a 20 63 6f   * - - col0 * co
22200 6c 31 20 2d 20 2b 20 63 6f 6c 31 20 46 52 4f 4d  l1 - + col1 FROM
22210 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d   tab0..----..15.
22220 0a 2d 31 38 33 30 36 0d 0a 38 37 0d 0a 2d 31 35  .-18306..87..-15
22230 38 39 37 30 0d 0a 39 37 0d 0a 2d 39 34 31 30 0d  8970..97..-9410.
22240 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
22250 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 31 20  rt..SELECT col1 
22260 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
22270 31 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f  1 WHERE NOT + co
22280 6c 32 20 2b 20 2d 20 63 6f 6c 30 20 2a 20 2d 20  l2 + - col0 * - 
22290 63 6f 6c 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col0 IS NULL..--
222a0 2d 2d 0d 0a 31 34 0d 0a 34 37 0d 0a 35 0d 0a 0d  --..14..47..5...
222b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
222c0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 39 36 20  ..SELECT ALL 96 
222d0 2a 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30  * + col0 AS col0
222e0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
222f0 0d 0a 34 34 31 36 0d 0a 36 31 34 34 0d 0a 37 32  ..4416..6144..72
22300 30 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  00....query II r
22310 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
22320 4c 4c 20 63 6f 6c 31 2c 20 38 33 20 41 53 20 63  LL col1, 83 AS c
22330 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol0 FROM tab1..-
22340 2d 2d 2d 0d 0a 31 34 0d 0a 38 33 0d 0a 34 37 0d  ---..14..83..47.
22350 0a 38 33 0d 0a 35 0d 0a 38 33 0d 0a 0d 0a 6f 6e  .83..5..83....on
22360 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
22370 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
22380 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
22390 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
223a0 35 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  57..SELECT DISTI
223b0 4e 43 54 20 2b 20 63 6f 6c 30 20 44 49 56 20 34  NCT + col0 DIV 4
223c0 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  0 FROM tab1..---
223d0 2d 0d 0a 31 0d 0a 32 0d 0a 0d 0a 73 6b 69 70 69  -..1..2....skipi
223e0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
223f0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
22400 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
22410 37 35 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  757..SELECT DIST
22420 49 4e 43 54 20 2b 20 63 6f 6c 30 20 2f 20 34 30  INCT + col0 / 40
22430 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
22440 0d 0a 31 0d 0a 32 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..1..2....onlyif
22450 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
22460 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
22470 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
22480 65 6c 2d 37 35 38 0d 0a 53 45 4c 45 43 54 20 37  el-758..SELECT 7
22490 35 20 2a 20 2d 20 2b 20 53 55 4d 28 20 44 49 53  5 * - + SUM( DIS
224a0 54 49 4e 43 54 20 63 6f 6c 31 20 29 20 41 53 20  TINCT col1 ) AS 
224b0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
224c0 2d 2d 2d 2d 0d 0a 2d 34 39 35 30 0d 0a 0d 0a 73  ----..-4950....s
224d0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
224e0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
224f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
22500 62 65 6c 2d 37 35 38 0d 0a 53 45 4c 45 43 54 20  bel-758..SELECT 
22510 37 35 20 2a 20 2d 20 2b 20 53 55 4d 20 28 20 44  75 * - + SUM ( D
22520 49 53 54 49 4e 43 54 20 63 6f 6c 31 20 29 20 41  ISTINCT col1 ) A
22530 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31  S col2 FROM tab1
22540 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 39 35 30 0d 0a 0d  ..----..-4950...
22550 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
22560 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32  t..SELECT + col2
22570 20 41 53 20 63 6f 6c 31 2c 20 63 6f 6c 32 20 2a   AS col1, col2 *
22580 20 2b 20 2d 20 34 31 20 41 53 20 63 6f 6c 31 20   + - 41 AS col1 
22590 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
225a0 0a 32 33 0d 0a 2d 39 34 33 0d 0a 34 30 0d 0a 2d  .23..-943..40..-
225b0 31 36 34 30 0d 0a 35 38 0d 0a 2d 32 33 37 38 0d  1640..58..-2378.
225c0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
225d0 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
225e0 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
225f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
22600 62 65 6c 2d 37 36 30 0d 0a 53 45 4c 45 43 54 20  bel-760..SELECT 
22610 41 4c 4c 20 43 41 53 54 28 20 2d 20 28 20 2b 20  ALL CAST( - ( + 
22620 63 6f 6c 32 20 29 20 41 53 20 53 49 47 4e 45 44  col2 ) AS SIGNED
22630 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
22640 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
22650 2d 2d 0d 0a 2d 32 33 0d 0a 2d 34 30 0d 0a 2d 35  --..-23..-40..-5
22660 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  8....skipif mysq
22670 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
22680 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
22690 6f 72 74 20 6c 61 62 65 6c 2d 37 36 30 0d 0a 53  ort label-760..S
226a0 45 4c 45 43 54 20 41 4c 4c 20 43 41 53 54 20 28  ELECT ALL CAST (
226b0 20 2d 20 28 20 2b 20 63 6f 6c 32 20 29 20 41 53   - ( + col2 ) AS
226c0 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
226d0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
226e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d  cor0..----..-23.
226f0 0a 2d 34 30 0d 0a 2d 35 38 0d 0a 0d 0a 71 75 65  .-40..-58....que
22700 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
22710 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
22720 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 32 20 2b 20  col0 + + col2 + 
22730 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  + - col1 FROM ta
22740 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
22750 0d 0a 2d 31 30 31 0d 0a 2d 37 34 0d 0a 2d 38 34  ..-101..-74..-84
22760 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
22770 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
22780 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
22790 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
227a0 20 6c 61 62 65 6c 2d 37 36 32 0d 0a 53 45 4c 45   label-762..SELE
227b0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41  CT * FROM tab0 A
227c0 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
227d0 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 2b 20   NULL BETWEEN + 
227e0 35 36 20 41 4e 44 20 2d 20 63 6f 6c 31 20 2a 20  56 AND - col1 * 
227f0 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
22800 53 49 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a  SIGNED )..----..
22810 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
22820 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
22830 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
22840 72 74 20 6c 61 62 65 6c 2d 37 36 32 0d 0a 53 45  rt label-762..SE
22850 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
22860 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
22870 4f 54 20 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20  OT NULL BETWEEN 
22880 2b 20 35 36 20 41 4e 44 20 2d 20 63 6f 6c 31 20  + 56 AND - col1 
22890 2a 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  * + CAST ( NULL 
228a0 41 53 20 49 4e 54 45 47 45 52 20 29 0d 0a 2d 2d  AS INTEGER )..--
228b0 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
228c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
228d0 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
228e0 45 20 2b 20 2b 20 63 6f 6c 30 20 4e 4f 54 20 49  E + + col0 NOT I
228f0 4e 20 28 20 2b 20 2b 20 36 32 2c 20 63 6f 6c 30  N ( + + 62, col0
22900 20 2f 20 63 6f 6c 31 20 2b 20 2d 20 37 37 2c 20   / col1 + - 77, 
22910 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + col1 )..----..
22920 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
22930 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
22940 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
22950 34 33 62 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  43b7....query I 
22960 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
22970 2d 20 35 32 20 2a 20 2b 20 63 6f 6c 30 20 2b 20  - 52 * + col0 + 
22980 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46  + col1 AS col2 F
22990 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
229a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 34 31 0d 0a 2d  ..----..-2341..-
229b0 33 32 35 31 0d 0a 2d 33 38 33 33 0d 0a 0d 0a 71  3251..-3833....q
229c0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
229d0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
229e0 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53  T * FROM tab2 AS
229f0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
22a00 2b 20 28 20 2d 20 63 6f 6c 32 20 29 20 2a 20 37  + ( - col2 ) * 7
22a10 38 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2d 20  8 NOT BETWEEN - 
22a20 63 6f 6c 32 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d  col2 AND NULL..-
22a30 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
22a40 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
22a50 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
22a60 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
22a70 37 36 36 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20  766..SELECT + - 
22a80 4d 49 4e 28 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c  MIN( ALL - - col
22a90 32 20 29 20 2a 20 53 55 4d 28 20 2d 20 2d 20 31  2 ) * SUM( - - 1
22aa0 30 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53  0 ) FROM tab2 AS
22ab0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 39   cor0..----..-69
22ac0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
22ad0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
22ae0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
22af0 6f 72 74 20 6c 61 62 65 6c 2d 37 36 36 0d 0a 53  ort label-766..S
22b00 45 4c 45 43 54 20 2b 20 2d 20 4d 49 4e 20 28 20  ELECT + - MIN ( 
22b10 41 4c 4c 20 2d 20 2d 20 63 6f 6c 32 20 29 20 2a  ALL - - col2 ) *
22b20 20 53 55 4d 20 28 20 2d 20 2d 20 31 30 20 29 20   SUM ( - - 10 ) 
22b30 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
22b40 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 39 30 0d 0a 0d  0..----..-690...
22b50 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
22b60 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
22b70 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
22b80 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
22b90 6c 2d 37 36 37 0d 0a 53 45 4c 45 43 54 20 63 6f  l-767..SELECT co
22ba0 6c 30 20 2a 20 2d 20 2b 20 32 34 20 46 52 4f 4d  l0 * - + 24 FROM
22bb0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
22bc0 45 52 45 20 4e 55 4c 4c 20 3c 3e 20 43 41 53 54  ERE NULL <> CAST
22bd0 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
22be0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70   )..----....skip
22bf0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
22c00 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
22c10 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
22c20 2d 37 36 37 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  -767..SELECT col
22c30 30 20 2a 20 2d 20 2b 20 32 34 20 46 52 4f 4d 20  0 * - + 24 FROM 
22c40 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
22c50 52 45 20 4e 55 4c 4c 20 3c 3e 20 43 41 53 54 20  RE NULL <> CAST 
22c60 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
22c70 52 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  R )..----....que
22c80 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
22c90 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
22ca0 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54  M tab1 WHERE NOT
22cb0 20 4e 55 4c 4c 20 3c 3d 20 28 20 2b 20 2d 20 35   NULL <= ( + - 5
22cc0 30 20 2f 20 2d 20 63 6f 6c 32 20 2f 20 34 30 20  0 / - col2 / 40 
22cd0 2a 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32 20  * col0 * + col2 
22ce0 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  )..----....onlyi
22cf0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
22d00 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
22d10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
22d20 62 65 6c 2d 37 36 39 0d 0a 53 45 4c 45 43 54 20  bel-769..SELECT 
22d30 44 49 53 54 49 4e 43 54 20 35 37 20 2d 20 43 4f  DISTINCT 57 - CO
22d40 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  UNT( * ) AS col1
22d50 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
22d60 0d 0a 35 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..54....skipif m
22d70 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
22d80 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
22d90 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 36 39  owsort label-769
22da0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
22db0 54 20 35 37 20 2d 20 43 4f 55 4e 54 20 28 20 2a  T 57 - COUNT ( *
22dc0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
22dd0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 35 34 0d 0a  tab0..----..54..
22de0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
22df0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
22e00 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
22e10 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
22e20 65 6c 2d 37 37 30 0d 0a 53 45 4c 45 43 54 20 44  el-770..SELECT D
22e30 49 53 54 49 4e 43 54 20 2d 20 43 41 53 54 28 20  ISTINCT - CAST( 
22e40 2d 20 63 6f 6c 32 20 41 53 20 53 49 47 4e 45 44  - col2 AS SIGNED
22e50 20 29 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d 20   ) + - col2 * - 
22e60 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  - col1 FROM tab0
22e70 20 57 48 45 52 45 20 2b 20 39 34 20 3e 3d 20 4e   WHERE + 94 >= N
22e80 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69  ULL..----....ski
22e90 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
22ea0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
22eb0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
22ec0 6c 2d 37 37 30 0d 0a 53 45 4c 45 43 54 20 44 49  l-770..SELECT DI
22ed0 53 54 49 4e 43 54 20 2d 20 43 41 53 54 20 28 20  STINCT - CAST ( 
22ee0 2d 20 63 6f 6c 32 20 41 53 20 49 4e 54 45 47 45  - col2 AS INTEGE
22ef0 52 20 29 20 2b 20 2d 20 63 6f 6c 32 20 2a 20 2d  R ) + - col2 * -
22f00 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62   - col1 FROM tab
22f10 30 20 57 48 45 52 45 20 2b 20 39 34 20 3e 3d 20  0 WHERE + 94 >= 
22f20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  NULL..----....on
22f30 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56  lyif mysql # DIV
22f40 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
22f50 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
22f60 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37   rowsort label-7
22f70 37 31 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  71..SELECT DISTI
22f80 4e 43 54 20 36 35 20 44 49 56 20 34 38 20 2a 20  NCT 65 DIV 48 * 
22f90 2b 20 63 6f 6c 32 20 2b 20 2d 20 2d 20 63 6f 6c  + col2 + - - col
22fa0 32 20 2a 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 63  2 * + col1 + + c
22fb0 6f 6c 30 20 2b 20 2d 20 63 6f 6c 31 20 41 53 20  ol0 + - col1 AS 
22fc0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col2 FROM tab0..
22fd0 2d 2d 2d 2d 0d 0a 32 38 36 0d 0a 32 39 34 0d 0a  ----..286..294..
22fe0 33 37 38 38 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  3788....skipif m
22ff0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
23000 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
23010 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 37 31  owsort label-771
23020 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
23030 54 20 36 35 20 2f 20 34 38 20 2a 20 2b 20 63 6f  T 65 / 48 * + co
23040 6c 32 20 2b 20 2d 20 2d 20 63 6f 6c 32 20 2a 20  l2 + - - col2 * 
23050 2b 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 30 20  + col1 + + col0 
23060 2b 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  + - col1 AS col2
23070 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
23080 0d 0a 32 38 36 0d 0a 32 39 34 0d 0a 33 37 38 38  ..286..294..3788
23090 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
230a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
230b0 34 31 20 2d 20 2d 20 2b 20 63 6f 6c 32 20 46 52  41 - - + col2 FR
230c0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 36  OM tab2..----..6
230d0 34 0d 0a 38 31 0d 0a 39 39 0d 0a 0d 0a 71 75 65  4..81..99....que
230e0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
230f0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
23100 20 2b 20 63 6f 6c 32 2c 20 63 6f 6c 32 20 41 53   + col2, col2 AS
23110 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
23120 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 4f  WHERE NULL IS NO
23130 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
23140 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
23150 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 34 33  .SELECT ALL - 43
23160 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 2b 20 63 6f   * + - col0 + co
23170 6c 30 20 2b 20 2b 20 2b 20 28 20 2d 20 28 20 2b  l0 + + + ( - ( +
23180 20 63 6f 6c 31 20 29 20 29 20 46 52 4f 4d 20 74   col1 ) ) FROM t
23190 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 39 37 33 0d  ab2..----..1973.
231a0 0a 32 37 33 39 0d 0a 33 32 33 33 0d 0a 0d 0a 71  .2739..3233....q
231b0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
231c0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
231d0 20 63 6f 6c 32 2c 20 2b 20 32 30 20 46 52 4f 4d   col2, + 20 FROM
231e0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d   tab0..----..10.
231f0 0a 32 30 0d 0a 34 37 0d 0a 32 30 0d 0a 39 39 0d  .20..47..20..99.
23200 0a 32 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .20....onlyif my
23210 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
23220 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
23230 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
23240 37 37 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  776..SELECT DIST
23250 49 4e 43 54 20 43 4f 55 4e 54 28 20 2d 20 2b 20  INCT COUNT( - + 
23260 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 31 20 46  col0 ) AS col1 F
23270 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
23280 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..----..3....ski
23290 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
232a0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
232b0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
232c0 6c 2d 37 37 36 0d 0a 53 45 4c 45 43 54 20 44 49  l-776..SELECT DI
232d0 53 54 49 4e 43 54 20 43 4f 55 4e 54 20 28 20 2d  STINCT COUNT ( -
232e0 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c   + col0 ) AS col
232f0 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
23300 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
23310 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
23320 0a 53 45 4c 45 43 54 20 31 37 20 2a 20 2d 20 2b  .SELECT 17 * - +
23330 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d   col2 FROM tab0.
23340 0a 2d 2d 2d 2d 0d 0a 2d 31 36 38 33 0d 0a 2d 31  .----..-1683..-1
23350 37 30 0d 0a 2d 37 39 39 0d 0a 0d 0a 71 75 65 72  70..-799....quer
23360 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23370 45 43 54 20 41 4c 4c 20 2d 20 2d 20 28 20 2d 20  ECT ALL - - ( - 
23380 2b 20 33 32 20 29 20 2f 20 2d 20 63 6f 6c 32 20  + 32 ) / - col2 
23390 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
233a0 30 20 57 48 45 52 45 20 2d 20 28 20 2b 20 2d 20  0 WHERE - ( + - 
233b0 63 6f 6c 30 20 29 20 49 53 20 4e 55 4c 4c 0d 0a  col0 ) IS NULL..
233c0 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ----....query II
233d0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
233e0 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32   DISTINCT - col2
233f0 20 2a 20 2b 20 34 33 20 41 53 20 63 6f 6c 30 2c   * + 43 AS col0,
23400 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 46 52 4f   col2 * col1 FRO
23410 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
23420 2d 0d 0a 2d 31 37 32 30 0d 0a 33 30 38 30 0d 0a  -..-1720..3080..
23430 2d 32 34 39 34 0d 0a 33 38 38 36 0d 0a 2d 39 38  -2494..3886..-98
23440 39 0d 0a 31 31 37 33 0d 0a 0d 0a 71 75 65 72 79  9..1173....query
23450 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
23460 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
23470 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c   WHERE NOT - col
23480 30 20 2b 20 2b 20 63 6f 6c 32 20 49 53 20 4e 4f  0 + + col2 IS NO
23490 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
234a0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
234b0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
234c0 54 20 63 6f 6c 30 2c 20 2d 20 32 32 20 46 52 4f  T col0, - 22 FRO
234d0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  M tab0..----..15
234e0 0d 0a 2d 32 32 0d 0a 38 37 0d 0a 2d 32 32 0d 0a  ..-22..87..-22..
234f0 39 37 0d 0a 2d 32 32 0d 0a 0d 0a 6f 6e 6c 79 69  97..-22....onlyi
23500 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
23510 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
23520 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
23530 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 38 32 0d  wsort label-782.
23540 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 41  .SELECT ALL + CA
23550 53 54 28 20 2d 20 39 36 20 41 53 20 53 49 47 4e  ST( - 96 AS SIGN
23560 45 44 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  ED ) AS col2 FRO
23570 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  M tab0..----..-9
23580 36 0d 0a 2d 39 36 0d 0a 2d 39 36 0d 0a 0d 0a 73  6..-96..-96....s
23590 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
235a0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
235b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
235c0 62 65 6c 2d 37 38 32 0d 0a 53 45 4c 45 43 54 20  bel-782..SELECT 
235d0 41 4c 4c 20 2b 20 43 41 53 54 20 28 20 2d 20 39  ALL + CAST ( - 9
235e0 36 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  6 AS INTEGER ) A
235f0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
23600 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 36 0d 0a 2d 39 36  ..----..-96..-96
23610 0d 0a 2d 39 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-96....onlyif 
23620 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
23630 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
23640 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
23650 6c 2d 37 38 33 0d 0a 53 45 4c 45 43 54 20 34 34  l-783..SELECT 44
23660 20 2a 20 2d 20 2b 20 43 4f 55 4e 54 28 20 2a 20   * - + COUNT( * 
23670 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  ) FROM tab2..---
23680 2d 0d 0a 2d 31 33 32 0d 0a 0d 0a 73 6b 69 70 69  -..-132....skipi
23690 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
236a0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
236b0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
236c0 37 38 33 0d 0a 53 45 4c 45 43 54 20 34 34 20 2a  783..SELECT 44 *
236d0 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   - + COUNT ( * )
236e0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
236f0 0d 0a 2d 31 33 32 0d 0a 0d 0a 71 75 65 72 79 20  ..-132....query 
23700 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
23710 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
23720 32 20 2a 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 63  2 * - col0 * - c
23730 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
23740 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 32 39 35   tab1..----..295
23750 38 38 35 0d 0a 34 32 30 37 38 34 0d 0a 34 37 30  885..420784..470
23760 30 31 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  016....query I r
23770 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 31  owsort..SELECT 1
23780 33 20 2b 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c  3 + col2 + - col
23790 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
237a0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 34 0d 0a  ab0..----..-64..
237b0 31 35 0d 0a 34 35 0d 0a 0d 0a 71 75 65 72 79 20  15..45....query 
237c0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
237d0 54 20 28 20 63 6f 6c 32 20 29 20 2b 20 2d 20 31  T ( col2 ) + - 1
237e0 37 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  7 AS col2 FROM t
237f0 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 0d 0a 33  ab0..----..-7..3
23800 30 0d 0a 38 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  0..82....onlyif 
23810 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
23820 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
23830 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
23840 6c 2d 37 38 37 0d 0a 53 45 4c 45 43 54 20 2b 20  l-787..SELECT + 
23850 2b 20 4d 49 4e 28 20 2d 20 2d 20 63 6f 6c 32 20  + MIN( - - col2 
23860 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
23870 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 0d  or0..----..59...
23880 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
23890 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
238a0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
238b0 6c 61 62 65 6c 2d 37 38 37 0d 0a 53 45 4c 45 43  label-787..SELEC
238c0 54 20 2b 20 2b 20 4d 49 4e 20 28 20 2d 20 2d 20  T + + MIN ( - - 
238d0 63 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31  col2 ) FROM tab1
238e0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
238f0 35 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  59....onlyif mys
23900 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
23910 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
23920 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
23930 20 6c 61 62 65 6c 2d 37 38 38 0d 0a 53 45 4c 45   label-788..SELE
23940 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20  CT DISTINCT + + 
23950 63 6f 6c 30 20 44 49 56 20 2d 20 33 36 20 2b 20  col0 DIV - 36 + 
23960 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 31 20 41 53  col1 * + col1 AS
23970 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
23980 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
23990 31 0d 0a 34 33 39 0d 0a 36 35 36 31 0d 0a 0d 0a  1..439..6561....
239a0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
239b0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
239c0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
239d0 61 62 65 6c 2d 37 38 38 0d 0a 53 45 4c 45 43 54  abel-788..SELECT
239e0 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f   DISTINCT + + co
239f0 6c 30 20 2f 20 2d 20 33 36 20 2b 20 63 6f 6c 31  l0 / - 36 + col1
23a00 20 2a 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c   * + col1 AS col
23a10 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
23a20 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 34  or0..----..-1..4
23a30 33 39 0d 0a 36 35 36 31 0d 0a 0d 0a 71 75 65 72  39..6561....quer
23a40 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
23a50 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b  ECT DISTINCT - +
23a60 20 63 6f 6c 31 20 2a 20 2b 20 34 36 20 2b 20 2d   col1 * + 46 + -
23a70 20 39 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53   90 FROM tab1 AS
23a80 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 32   cor0..----..-22
23a90 35 32 0d 0a 2d 33 32 30 0d 0a 2d 37 33 34 0d 0a  52..-320..-734..
23aa0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
23ab0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
23ac0 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
23ad0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
23ae0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
23af0 61 62 65 6c 2d 37 39 30 0d 0a 53 45 4c 45 43 54  abel-790..SELECT
23b00 20 44 49 53 54 49 4e 43 54 20 53 55 4d 28 20 44   DISTINCT SUM( D
23b10 49 53 54 49 4e 43 54 20 2d 20 43 41 53 54 28 20  ISTINCT - CAST( 
23b20 2b 20 2b 20 63 6f 6c 31 20 41 53 20 53 49 47 4e  + + col1 AS SIGN
23b30 45 44 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31  ED ) ) FROM tab1
23b40 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
23b50 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d  OT NULL IS NULL.
23b60 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
23b70 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
23b80 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
23b90 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
23ba0 62 65 6c 2d 37 39 30 0d 0a 53 45 4c 45 43 54 20  bel-790..SELECT 
23bb0 44 49 53 54 49 4e 43 54 20 53 55 4d 20 28 20 44  DISTINCT SUM ( D
23bc0 49 53 54 49 4e 43 54 20 2d 20 43 41 53 54 20 28  ISTINCT - CAST (
23bd0 20 2b 20 2b 20 63 6f 6c 31 20 41 53 20 49 4e 54   + + col1 AS INT
23be0 45 47 45 52 20 29 20 29 20 46 52 4f 4d 20 74 61  EGER ) ) FROM ta
23bf0 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
23c00 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 55 4c   NOT NULL IS NUL
23c10 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  L..----..NULL...
23c20 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
23c30 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
23c40 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
23c50 6f 72 74 20 6c 61 62 65 6c 2d 37 39 31 0d 0a 53  ort label-791..S
23c60 45 4c 45 43 54 20 41 4c 4c 20 43 4f 55 4e 54 28  ELECT ALL COUNT(
23c70 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f   * ) AS col2 FRO
23c80 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43  M tab2 AS cor0 C
23c90 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 31 20 63  ROSS JOIN tab1 c
23ca0 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a  or1..----..9....
23cb0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
23cc0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
23cd0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
23ce0 61 62 65 6c 2d 37 39 31 0d 0a 53 45 4c 45 43 54  abel-791..SELECT
23cf0 20 41 4c 4c 20 43 4f 55 4e 54 20 28 20 2a 20 29   ALL COUNT ( * )
23d00 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
23d10 62 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b2 AS cor0 CROSS
23d20 20 4a 4f 49 4e 20 74 61 62 31 20 63 6f 72 31 0d   JOIN tab1 cor1.
23d30 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 71 75 65 72  .----..9....quer
23d40 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
23d50 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
23d60 34 39 2c 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  49, + col1 FROM 
23d70 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 39 0d  tab1..----..-49.
23d80 0a 31 34 0d 0a 2d 34 39 0d 0a 34 37 0d 0a 2d 34  .14..-49..47..-4
23d90 39 0d 0a 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  9..5....onlyif m
23da0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
23db0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
23dc0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
23dd0 72 74 20 6c 61 62 65 6c 2d 37 39 33 0d 0a 53 45  rt label-793..SE
23de0 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2b 20  LECT ALL col1 + 
23df0 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
23e00 47 4e 45 44 20 29 20 2d 20 2b 20 28 20 2d 20 2d  GNED ) - + ( - -
23e10 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 31 20   col1 ) AS col1 
23e20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
23e30 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
23e40 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
23e50 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
23e60 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
23e70 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
23e80 6c 2d 37 39 33 0d 0a 53 45 4c 45 43 54 20 41 4c  l-793..SELECT AL
23e90 4c 20 63 6f 6c 31 20 2b 20 43 41 53 54 20 28 20  L col1 + CAST ( 
23ea0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
23eb0 29 20 2d 20 2b 20 28 20 2d 20 2d 20 63 6f 6c 31  ) - + ( - - col1
23ec0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
23ed0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
23ee0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
23ef0 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  NULL....onlyif m
23f00 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
23f10 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
23f20 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
23f30 2d 37 39 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -794..SELECT ALL
23f40 20 2d 20 2d 20 28 20 2d 20 43 4f 55 4e 54 28 20   - - ( - COUNT( 
23f50 2a 20 29 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20  * ) ) col1 FROM 
23f60 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
23f70 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66  --..-3....skipif
23f80 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
23f90 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20  patible..skipif 
23fa0 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73  postgresql # Pos
23fb0 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73  tgreSQL requires
23fc0 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e   AS when renamin
23fd0 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73  g output columns
23fe0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
23ff0 74 20 6c 61 62 65 6c 2d 37 39 34 0d 0a 53 45 4c  t label-794..SEL
24000 45 43 54 20 41 4c 4c 20 2d 20 2d 20 28 20 2d 20  ECT ALL - - ( - 
24010 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 63 6f  COUNT ( * ) ) co
24020 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l1 FROM tab0 AS 
24030 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a  cor0..----..-3..
24040 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
24050 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
24060 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
24070 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54 57 45  WHERE NULL BETWE
24080 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 2b 20 39 31  EN NULL AND + 91
24090 20 2f 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d   / - col1..----.
240a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
240b0 72 74 0d 0a 53 45 4c 45 43 54 20 37 39 20 46 52  rt..SELECT 79 FR
240c0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
240d0 57 48 45 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55  WHERE NULL IS NU
240e0 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 37 39 0d 0a 37 39  LL..----..79..79
240f0 0d 0a 37 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..79....query I 
24100 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
24110 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c  DISTINCT - + col
24120 31 20 2b 20 2b 20 63 6f 6c 30 20 2a 20 2d 20 39  1 + + col0 * - 9
24130 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
24140 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f  or0 WHERE NOT co
24150 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  l2 IS NOT NULL..
24160 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ----....onlyif m
24170 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
24180 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
24190 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
241a0 72 74 20 6c 61 62 65 6c 2d 37 39 38 0d 0a 53 45  rt label-798..SE
241b0 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c  LECT ALL - - col
241c0 32 20 44 49 56 20 63 6f 6c 32 20 41 53 20 63 6f  2 DIV col2 AS co
241d0 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
241e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31  cor0..----..1..1
241f0 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..1....skipif my
24200 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
24210 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
24220 77 73 6f 72 74 20 6c 61 62 65 6c 2d 37 39 38 0d  wsort label-798.
24230 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20  .SELECT ALL - - 
24240 63 6f 6c 32 20 2f 20 63 6f 6c 32 20 41 53 20 63  col2 / col2 AS c
24250 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
24260 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a   cor0..----..1..
24270 31 0d 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  1..1....query I 
24280 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
24290 44 49 53 54 49 4e 43 54 20 37 38 20 2b 20 2b 20  DISTINCT 78 + + 
242a0 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
242b0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
242c0 2d 2d 2d 2d 0d 0a 31 32 35 0d 0a 31 37 37 0d 0a  ----..125..177..
242d0 38 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  88....query I ro
242e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 28 20  wsort..SELECT ( 
242f0 31 31 20 29 20 2b 20 2d 20 34 32 20 46 52 4f 4d  11 ) + - 42 FROM
24300 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
24310 2d 2d 2d 0d 0a 2d 33 31 0d 0a 2d 33 31 0d 0a 2d  ---..-31..-31..-
24320 33 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  31....query I ro
24330 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
24340 39 38 20 2a 20 63 6f 6c 31 20 2b 20 2b 20 63 6f  98 * col1 + + co
24350 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  l2 AS col0 FROM 
24360 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 39 37  tab2..----..-497
24370 35 0d 0a 2d 36 35 30 38 0d 0a 2d 37 35 30 36 0d  5..-6508..-7506.
24380 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
24390 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
243a0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
243b0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30 32 0d  wsort label-802.
243c0 0a 53 45 4c 45 43 54 20 4d 49 4e 28 20 2b 20 34  .SELECT MIN( + 4
243d0 38 20 29 20 2b 20 36 30 20 41 53 20 63 6f 6c 30  8 ) + 60 AS col0
243e0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
243f0 0d 0a 31 30 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..108....skipif 
24400 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
24410 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
24420 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 30  rowsort label-80
24430 32 0d 0a 53 45 4c 45 43 54 20 4d 49 4e 20 28 20  2..SELECT MIN ( 
24440 2b 20 34 38 20 29 20 2b 20 36 30 20 41 53 20 63  + 48 ) + 60 AS c
24450 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
24460 2d 2d 2d 0d 0a 31 30 38 0d 0a 0d 0a 71 75 65 72  ---..108....quer
24470 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
24480 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
24490 32 20 2b 20 2b 20 28 20 63 6f 6c 31 20 29 20 46  2 + + ( col1 ) F
244a0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
244b0 31 31 30 0d 0a 31 31 35 0d 0a 36 34 0d 0a 0d 0a  110..115..64....
244c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
244d0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32  .SELECT ALL col2
244e0 20 2a 20 2d 20 63 6f 6c 31 20 2b 20 2d 20 34 35   * - col1 + - 45
244f0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
24500 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32 31 38 0d  b2..----..-1218.
24510 0a 2d 33 31 32 35 0d 0a 2d 33 39 33 31 0d 0a 0d  .-3125..-3931...
24520 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
24530 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
24540 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
24550 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
24560 6c 2d 38 30 35 0d 0a 53 45 4c 45 43 54 20 44 49  l-805..SELECT DI
24570 53 54 49 4e 43 54 20 63 6f 6c 31 20 2b 20 2b 20  STINCT col1 + + 
24580 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
24590 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
245a0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b1..----..NULL..
245b0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
245c0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
245d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
245e0 20 6c 61 62 65 6c 2d 38 30 35 0d 0a 53 45 4c 45   label-805..SELE
245f0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31  CT DISTINCT col1
24600 20 2b 20 2b 20 2d 20 43 41 53 54 20 28 20 4e 55   + + - CAST ( NU
24610 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
24620 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
24630 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .NULL....onlyif 
24640 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
24650 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
24660 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
24670 6f 72 74 20 6c 61 62 65 6c 2d 38 30 36 0d 0a 53  ort label-806..S
24680 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
24690 20 28 20 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20   ( - CAST( NULL 
246a0 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 2b 20  AS SIGNED ) ) + 
246b0 2d 20 28 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20  - ( col2 ) FROM 
246c0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab1..----..NULL
246d0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
246e0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
246f0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
24700 72 74 20 6c 61 62 65 6c 2d 38 30 36 0d 0a 53 45  rt label-806..SE
24710 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
24720 28 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  ( - CAST ( NULL 
24730 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20 2b  AS INTEGER ) ) +
24740 20 2d 20 28 20 63 6f 6c 32 20 29 20 46 52 4f 4d   - ( col2 ) FROM
24750 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab1..----..NUL
24760 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
24770 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
24780 6f 6c 32 20 2d 20 2d 20 2b 20 34 36 20 46 52 4f  ol2 - - + 46 FRO
24790 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
247a0 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 2d 35 33 0d 0a 33  ----..-1..-53..3
247b0 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
247c0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  sort..SELECT + +
247d0 20 63 6f 6c 31 20 2a 20 2b 20 31 31 20 2b 20 31   col1 * + 11 + 1
247e0 34 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  4 FROM tab0 AS c
247f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 34 35 0d 0a  or0..----..245..
24800 32 35 0d 0a 39 30 35 0d 0a 0d 0a 71 75 65 72 79  25..905....query
24810 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
24820 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
24830 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
24840 4f 54 20 2b 20 38 38 20 4e 4f 54 20 49 4e 20 28  OT + 88 NOT IN (
24850 20 2b 20 39 33 2c 20 63 6f 6c 32 20 29 0d 0a 2d   + 93, col2 )..-
24860 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ---....query II 
24870 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
24880 41 4c 4c 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c 30  ALL col2, - col0
24890 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 46 52 4f 4d   * - + col2 FROM
248a0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d   tab2..----..23.
248b0 0a 31 30 35 38 0d 0a 34 30 0d 0a 32 35 36 30 0d  .1058..40..2560.
248c0 0a 35 38 0d 0a 34 33 35 30 0d 0a 0d 0a 6f 6e 6c  .58..4350....onl
248d0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
248e0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
248f0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
24900 6c 61 62 65 6c 2d 38 31 31 0d 0a 53 45 4c 45 43  label-811..SELEC
24910 54 20 53 55 4d 28 20 44 49 53 54 49 4e 43 54 20  T SUM( DISTINCT 
24920 2b 20 63 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61  + col1 ) FROM ta
24930 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
24940 0d 0a 31 39 35 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..195....skipif 
24950 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
24960 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
24970 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31  rowsort label-81
24980 31 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20 28 20  1..SELECT SUM ( 
24990 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c 31 20  DISTINCT + col1 
249a0 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
249b0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 35 0d 0a  or0..----..195..
249c0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
249d0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
249e0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
249f0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c  ry III rowsort l
24a00 61 62 65 6c 2d 38 31 32 0d 0a 53 45 4c 45 43 54  abel-812..SELECT
24a10 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
24a20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
24a30 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
24a40 49 47 4e 45 44 20 29 20 3d 20 2b 20 2b 20 63 6f  IGNED ) = + + co
24a50 6c 30 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d  l0 - col0..----.
24a60 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
24a70 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
24a80 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
24a90 6f 72 74 20 6c 61 62 65 6c 2d 38 31 32 0d 0a 53  ort label-812..S
24aa0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
24ab0 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
24ac0 4e 4f 54 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  NOT + CAST ( NUL
24ad0 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 3d  L AS INTEGER ) =
24ae0 20 2b 20 2b 20 63 6f 6c 30 20 2d 20 63 6f 6c 30   + + col0 - col0
24af0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
24b00 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
24b10 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
24b20 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
24b30 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
24b40 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
24b50 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  ort..SELECT + co
24b60 6c 31 20 63 6f 6c 32 2c 20 36 33 20 46 52 4f 4d  l1 col2, 63 FROM
24b70 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
24b80 2d 2d 2d 0d 0a 31 34 0d 0a 36 33 0d 0a 34 37 0d  ---..14..63..47.
24b90 0a 36 33 0d 0a 35 0d 0a 36 33 0d 0a 0d 0a 71 75  .63..5..63....qu
24ba0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
24bb0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
24bc0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
24bd0 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20 42  WHERE ( NULL ) B
24be0 45 54 57 45 45 4e 20 63 6f 6c 30 20 41 4e 44 20  ETWEEN col0 AND 
24bf0 2b 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a  + - col0..----..
24c00 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
24c10 74 0d 0a 53 45 4c 45 43 54 20 28 20 2b 20 31 38  t..SELECT ( + 18
24c20 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
24c30 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 0d 0a  cor0..----..18..
24c40 31 38 0d 0a 31 38 0d 0a 0d 0a 73 6b 69 70 69 66  18..18....skipif
24c50 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f   postgresql # Po
24c60 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72 65  stgreSQL require
24c70 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69  s AS when renami
24c80 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e  ng output column
24c90 73 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73  s..query II rows
24ca0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38 34  ort..SELECT + 84
24cb0 2c 20 2b 20 36 36 20 63 6f 6c 32 20 46 52 4f 4d  , + 66 col2 FROM
24cc0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
24cd0 2d 2d 2d 0d 0a 38 34 0d 0a 36 36 0d 0a 38 34 0d  ---..84..66..84.
24ce0 0a 36 36 0d 0a 38 34 0d 0a 36 36 0d 0a 0d 0a 6f  .66..84..66....o
24cf0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
24d00 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
24d10 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
24d20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
24d30 2d 38 31 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -817..SELECT DIS
24d40 54 49 4e 43 54 20 2b 20 38 30 20 41 53 20 63 6f  TINCT + 80 AS co
24d50 6c 32 2c 20 43 41 53 54 28 20 2d 20 63 6f 6c 32  l2, CAST( - col2
24d60 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
24d70 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
24d80 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 30  S cor0..----..80
24d90 0d 0a 2d 32 33 0d 0a 38 30 0d 0a 2d 34 30 0d 0a  ..-23..80..-40..
24da0 38 30 0d 0a 2d 35 38 0d 0a 0d 0a 73 6b 69 70 69  80..-58....skipi
24db0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
24dc0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
24dd0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
24de0 2d 38 31 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  -817..SELECT DIS
24df0 54 49 4e 43 54 20 2b 20 38 30 20 41 53 20 63 6f  TINCT + 80 AS co
24e00 6c 32 2c 20 43 41 53 54 20 28 20 2d 20 63 6f 6c  l2, CAST ( - col
24e10 32 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  2 AS INTEGER ) A
24e20 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
24e30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
24e40 38 30 0d 0a 2d 32 33 0d 0a 38 30 0d 0a 2d 34 30  80..-23..80..-40
24e50 0d 0a 38 30 0d 0a 2d 35 38 0d 0a 0d 0a 71 75 65  ..80..-58....que
24e60 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
24e70 45 4c 45 43 54 20 63 6f 6c 32 20 41 53 20 63 6f  ELECT col2 AS co
24e80 6c 30 2c 20 35 32 20 2a 20 63 6f 6c 31 20 46 52  l0, 52 * col1 FR
24e90 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
24ea0 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 32 36 35 32 0d  .----..23..2652.
24eb0 0a 34 30 0d 0a 34 30 30 34 0d 0a 35 38 0d 0a 33  .40..4004..58..3
24ec0 34 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  484....onlyif my
24ed0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
24ee0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
24ef0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
24f00 72 74 20 6c 61 62 65 6c 2d 38 31 39 0d 0a 53 45  rt label-819..SE
24f10 4c 45 43 54 20 2b 20 43 41 53 54 28 20 4e 55 4c  LECT + CAST( NUL
24f20 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
24f30 20 63 6f 6c 30 2c 20 63 6f 6c 32 20 46 52 4f 4d   col0, col2 FROM
24f40 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
24f50 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31 30 0d 0a 4e  ---..NULL..10..N
24f60 55 4c 4c 0d 0a 34 37 0d 0a 4e 55 4c 4c 0d 0a 39  ULL..47..NULL..9
24f70 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
24f80 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
24f90 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  le..query II row
24fa0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 31 39 0d 0a  sort label-819..
24fb0 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28 20  SELECT + CAST ( 
24fc0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
24fd0 29 20 41 53 20 63 6f 6c 30 2c 20 63 6f 6c 32 20  ) AS col0, col2 
24fe0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
24ff0 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31  0..----..NULL..1
25000 30 0d 0a 4e 55 4c 4c 0d 0a 34 37 0d 0a 4e 55 4c  0..NULL..47..NUL
25010 4c 0d 0a 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49  L..99....query I
25020 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
25030 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41  CT * FROM tab2 A
25040 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
25050 20 2d 20 63 6f 6c 30 20 2f 20 2b 20 31 34 20 49   - col0 / + 14 I
25060 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
25070 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
25080 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c  wsort..SELECT AL
25090 4c 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  L * FROM tab0 AS
250a0 20 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 30   cor0 WHERE col0
250b0 20 2b 20 2d 20 63 6f 6c 31 20 49 53 20 4e 4f 54   + - col1 IS NOT
250c0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76   NULL..----..9 v
250d0 61 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f  alues hashing to
250e0 20 63 34 62 34 32 37 36 35 64 66 66 39 34 65 61   c4b42765dff94ea
250f0 61 61 34 36 30 34 30 65 35 33 37 66 62 34 33 62  aa46040e537fb43b
25100 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  7....onlyif mysq
25110 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
25120 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
25130 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 32  rowsort label-82
25140 32 0d 0a 53 45 4c 45 43 54 20 2b 20 4d 49 4e 28  2..SELECT + MIN(
25150 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   - col1 ) AS col
25160 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  1 FROM tab2 AS c
25170 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 37 0d 0a  or0..----..-77..
25180 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
25190 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
251a0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
251b0 20 6c 61 62 65 6c 2d 38 32 32 0d 0a 53 45 4c 45   label-822..SELE
251c0 43 54 20 2b 20 4d 49 4e 20 28 20 2d 20 63 6f 6c  CT + MIN ( - col
251d0 31 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  1 ) AS col1 FROM
251e0 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
251f0 2d 2d 2d 0d 0a 2d 37 37 0d 0a 0d 0a 71 75 65 72  ---..-77....quer
25200 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
25210 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2d  ECT DISTINCT - -
25220 20 38 34 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d   84 AS col1 FROM
25230 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
25240 0d 0a 38 34 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..84....query I 
25250 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
25260 41 4c 4c 20 2d 20 28 20 2b 20 2b 20 35 31 20 29  ALL - ( + + 51 )
25270 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
25280 0d 0a 2d 35 31 0d 0a 2d 35 31 0d 0a 2d 35 31 0d  ..-51..-51..-51.
25290 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
252a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
252b0 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e  ROM tab0 WHERE N
252c0 4f 54 20 2d 20 2b 20 33 37 20 49 53 20 4e 4f 54  OT - + 37 IS NOT
252d0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
252e0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
252f0 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20  ..SELECT * FROM 
25300 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 28  tab0 WHERE NOT (
25310 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20 63   NULL NOT IN ( c
25320 6f 6c 31 2c 20 2b 20 63 6f 6c 30 20 2a 20 2d 20  ol1, + col0 * - 
25330 63 6f 6c 32 20 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a  col2 ) )..----..
25340 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
25350 74 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2d 20  t..SELECT - ( - 
25360 2d 20 37 33 20 29 20 41 53 20 63 6f 6c 31 20 46  - 73 ) AS col1 F
25370 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
25380 2d 37 33 0d 0a 2d 37 33 0d 0a 2d 37 33 0d 0a 0d  -73..-73..-73...
25390 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
253a0 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31 20  ..SELECT + col1 
253b0 2a 20 2d 20 2d 20 37 32 20 41 53 20 63 6f 6c 32  * - - 72 AS col2
253c0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
253d0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 36 37 32 0d 0a  r0..----..3672..
253e0 34 38 32 34 0d 0a 35 35 34 34 0d 0a 0d 0a 71 75  4824..5544....qu
253f0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
25400 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
25410 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
25420 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20 63 6f  WHERE NOT ( - co
25430 6c 30 20 2a 20 63 6f 6c 30 20 49 53 20 4e 4f 54  l0 * col0 IS NOT
25440 20 4e 55 4c 4c 20 29 20 4f 52 20 2d 20 63 6f 6c   NULL ) OR - col
25450 31 20 42 45 54 57 45 45 4e 20 2d 20 2d 20 63 6f  1 BETWEEN - - co
25460 6c 30 20 2b 20 2b 20 31 39 20 41 4e 44 20 2d 20  l0 + + 19 AND - 
25470 2d 20 63 6f 6c 30 20 2a 20 39 37 0d 0a 2d 2d 2d  - col0 * 97..---
25480 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
25490 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
254a0 20 2b 20 33 39 20 2a 20 2d 20 2d 20 63 6f 6c 32   + 39 * - - col2
254b0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
254c0 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
254d0 0d 0a 31 38 33 33 0d 0a 33 38 36 31 0d 0a 33 39  ..1833..3861..39
254e0 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
254f0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
25500 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
25510 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
25520 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
25530 72 74 20 6c 61 62 65 6c 2d 38 33 31 0d 0a 53 45  rt label-831..SE
25540 4c 45 43 54 20 2b 20 2b 20 43 4f 55 4e 54 28 20  LECT + + COUNT( 
25550 2a 20 29 20 2a 20 38 34 20 2d 20 2d 20 35 2c 20  * ) * 84 - - 5, 
25560 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
25570 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
25580 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20  cor0 WHERE col1 
25590 2b 20 2b 20 43 41 53 54 28 20 2b 20 2d 20 63 6f  + + CAST( + - co
255a0 6c 30 20 41 53 20 53 49 47 4e 45 44 20 29 20 49  l0 AS SIGNED ) I
255b0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
255c0 0d 0a 32 35 37 0d 0a 33 0d 0a 0d 0a 73 6b 69 70  ..257..3....skip
255d0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
255e0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
255f0 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
25600 6c 2d 38 33 31 0d 0a 53 45 4c 45 43 54 20 2b 20  l-831..SELECT + 
25610 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20  + COUNT ( * ) * 
25620 38 34 20 2d 20 2d 20 35 2c 20 43 4f 55 4e 54 20  84 - - 5, COUNT 
25630 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
25640 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
25650 57 48 45 52 45 20 63 6f 6c 31 20 2b 20 2b 20 43  WHERE col1 + + C
25660 41 53 54 20 28 20 2b 20 2d 20 63 6f 6c 30 20 41  AST ( + - col0 A
25670 53 20 49 4e 54 45 47 45 52 20 29 20 49 53 20 4e  S INTEGER ) IS N
25680 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 32  OT NULL..----..2
25690 35 37 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49  57..3....query I
256a0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
256b0 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 28 20   DISTINCT - - ( 
256c0 30 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  0 ) FROM tab1 AS
256d0 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
256e0 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54 20  ( NULL ) IS NOT 
256f0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d  NULL..----..0...
25700 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
25710 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
25720 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  NCT * FROM tab0 
25730 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20  AS cor0 WHERE + 
25740 34 36 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  46 IS NOT NULL..
25750 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68  ----..9 values h
25760 61 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37  ashing to c4b427
25770 36 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30  65dff94eaaa46040
25780 65 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75  e537fb43b7....qu
25790 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
257a0 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2b 20 28  ELECT - col2 + (
257b0 20 28 20 2b 20 2b 20 63 6f 6c 32 20 29 20 29 20   ( + + col2 ) ) 
257c0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
257d0 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30  1..----..0..0..0
257e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
257f0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
25800 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
25810 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
25820 61 62 65 6c 2d 38 33 35 0d 0a 53 45 4c 45 43 54  abel-835..SELECT
25830 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 2d 20 2d 20   ALL col2 + - - 
25840 28 20 2d 20 37 31 20 29 20 2a 20 2b 20 2d 20 43  ( - 71 ) * + - C
25850 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
25860 4e 45 44 20 29 20 41 53 20 63 6f 6c 30 20 46 52  NED ) AS col0 FR
25870 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
25880 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
25890 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
258a0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
258b0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
258c0 74 20 6c 61 62 65 6c 2d 38 33 35 0d 0a 53 45 4c  t label-835..SEL
258d0 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 2d  ECT ALL col2 + -
258e0 20 2d 20 28 20 2d 20 37 31 20 29 20 2a 20 2b 20   - ( - 71 ) * + 
258f0 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
25900 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
25910 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
25920 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
25930 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
25940 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
25950 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
25960 2b 20 2b 20 2d 20 31 39 20 41 53 20 63 6f 6c 32  + + - 19 AS col2
25970 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
25980 0d 0a 2d 31 30 34 0d 0a 2d 31 31 30 0d 0a 2d 37  ..-104..-110..-7
25990 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
259a0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
259b0 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
259c0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
259d0 6c 61 62 65 6c 2d 38 33 37 0d 0a 53 45 4c 45 43  label-837..SELEC
259e0 54 20 2b 20 43 41 53 54 28 20 2d 20 2d 20 63 6f  T + CAST( - - co
259f0 6c 31 20 41 53 20 53 49 47 4e 45 44 20 29 20 63  l1 AS SIGNED ) c
25a00 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
25a10 2d 2d 2d 0d 0a 35 31 0d 0a 36 37 0d 0a 37 37 0d  ---..51..67..77.
25a20 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
25a30 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
25a40 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
25a50 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
25a60 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
25a70 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
25a80 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
25a90 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
25aa0 2d 38 33 37 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -837..SELECT + C
25ab0 41 53 54 20 28 20 2d 20 2d 20 63 6f 6c 31 20 41  AST ( - - col1 A
25ac0 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f 6c 30  S INTEGER ) col0
25ad0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
25ae0 0d 0a 35 31 0d 0a 36 37 0d 0a 37 37 0d 0a 0d 0a  ..51..67..77....
25af0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
25b00 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
25b10 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
25b20 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
25b30 2d 38 33 38 0d 0a 53 45 4c 45 43 54 20 44 49 53  -838..SELECT DIS
25b40 54 49 4e 43 54 20 2b 20 2d 20 43 41 53 54 28 20  TINCT + - CAST( 
25b50 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
25b60 20 2a 20 2d 20 28 20 2d 20 2b 20 63 6f 6c 30 20   * - ( - + col0 
25b70 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
25b80 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
25b90 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
25ba0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
25bb0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
25bc0 74 20 6c 61 62 65 6c 2d 38 33 38 0d 0a 53 45 4c  t label-838..SEL
25bd0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2d  ECT DISTINCT + -
25be0 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
25bf0 49 4e 54 45 47 45 52 20 29 20 2a 20 2d 20 28 20  INTEGER ) * - ( 
25c00 2d 20 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  - + col0 ) FROM 
25c10 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
25c20 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  --..NULL....quer
25c30 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
25c40 45 43 54 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 28  ECT + col1 * - (
25c50 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c   + col0 ) AS col
25c60 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
25c70 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32 35 0d  or0..----..-425.
25c80 0a 2d 34 32 37 37 0d 0a 2d 37 31 34 0d 0a 0d 0a  .-4277..-714....
25c90 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
25ca0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
25cb0 20 28 20 2d 20 2d 20 38 32 20 29 20 2a 20 2b 20   ( - - 82 ) * + 
25cc0 36 37 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20  67 AS col0 FROM 
25cd0 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
25ce0 2d 2d 0d 0a 35 34 39 34 0d 0a 0d 0a 71 75 65 72  --..5494....quer
25cf0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
25d00 45 43 54 20 63 6f 6c 31 20 2a 20 2d 20 2d 20 34  ECT col1 * - - 4
25d10 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
25d20 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 30 34 0d 0a 32  r0..----..204..2
25d30 36 38 0d 0a 33 30 38 0d 0a 0d 0a 71 75 65 72 79  68..308....query
25d40 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
25d50 43 54 20 28 20 2b 20 2b 20 37 34 20 29 20 2a 20  CT ( + + 74 ) * 
25d60 2d 20 63 6f 6c 31 20 2b 20 2d 20 2b 20 63 6f 6c  - col1 + - + col
25d70 32 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  2 FROM tab2 cor0
25d80 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 37 39 37 0d 0a 2d  ..----..-3797..-
25d90 35 30 31 36 0d 0a 2d 35 37 33 38 0d 0a 0d 0a 71  5016..-5738....q
25da0 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
25db0 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46  ..SELECT ALL * F
25dc0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
25dd0 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20   WHERE NOT NULL 
25de0 3d 20 2b 20 63 6f 6c 31 20 2f 20 2b 20 63 6f 6c  = + col1 / + col
25df0 31 20 2a 20 39 34 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  1 * 94..----....
25e00 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
25e10 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
25e20 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
25e30 72 74 20 6c 61 62 65 6c 2d 38 34 34 0d 0a 53 45  rt label-844..SE
25e40 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
25e50 2b 20 32 30 20 2b 20 2d 20 53 55 4d 28 20 41 4c  + 20 + - SUM( AL
25e60 4c 20 2b 20 38 38 20 29 20 46 52 4f 4d 20 74 61  L + 88 ) FROM ta
25e70 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
25e80 0d 0a 2d 32 38 34 0d 0a 0d 0a 73 6b 69 70 69 66  ..-284....skipif
25e90 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
25ea0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
25eb0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
25ec0 34 34 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  44..SELECT DISTI
25ed0 4e 43 54 20 2d 20 2b 20 32 30 20 2b 20 2d 20 53  NCT - + 20 + - S
25ee0 55 4d 20 28 20 41 4c 4c 20 2b 20 38 38 20 29 20  UM ( ALL + 88 ) 
25ef0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
25f00 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 38 34 0d 0a 0d  0..----..-284...
25f10 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
25f20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
25f30 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
25f40 6f 72 74 20 6c 61 62 65 6c 2d 38 34 35 0d 0a 53  ort label-845..S
25f50 45 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29  ELECT COUNT( * )
25f60 20 2d 20 2d 20 2d 20 38 37 20 41 53 20 63 6f 6c   - - - 87 AS col
25f70 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  2 FROM tab2..---
25f80 2d 0d 0a 2d 38 34 0d 0a 0d 0a 73 6b 69 70 69 66  -..-84....skipif
25f90 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
25fa0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
25fb0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
25fc0 34 35 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  45..SELECT COUNT
25fd0 20 28 20 2a 20 29 20 2d 20 2d 20 2d 20 38 37 20   ( * ) - - - 87 
25fe0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
25ff0 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 34 0d 0a 0d 0a  2..----..-84....
26000 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
26010 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 39 35  .SELECT ALL - 95
26020 20 2a 20 2b 20 63 6f 6c 30 20 2a 20 32 20 2b 20   * + col0 * 2 + 
26030 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  + - col1 FROM ta
26040 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 31 35 35  b1..----..-16155
26050 0d 0a 2d 31 37 33 33 37 0d 0a 2d 39 37 30 34 0d  ..-17337..-9704.
26060 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
26070 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53  # CAST syntax: S
26080 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75  IGNED type: ..qu
26090 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
260a0 6c 61 62 65 6c 2d 38 34 37 0d 0a 53 45 4c 45 43  label-847..SELEC
260b0 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
260c0 45 52 45 20 4e 55 4c 4c 20 3c 3e 20 2b 20 2b 20  ERE NULL <> + + 
260d0 43 41 53 54 28 20 2d 20 63 6f 6c 32 20 41 53 20  CAST( - col2 AS 
260e0 53 49 47 4e 45 44 20 29 0d 0a 2d 2d 2d 2d 0d 0a  SIGNED )..----..
260f0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
26100 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
26110 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
26120 72 74 20 6c 61 62 65 6c 2d 38 34 37 0d 0a 53 45  rt label-847..SE
26130 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  LECT * FROM tab0
26140 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3e 20 2b   WHERE NULL <> +
26150 20 2b 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 32   + CAST ( - col2
26160 20 41 53 20 49 4e 54 45 47 45 52 20 29 0d 0a 2d   AS INTEGER )..-
26170 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ---....onlyif my
26180 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
26190 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
261a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
261b0 74 20 6c 61 62 65 6c 2d 38 34 38 0d 0a 53 45 4c  t label-848..SEL
261c0 45 43 54 20 2d 20 37 31 20 44 49 56 20 2d 20 63  ECT - 71 DIV - c
261d0 6f 6c 30 20 2d 20 2d 20 2b 20 63 6f 6c 32 20 41  ol0 - - + col2 A
261e0 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
261f0 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 35 31 0d 0a  ..----..10..51..
26200 39 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  99....skipif mys
26210 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
26220 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
26230 73 6f 72 74 20 6c 61 62 65 6c 2d 38 34 38 0d 0a  sort label-848..
26240 53 45 4c 45 43 54 20 2d 20 37 31 20 2f 20 2d 20  SELECT - 71 / - 
26250 63 6f 6c 30 20 2d 20 2d 20 2b 20 63 6f 6c 32 20  col0 - - + col2 
26260 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
26270 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 35 31 0d  0..----..10..51.
26280 0a 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .99....query II 
26290 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
262a0 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 32 20  DISTINCT - col2 
262b0 41 53 20 63 6f 6c 30 2c 20 2b 20 38 36 20 46 52  AS col0, + 86 FR
262c0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
262d0 31 30 0d 0a 38 36 0d 0a 2d 34 37 0d 0a 38 36 0d  10..86..-47..86.
262e0 0a 2d 39 39 0d 0a 38 36 0d 0a 0d 0a 6f 6e 6c 79  .-99..86....only
262f0 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
26300 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
26310 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
26320 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 35 30  owsort label-850
26330 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63  ..SELECT ALL + c
26340 6f 6c 30 20 44 49 56 20 2d 20 2b 20 39 31 20 2d  ol0 DIV - + 91 -
26350 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32   + col1 * - col2
26360 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
26370 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31 37 33 0d 0a  b2..----..1173..
26380 33 30 38 30 0d 0a 33 38 38 36 0d 0a 0d 0a 73 6b  3080..3886....sk
26390 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
263a0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
263b0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
263c0 65 6c 2d 38 35 30 0d 0a 53 45 4c 45 43 54 20 41  el-850..SELECT A
263d0 4c 4c 20 2b 20 63 6f 6c 30 20 2f 20 2d 20 2b 20  LL + col0 / - + 
263e0 39 31 20 2d 20 2b 20 63 6f 6c 31 20 2a 20 2d 20  91 - + col1 * - 
263f0 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f  col2 AS col2 FRO
26400 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 31  M tab2..----..11
26410 37 33 0d 0a 33 30 38 30 0d 0a 33 38 38 36 0d 0a  73..3080..3886..
26420 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
26430 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
26440 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f  OM tab1 WHERE NO
26450 54 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f  T ( NULL ) IS NO
26460 54 20 4e 55 4c 4c 20 4f 52 20 4e 55 4c 4c 20 3e  T NULL OR NULL >
26470 20 2b 20 39 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61   + 9..----..9 va
26480 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
26490 63 36 63 30 61 34 31 31 31 62 33 36 64 30 34 64  c6c0a4111b36d04d
264a0 62 63 38 31 31 61 31 31 65 34 64 35 34 63 61 64  bc811a11e4d54cad
264b0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 49 49 49  ....query IIIIII
264c0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
264d0 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
264e0 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
264f0 74 61 62 32 20 41 53 20 63 6f 72 31 20 57 48 45  tab2 AS cor1 WHE
26500 52 45 20 4e 4f 54 20 2b 20 32 35 20 49 53 20 4e  RE NOT + 25 IS N
26510 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  OT NULL..----...
26520 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
26530 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 2d 20 2b  ..SELECT + ( - +
26540 20 31 32 20 29 20 2a 20 2b 20 2d 20 36 30 20 41   12 ) * + - 60 A
26550 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
26560 0d 0a 2d 2d 2d 2d 0d 0a 37 32 30 0d 0a 37 32 30  ..----..720..720
26570 0d 0a 37 32 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..720....query I
26580 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
26590 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 38 30 20 2d   - - col1 * 80 -
265a0 20 63 6f 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c 30   col0 + + + col0
265b0 20 2d 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 63   - - + col1 AS c
265c0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol0 FROM tab2 WH
265d0 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 20 2b  ERE NOT NULL > +
265e0 20 2b 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d   + col2..----...
265f0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
26600 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
26610 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
26620 20 28 20 4e 4f 54 20 63 6f 6c 32 20 49 53 20 4e   ( NOT col2 IS N
26630 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71  ULL )..----....q
26640 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
26650 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
26660 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  T * FROM tab1 co
26670 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c  r0 WHERE NOT col
26680 32 20 2b 20 2b 20 63 6f 6c 30 20 3c 3e 20 2b 20  2 + + col0 <> + 
26690 2b 20 36 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  + 6..----....que
266a0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
266b0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
266c0 63 6f 6c 32 20 2f 20 2b 20 2d 20 28 20 2d 20 63  col2 / + - ( - c
266d0 6f 6c 30 20 29 20 2d 20 2d 20 63 6f 6c 30 20 46  ol0 ) - - col0 F
266e0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
266f0 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29 20   WHERE ( NULL ) 
26700 3e 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  >= NULL..----...
26710 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
26720 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20  ..SELECT - col2 
26730 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
26740 31 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  1 cor0 WHERE NOT
26750 20 28 20 4e 55 4c 4c 20 29 20 49 53 20 4e 4f 54   ( NULL ) IS NOT
26760 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 39   NULL..----..-59
26770 0d 0a 2d 36 38 0d 0a 2d 39 36 0d 0a 0d 0a 71 75  ..-68..-96....qu
26780 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
26790 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
267a0 20 2d 20 38 35 20 46 52 4f 4d 20 74 61 62 31 20   - 85 FROM tab1 
267b0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 35 0d 0a  cor0..----..85..
267c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
267d0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
267e0 43 54 20 2d 20 2d 20 39 35 20 41 53 20 63 6f 6c  CT - - 95 AS col
267f0 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
26800 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 35 0d 0a 0d  or0..----..95...
26810 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
26820 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
26830 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
26840 6f 72 74 20 6c 61 62 65 6c 2d 38 36 31 0d 0a 53  ort label-861..S
26850 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
26860 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 38 39   COUNT( * ) + 89
26870 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
26880 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
26890 0d 0a 39 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..92....skipif m
268a0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
268b0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
268c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 31  owsort label-861
268d0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
268e0 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  T + COUNT ( * ) 
268f0 2b 20 38 39 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 89 AS col0 FRO
26900 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
26910 2d 2d 2d 2d 0d 0a 39 32 0d 0a 0d 0a 6f 6e 6c 79  ----..92....only
26920 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
26930 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
26940 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
26950 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 32  owsort label-862
26960 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 43 41 53  ..SELECT - + CAS
26970 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
26980 44 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  D ) col2 FROM ta
26990 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
269a0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
269b0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
269c0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
269d0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
269e0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
269f0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
26a00 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
26a10 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
26a20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
26a30 62 65 6c 2d 38 36 32 0d 0a 53 45 4c 45 43 54 20  bel-862..SELECT 
26a40 2d 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  - + CAST ( NULL 
26a50 41 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f 6c  AS INTEGER ) col
26a60 32 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  2 FROM tab0 AS c
26a70 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
26a80 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71  .NULL..NULL....q
26a90 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
26aa0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
26ab0 63 6f 6c 30 20 2b 20 2b 20 37 30 20 2b 20 28 20  col0 + + 70 + ( 
26ac0 2b 20 2d 20 31 32 20 29 20 2b 20 2d 20 36 33 20  + - 12 ) + - 63 
26ad0 2a 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 2b 20 63  * + col1 * + + c
26ae0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
26af0 2d 2d 2d 0d 0a 2d 31 33 30 38 35 0d 0a 2d 32 33  ---..-13085..-23
26b00 39 37 36 38 0d 0a 2d 36 30 38 32 0d 0a 0d 0a 73  9768..-6082....s
26b10 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
26b20 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
26b30 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
26b40 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
26b50 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
26b60 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
26b70 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 30 2c   - col0 AS col0,
26b80 20 37 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 37 30   7 + + col2 + 70
26b90 20 2a 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 63 6f   * - col2 * - co
26ba0 6c 31 20 2a 20 2d 20 2b 20 63 6f 6c 32 20 2a 20  l1 * - + col2 * 
26bb0 2d 20 38 33 20 63 6f 6c 30 20 46 52 4f 4d 20 74  - 83 col0 FROM t
26bc0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 36 0d 0a  ab2..----..-46..
26bd0 31 35 36 37 34 38 30 32 30 0d 0a 2d 36 34 0d 0a  156748020..-64..
26be0 37 31 35 37 39 32 30 34 37 0d 0a 2d 37 35 0d 0a  715792047..-75..
26bf0 31 33 30 39 35 30 34 33 34 35 0d 0a 0d 0a 71 75  1309504345....qu
26c00 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
26c10 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
26c20 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45   * FROM tab1 WHE
26c30 52 45 20 2d 20 2b 20 63 6f 6c 31 20 2f 20 2b 20  RE - + col1 / + 
26c40 2d 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 31 20  - col0 + - col1 
26c50 2b 20 2d 20 63 6f 6c 31 20 2d 20 2d 20 2b 20 38  + - col1 - - + 8
26c60 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  1 IS NULL..----.
26c70 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
26c80 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
26c90 4e 43 54 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c  NCT col1 * - col
26ca0 32 20 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20  2 + + col2 FROM 
26cb0 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 2d  tab2 WHERE NOT -
26cc0 20 2b 20 31 37 20 49 53 20 4e 55 4c 4c 0d 0a 2d   + 17 IS NULL..-
26cd0 2d 2d 2d 0d 0a 2d 31 31 35 30 0d 0a 2d 33 30 34  ---..-1150..-304
26ce0 30 0d 0a 2d 33 38 32 38 0d 0a 0d 0a 6f 6e 6c 79  0..-3828....only
26cf0 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
26d00 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
26d10 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
26d20 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36 37  owsort label-867
26d30 0d 0a 53 45 4c 45 43 54 20 34 34 20 2b 20 2b 20  ..SELECT 44 + + 
26d40 43 41 53 54 28 20 2b 20 43 41 53 54 28 20 4e 55  CAST( + CAST( NU
26d50 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41  LL AS SIGNED ) A
26d60 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
26d70 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab1..----..NULL
26d80 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
26d90 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
26da0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
26db0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
26dc0 61 62 65 6c 2d 38 36 37 0d 0a 53 45 4c 45 43 54  abel-867..SELECT
26dd0 20 34 34 20 2b 20 2b 20 43 41 53 54 20 28 20 2b   44 + + CAST ( +
26de0 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
26df0 49 4e 54 45 47 45 52 20 29 20 41 53 20 49 4e 54  INTEGER ) AS INT
26e00 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61 62 31  EGER ) FROM tab1
26e10 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
26e20 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  LL..NULL....only
26e30 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
26e40 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
26e50 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49  ype: ..query III
26e60 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
26e70 36 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  68..SELECT ALL *
26e80 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
26e90 20 4e 4f 54 20 2d 20 2d 20 33 38 20 2b 20 43 41   NOT - - 38 + CA
26ea0 53 54 28 20 2b 20 63 6f 6c 32 20 41 53 20 53 49  ST( + col2 AS SI
26eb0 47 4e 45 44 20 29 20 3e 20 2d 20 63 6f 6c 30 0d  GNED ) > - col0.
26ec0 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20  .----....skipif 
26ed0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
26ee0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
26ef0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
26f00 38 36 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  868..SELECT ALL 
26f10 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
26f20 45 20 4e 4f 54 20 2d 20 2d 20 33 38 20 2b 20 43  E NOT - - 38 + C
26f30 41 53 54 20 28 20 2b 20 63 6f 6c 32 20 41 53 20  AST ( + col2 AS 
26f40 49 4e 54 45 47 45 52 20 29 20 3e 20 2d 20 63 6f  INTEGER ) > - co
26f50 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  l0..----....only
26f60 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
26f70 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
26f80 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
26f90 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 36  rowsort label-86
26fa0 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  9..SELECT ALL co
26fb0 6c 30 2c 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  l0, CAST( NULL A
26fc0 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f  S SIGNED ) AS co
26fd0 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
26fe0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a  cor0..----..46..
26ff0 4e 55 4c 4c 0d 0a 36 34 0d 0a 4e 55 4c 4c 0d 0a  NULL..64..NULL..
27000 37 35 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  75..NULL....skip
27010 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
27020 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
27030 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
27040 6c 2d 38 36 39 0d 0a 53 45 4c 45 43 54 20 41 4c  l-869..SELECT AL
27050 4c 20 63 6f 6c 30 2c 20 43 41 53 54 20 28 20 4e  L col0, CAST ( N
27060 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
27070 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
27080 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
27090 0d 0a 34 36 0d 0a 4e 55 4c 4c 0d 0a 36 34 0d 0a  ..46..NULL..64..
270a0 4e 55 4c 4c 0d 0a 37 35 0d 0a 4e 55 4c 4c 0d 0a  NULL..75..NULL..
270b0 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
270c0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
270d0 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  INCT * FROM tab0
270e0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
270f0 4f 54 20 35 36 20 2b 20 2d 20 63 6f 6c 32 20 3e  OT 56 + - col2 >
27100 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d   - col0..----...
27110 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
27120 0d 0a 53 45 4c 45 43 54 20 2b 20 38 35 20 2d 20  ..SELECT + 85 - 
27130 2d 20 2d 20 39 36 20 46 52 4f 4d 20 74 61 62 30  - - 96 FROM tab0
27140 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 28   AS cor0 WHERE (
27150 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54   NOT NULL IS NOT
27160 20 4e 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d   NULL )..----..-
27170 31 31 0d 0a 2d 31 31 0d 0a 2d 31 31 0d 0a 0d 0a  11..-11..-11....
27180 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
27190 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f  .SELECT ALL + co
271a0 6c 31 20 2a 20 2b 20 63 6f 6c 30 20 2b 20 2b 20  l1 * + col0 + + 
271b0 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46  + col0 AS col2 F
271c0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
271d0 0d 0a 2d 2d 2d 2d 0d 0a 34 33 36 38 0d 0a 35 31  ..----..4368..51
271e0 30 0d 0a 37 36 35 0d 0a 0d 0a 6f 6e 6c 79 69 66  0..765....onlyif
271f0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
27200 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
27210 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
27220 65 6c 2d 38 37 33 0d 0a 53 45 4c 45 43 54 20 44  el-873..SELECT D
27230 49 53 54 49 4e 43 54 20 2b 20 2b 20 43 4f 55 4e  ISTINCT + + COUN
27240 54 28 20 2a 20 29 20 2a 20 2b 20 4d 41 58 28 20  T( * ) * + MAX( 
27250 44 49 53 54 49 4e 43 54 20 39 38 20 29 20 46 52  DISTINCT 98 ) FR
27260 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20  OM tab2 AS cor0 
27270 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32 20  CROSS JOIN tab2 
27280 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 38  AS cor1..----..8
27290 38 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  82....skipif mys
272a0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
272b0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
272c0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37 33 0d 0a  sort label-873..
272d0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
272e0 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  + + COUNT ( * ) 
272f0 2a 20 2b 20 4d 41 58 20 28 20 44 49 53 54 49 4e  * + MAX ( DISTIN
27300 43 54 20 39 38 20 29 20 46 52 4f 4d 20 74 61 62  CT 98 ) FROM tab
27310 32 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20  2 AS cor0 CROSS 
27320 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f 72  JOIN tab2 AS cor
27330 31 0d 0a 2d 2d 2d 2d 0d 0a 38 38 32 0d 0a 0d 0a  1..----..882....
27340 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
27350 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
27360 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
27370 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
27380 2d 38 37 34 0d 0a 53 45 4c 45 43 54 20 43 41 53  -874..SELECT CAS
27390 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
273a0 44 20 29 20 2a 20 2b 20 2d 20 34 32 20 2b 20 63  D ) * + - 42 + c
273b0 6f 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ol2 AS col2 FROM
273c0 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d   tab1 AS cor0..-
273d0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ---..NULL..NULL.
273e0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
273f0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
27400 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
27410 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37  rowsort label-87
27420 34 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 20 28  4..SELECT CAST (
27430 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
27440 20 29 20 2a 20 2b 20 2d 20 34 32 20 2b 20 63 6f   ) * + - 42 + co
27450 6c 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l2 AS col2 FROM 
27460 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
27470 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
27480 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
27490 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
274a0 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  + col1 FROM tab1
274b0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 63   AS cor0 WHERE c
274c0 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol0 IS NOT NULL.
274d0 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a 34 37 0d 0a 35  .----..14..47..5
274e0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
274f0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
27500 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
27510 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
27520 61 62 65 6c 2d 38 37 36 0d 0a 53 45 4c 45 43 54  abel-876..SELECT
27530 20 41 4c 4c 20 2b 20 28 20 2b 20 43 41 53 54 28   ALL + ( + CAST(
27540 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
27550 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ) ) FROM tab1 co
27560 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
27570 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  NULL..NULL....sk
27580 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
27590 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
275a0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
275b0 65 6c 2d 38 37 36 0d 0a 53 45 4c 45 43 54 20 41  el-876..SELECT A
275c0 4c 4c 20 2b 20 28 20 2b 20 43 41 53 54 20 28 20  LL + ( + CAST ( 
275d0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
275e0 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  ) ) FROM tab1 co
275f0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
27600 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  NULL..NULL....qu
27610 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
27620 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20 2a 20 2b  ELECT - col1 * +
27630 20 63 6f 6c 31 20 2b 20 32 33 20 41 53 20 63 6f   col1 + 23 AS co
27640 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l0 FROM tab2 AS 
27650 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 35 37  cor0..----..-257
27660 38 0d 0a 2d 34 34 36 36 0d 0a 2d 35 39 30 36 0d  8..-4466..-5906.
27670 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
27680 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
27690 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
276a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37 38 0d  wsort label-878.
276b0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
276c0 20 2b 20 43 4f 55 4e 54 28 20 41 4c 4c 20 63 6f   + COUNT( ALL co
276d0 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 32 20 63  l1 ) FROM tab2 c
276e0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a  or0..----..3....
276f0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
27700 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
27710 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
27720 61 62 65 6c 2d 38 37 38 0d 0a 53 45 4c 45 43 54  abel-878..SELECT
27730 20 44 49 53 54 49 4e 43 54 20 2b 20 43 4f 55 4e   DISTINCT + COUN
27740 54 20 28 20 41 4c 4c 20 63 6f 6c 31 20 29 20 46  T ( ALL col1 ) F
27750 52 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d  ROM tab2 cor0..-
27760 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..3....onlyif
27770 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
27780 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
27790 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
277a0 73 6f 72 74 20 6c 61 62 65 6c 2d 38 37 39 0d 0a  sort label-879..
277b0 53 45 4c 45 43 54 20 2d 20 36 36 20 2b 20 2b 20  SELECT - 66 + + 
277c0 2b 20 63 6f 6c 30 20 2b 20 2b 20 43 41 53 54 28  + col0 + + CAST(
277d0 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
277e0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
277f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
27800 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .NULL..NULL....s
27810 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
27820 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
27830 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
27840 62 65 6c 2d 38 37 39 0d 0a 53 45 4c 45 43 54 20  bel-879..SELECT 
27850 2d 20 36 36 20 2b 20 2b 20 2b 20 63 6f 6c 30 20  - 66 + + + col0 
27860 2b 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  + + CAST ( NULL 
27870 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
27880 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
27890 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
278a0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
278b0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
278c0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f 6c  T DISTINCT + col
278d0 30 20 2a 20 63 6f 6c 32 20 2a 20 2d 20 34 34 20  0 * col2 * - 44 
278e0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
278f0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 31 30 32 30 0d  0..----..-31020.
27900 0a 2d 33 38 32 38 30 0d 0a 2d 34 32 32 35 33 32  .-38280..-422532
27910 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
27920 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
27930 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
27940 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
27950 61 62 65 6c 2d 38 38 31 0d 0a 53 45 4c 45 43 54  abel-881..SELECT
27960 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2b 20 2b 20   ALL + col2 + + 
27970 43 41 53 54 28 20 2d 20 63 6f 6c 31 20 41 53 20  CAST( - col1 AS 
27980 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20 74 61  SIGNED ) FROM ta
27990 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
279a0 0d 0a 2d 31 31 0d 0a 2d 33 34 0d 0a 39 38 0d 0a  ..-11..-34..98..
279b0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
279c0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
279d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
279e0 20 6c 61 62 65 6c 2d 38 38 31 0d 0a 53 45 4c 45   label-881..SELE
279f0 43 54 20 41 4c 4c 20 2b 20 63 6f 6c 32 20 2b 20  CT ALL + col2 + 
27a00 2b 20 43 41 53 54 20 28 20 2d 20 63 6f 6c 31 20  + CAST ( - col1 
27a10 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
27a20 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
27a30 2d 2d 2d 2d 0d 0a 2d 31 31 0d 0a 2d 33 34 0d 0a  ----..-11..-34..
27a40 39 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  98....onlyif mys
27a50 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
27a60 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
27a70 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
27a80 38 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  82..SELECT DISTI
27a90 4e 43 54 20 4d 41 58 28 20 41 4c 4c 20 2d 20 2d  NCT MAX( ALL - -
27aa0 20 63 6f 6c 31 20 29 20 63 6f 6c 31 20 46 52 4f   col1 ) col1 FRO
27ab0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a  M tab0 AS cor0..
27ac0 2d 2d 2d 2d 0d 0a 38 31 0d 0a 0d 0a 73 6b 69 70  ----..81....skip
27ad0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
27ae0 6f 6d 70 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69  ompatible..skipi
27af0 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
27b00 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
27b10 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
27b20 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
27b30 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
27b40 6f 72 74 20 6c 61 62 65 6c 2d 38 38 32 0d 0a 53  ort label-882..S
27b50 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 4d  ELECT DISTINCT M
27b60 41 58 20 28 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c  AX ( ALL - - col
27b70 31 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  1 ) col1 FROM ta
27b80 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
27b90 0d 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..81....query I 
27ba0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
27bb0 41 4c 4c 20 2d 20 33 32 20 2b 20 2d 20 63 6f 6c  ALL - 32 + - col
27bc0 32 20 2a 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31  2 * col2 AS col1
27bd0 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
27be0 20 2d 20 2b 20 34 39 20 2a 20 2d 20 63 6f 6c 30   - + 49 * - col0
27bf0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
27c00 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
27c10 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
27c20 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
27c30 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 34 0d 0a  sort label-884..
27c40 53 45 4c 45 43 54 20 4d 41 58 28 20 2d 20 2b 20  SELECT MAX( - + 
27c50 32 30 20 29 20 46 52 4f 4d 20 74 61 62 32 0d 0a  20 ) FROM tab2..
27c60 2d 2d 2d 2d 0d 0a 2d 32 30 0d 0a 0d 0a 73 6b 69  ----..-20....ski
27c70 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
27c80 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
27c90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
27ca0 6c 2d 38 38 34 0d 0a 53 45 4c 45 43 54 20 4d 41  l-884..SELECT MA
27cb0 58 20 28 20 2d 20 2b 20 32 30 20 29 20 46 52 4f  X ( - + 20 ) FRO
27cc0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  M tab2..----..-2
27cd0 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  0....onlyif mysq
27ce0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
27cf0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
27d00 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38  rowsort label-88
27d10 35 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 2d  5..SELECT MAX( -
27d20 20 37 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   7 ) AS col0 FRO
27d30 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37  M tab2..----..-7
27d40 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
27d50 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
27d60 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
27d70 72 74 20 6c 61 62 65 6c 2d 38 38 35 0d 0a 53 45  rt label-885..SE
27d80 4c 45 43 54 20 4d 41 58 20 28 20 2d 20 37 20 29  LECT MAX ( - 7 )
27d90 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
27da0 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 37 0d 0a 0d 0a  b2..----..-7....
27db0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
27dc0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
27dd0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
27de0 48 45 52 45 20 4e 4f 54 20 2d 20 63 6f 6c 30 20  HERE NOT - col0 
27df0 2b 20 2b 20 37 38 20 49 53 20 4e 4f 54 20 4e 55  + + 78 IS NOT NU
27e00 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79  LL..----....only
27e10 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66  if mysql # DIV f
27e20 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
27e30 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
27e40 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 38 37  owsort label-887
27e50 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 39 31 20  ..SELECT ALL 91 
27e60 44 49 56 20 2d 20 28 20 2d 20 63 6f 6c 30 20 29  DIV - ( - col0 )
27e70 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
27e80 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a  b2..----..1..1..
27e90 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
27ea0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
27eb0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
27ec0 6f 72 74 20 6c 61 62 65 6c 2d 38 38 37 0d 0a 53  ort label-887..S
27ed0 45 4c 45 43 54 20 41 4c 4c 20 39 31 20 2f 20 2d  ELECT ALL 91 / -
27ee0 20 28 20 2d 20 63 6f 6c 30 20 29 20 41 53 20 63   ( - col0 ) AS c
27ef0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
27f00 2d 2d 2d 0d 0a 31 0d 0a 31 0d 0a 31 0d 0a 0d 0a  ---..1..1..1....
27f10 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
27f20 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
27f30 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
27f40 72 74 20 6c 61 62 65 6c 2d 38 38 38 0d 0a 53 45  rt label-888..SE
27f50 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
27f60 53 55 4d 28 20 41 4c 4c 20 2b 20 2b 20 31 31 20  SUM( ALL + + 11 
27f70 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
27f80 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
27f90 2d 0d 0a 2d 33 33 0d 0a 0d 0a 73 6b 69 70 69 66  -..-33....skipif
27fa0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
27fb0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
27fc0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38   rowsort label-8
27fd0 38 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  88..SELECT DISTI
27fe0 4e 43 54 20 2d 20 53 55 4d 20 28 20 41 4c 4c 20  NCT - SUM ( ALL 
27ff0 2b 20 2b 20 31 31 20 29 20 41 53 20 63 6f 6c 31  + + 11 ) AS col1
28000 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
28010 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 33 0d 0a 0d  r0..----..-33...
28020 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
28030 0d 0a 53 45 4c 45 43 54 20 2b 20 28 20 63 6f 6c  ..SELECT + ( col
28040 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  0 ) AS col2 FROM
28050 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45   tab0 cor0 WHERE
28060 20 4e 4f 54 20 2d 20 63 6f 6c 31 20 49 53 20 4e   NOT - col1 IS N
28070 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38  ULL..----..15..8
28080 37 0d 0a 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49  7..97....query I
28090 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
280a0 54 20 41 4c 4c 20 2d 20 2d 20 63 6f 6c 31 20 41  T ALL - - col1 A
280b0 53 20 63 6f 6c 32 2c 20 2d 20 63 6f 6c 31 20 2a  S col2, - col1 *
280c0 20 2d 20 33 35 20 41 53 20 63 6f 6c 31 20 46 52   - 35 AS col1 FR
280d0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
280e0 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 33 35 0d 0a 32 31  .----..1..35..21
280f0 0d 0a 37 33 35 0d 0a 38 31 0d 0a 32 38 33 35 0d  ..735..81..2835.
28100 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
28110 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
28120 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
28130 77 73 6f 72 74 20 6c 61 62 65 6c 2d 38 39 31 0d  wsort label-891.
28140 0a 53 45 4c 45 43 54 20 2b 20 4d 41 58 28 20 2b  .SELECT + MAX( +
28150 20 36 34 20 29 20 46 52 4f 4d 20 74 61 62 32 20   64 ) FROM tab2 
28160 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36  AS cor0..----..6
28170 34 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  4....skipif mysq
28180 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
28190 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
281a0 6f 72 74 20 6c 61 62 65 6c 2d 38 39 31 0d 0a 53  ort label-891..S
281b0 45 4c 45 43 54 20 2b 20 4d 41 58 20 28 20 2b 20  ELECT + MAX ( + 
281c0 36 34 20 29 20 46 52 4f 4d 20 74 61 62 32 20 41  64 ) FROM tab2 A
281d0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 34  S cor0..----..64
281e0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  ....query II row
281f0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 2d  sort..SELECT - -
28200 20 31 36 20 41 53 20 63 6f 6c 32 2c 20 2b 20 63   16 AS col2, + c
28210 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
28220 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 36 0d   cor0..----..16.
28230 0a 35 31 0d 0a 31 36 0d 0a 36 37 0d 0a 31 36 0d  .51..16..67..16.
28240 0a 37 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .77....query I r
28250 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
28260 4c 4c 20 39 38 20 2a 20 2d 20 37 37 20 41 53 20  LL 98 * - 77 AS 
28270 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41  col1 FROM tab0 A
28280 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37  S cor0..----..-7
28290 35 34 36 0d 0a 2d 37 35 34 36 0d 0a 2d 37 35 34  546..-7546..-754
282a0 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
282b0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
282c0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
282d0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
282e0 6c 61 62 65 6c 2d 38 39 34 0d 0a 53 45 4c 45 43  label-894..SELEC
282f0 54 20 44 49 53 54 49 4e 43 54 20 31 20 44 49 56  T DISTINCT 1 DIV
28300 20 2d 20 2d 20 32 20 41 53 20 63 6f 6c 30 20 46   - - 2 AS col0 F
28310 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
28320 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69  ..----..0....ski
28330 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
28340 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
28350 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
28360 6c 2d 38 39 34 0d 0a 53 45 4c 45 43 54 20 44 49  l-894..SELECT DI
28370 53 54 49 4e 43 54 20 31 20 2f 20 2d 20 2d 20 32  STINCT 1 / - - 2
28380 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
28390 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b0 AS cor0..----
283a0 0d 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  ..0....query II 
283b0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
283c0 2b 20 63 6f 6c 31 2c 20 2b 20 35 33 20 2a 20 2d  + col1, + 53 * -
283d0 20 63 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 2a   col0 * - col2 *
283e0 20 2d 20 32 32 20 41 53 20 63 6f 6c 32 20 46 52   - 22 AS col2 FR
283f0 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d  OM tab1 cor0..--
28400 2d 2d 0d 0a 31 34 0d 0a 2d 35 37 30 38 37 33 36  --..14..-5708736
28410 0d 0a 34 37 0d 0a 2d 37 32 31 35 32 30 38 0d 0a  ..47..-7215208..
28420 35 0d 0a 2d 35 38 34 37 34 39 30 0d 0a 0d 0a 6f  5..-5847490....o
28430 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
28440 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
28450 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
28460 74 20 6c 61 62 65 6c 2d 38 39 36 0d 0a 53 45 4c  t label-896..SEL
28470 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ECT - COUNT( * )
28480 20 2a 20 28 20 2b 20 36 30 20 29 20 46 52 4f 4d   * ( + 60 ) FROM
28490 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
284a0 2d 2d 2d 0d 0a 2d 31 38 30 0d 0a 0d 0a 73 6b 69  ---..-180....ski
284b0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
284c0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
284d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
284e0 6c 2d 38 39 36 0d 0a 53 45 4c 45 43 54 20 2d 20  l-896..SELECT - 
284f0 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 28 20  COUNT ( * ) * ( 
28500 2b 20 36 30 20 29 20 46 52 4f 4d 20 74 61 62 32  + 60 ) FROM tab2
28510 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
28520 2d 31 38 30 0d 0a 0d 0a 71 75 65 72 79 20 49 49  -180....query II
28530 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
28540 20 2d 20 63 6f 6c 30 2c 20 2b 20 34 34 20 41 53   - col0, + 44 AS
28550 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
28560 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
28570 31 35 0d 0a 34 34 0d 0a 2d 38 37 0d 0a 34 34 0d  15..44..-87..44.
28580 0a 2d 39 37 0d 0a 34 34 0d 0a 0d 0a 71 75 65 72  .-97..44....quer
28590 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
285a0 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
285b0 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45   tab0 cor0 WHERE
285c0 20 2d 20 28 20 63 6f 6c 32 20 29 20 3c 3d 20 4e   - ( col2 ) <= N
285d0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
285e0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
285f0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
28600 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
28610 20 6c 61 62 65 6c 2d 38 39 39 0d 0a 53 45 4c 45   label-899..SELE
28620 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 2c 20 31  CT COUNT( * ), 1
28630 38 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  8 AS col1 FROM t
28640 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
28650 2d 0d 0a 33 0d 0a 31 38 0d 0a 0d 0a 73 6b 69 70  -..3..18....skip
28660 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
28670 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
28680 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65   II rowsort labe
28690 6c 2d 38 39 39 0d 0a 53 45 4c 45 43 54 20 43 4f  l-899..SELECT CO
286a0 55 4e 54 20 28 20 2a 20 29 2c 20 31 38 20 41 53  UNT ( * ), 18 AS
286b0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
286c0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
286d0 0d 0a 31 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..18....query II
286e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
286f0 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 2c 20 63   col1 AS col1, c
28700 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
28710 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 31 0d   cor0..----..51.
28720 0a 34 36 0d 0a 36 37 0d 0a 37 35 0d 0a 37 37 0d  .46..67..75..77.
28730 0a 36 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .64....query III
28740 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
28750 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
28760 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48   tab2 AS cor0 WH
28770 45 52 45 20 2b 20 39 33 20 2a 20 2d 20 2b 20 28  ERE + 93 * - + (
28780 20 63 6f 6c 30 20 29 20 2b 20 2d 20 2b 20 35 32   col0 ) + - + 52
28790 20 42 45 54 57 45 45 4e 20 2d 20 63 6f 6c 32 20   BETWEEN - col2 
287a0 41 4e 44 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d  AND - col0..----
287b0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
287c0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
287d0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  tax: ..query II 
287e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30  rowsort label-90
287f0 32 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e  2..SELECT - COUN
28800 54 28 20 2a 20 29 2c 20 28 20 43 4f 55 4e 54 28  T( * ), ( COUNT(
28810 20 2a 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46   * ) ) AS col2 F
28820 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
28830 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 33 0d 0a 0d  ..----..-3..3...
28840 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
28850 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
28860 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
28870 20 6c 61 62 65 6c 2d 39 30 32 0d 0a 53 45 4c 45   label-902..SELE
28880 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29  CT - COUNT ( * )
28890 2c 20 28 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  , ( COUNT ( * ) 
288a0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
288b0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
288c0 2d 0d 0a 2d 33 0d 0a 33 0d 0a 0d 0a 71 75 65 72  -..-3..3....quer
288d0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
288e0 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
288f0 32 20 57 48 45 52 45 20 4e 55 4c 4c 20 3e 3d 20  2 WHERE NULL >= 
28900 32 32 20 2d 20 2d 20 36 38 0d 0a 2d 2d 2d 2d 0d  22 - - 68..----.
28910 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
28920 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61  # CAST syntax: a
28930 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
28940 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
28950 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
28960 6c 61 62 65 6c 2d 39 30 34 0d 0a 53 45 4c 45 43  label-904..SELEC
28970 54 20 41 4c 4c 20 43 41 53 54 28 20 2d 20 2d 20  T ALL CAST( - - 
28980 4d 49 4e 28 20 41 4c 4c 20 2b 20 2d 20 36 35 20  MIN( ALL + - 65 
28990 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  ) AS SIGNED ) AS
289a0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
289b0 0a 2d 2d 2d 2d 0d 0a 2d 36 35 0d 0a 0d 0a 73 6b  .----..-65....sk
289c0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
289d0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
289e0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
289f0 65 6c 2d 39 30 34 0d 0a 53 45 4c 45 43 54 20 41  el-904..SELECT A
28a00 4c 4c 20 43 41 53 54 20 28 20 2d 20 2d 20 4d 49  LL CAST ( - - MI
28a10 4e 20 28 20 41 4c 4c 20 2b 20 2d 20 36 35 20 29  N ( ALL + - 65 )
28a20 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53   AS INTEGER ) AS
28a30 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
28a40 0a 2d 2d 2d 2d 0d 0a 2d 36 35 0d 0a 0d 0a 71 75  .----..-65....qu
28a50 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
28a60 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
28a70 61 62 31 20 57 48 45 52 45 20 28 20 2d 20 63 6f  ab1 WHERE ( - co
28a80 6c 30 20 29 20 3d 20 28 20 4e 55 4c 4c 20 29 0d  l0 ) = ( NULL ).
28a90 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
28aa0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
28ab0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
28ac0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
28ad0 6c 2d 39 30 36 0d 0a 53 45 4c 45 43 54 20 53 55  l-906..SELECT SU
28ae0 4d 28 20 41 4c 4c 20 2b 20 2d 20 34 36 20 29 20  M( ALL + - 46 ) 
28af0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
28b00 0a 2d 31 33 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  .-138....skipif 
28b10 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
28b20 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
28b30 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 30  rowsort label-90
28b40 36 0d 0a 53 45 4c 45 43 54 20 53 55 4d 20 28 20  6..SELECT SUM ( 
28b50 41 4c 4c 20 2b 20 2d 20 34 36 20 29 20 46 52 4f  ALL + - 46 ) FRO
28b60 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab2..----..-1
28b70 33 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  38....query III 
28b80 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
28b90 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  * FROM tab2 WHER
28ba0 45 20 63 6f 6c 31 20 2a 20 2b 20 31 37 20 49 53  E col1 * + 17 IS
28bb0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f   NULL..----....o
28bc0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
28bd0 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
28be0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
28bf0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
28c00 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
28c10 6c 2d 39 30 38 0d 0a 53 45 4c 45 43 54 20 28 20  l-908..SELECT ( 
28c20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  + CAST( NULL AS 
28c30 53 49 47 4e 45 44 20 29 20 29 20 2f 20 2b 20 2d  SIGNED ) ) / + -
28c40 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 2b 20   COUNT( * ) + + 
28c50 36 39 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  69 AS col2 FROM 
28c60 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab2..----..NULL
28c70 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
28c80 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
28c90 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
28ca0 72 74 20 6c 61 62 65 6c 2d 39 30 38 0d 0a 53 45  rt label-908..SE
28cb0 4c 45 43 54 20 28 20 2b 20 43 41 53 54 20 28 20  LECT ( + CAST ( 
28cc0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
28cd0 29 20 29 20 2f 20 2b 20 2d 20 43 4f 55 4e 54 20  ) ) / + - COUNT 
28ce0 28 20 2a 20 29 20 2b 20 2b 20 36 39 20 41 53 20  ( * ) + + 69 AS 
28cf0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col2 FROM tab2..
28d00 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ----..NULL....qu
28d10 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
28d20 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2a  ELECT ALL col2 *
28d30 20 2d 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 38 30   - + col1 * - 80
28d40 20 2b 20 2d 20 63 6f 6c 32 20 2d 20 2d 20 63 6f   + - col2 - - co
28d50 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63  l0 * - col0 AS c
28d60 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
28d70 2d 2d 2d 0d 0a 32 34 32 32 36 34 0d 0a 33 30 35  ---..242264..305
28d80 31 39 37 0d 0a 39 31 37 30 31 0d 0a 0d 0a 71 75  197..91701....qu
28d90 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
28da0 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
28db0 61 62 31 20 63 6f 72 30 20 57 48 45 52 45 20 2d  ab1 cor0 WHERE -
28dc0 20 28 20 2b 20 63 6f 6c 31 20 29 20 49 4e 20 28   ( + col1 ) IN (
28dd0 20 2d 20 38 36 20 2b 20 63 6f 6c 32 20 2f 20 2d   - 86 + col2 / -
28de0 20 2b 20 36 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a   + 6 )..----....
28df0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
28e00 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
28e10 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
28e20 72 74 20 6c 61 62 65 6c 2d 39 31 31 0d 0a 53 45  rt label-911..SE
28e30 4c 45 43 54 20 36 31 20 2b 20 2d 20 43 4f 55 4e  LECT 61 + - COUN
28e40 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46  T( * ) AS col2 F
28e50 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
28e60 0d 0a 2d 2d 2d 2d 0d 0a 35 38 0d 0a 0d 0a 73 6b  ..----..58....sk
28e70 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
28e80 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
28e90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
28ea0 65 6c 2d 39 31 31 0d 0a 53 45 4c 45 43 54 20 36  el-911..SELECT 6
28eb0 31 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  1 + - COUNT ( * 
28ec0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
28ed0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
28ee0 2d 0d 0a 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..58....onlyif 
28ef0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
28f00 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
28f10 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
28f20 6c 2d 39 31 32 0d 0a 53 45 4c 45 43 54 20 44 49  l-912..SELECT DI
28f30 53 54 49 4e 43 54 20 2d 20 4d 49 4e 28 20 2d 20  STINCT - MIN( - 
28f40 38 34 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  84 ) AS col2 FRO
28f50 4d 20 74 61 62 31 20 63 6f 72 30 20 43 52 4f 53  M tab1 cor0 CROS
28f60 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63  S JOIN tab2 AS c
28f70 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 38 34 0d 0a 0d  or1..----..84...
28f80 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
28f90 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
28fa0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
28fb0 6c 61 62 65 6c 2d 39 31 32 0d 0a 53 45 4c 45 43  label-912..SELEC
28fc0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 4d 49 4e  T DISTINCT - MIN
28fd0 20 28 20 2d 20 38 34 20 29 20 41 53 20 63 6f 6c   ( - 84 ) AS col
28fe0 32 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30  2 FROM tab1 cor0
28ff0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32   CROSS JOIN tab2
29000 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
29010 38 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  84....onlyif mys
29020 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
29030 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
29040 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39   rowsort label-9
29050 31 33 0d 0a 53 45 4c 45 43 54 20 35 33 20 2d 20  13..SELECT 53 - 
29060 28 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 2b  ( COUNT( * ) ) +
29070 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   - COUNT( * ) AS
29080 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20   col0 FROM tab0 
29090 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 34 37 0d 0a  cor0..----..47..
290a0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
290b0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
290c0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
290d0 20 6c 61 62 65 6c 2d 39 31 33 0d 0a 53 45 4c 45   label-913..SELE
290e0 43 54 20 35 33 20 2d 20 28 20 43 4f 55 4e 54 20  CT 53 - ( COUNT 
290f0 28 20 2a 20 29 20 29 20 2b 20 2d 20 43 4f 55 4e  ( * ) ) + - COUN
29100 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20  T ( * ) AS col0 
29110 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a  FROM tab0 cor0..
29120 2d 2d 2d 2d 0d 0a 34 37 0d 0a 0d 0a 6f 6e 6c 79  ----..47....only
29130 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
29140 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
29150 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
29160 61 62 65 6c 2d 39 31 34 0d 0a 53 45 4c 45 43 54  abel-914..SELECT
29170 20 44 49 53 54 49 4e 43 54 20 2b 20 32 31 20 2d   DISTINCT + 21 -
29180 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   - COUNT( * ) * 
29190 2d 20 35 20 46 52 4f 4d 20 74 61 62 30 20 41 53  - 5 FROM tab0 AS
291a0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 36 0d 0a   cor0..----..6..
291b0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
291c0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
291d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
291e0 20 6c 61 62 65 6c 2d 39 31 34 0d 0a 53 45 4c 45   label-914..SELE
291f0 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 32 31  CT DISTINCT + 21
29200 20 2d 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29   - - COUNT ( * )
29210 20 2a 20 2d 20 35 20 46 52 4f 4d 20 74 61 62 30   * - 5 FROM tab0
29220 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
29230 36 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  6....query I row
29240 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
29250 54 49 4e 43 54 20 2b 20 2d 20 35 39 20 2a 20 2d  TINCT + - 59 * -
29260 20 31 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d   12 AS col2 FROM
29270 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
29280 2d 2d 2d 0d 0a 37 30 38 0d 0a 0d 0a 71 75 65 72  ---..708....quer
29290 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
292a0 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
292b0 32 20 2a 20 2b 20 2b 20 63 6f 6c 30 20 46 52 4f  2 * + + col0 FRO
292c0 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
292d0 2d 2d 2d 2d 0d 0a 31 30 35 38 0d 0a 32 35 36 30  ----..1058..2560
292e0 0d 0a 34 33 35 30 0d 0a 0d 0a 71 75 65 72 79 20  ..4350....query 
292f0 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
29300 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20  ECT * FROM tab1 
29310 57 48 45 52 45 20 4e 4f 54 20 2d 20 30 20 3c 20  WHERE NOT - 0 < 
29320 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b  NULL..----....sk
29330 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20  ipif postgresql 
29340 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71  # PostgreSQL req
29350 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65  uires AS when re
29360 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f  naming output co
29370 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72  lumns..query I r
29380 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
29390 4c 4c 20 2d 20 33 38 20 63 6f 6c 32 20 46 52 4f  LL - 38 col2 FRO
293a0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  M tab1..----..-3
293b0 38 0d 0a 2d 33 38 0d 0a 2d 33 38 0d 0a 0d 0a 6f  8..-38..-38....o
293c0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
293d0 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
293e0 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
293f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
29400 39 31 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  919..SELECT DIST
29410 49 4e 43 54 20 2d 20 63 6f 6c 32 20 44 49 56 20  INCT - col2 DIV 
29420 36 35 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  65 FROM tab2..--
29430 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
29440 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
29450 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
29460 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 31  rowsort label-91
29470 39 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  9..SELECT DISTIN
29480 43 54 20 2d 20 63 6f 6c 32 20 2f 20 36 35 20 46  CT - col2 / 65 F
29490 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
294a0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
294b0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
294c0 32 20 2a 20 36 32 20 41 53 20 63 6f 6c 31 20 46  2 * 62 AS col1 F
294d0 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
294e0 31 34 32 36 0d 0a 32 34 38 30 0d 0a 33 35 39 36  1426..2480..3596
294f0 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67  ....skipif postg
29500 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53  resql # PostgreS
29510 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77  QL requires AS w
29520 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74  hen renaming out
29530 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65  put columns..que
29540 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
29550 4c 45 43 54 20 2b 20 39 31 20 63 6f 6c 31 20 46  LECT + 91 col1 F
29560 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
29570 39 31 0d 0a 39 31 0d 0a 39 31 0d 0a 0d 0a 6f 6e  91..91..91....on
29580 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
29590 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
295a0 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
295b0 45 44 20 74 79 70 65 3a 20 44 49 56 20 66 6f 72  ED type: DIV for
295c0 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
295d0 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
295e0 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32 32 0d 0a  sort label-922..
295f0 53 45 4c 45 43 54 20 2b 20 4d 41 58 28 20 44 49  SELECT + MAX( DI
29600 53 54 49 4e 43 54 20 63 6f 6c 30 20 29 20 44 49  STINCT col0 ) DI
29610 56 20 2d 20 43 41 53 54 28 20 2b 20 2d 20 36 33  V - CAST( + - 63
29620 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
29630 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41  col1 FROM tab1 A
29640 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  S cor0..----..1.
29650 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
29660 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
29670 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29680 74 20 6c 61 62 65 6c 2d 39 32 32 0d 0a 53 45 4c  t label-922..SEL
29690 45 43 54 20 2b 20 4d 41 58 20 28 20 44 49 53 54  ECT + MAX ( DIST
296a0 49 4e 43 54 20 63 6f 6c 30 20 29 20 2f 20 2d 20  INCT col0 ) / - 
296b0 43 41 53 54 20 28 20 2b 20 2d 20 36 33 20 41 53  CAST ( + - 63 AS
296c0 20 49 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f   INTEGER ) AS co
296d0 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l1 FROM tab1 AS 
296e0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d  cor0..----..1...
296f0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
29700 0d 0a 53 45 4c 45 43 54 20 32 20 41 53 20 63 6f  ..SELECT 2 AS co
29710 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  l0 FROM tab0 AS 
29720 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63  cor0 WHERE NOT c
29730 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  ol1 IS NULL..---
29740 2d 0d 0a 32 0d 0a 32 0d 0a 32 0d 0a 0d 0a 71 75  -..2..2..2....qu
29750 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
29760 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
29770 20 63 6f 6c 30 20 2a 20 63 6f 6c 32 20 2a 20 2b   col0 * col2 * +
29780 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20 46 52   col0 AS col1 FR
29790 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
297a0 0a 2d 2d 2d 2d 0d 0a 2d 31 30 35 37 35 0d 0a 2d  .----..-10575..-
297b0 37 35 36 39 30 0d 0a 2d 39 33 31 34 39 31 0d 0a  75690..-931491..
297c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
297d0 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 39 35  t..SELECT ALL 95
297e0 20 2a 20 2d 20 2b 20 28 20 2b 20 32 30 20 29 20   * - + ( + 20 ) 
297f0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
29800 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 39 30 30 0d 0a  0..----..-1900..
29810 2d 31 39 30 30 0d 0a 2d 31 39 30 30 0d 0a 0d 0a  -1900..-1900....
29820 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
29830 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
29840 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20   tab0 WHERE NOT 
29850 2b 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 30 20  + col2 + + col0 
29860 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
29870 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
29880 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  sort..SELECT col
29890 31 20 2a 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20  1 * + + col0 AS 
298a0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col1 FROM tab1..
298b0 2d 2d 2d 2d 0d 0a 34 32 35 0d 0a 34 32 37 37 0d  ----..425..4277.
298c0 0a 37 31 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .714....onlyif m
298d0 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
298e0 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
298f0 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
29900 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
29910 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32 38 0d 0a  sort label-928..
29920 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 41 53  SELECT ALL - CAS
29930 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
29940 44 20 29 20 2f 20 2b 20 43 4f 55 4e 54 28 20 2a  D ) / + COUNT( *
29950 20 29 20 2a 20 2d 20 43 4f 55 4e 54 28 20 2a 20   ) * - COUNT( * 
29960 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
29970 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab0..----..NULL.
29980 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
29990 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
299a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
299b0 74 20 6c 61 62 65 6c 2d 39 32 38 0d 0a 53 45 4c  t label-928..SEL
299c0 45 43 54 20 41 4c 4c 20 2d 20 43 41 53 54 20 28  ECT ALL - CAST (
299d0 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52   NULL AS INTEGER
299e0 20 29 20 2f 20 2b 20 43 4f 55 4e 54 20 28 20 2a   ) / + COUNT ( *
299f0 20 29 20 2a 20 2d 20 43 4f 55 4e 54 20 28 20 2a   ) * - COUNT ( *
29a00 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
29a10 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab0..----..NULL
29a20 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
29a30 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
29a40 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
29a50 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 32 39  owsort label-929
29a60 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
29a70 28 20 2d 20 63 6f 6c 30 20 29 20 63 6f 6c 30 20  ( - col0 ) col0 
29a80 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
29a90 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .3....skipif mys
29aa0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
29ab0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
29ac0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
29ad0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
29ae0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
29af0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
29b00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
29b10 62 65 6c 2d 39 32 39 0d 0a 53 45 4c 45 43 54 20  bel-929..SELECT 
29b20 2b 20 43 4f 55 4e 54 20 28 20 2d 20 63 6f 6c 30  + COUNT ( - col0
29b30 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   ) col0 FROM tab
29b40 30 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75  0..----..3....qu
29b50 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
29b60 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
29b70 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45   * FROM tab2 WHE
29b80 52 45 20 4e 4f 54 20 2d 20 32 20 4e 4f 54 20 49  RE NOT - 2 NOT I
29b90 4e 20 28 20 63 6f 6c 30 20 29 20 4f 52 20 4e 4f  N ( col0 ) OR NO
29ba0 54 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c  T + col0 + - col
29bb0 31 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  1 IS NULL..----.
29bc0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
29bd0 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61  g to 75c998aa53a
29be0 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32  c83218cbf2feb962
29bf0 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  d0a49....onlyif 
29c00 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
29c10 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
29c20 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
29c30 6c 2d 39 33 31 0d 0a 53 45 4c 45 43 54 20 43 4f  l-931..SELECT CO
29c40 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
29c50 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b1 AS cor0 WHERE
29c60 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 3d 20 4e 55   NOT + col0 = NU
29c70 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73  LL..----..0....s
29c80 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
29c90 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
29ca0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
29cb0 62 65 6c 2d 39 33 31 0d 0a 53 45 4c 45 43 54 20  bel-931..SELECT 
29cc0 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
29cd0 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48   tab1 AS cor0 WH
29ce0 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 30 20 3d  ERE NOT + col0 =
29cf0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
29d00 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
29d10 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
29d20 43 54 20 63 6f 6c 32 20 2a 20 2b 20 2d 20 63 6f  CT col2 * + - co
29d30 6c 30 20 2b 20 2b 20 30 20 46 52 4f 4d 20 74 61  l0 + + 0 FROM ta
29d40 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
29d50 0d 0a 2d 34 38 39 36 0d 0a 2d 35 30 31 35 0d 0a  ..-4896..-5015..
29d60 2d 36 31 38 38 0d 0a 0d 0a 71 75 65 72 79 20 49  -6188....query I
29d70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
29d80 20 2d 20 37 20 2b 20 2b 20 31 32 20 2b 20 35 39   - 7 + + 12 + 59
29d90 20 2b 20 2d 20 2b 20 63 6f 6c 30 20 2d 20 2b 20   + - + col0 - + 
29da0 2b 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 31 20  + col1 * + col1 
29db0 2a 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 2b 20 38  * + col1 * - + 8
29dc0 33 20 2a 20 2b 20 32 30 20 41 53 20 63 6f 6c 31  3 * + 20 AS col1
29dd0 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
29de0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 37 32 33 34 36  r0..----..172346
29df0 31 35 33 0d 0a 32 30 37 34 37 39 0d 0a 34 35 35  153..207479..455
29e00 35 30 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  5053....query I 
29e10 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
29e20 2b 20 33 39 20 2b 20 2b 20 2b 20 63 6f 6c 32 20  + 39 + + + col2 
29e30 2b 20 2d 20 33 37 20 46 52 4f 4d 20 74 61 62 31  + - 37 FROM tab1
29e40 0d 0a 2d 2d 2d 2d 0d 0a 36 31 0d 0a 37 30 0d 0a  ..----..61..70..
29e50 39 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  98....query I ro
29e60 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20  wsort..SELECT + 
29e70 63 6f 6c 30 20 2b 20 32 33 20 46 52 4f 4d 20 74  col0 + 23 FROM t
29e80 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 36 39 0d 0a 38  ab2..----..69..8
29e90 37 0d 0a 39 38 0d 0a 0d 0a 71 75 65 72 79 20 49  7..98....query I
29ea0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
29eb0 20 2b 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 30   + col1 * + col0
29ec0 20 2b 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 63 6f   + - col1 * - co
29ed0 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 32 20 2a 20  l1 * + - col2 * 
29ee0 2b 20 31 30 20 41 53 20 63 6f 6c 31 20 46 52 4f  + 10 AS col1 FRO
29ef0 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab1..----..-1
29f00 34 33 32 35 0d 0a 2d 31 34 39 37 38 34 33 0d 0a  4325..-1497843..
29f10 2d 31 38 37 34 34 36 0d 0a 0d 0a 71 75 65 72 79  -187446....query
29f20 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
29f30 43 54 20 44 49 53 54 49 4e 43 54 20 34 38 20 2a  CT DISTINCT 48 *
29f40 20 2d 20 31 30 20 2b 20 63 6f 6c 32 20 41 53 20   - 10 + col2 AS 
29f50 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col0 FROM tab2..
29f60 2d 2d 2d 2d 0d 0a 2d 34 32 32 0d 0a 2d 34 34 30  ----..-422..-440
29f70 0d 0a 2d 34 35 37 0d 0a 0d 0a 71 75 65 72 79 20  ..-457....query 
29f80 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
29f90 54 20 44 49 53 54 49 4e 43 54 20 2b 20 30 20 2b  T DISTINCT + 0 +
29fa0 20 28 20 2d 20 63 6f 6c 32 20 29 20 46 52 4f 4d   ( - col2 ) FROM
29fb0 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30   tab0..----..-10
29fc0 0d 0a 2d 34 37 0d 0a 2d 39 39 0d 0a 0d 0a 71 75  ..-47..-99....qu
29fd0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
29fe0 45 4c 45 43 54 20 2d 20 63 6f 6c 32 20 2b 20 2b  ELECT - col2 + +
29ff0 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32 20   - col2 AS col2 
2a000 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2a010 0a 2d 31 31 38 0d 0a 2d 31 33 36 0d 0a 2d 31 39  .-118..-136..-19
2a020 32 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  2....query III r
2a030 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
2a040 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
2a050 20 63 6f 6c 30 20 2a 20 2b 20 37 34 20 2a 20 63   col0 * + 74 * c
2a060 6f 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d  ol0 IS NOT NULL.
2a070 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20  .----..9 values 
2a080 68 61 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39  hashing to 75c99
2a090 38 61 61 35 33 61 63 38 33 32 31 38 63 62 66 32  8aa53ac83218cbf2
2a0a0 66 65 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 71  feb962d0a49....q
2a0b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2a0c0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2a0d0 63 6f 6c 30 20 2d 20 2b 20 2d 20 63 6f 6c 31 20  col0 - + - col1 
2a0e0 2a 20 2d 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  * - col0 FROM ta
2a0f0 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 30 30 0d  b2..----..-2300.
2a100 0a 2d 34 38 36 34 0d 0a 2d 34 39 35 30 0d 0a 0d  .-4864..-4950...
2a110 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2a120 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
2a130 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
2a140 6f 72 74 20 6c 61 62 65 6c 2d 39 34 32 0d 0a 53  ort label-942..S
2a150 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43  ELECT DISTINCT C
2a160 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b 20 2b 20  OUNT( * ) * + + 
2a170 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f  COUNT( * ) AS co
2a180 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
2a190 2d 2d 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..9....skipif 
2a1a0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2a1b0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2a1c0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34  rowsort label-94
2a1d0 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  2..SELECT DISTIN
2a1e0 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a  CT COUNT ( * ) *
2a1f0 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29   + + COUNT ( * )
2a200 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2a210 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 0d 0a 0d 0a 6f  b2..----..9....o
2a220 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49  nlyif mysql # DI
2a230 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69  V for integer di
2a240 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20  vision: ..query 
2a250 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2a260 39 34 33 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  943..SELECT - + 
2a270 32 37 20 2a 20 39 35 20 44 49 56 20 2d 20 28 20  27 * 95 DIV - ( 
2a280 2d 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  - - col0 ) FROM 
2a290 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
2a2a0 2d 2d 0d 0a 33 34 0d 0a 34 30 0d 0a 35 35 0d 0a  --..34..40..55..
2a2b0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2a2c0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2a2d0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2a2e0 20 6c 61 62 65 6c 2d 39 34 33 0d 0a 53 45 4c 45   label-943..SELE
2a2f0 43 54 20 2d 20 2b 20 32 37 20 2a 20 39 35 20 2f  CT - + 27 * 95 /
2a300 20 2d 20 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20   - ( - - col0 ) 
2a310 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2a320 30 0d 0a 2d 2d 2d 2d 0d 0a 33 34 0d 0a 34 30 0d  0..----..34..40.
2a330 0a 35 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .55....query I r
2a340 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63  owsort..SELECT c
2a350 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
2a360 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
2a370 20 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   > NULL..----...
2a380 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
2a390 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
2a3a0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
2a3b0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
2a3c0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
2a3d0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2a3e0 54 20 2d 20 34 36 20 2d 20 2b 20 63 6f 6c 32 20  T - 46 - + col2 
2a3f0 2b 20 33 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74  + 31 col2 FROM t
2a400 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 31 34 0d  ab0..----..-114.
2a410 0a 2d 32 35 0d 0a 2d 36 32 0d 0a 0d 0a 71 75 65  .-25..-62....que
2a420 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2a430 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 36 33  LECT DISTINCT 63
2a440 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2a450 62 31 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b1 AS cor0 CROSS
2a460 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f   JOIN tab2 AS co
2a470 72 31 0d 0a 2d 2d 2d 2d 0d 0a 36 33 0d 0a 0d 0a  r1..----..63....
2a480 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2a490 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2a4a0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2a4b0 72 74 20 6c 61 62 65 6c 2d 39 34 37 0d 0a 53 45  rt label-947..SE
2a4c0 4c 45 43 54 20 41 4c 4c 20 53 55 4d 28 20 44 49  LECT ALL SUM( DI
2a4d0 53 54 49 4e 43 54 20 2b 20 35 31 20 29 20 2b 20  STINCT + 51 ) + 
2a4e0 2d 20 2b 20 39 34 20 41 53 20 63 6f 6c 31 20 46  - + 94 AS col1 F
2a4f0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
2a500 2d 34 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -43....skipif my
2a510 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2a520 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2a530 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 34 37 0d  wsort label-947.
2a540 0a 53 45 4c 45 43 54 20 41 4c 4c 20 53 55 4d 20  .SELECT ALL SUM 
2a550 28 20 44 49 53 54 49 4e 43 54 20 2b 20 35 31 20  ( DISTINCT + 51 
2a560 29 20 2b 20 2d 20 2b 20 39 34 20 41 53 20 63 6f  ) + - + 94 AS co
2a570 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
2a580 2d 2d 0d 0a 2d 34 33 0d 0a 0d 0a 71 75 65 72 79  --..-43....query
2a590 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2a5a0 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 32  CT DISTINCT col2
2a5b0 20 2d 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 63 6f   - - col2 * + co
2a5c0 6c 30 20 2b 20 2b 20 63 6f 6c 32 20 2d 20 2b 20  l0 + + col2 - + 
2a5d0 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46  + col2 AS col0 F
2a5e0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2a5f0 0d 0a 2d 2d 2d 2d 0d 0a 37 35 32 0d 0a 38 38 30  ..----..752..880
2a600 0d 0a 39 37 30 32 0d 0a 0d 0a 71 75 65 72 79 20  ..9702....query 
2a610 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
2a620 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20  ECT * FROM tab0 
2a630 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
2a640 54 20 63 6f 6c 30 20 2a 20 2b 20 2d 20 63 6f 6c  T col0 * + - col
2a650 31 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  1 < NULL..----..
2a660 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2a670 74 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20 34 30  t..SELECT ( - 40
2a680 20 29 20 2a 20 2b 20 31 30 20 46 52 4f 4d 20 74   ) * + 10 FROM t
2a690 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
2a6a0 45 20 4e 4f 54 20 4e 55 4c 4c 20 3e 20 4e 55 4c  E NOT NULL > NUL
2a6b0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69  L..----....onlyi
2a6c0 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
2a6d0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
2a6e0 70 65 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65  pe: DIV for inte
2a6f0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
2a700 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
2a710 20 6c 61 62 65 6c 2d 39 35 31 0d 0a 53 45 4c 45   label-951..SELE
2a720 43 54 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20  CT DISTINCT ( - 
2a730 2d 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  - CAST( NULL AS 
2a740 53 49 47 4e 45 44 20 29 20 29 20 41 53 20 63 6f  SIGNED ) ) AS co
2a750 6c 31 2c 20 2d 20 63 6f 6c 32 20 44 49 56 20 2b  l1, - col2 DIV +
2a760 20 33 30 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20   30 + col2 FROM 
2a770 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
2a780 52 45 20 4e 55 4c 4c 20 49 53 20 4e 55 4c 4c 0d  RE NULL IS NULL.
2a790 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 35 38 0d  .----..NULL..58.
2a7a0 0a 4e 55 4c 4c 0d 0a 36 36 0d 0a 4e 55 4c 4c 0d  .NULL..66..NULL.
2a7b0 0a 39 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .93....skipif my
2a7c0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2a7d0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20 72  ible..query II r
2a7e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35 31  owsort label-951
2a7f0 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
2a800 54 20 28 20 2d 20 2d 20 43 41 53 54 20 28 20 4e  T ( - - CAST ( N
2a810 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29  ULL AS INTEGER )
2a820 20 29 20 41 53 20 63 6f 6c 31 2c 20 2d 20 63 6f   ) AS col1, - co
2a830 6c 32 20 2f 20 2b 20 33 30 20 2b 20 63 6f 6c 32  l2 / + 30 + col2
2a840 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
2a850 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 49 53  r0 WHERE NULL IS
2a860 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   NULL..----..NUL
2a870 4c 0d 0a 35 38 0d 0a 4e 55 4c 4c 0d 0a 36 36 0d  L..58..NULL..66.
2a880 0a 4e 55 4c 4c 0d 0a 39 33 0d 0a 0d 0a 71 75 65  .NULL..93....que
2a890 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
2a8a0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2a8b0 2a 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  * FROM tab1 AS c
2a8c0 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20 2b  or0 WHERE col1 +
2a8d0 20 2b 20 63 6f 6c 30 20 4e 4f 54 20 42 45 54 57   + col0 NOT BETW
2a8e0 45 45 4e 20 2d 20 34 36 20 2b 20 2d 20 63 6f 6c  EEN - 46 + - col
2a8f0 32 20 41 4e 44 20 2d 20 2d 20 63 6f 6c 32 0d 0a  2 AND - - col2..
2a900 2d 2d 2d 2d 0d 0a 38 35 0d 0a 35 0d 0a 35 39 0d  ----..85..5..59.
2a910 0a 39 31 0d 0a 34 37 0d 0a 36 38 0d 0a 0d 0a 73  .91..47..68....s
2a920 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
2a930 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
2a940 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
2a950 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
2a960 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20  olumns..query I 
2a970 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2a980 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c 30 20 63 6f  + col2 * col0 co
2a990 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72  l0 FROM tab2 cor
2a9a0 30 20 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 32  0 WHERE NOT col2
2a9b0 20 2a 20 2b 20 2b 20 34 35 20 42 45 54 57 45 45   * + + 45 BETWEE
2a9c0 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e 55 4c 4c 0d  N NULL AND NULL.
2a9d0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
2a9e0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2a9f0 20 2b 20 63 6f 6c 31 20 2a 20 2d 20 2d 20 39 38   + col1 * - - 98
2aa00 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2aa10 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 33 37 32 0d 0a  b1..----..1372..
2aa20 34 36 30 36 0d 0a 34 39 30 0d 0a 0d 0a 71 75 65  4606..490....que
2aa30 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2aa40 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
2aa50 36 37 20 2a 20 2b 20 63 6f 6c 30 20 46 52 4f 4d  67 * + col0 FROM
2aa60 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 33 30 38   tab2..----..308
2aa70 32 0d 0a 34 32 38 38 0d 0a 35 30 32 35 0d 0a 0d  2..4288..5025...
2aa80 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2aa90 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
2aaa0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
2aab0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2aac0 6c 2d 39 35 36 0d 0a 53 45 4c 45 43 54 20 41 4c  l-956..SELECT AL
2aad0 4c 20 63 6f 6c 31 20 2a 20 31 20 44 49 56 20 2d  L col1 * 1 DIV -
2aae0 20 2d 20 33 31 20 46 52 4f 4d 20 74 61 62 31 0d   - 31 FROM tab1.
2aaf0 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d 0a  .----..0..0..1..
2ab00 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2ab10 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2ab20 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2ab30 20 6c 61 62 65 6c 2d 39 35 36 0d 0a 53 45 4c 45   label-956..SELE
2ab40 43 54 20 41 4c 4c 20 63 6f 6c 31 20 2a 20 31 20  CT ALL col1 * 1 
2ab50 2f 20 2d 20 2d 20 33 31 20 46 52 4f 4d 20 74 61  / - - 31 FROM ta
2ab60 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a  b1..----..0..0..
2ab70 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  1....query II ro
2ab80 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
2ab90 53 54 49 4e 43 54 20 36 35 20 41 53 20 63 6f 6c  STINCT 65 AS col
2aba0 31 2c 20 2b 20 37 31 20 41 53 20 63 6f 6c 32 20  1, + 71 AS col2 
2abb0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
2abc0 0a 36 35 0d 0a 37 31 0d 0a 0d 0a 6f 6e 6c 79 69  .65..71....onlyi
2abd0 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2abe0 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20  ate syntax: DIV 
2abf0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
2ac00 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
2ac10 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 35  rowsort label-95
2ac20 38 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28  8..SELECT COUNT(
2ac30 20 2a 20 29 20 44 49 56 20 2d 20 34 30 20 41 53   * ) DIV - 40 AS
2ac40 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
2ac50 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70  .----..0....skip
2ac60 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2ac70 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2ac80 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2ac90 2d 39 35 38 0d 0a 53 45 4c 45 43 54 20 43 4f 55  -958..SELECT COU
2aca0 4e 54 20 28 20 2a 20 29 20 2f 20 2d 20 34 30 20  NT ( * ) / - 40 
2acb0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2acc0 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75  2..----..0....qu
2acd0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
2ace0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2acf0 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 2c 20  - col0 AS col1, 
2ad00 37 34 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  74 FROM tab1..--
2ad10 2d 2d 0d 0a 2d 35 31 0d 0a 37 34 0d 0a 2d 38 35  --..-51..74..-85
2ad20 0d 0a 37 34 0d 0a 2d 39 31 0d 0a 37 34 0d 0a 0d  ..74..-91..74...
2ad30 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
2ad40 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43  CAST syntax: DEC
2ad50 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65  IMAL type: ..que
2ad60 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2ad70 65 6c 2d 39 36 30 0d 0a 53 45 4c 45 43 54 20 2d  el-960..SELECT -
2ad80 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62   + col2 FROM tab
2ad90 32 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 28 20  2 WHERE NOT + ( 
2ada0 2b 20 63 6f 6c 30 20 29 20 3e 3d 20 2b 20 2b 20  + col0 ) >= + + 
2adb0 43 41 53 54 28 20 63 6f 6c 31 20 41 53 20 44 45  CAST( col1 AS DE
2adc0 43 49 4d 41 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d  CIMAL )..----..-
2add0 32 33 0d 0a 2d 34 30 0d 0a 0d 0a 73 6b 69 70 69  23..-40....skipi
2ade0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2adf0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2ae00 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2ae10 39 36 30 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  960..SELECT - + 
2ae20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57  col2 FROM tab2 W
2ae30 48 45 52 45 20 4e 4f 54 20 2b 20 28 20 2b 20 63  HERE NOT + ( + c
2ae40 6f 6c 30 20 29 20 3e 3d 20 2b 20 2b 20 43 41 53  ol0 ) >= + + CAS
2ae50 54 20 28 20 63 6f 6c 31 20 41 53 20 52 45 41 4c  T ( col1 AS REAL
2ae60 20 29 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 2d   )..----..-23..-
2ae70 34 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  40....onlyif mys
2ae80 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
2ae90 3a 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  : aggregate synt
2aea0 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a  ax: SIGNED type:
2aeb0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2aec0 72 74 20 6c 61 62 65 6c 2d 39 36 31 0d 0a 53 45  rt label-961..SE
2aed0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41  LECT DISTINCT CA
2aee0 53 54 28 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ST( + COUNT( * )
2aef0 20 41 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f   AS SIGNED ) FRO
2af00 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
2af10 48 45 52 45 20 4e 4f 54 20 2d 20 39 38 20 3d 20  HERE NOT - 98 = 
2af20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 33 0d  - col1..----..3.
2af30 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2af40 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2af50 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2af60 74 20 6c 61 62 65 6c 2d 39 36 31 0d 0a 53 45 4c  t label-961..SEL
2af70 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 41 53  ECT DISTINCT CAS
2af80 54 20 28 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  T ( + COUNT ( * 
2af90 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46  ) AS INTEGER ) F
2afa0 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
2afb0 20 57 48 45 52 45 20 4e 4f 54 20 2d 20 39 38 20   WHERE NOT - 98 
2afc0 3d 20 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  = - col1..----..
2afd0 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  3....onlyif mysq
2afe0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2aff0 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2b000 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36  rowsort label-96
2b010 32 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20 4d 41  2..SELECT - + MA
2b020 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20  X( DISTINCT + - 
2b030 28 20 2d 20 2b 20 63 6f 6c 30 20 29 20 29 20 41  ( - + col0 ) ) A
2b040 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
2b050 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
2b060 2d 37 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -75....skipif my
2b070 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2b080 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2b090 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 32 0d  wsort label-962.
2b0a0 0a 53 45 4c 45 43 54 20 2d 20 2b 20 4d 41 58 20  .SELECT - + MAX 
2b0b0 28 20 44 49 53 54 49 4e 43 54 20 2b 20 2d 20 28  ( DISTINCT + - (
2b0c0 20 2d 20 2b 20 63 6f 6c 30 20 29 20 29 20 41 53   - + col0 ) ) AS
2b0d0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
2b0e0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  AS cor0..----..-
2b0f0 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  75....query III 
2b100 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2b110 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  * FROM tab2 AS c
2b120 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
2b130 63 6f 6c 32 20 2b 20 2b 20 2b 20 63 6f 6c 30 20  col2 + + + col0 
2b140 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
2b150 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  -....onlyif mysq
2b160 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
2b170 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
2b180 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36  rowsort label-96
2b190 34 0d 0a 53 45 4c 45 43 54 20 2b 20 2b 20 43 4f  4..SELECT + + CO
2b1a0 55 4e 54 28 20 41 4c 4c 20 2b 20 37 34 20 29 20  UNT( ALL + 74 ) 
2b1b0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2b1c0 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
2b1d0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
2b1e0 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  0....skipif mysq
2b1f0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2b200 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2b210 6f 72 74 20 6c 61 62 65 6c 2d 39 36 34 0d 0a 53  ort label-964..S
2b220 45 4c 45 43 54 20 2b 20 2b 20 43 4f 55 4e 54 20  ELECT + + COUNT 
2b230 28 20 41 4c 4c 20 2b 20 37 34 20 29 20 41 53 20  ( ALL + 74 ) AS 
2b240 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57  col0 FROM tab0 W
2b250 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53  HERE NOT NULL IS
2b260 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   NULL..----..0..
2b270 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2b280 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
2b290 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67  x: DIV for integ
2b2a0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
2b2b0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b2c0 61 62 65 6c 2d 39 36 35 0d 0a 53 45 4c 45 43 54  abel-965..SELECT
2b2d0 20 44 49 53 54 49 4e 43 54 20 2d 20 39 34 20 2b   DISTINCT - 94 +
2b2e0 20 2d 20 37 20 44 49 56 20 2d 20 4d 49 4e 28 20   - 7 DIV - MIN( 
2b2f0 2b 20 28 20 63 6f 6c 31 20 29 20 29 20 46 52 4f  + ( col1 ) ) FRO
2b300 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 39  M tab1..----..-9
2b310 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
2b320 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2b330 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2b340 6f 72 74 20 6c 61 62 65 6c 2d 39 36 35 0d 0a 53  ort label-965..S
2b350 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
2b360 20 39 34 20 2b 20 2d 20 37 20 2f 20 2d 20 4d 49   94 + - 7 / - MI
2b370 4e 20 28 20 2b 20 28 20 63 6f 6c 31 20 29 20 29  N ( + ( col1 ) )
2b380 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
2b390 0d 0a 2d 39 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-93....onlyif 
2b3a0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
2b3b0 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73  tax: aggregate s
2b3c0 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79  yntax: SIGNED ty
2b3d0 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  pe: ..query I ro
2b3e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 36 36 0d  wsort label-966.
2b3f0 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28  .SELECT + COUNT(
2b400 20 2a 20 29 20 2b 20 2d 20 43 41 53 54 28 20 2b   * ) + - CAST( +
2b410 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 53   COUNT( * ) AS S
2b420 49 47 4e 45 44 20 29 20 63 6f 6c 30 20 46 52 4f  IGNED ) col0 FRO
2b430 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  M tab1..----..0.
2b440 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2b450 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2b460 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
2b470 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
2b480 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
2b490 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
2b4a0 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
2b4b0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2b4c0 2d 39 36 36 0d 0a 53 45 4c 45 43 54 20 2b 20 43  -966..SELECT + C
2b4d0 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20 43  OUNT ( * ) + - C
2b4e0 41 53 54 20 28 20 2b 20 43 4f 55 4e 54 20 28 20  AST ( + COUNT ( 
2b4f0 2a 20 29 20 41 53 20 49 4e 54 45 47 45 52 20 29  * ) AS INTEGER )
2b500 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d   col0 FROM tab1.
2b510 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65 72  .----..0....quer
2b520 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2b530 45 43 54 20 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c  ECT col2 + - col
2b540 30 20 2a 20 28 20 2d 20 2b 20 32 34 20 29 20 41  0 * ( - + 24 ) A
2b550 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
2b560 0d 0a 2d 2d 2d 2d 0d 0a 31 31 32 37 0d 0a 31 35  ..----..1127..15
2b570 37 36 0d 0a 31 38 35 38 0d 0a 0d 0a 6f 6e 6c 79  76..1858....only
2b580 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2b590 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2b5a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2b5b0 61 62 65 6c 2d 39 36 38 0d 0a 53 45 4c 45 43 54  abel-968..SELECT
2b5c0 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 43 4f   DISTINCT - + CO
2b5d0 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
2b5e0 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45  b0 AS cor0 WHERE
2b5f0 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 3c 3d 20 2d   NOT + col2 <= -
2b600 20 35 34 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d   54..----..-3...
2b610 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2b620 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2b630 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2b640 6c 61 62 65 6c 2d 39 36 38 0d 0a 53 45 4c 45 43  label-968..SELEC
2b650 54 20 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 43  T DISTINCT - + C
2b660 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
2b670 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45  tab0 AS cor0 WHE
2b680 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 32 20 3c 3d  RE NOT + col2 <=
2b690 20 2d 20 35 34 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   - 54..----..-3.
2b6a0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2b6b0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
2b6c0 4e 43 54 20 39 34 20 2a 20 2b 20 63 6f 6c 32 20  NCT 94 * + col2 
2b6d0 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
2b6e0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
2b6f0 0a 35 35 34 36 0d 0a 36 33 39 32 0d 0a 39 30 32  .5546..6392..902
2b700 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  4....onlyif mysq
2b710 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
2b720 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a   SIGNED type: ..
2b730 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2b740 6c 61 62 65 6c 2d 39 37 30 0d 0a 53 45 4c 45 43  label-970..SELEC
2b750 54 20 2d 20 43 41 53 54 28 20 2d 20 35 31 20 41  T - CAST( - 51 A
2b760 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
2b770 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
2b780 2d 2d 0d 0a 35 31 0d 0a 35 31 0d 0a 35 31 0d 0a  --..51..51..51..
2b790 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2b7a0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2b7b0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2b7c0 20 6c 61 62 65 6c 2d 39 37 30 0d 0a 53 45 4c 45   label-970..SELE
2b7d0 43 54 20 2d 20 43 41 53 54 20 28 20 2d 20 35 31  CT - CAST ( - 51
2b7e0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52   AS INTEGER ) FR
2b7f0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
2b800 0a 2d 2d 2d 2d 0d 0a 35 31 0d 0a 35 31 0d 0a 35  .----..51..51..5
2b810 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  1....query I row
2b820 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2b830 54 49 4e 43 54 20 2b 20 2d 20 63 6f 6c 30 20 2a  TINCT + - col0 *
2b840 20 31 39 20 46 52 4f 4d 20 74 61 62 32 20 41 53   19 FROM tab2 AS
2b850 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 32   cor0..----..-12
2b860 31 36 0d 0a 2d 31 34 32 35 0d 0a 2d 38 37 34 0d  16..-1425..-874.
2b870 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72  ...skipif postgr
2b880 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51  esql # PostgreSQ
2b890 4c 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68  L requires AS wh
2b8a0 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70  en renaming outp
2b8b0 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72  ut columns..quer
2b8c0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2b8d0 45 43 54 20 2d 20 2b 20 63 6f 6c 31 20 63 6f 6c  ECT - + col1 col
2b8e0 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
2b8f0 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20 2a  or0 WHERE col1 *
2b900 20 2b 20 2b 20 63 6f 6c 30 20 2b 20 2b 20 63 6f   + + col0 + + co
2b910 6c 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2b  l2 NOT BETWEEN +
2b920 20 32 33 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d   23 AND NULL..--
2b930 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
2b940 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74  ql # DIV for int
2b950 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
2b960 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2b970 20 6c 61 62 65 6c 2d 39 37 33 0d 0a 53 45 4c 45   label-973..SELE
2b980 43 54 20 2d 20 37 38 20 44 49 56 20 2d 20 63 6f  CT - 78 DIV - co
2b990 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
2b9a0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  cor0..----..0..0
2b9b0 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..1....skipif my
2b9c0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2b9d0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2b9e0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 33 0d  wsort label-973.
2b9f0 0a 53 45 4c 45 43 54 20 2d 20 37 38 20 2f 20 2d  .SELECT - 78 / -
2ba00 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20   col0 FROM tab1 
2ba10 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30  AS cor0..----..0
2ba20 0d 0a 30 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..0..1....onlyif
2ba30 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2ba40 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2ba50 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
2ba60 73 6f 72 74 20 6c 61 62 65 6c 2d 39 37 34 0d 0a  sort label-974..
2ba70 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 63 6f 6c  SELECT ALL + col
2ba80 32 20 44 49 56 20 28 20 39 35 20 29 20 46 52 4f  2 DIV ( 95 ) FRO
2ba90 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
2baa0 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d 0a 73 6b  -..0..0..1....sk
2bab0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2bac0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2bad0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2bae0 65 6c 2d 39 37 34 0d 0a 53 45 4c 45 43 54 20 41  el-974..SELECT A
2baf0 4c 4c 20 2b 20 63 6f 6c 32 20 2f 20 28 20 39 35  LL + col2 / ( 95
2bb00 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72   ) FROM tab1 cor
2bb10 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31  0..----..0..0..1
2bb20 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2bb30 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
2bb40 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
2bb50 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2bb60 61 62 65 6c 2d 39 37 35 0d 0a 53 45 4c 45 43 54  abel-975..SELECT
2bb70 20 44 49 53 54 49 4e 43 54 20 2b 20 39 32 20 44   DISTINCT + 92 D
2bb80 49 56 20 2d 20 2d 20 63 6f 6c 30 20 2b 20 2b 20  IV - - col0 + + 
2bb90 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f  col1 AS col0 FRO
2bba0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 0d  M tab0..----..1.
2bbb0 0a 32 32 0d 0a 38 37 0d 0a 0d 0a 73 6b 69 70 69  .22..87....skipi
2bbc0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2bbd0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2bbe0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2bbf0 39 37 35 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  975..SELECT DIST
2bc00 49 4e 43 54 20 2b 20 39 32 20 2f 20 2d 20 2d 20  INCT + 92 / - - 
2bc10 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 20 41 53  col0 + + col1 AS
2bc20 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d   col0 FROM tab0.
2bc30 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 32 0d 0a 38 37  .----..1..22..87
2bc40 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
2bc50 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  ort..SELECT col0
2bc60 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
2bc70 20 28 20 2d 20 2d 20 63 6f 6c 31 20 29 20 49 53   ( - - col1 ) IS
2bc80 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
2bc90 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d  uery II rowsort.
2bca0 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 32 2c 20  .SELECT + col2, 
2bcb0 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
2bcc0 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 33  M tab2..----..23
2bcd0 0d 0a 32 33 0d 0a 34 30 0d 0a 34 30 0d 0a 35 38  ..23..40..40..58
2bce0 0d 0a 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..58....query I 
2bcf0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2bd00 44 49 53 54 49 4e 43 54 20 28 20 2d 20 2d 20 33  DISTINCT ( - - 3
2bd10 35 20 29 20 2d 20 2b 20 2b 20 63 6f 6c 31 20 2d  5 ) - + + col1 -
2bd20 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31 20   - col0 AS col1 
2bd30 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2bd40 0a 31 31 35 0d 0a 37 32 0d 0a 37 39 0d 0a 0d 0a  .115..72..79....
2bd50 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2bd60 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
2bd70 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 34 35 20 41   + col0 + - 45 A
2bd80 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32  S col1 FROM tab2
2bd90 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 31 39 0d 0a 33  ..----..1..19..3
2bda0 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
2bdb0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  sort..SELECT ALL
2bdc0 20 38 34 20 2d 20 2d 20 63 6f 6c 31 20 46 52 4f   84 - - col1 FRO
2bdd0 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30  M tab0..----..10
2bde0 35 0d 0a 31 36 35 0d 0a 38 35 0d 0a 0d 0a 71 75  5..165..85....qu
2bdf0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2be00 45 4c 45 43 54 20 35 20 2b 20 2b 20 38 39 20 41  ELECT 5 + + 89 A
2be10 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
2be20 0d 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a 39 34 0d 0a  ..----..94..94..
2be30 39 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  94....query III 
2be40 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2be50 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  * FROM tab0 AS c
2be60 6f 72 30 20 57 48 45 52 45 20 28 20 2b 20 2d 20  or0 WHERE ( + - 
2be70 36 30 20 4e 4f 54 20 49 4e 20 28 20 2d 20 2d 20  60 NOT IN ( - - 
2be80 34 39 2c 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 36  49, + col0 + - 6
2be90 32 2c 20 2b 20 36 39 2c 20 2d 20 34 35 2c 20 2b  2, + 69, - 45, +
2bea0 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 30 20 29   col1 * + col0 )
2beb0 20 29 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75   )..----..9 valu
2bec0 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 34  es hashing to c4
2bed0 62 34 32 37 36 35 64 66 66 39 34 65 61 61 61 34  b42765dff94eaaa4
2bee0 36 30 34 30 65 35 33 37 66 62 34 33 62 37 0d 0a  6040e537fb43b7..
2bef0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2bf00 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45   CAST syntax: DE
2bf10 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75  CIMAL type: ..qu
2bf20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2bf30 62 65 6c 2d 39 38 33 0d 0a 53 45 4c 45 43 54 20  bel-983..SELECT 
2bf40 44 49 53 54 49 4e 43 54 20 2d 20 2b 20 39 30 20  DISTINCT - + 90 
2bf50 2a 20 2d 20 41 56 47 20 28 20 44 49 53 54 49 4e  * - AVG ( DISTIN
2bf60 43 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53  CT CAST( NULL AS
2bf70 20 44 45 43 49 4d 41 4c 20 29 20 29 20 41 53 20   DECIMAL ) ) AS 
2bf80 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
2bf90 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49  S cor0 CROSS JOI
2bfa0 4e 20 74 61 62 32 20 41 53 20 63 6f 72 31 0d 0a  N tab2 AS cor1..
2bfb0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b  ----..NULL....sk
2bfc0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
2bfd0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
2bfe0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2bff0 65 6c 2d 39 38 33 0d 0a 53 45 4c 45 43 54 20 44  el-983..SELECT D
2c000 49 53 54 49 4e 43 54 20 2d 20 2b 20 39 30 20 2a  ISTINCT - + 90 *
2c010 20 2d 20 41 56 47 20 28 20 44 49 53 54 49 4e 43   - AVG ( DISTINC
2c020 54 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  T CAST ( NULL AS
2c030 20 52 45 41 4c 20 29 20 29 20 41 53 20 63 6f 6c   REAL ) ) AS col
2c040 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
2c050 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
2c060 61 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d  ab2 AS cor1..---
2c070 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69  -..NULL....onlyi
2c080 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
2c090 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
2c0a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2c0b0 62 65 6c 2d 39 38 34 0d 0a 53 45 4c 45 43 54 20  bel-984..SELECT 
2c0c0 2d 20 36 30 20 2a 20 43 4f 55 4e 54 28 20 2a 20  - 60 * COUNT( * 
2c0d0 29 20 2a 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ) * + COUNT( * )
2c0e0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2c0f0 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53  b0 AS cor0 CROSS
2c100 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20 63 6f   JOIN tab2 AS co
2c110 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 38 36 30 0d  r1..----..-4860.
2c120 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2c130 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2c140 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2c150 74 20 6c 61 62 65 6c 2d 39 38 34 0d 0a 53 45 4c  t label-984..SEL
2c160 45 43 54 20 2d 20 36 30 20 2a 20 43 4f 55 4e 54  ECT - 60 * COUNT
2c170 20 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55 4e 54   ( * ) * + COUNT
2c180 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 32 20 46   ( * ) AS col2 F
2c190 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2c1a0 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62 32   CROSS JOIN tab2
2c1b0 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a   AS cor1..----..
2c1c0 2d 34 38 36 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -4860....onlyif 
2c1d0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2c1e0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2c1f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2c200 6c 2d 39 38 35 0d 0a 53 45 4c 45 43 54 20 43 4f  l-985..SELECT CO
2c210 55 4e 54 28 20 39 39 20 29 20 2b 20 2b 20 2d 20  UNT( 99 ) + + - 
2c220 31 34 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  14 AS col2 FROM 
2c230 74 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f  tab0 AS cor0 CRO
2c240 53 53 20 4a 4f 49 4e 20 74 61 62 32 20 41 53 20  SS JOIN tab2 AS 
2c250 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a  cor1..----..-5..
2c260 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2c270 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2c280 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2c290 20 6c 61 62 65 6c 2d 39 38 35 0d 0a 53 45 4c 45   label-985..SELE
2c2a0 43 54 20 43 4f 55 4e 54 20 28 20 39 39 20 29 20  CT COUNT ( 99 ) 
2c2b0 2b 20 2b 20 2d 20 31 34 20 41 53 20 63 6f 6c 32  + + - 14 AS col2
2c2c0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
2c2d0 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61  r0 CROSS JOIN ta
2c2e0 62 32 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d  b2 AS cor1..----
2c2f0 0d 0a 2d 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..-5....onlyif m
2c300 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
2c310 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
2c320 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2c330 2d 39 38 36 0d 0a 53 45 4c 45 43 54 20 44 49 53  -986..SELECT DIS
2c340 54 49 4e 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a  TINCT + COUNT( *
2c350 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
2c360 63 6f 72 30 20 57 48 45 52 45 20 63 6f 6c 31 20  cor0 WHERE col1 
2c370 2f 20 2b 20 63 6f 6c 31 20 3e 20 2d 20 63 6f 6c  / + col1 > - col
2c380 32 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a  2 + col1..----..
2c390 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
2c3a0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
2c3b0 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
2c3c0 6f 72 74 20 6c 61 62 65 6c 2d 39 38 36 0d 0a 53  ort label-986..S
2c3d0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2c3e0 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
2c3f0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
2c400 48 45 52 45 20 63 6f 6c 31 20 2f 20 2b 20 63 6f  HERE col1 / + co
2c410 6c 31 20 3e 20 2d 20 63 6f 6c 32 20 2b 20 63 6f  l1 > - col2 + co
2c420 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 6f  l1..----..1....o
2c430 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2c440 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2c450 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2c460 74 20 6c 61 62 65 6c 2d 39 38 37 0d 0a 53 45 4c  t label-987..SEL
2c470 45 43 54 20 41 4c 4c 20 2b 20 53 55 4d 28 20 44  ECT ALL + SUM( D
2c480 49 53 54 49 4e 43 54 20 2d 20 34 20 29 20 46 52  ISTINCT - 4 ) FR
2c490 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
2c4a0 0a 2d 2d 2d 2d 0d 0a 2d 34 0d 0a 0d 0a 73 6b 69  .----..-4....ski
2c4b0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2c4c0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2c4d0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2c4e0 6c 2d 39 38 37 0d 0a 53 45 4c 45 43 54 20 41 4c  l-987..SELECT AL
2c4f0 4c 20 2b 20 53 55 4d 20 28 20 44 49 53 54 49 4e  L + SUM ( DISTIN
2c500 43 54 20 2d 20 34 20 29 20 46 52 4f 4d 20 74 61  CT - 4 ) FROM ta
2c510 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
2c520 0d 0a 2d 34 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..-4....query II
2c530 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2c540 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
2c550 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
2c560 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 2b 20  HERE NOT col1 + 
2c570 2b 20 63 6f 6c 31 20 42 45 54 57 45 45 4e 20 2b  + col1 BETWEEN +
2c580 20 2b 20 36 34 20 2b 20 2d 20 2d 20 63 6f 6c 30   + 64 + - - col0
2c590 20 2b 20 2d 20 2b 20 28 20 63 6f 6c 31 20 29 20   + - + ( col1 ) 
2c5a0 2a 20 2d 20 2d 20 37 33 20 41 4e 44 20 28 20 39  * - - 73 AND ( 9
2c5b0 37 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  7 )..----....onl
2c5c0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2c5d0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
2c5e0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2c5f0 6c 61 62 65 6c 2d 39 38 39 0d 0a 53 45 4c 45 43  label-989..SELEC
2c600 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 4d  T DISTINCT + + M
2c610 41 58 28 20 44 49 53 54 49 4e 43 54 20 2b 20 35  AX( DISTINCT + 5
2c620 33 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  3 ) col0 FROM ta
2c630 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
2c640 0d 0a 35 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..53....skipif m
2c650 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2c660 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f  tible..skipif po
2c670 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67  stgresql # Postg
2c680 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41  reSQL requires A
2c690 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20  S when renaming 
2c6a0 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a  output columns..
2c6b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2c6c0 6c 61 62 65 6c 2d 39 38 39 0d 0a 53 45 4c 45 43  label-989..SELEC
2c6d0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 4d  T DISTINCT + + M
2c6e0 41 58 20 28 20 44 49 53 54 49 4e 43 54 20 2b 20  AX ( DISTINCT + 
2c6f0 35 33 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74  53 ) col0 FROM t
2c700 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2c710 2d 0d 0a 35 33 0d 0a 0d 0a 71 75 65 72 79 20 49  -..53....query I
2c720 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2c730 20 41 4c 4c 20 2b 20 33 37 20 41 53 20 63 6f 6c   ALL + 37 AS col
2c740 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  0 FROM tab0 AS c
2c750 6f 72 30 20 57 48 45 52 45 20 35 31 20 2a 20 2b  or0 WHERE 51 * +
2c760 20 36 38 20 2a 20 2d 20 38 31 20 42 45 54 57 45   68 * - 81 BETWE
2c770 45 4e 20 63 6f 6c 32 20 41 4e 44 20 2d 20 2d 20  EN col2 AND - - 
2c780 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  col2..----....qu
2c790 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2c7a0 45 4c 45 43 54 20 2d 20 2b 20 36 38 20 2a 20 32  ELECT - + 68 * 2
2c7b0 30 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  0 AS col0 FROM t
2c7c0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2c7d0 2d 0d 0a 2d 31 33 36 30 0d 0a 2d 31 33 36 30 0d  -..-1360..-1360.
2c7e0 0a 2d 31 33 36 30 0d 0a 0d 0a 6f 6e 6c 79 69 66  .-1360....onlyif
2c7f0 20 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72   mysql # DIV for
2c800 20 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f   integer divisio
2c810 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  n: ..query I row
2c820 73 6f 72 74 20 6c 61 62 65 6c 2d 39 39 32 0d 0a  sort label-992..
2c830 53 45 4c 45 43 54 20 2b 20 32 39 20 2a 20 39 32  SELECT + 29 * 92
2c840 20 44 49 56 20 35 36 20 2a 20 2b 20 33 31 20 41   DIV 56 * + 31 A
2c850 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31  S col1 FROM tab1
2c860 0d 0a 2d 2d 2d 2d 0d 0a 31 34 35 37 0d 0a 31 34  ..----..1457..14
2c870 35 37 0d 0a 31 34 35 37 0d 0a 0d 0a 73 6b 69 70  57..1457....skip
2c880 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
2c890 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
2c8a0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2c8b0 2d 39 39 32 0d 0a 53 45 4c 45 43 54 20 2b 20 32  -992..SELECT + 2
2c8c0 39 20 2a 20 39 32 20 2f 20 35 36 20 2a 20 2b 20  9 * 92 / 56 * + 
2c8d0 33 31 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  31 AS col1 FROM 
2c8e0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 35 37  tab1..----..1457
2c8f0 0d 0a 31 34 35 37 0d 0a 31 34 35 37 0d 0a 0d 0a  ..1457..1457....
2c900 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2c910 0a 53 45 4c 45 43 54 20 2b 20 39 35 20 2a 20 2d  .SELECT + 95 * -
2c920 20 2b 20 31 31 20 41 53 20 63 6f 6c 32 20 46 52   + 11 AS col2 FR
2c930 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
2c940 31 30 34 35 0d 0a 2d 31 30 34 35 0d 0a 2d 31 30  1045..-1045..-10
2c950 34 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  45....query I ro
2c960 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
2c970 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
2c980 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54  M tab0 WHERE NOT
2c990 20 28 20 2d 20 2d 20 63 6f 6c 31 20 29 20 42 45   ( - - col1 ) BE
2c9a0 54 57 45 45 4e 20 63 6f 6c 31 20 41 4e 44 20 4e  TWEEN col1 AND N
2c9b0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
2c9c0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2c9d0 4c 45 43 54 20 41 4c 4c 20 2b 20 33 32 20 2a 20  LECT ALL + 32 * 
2c9e0 2b 20 2d 20 34 39 20 41 53 20 63 6f 6c 30 20 46  + - 49 AS col0 F
2c9f0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
2ca00 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 35 36 38 0d 0a 2d  ..----..-1568..-
2ca10 31 35 36 38 0d 0a 2d 31 35 36 38 0d 0a 0d 0a 73  1568..-1568....s
2ca20 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c  kipif postgresql
2ca30 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65   # PostgreSQL re
2ca40 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20 72  quires AS when r
2ca50 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63  enaming output c
2ca60 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49  olumns..query II
2ca70 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2ca80 20 41 4c 4c 20 39 30 2c 20 63 6f 6c 31 20 63 6f   ALL 90, col1 co
2ca90 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
2caa0 2d 2d 0d 0a 39 30 0d 0a 35 31 0d 0a 39 30 0d 0a  --..90..51..90..
2cab0 36 37 0d 0a 39 30 0d 0a 37 37 0d 0a 0d 0a 71 75  67..90..77....qu
2cac0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2cad0 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f 6c 30  ELECT ALL - col0
2cae0 20 2b 20 2b 20 32 35 20 41 53 20 63 6f 6c 31 20   + + 25 AS col1 
2caf0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
2cb00 0a 2d 32 31 0d 0a 2d 33 39 0d 0a 2d 35 30 0d 0a  .-21..-39..-50..
2cb10 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2cb20 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67   CAST syntax: ag
2cb30 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2cb40 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2cb50 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2cb60 61 62 65 6c 2d 39 39 38 0d 0a 53 45 4c 45 43 54  abel-998..SELECT
2cb70 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e   DISTINCT - COUN
2cb80 54 28 20 2a 20 29 20 2b 20 2d 20 2b 20 43 41 53  T( * ) + - + CAS
2cb90 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45  T( NULL AS SIGNE
2cba0 44 20 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61  D ) col0 FROM ta
2cbb0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b1..----..NULL..
2cbc0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2cbd0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2cbe0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
2cbf0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
2cc00 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
2cc10 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
2cc20 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
2cc30 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2cc40 39 39 38 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  998..SELECT DIST
2cc50 49 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a  INCT - COUNT ( *
2cc60 20 29 20 2b 20 2d 20 2b 20 43 41 53 54 20 28 20   ) + - + CAST ( 
2cc70 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
2cc80 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  ) col0 FROM tab1
2cc90 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
2cca0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
2ccb0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
2ccc0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
2ccd0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2cce0 2d 39 39 39 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  -999..SELECT ALL
2ccf0 20 63 6f 6c 32 20 44 49 56 20 39 39 20 41 53 20   col2 DIV 99 AS 
2cd00 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
2cd10 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31 0d 0a 0d  ----..0..0..1...
2cd20 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2cd30 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2cd40 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2cd50 6c 61 62 65 6c 2d 39 39 39 0d 0a 53 45 4c 45 43  label-999..SELEC
2cd60 54 20 41 4c 4c 20 63 6f 6c 32 20 2f 20 39 39 20  T ALL col2 / 99 
2cd70 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2cd80 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 31  0..----..0..0..1
2cd90 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2cda0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2cdb0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2cdc0 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20  uery II rowsort 
2cdd0 6c 61 62 65 6c 2d 31 30 30 30 0d 0a 53 45 4c 45  label-1000..SELE
2cde0 43 54 20 63 6f 6c 31 2c 20 43 41 53 54 28 20 2b  CT col1, CAST( +
2cdf0 20 63 6f 6c 30 20 41 53 20 53 49 47 4e 45 44 20   col0 AS SIGNED 
2ce00 29 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  ) col0 FROM tab0
2ce10 0d 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 39 37 0d 0a 32  ..----..1..97..2
2ce20 31 0d 0a 38 37 0d 0a 38 31 0d 0a 31 35 0d 0a 0d  1..87..81..15...
2ce30 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2ce40 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2ce50 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
2ce60 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
2ce70 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
2ce80 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
2ce90 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
2cea0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2ceb0 31 30 30 30 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  1000..SELECT col
2cec0 31 2c 20 43 41 53 54 20 28 20 2b 20 63 6f 6c 30  1, CAST ( + col0
2ced0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 63 6f   AS INTEGER ) co
2cee0 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d  l0 FROM tab0..--
2cef0 2d 2d 0d 0a 31 0d 0a 39 37 0d 0a 32 31 0d 0a 38  --..1..97..21..8
2cf00 37 0d 0a 38 31 0d 0a 31 35 0d 0a 0d 0a 71 75 65  7..81..15....que
2cf10 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2cf20 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 30 20 2a 20  LECT ALL col0 * 
2cf30 2b 20 31 31 20 46 52 4f 4d 20 74 61 62 32 20 63  + 11 FROM tab2 c
2cf40 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 30 36 0d 0a  or0..----..506..
2cf50 37 30 34 0d 0a 38 32 35 0d 0a 0d 0a 71 75 65 72  704..825....quer
2cf60 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2cf70 45 43 54 20 2d 20 39 31 20 2b 20 2b 20 38 36 20  ECT - 91 + + 86 
2cf80 2b 20 63 6f 6c 30 20 2a 20 2b 20 2b 20 63 6f 6c  + col0 * + + col
2cf90 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  0 AS col1 FROM t
2cfa0 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
2cfb0 2d 0d 0a 32 35 39 36 0d 0a 37 32 32 30 0d 0a 38  -..2596..7220..8
2cfc0 32 37 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  276....onlyif my
2cfd0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
2cfe0 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
2cff0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2d000 31 30 30 33 0d 0a 53 45 4c 45 43 54 20 43 4f 55  1003..SELECT COU
2d010 4e 54 28 20 2d 20 32 38 20 29 20 2d 20 2b 20 39  NT( - 28 ) - + 9
2d020 38 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  8 AS col0 FROM t
2d030 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab1 AS cor0 WHER
2d040 45 20 2b 20 36 35 20 49 53 20 4e 55 4c 4c 0d 0a  E + 65 IS NULL..
2d050 2d 2d 2d 2d 0d 0a 2d 39 38 0d 0a 0d 0a 73 6b 69  ----..-98....ski
2d060 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2d070 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2d080 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2d090 6c 2d 31 30 30 33 0d 0a 53 45 4c 45 43 54 20 43  l-1003..SELECT C
2d0a0 4f 55 4e 54 20 28 20 2d 20 32 38 20 29 20 2d 20  OUNT ( - 28 ) - 
2d0b0 2b 20 39 38 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 98 AS col0 FRO
2d0c0 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20 57  M tab1 AS cor0 W
2d0d0 48 45 52 45 20 2b 20 36 35 20 49 53 20 4e 55 4c  HERE + 65 IS NUL
2d0e0 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 39 38 0d 0a 0d 0a  L..----..-98....
2d0f0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
2d100 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72  AST syntax: aggr
2d110 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49  egate syntax: SI
2d120 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
2d130 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2d140 65 6c 2d 31 30 30 34 0d 0a 53 45 4c 45 43 54 20  el-1004..SELECT 
2d150 44 49 53 54 49 4e 43 54 20 28 20 2d 20 4d 41 58  DISTINCT ( - MAX
2d160 28 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 29 20 29  ( ALL - col0 ) )
2d170 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
2d180 62 31 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  b1 cor0 WHERE NO
2d190 54 20 28 20 4e 4f 54 20 2b 20 2d 20 43 41 53 54  T ( NOT + - CAST
2d1a0 28 20 2d 20 2b 20 63 6f 6c 31 20 41 53 20 53 49  ( - + col1 AS SI
2d1b0 47 4e 45 44 20 29 20 49 53 20 4e 55 4c 4c 20 29  GNED ) IS NULL )
2d1c0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
2d1d0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
2d1e0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
2d1f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2d200 61 62 65 6c 2d 31 30 30 34 0d 0a 53 45 4c 45 43  abel-1004..SELEC
2d210 54 20 44 49 53 54 49 4e 43 54 20 28 20 2d 20 4d  T DISTINCT ( - M
2d220 41 58 20 28 20 41 4c 4c 20 2d 20 63 6f 6c 30 20  AX ( ALL - col0 
2d230 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ) ) AS col0 FROM
2d240 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
2d250 20 4e 4f 54 20 28 20 4e 4f 54 20 2b 20 2d 20 43   NOT ( NOT + - C
2d260 41 53 54 20 28 20 2d 20 2b 20 63 6f 6c 31 20 41  AST ( - + col1 A
2d270 53 20 49 4e 54 45 47 45 52 20 29 20 49 53 20 4e  S INTEGER ) IS N
2d280 55 4c 4c 20 29 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c  ULL )..----..NUL
2d290 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  L....query I row
2d2a0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 32 30 20  sort..SELECT 20 
2d2b0 2b 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  + + col2 FROM ta
2d2c0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
2d2d0 0d 0a 31 31 36 0d 0a 37 39 0d 0a 38 38 0d 0a 0d  ..116..79..88...
2d2e0 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2d2f0 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2a 20  ..SELECT col0 * 
2d300 2d 20 63 6f 6c 30 20 2b 20 2d 20 39 31 20 46 52  - col0 + - 91 FR
2d310 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
2d320 0a 2d 2d 2d 2d 0d 0a 2d 32 32 30 37 0d 0a 2d 34  .----..-2207..-4
2d330 31 38 37 0d 0a 2d 35 37 31 36 0d 0a 0d 0a 71 75  187..-5716....qu
2d340 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ery II rowsort..
2d350 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2d360 2d 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 32  - - col2 AS col2
2d370 2c 20 2b 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  , + col2 FROM ta
2d380 62 30 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  b0 cor0 WHERE NO
2d390 54 20 28 20 4e 55 4c 4c 20 29 20 3c 20 4e 55 4c  T ( NULL ) < NUL
2d3a0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
2d3b0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2d3c0 43 54 20 2d 20 35 32 20 2b 20 2b 20 2b 20 38 35  CT - 52 + + + 85
2d3d0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2d3e0 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
2d3f0 0d 0a 33 33 0d 0a 33 33 0d 0a 33 33 0d 0a 0d 0a  ..33..33..33....
2d400 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
2d410 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
2d420 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
2d430 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
2d440 2d 31 30 30 39 0d 0a 53 45 4c 45 43 54 20 63 6f  -1009..SELECT co
2d450 6c 32 20 2f 20 28 20 2d 20 63 6f 6c 31 20 29 20  l2 / ( - col1 ) 
2d460 2a 20 38 30 20 2a 20 2b 20 2b 20 63 6f 6c 32 20  * 80 * + + col2 
2d470 2b 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  + + CAST( NULL A
2d480 53 20 53 49 47 4e 45 44 20 29 20 2a 20 2d 20 34  S SIGNED ) * - 4
2d490 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
2d4a0 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..NULL..NULL..NU
2d4b0 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  LL....skipif mys
2d4c0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2d4d0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
2d4e0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 30 39 0d  sort label-1009.
2d4f0 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 2f 20 28  .SELECT col2 / (
2d500 20 2d 20 63 6f 6c 31 20 29 20 2a 20 38 30 20 2a   - col1 ) * 80 *
2d510 20 2b 20 2b 20 63 6f 6c 32 20 2b 20 2b 20 43 41   + + col2 + + CA
2d520 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54  ST ( NULL AS INT
2d530 45 47 45 52 20 29 20 2a 20 2d 20 34 20 46 52 4f  EGER ) * - 4 FRO
2d540 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab0..----..NU
2d550 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
2d560 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
2d570 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
2d580 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
2d590 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
2d5a0 65 6c 2d 31 30 31 30 0d 0a 53 45 4c 45 43 54 20  el-1010..SELECT 
2d5b0 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 2b 20  DISTINCT col2 + 
2d5c0 2b 20 43 41 53 54 28 20 2d 20 2b 20 31 30 20 41  + CAST( - + 10 A
2d5d0 53 20 53 49 47 4e 45 44 20 29 20 46 52 4f 4d 20  S SIGNED ) FROM 
2d5e0 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 34 39 0d 0a  tab1..----..49..
2d5f0 35 38 0d 0a 38 36 0d 0a 0d 0a 73 6b 69 70 69 66  58..86....skipif
2d600 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2d610 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2d620 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
2d630 30 31 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  010..SELECT DIST
2d640 49 4e 43 54 20 63 6f 6c 32 20 2b 20 2b 20 43 41  INCT col2 + + CA
2d650 53 54 20 28 20 2d 20 2b 20 31 30 20 41 53 20 49  ST ( - + 10 AS I
2d660 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20 74 61  NTEGER ) FROM ta
2d670 62 31 0d 0a 2d 2d 2d 2d 0d 0a 34 39 0d 0a 35 38  b1..----..49..58
2d680 0d 0a 38 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..86....onlyif m
2d690 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
2d6a0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
2d6b0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2d6c0 72 74 20 6c 61 62 65 6c 2d 31 30 31 31 0d 0a 53  rt label-1011..S
2d6d0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
2d6e0 20 63 6f 6c 31 20 44 49 56 20 2d 20 63 6f 6c 31   col1 DIV - col1
2d6f0 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
2d700 20 28 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e   ( NOT NULL IS N
2d710 4f 54 20 4e 55 4c 4c 20 29 20 4f 52 20 4e 4f 54  OT NULL ) OR NOT
2d720 20 2b 20 63 6f 6c 30 20 49 53 20 4e 4f 54 20 4e   + col0 IS NOT N
2d730 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d  ULL..----..-1...
2d740 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2d750 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2d760 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2d770 6c 61 62 65 6c 2d 31 30 31 31 0d 0a 53 45 4c 45  label-1011..SELE
2d780 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 63 6f  CT DISTINCT + co
2d790 6c 31 20 2f 20 2d 20 63 6f 6c 31 20 46 52 4f 4d  l1 / - col1 FROM
2d7a0 20 74 61 62 30 20 57 48 45 52 45 20 28 20 4e 4f   tab0 WHERE ( NO
2d7b0 54 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55  T NULL IS NOT NU
2d7c0 4c 4c 20 29 20 4f 52 20 4e 4f 54 20 2b 20 63 6f  LL ) OR NOT + co
2d7d0 6c 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  l0 IS NOT NULL..
2d7e0 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72  ----..-1....quer
2d7f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2d800 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20 34  ECT DISTINCT + 4
2d810 39 20 2b 20 2d 20 2d 20 63 6f 6c 31 20 41 53 20  9 + - - col1 AS 
2d820 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col0 FROM tab0..
2d830 2d 2d 2d 2d 0d 0a 31 33 30 0d 0a 35 30 0d 0a 37  ----..130..50..7
2d840 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  0....query I row
2d850 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
2d860 54 49 4e 43 54 20 2d 20 28 20 2d 20 63 6f 6c 30  TINCT - ( - col0
2d870 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
2d880 74 61 62 32 20 57 48 45 52 45 20 63 6f 6c 32 20  tab2 WHERE col2 
2d890 4e 4f 54 20 49 4e 20 28 20 2d 20 2b 20 33 30 20  NOT IN ( - + 30 
2d8a0 29 0d 0a 2d 2d 2d 2d 0d 0a 34 36 0d 0a 36 34 0d  )..----..46..64.
2d8b0 0a 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  .75....query II 
2d8c0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2d8d0 39 35 20 2a 20 2d 20 63 6f 6c 30 2c 20 2b 20 63  95 * - col0, + c
2d8e0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  ol1 FROM tab1..-
2d8f0 2d 2d 2d 0d 0a 2d 34 38 34 35 0d 0a 31 34 0d 0a  ---..-4845..14..
2d900 2d 38 30 37 35 0d 0a 35 0d 0a 2d 38 36 34 35 0d  -8075..5..-8645.
2d910 0a 34 37 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  .47....query III
2d920 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
2d930 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
2d940 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
2d950 45 52 45 20 4e 4f 54 20 33 36 20 49 4e 20 28 20  ERE NOT 36 IN ( 
2d960 2d 20 2d 20 34 31 20 2b 20 63 6f 6c 31 2c 20 2b  - - 41 + col1, +
2d970 20 63 6f 6c 30 2c 20 2d 20 34 32 20 2a 20 2d 20   col0, - 42 * - 
2d980 2b 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a  + col1 )..----..
2d990 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
2d9a0 20 74 6f 20 63 34 62 34 32 37 36 35 64 66 66 39   to c4b42765dff9
2d9b0 34 65 61 61 61 34 36 30 34 30 65 35 33 37 66 62  4eaaa46040e537fb
2d9c0 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  43b7....onlyif m
2d9d0 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69  ysql # DIV for i
2d9e0 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a  nteger division:
2d9f0 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
2da00 6f 72 74 20 6c 61 62 65 6c 2d 31 30 31 36 0d 0a  ort label-1016..
2da10 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
2da20 33 36 20 2d 20 2b 20 63 6f 6c 32 20 41 53 20 63  36 - + col2 AS c
2da30 6f 6c 30 2c 20 33 37 20 44 49 56 20 2b 20 38 34  ol0, 37 DIV + 84
2da40 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
2da50 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d  cor0..----..-23.
2da60 0a 30 0d 0a 2d 33 32 0d 0a 30 0d 0a 2d 36 30 0d  .0..-32..0..-60.
2da70 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  .0....skipif mys
2da80 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
2da90 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
2daa0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
2dab0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
2dac0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
2dad0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
2dae0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
2daf0 61 62 65 6c 2d 31 30 31 36 0d 0a 53 45 4c 45 43  abel-1016..SELEC
2db00 54 20 44 49 53 54 49 4e 43 54 20 33 36 20 2d 20  T DISTINCT 36 - 
2db10 2b 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 2c 20  + col2 AS col0, 
2db20 33 37 20 2f 20 2b 20 38 34 20 63 6f 6c 32 20 46  37 / + 84 col2 F
2db30 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d  ROM tab1 cor0..-
2db40 2d 2d 2d 0d 0a 2d 32 33 0d 0a 30 0d 0a 2d 33 32  ---..-23..0..-32
2db50 0d 0a 30 0d 0a 2d 36 30 0d 0a 30 0d 0a 0d 0a 71  ..0..-60..0....q
2db60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2db70 53 45 4c 45 43 54 20 2b 20 33 37 20 41 53 20 63  SELECT + 37 AS c
2db80 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
2db90 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
2dba0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
2dbb0 33 37 0d 0a 33 37 0d 0a 33 37 0d 0a 0d 0a 71 75  37..37..37....qu
2dbc0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
2dbd0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d  ELECT DISTINCT -
2dbe0 20 63 6f 6c 32 20 2a 20 2d 20 2d 20 34 31 20 2b   col2 * - - 41 +
2dbf0 20 28 20 2b 20 37 31 20 29 20 2d 20 2b 20 63 6f   ( + 71 ) - + co
2dc00 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
2dc10 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 34  cor0..----..-164
2dc20 36 0d 0a 2d 32 33 37 34 0d 0a 2d 39 32 33 0d 0a  6..-2374..-923..
2dc30 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2dc40 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 31  t..SELECT + col1
2dc50 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 2d 20 2d 20   * + + col1 - - 
2dc60 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46 52 4f  col1 AS col0 FRO
2dc70 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
2dc80 2d 2d 2d 2d 0d 0a 32 31 30 0d 0a 32 32 35 36 0d  ----..210..2256.
2dc90 0a 33 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  .30....onlyif my
2dca0 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e  sql # DIV for in
2dcb0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
2dcc0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2dcd0 74 20 6c 61 62 65 6c 2d 31 30 32 30 0d 0a 53 45  t label-1020..SE
2dce0 4c 45 43 54 20 2d 20 30 20 44 49 56 20 2d 20 2b  LECT - 0 DIV - +
2dcf0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
2dd00 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a  .----..0..0..0..
2dd10 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2dd20 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2dd30 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2dd40 20 6c 61 62 65 6c 2d 31 30 32 30 0d 0a 53 45 4c   label-1020..SEL
2dd50 45 43 54 20 2d 20 30 20 2f 20 2d 20 2b 20 63 6f  ECT - 0 / - + co
2dd60 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
2dd70 2d 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f  --..0..0..0....o
2dd80 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
2dd90 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
2dda0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
2ddb0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2ddc0 31 30 32 31 0d 0a 53 45 4c 45 43 54 20 38 31 20  1021..SELECT 81 
2ddd0 2d 20 2d 20 43 41 53 54 28 20 38 20 41 53 20 53  - - CAST( 8 AS S
2dde0 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 31 20  IGNED ) AS col1 
2ddf0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2de00 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
2de10 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  1 AS cor1..----.
2de20 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
2de30 67 20 74 6f 20 35 63 38 34 32 38 65 39 66 31 65  g to 5c8428e9f1e
2de40 37 64 65 33 64 30 39 63 62 30 38 31 34 62 34 63  7de3d09cb0814b4c
2de50 63 31 37 34 33 0d 0a 0d 0a 73 6b 69 70 69 66 20  c1743....skipif 
2de60 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2de70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2de80 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2de90 32 31 0d 0a 53 45 4c 45 43 54 20 38 31 20 2d 20  21..SELECT 81 - 
2dea0 2d 20 43 41 53 54 20 28 20 38 20 41 53 20 49 4e  - CAST ( 8 AS IN
2deb0 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31 20  TEGER ) AS col1 
2dec0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
2ded0 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74 61 62  0 CROSS JOIN tab
2dee0 31 20 41 53 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  1 AS cor1..----.
2def0 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
2df00 67 20 74 6f 20 35 63 38 34 32 38 65 39 66 31 65  g to 5c8428e9f1e
2df10 37 64 65 33 64 30 39 63 62 30 38 31 34 62 34 63  7de3d09cb0814b4c
2df20 63 31 37 34 33 0d 0a 0d 0a 71 75 65 72 79 20 49  c1743....query I
2df30 49 49 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  IIIII rowsort..S
2df40 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
2df50 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 43 52   tab2 AS cor0 CR
2df60 4f 53 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53  OSS JOIN tab0 AS
2df70 20 63 6f 72 31 20 57 48 45 52 45 20 4e 4f 54 20   cor1 WHERE NOT 
2df80 2d 20 36 37 20 2b 20 2d 20 34 34 20 49 53 20 4e  - 67 + - 44 IS N
2df90 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 35 34 20 76 61  ULL..----..54 va
2dfa0 6c 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20  lues hashing to 
2dfb0 33 38 38 38 32 32 32 37 63 66 63 37 63 33 62 66  38882227cfc7c3bf
2dfc0 36 32 31 65 64 31 66 33 30 33 34 35 37 33 39 63  621ed1f30345739c
2dfd0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2dfe0 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
2dff0 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
2e000 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2e010 61 62 65 6c 2d 31 30 32 33 0d 0a 53 45 4c 45 43  abel-1023..SELEC
2e020 54 20 41 4c 4c 20 28 20 2b 20 2b 20 63 6f 6c 32  T ALL ( + + col2
2e030 20 29 20 44 49 56 20 2d 20 37 36 20 41 53 20 63   ) DIV - 76 AS c
2e040 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol0 FROM tab2 AS
2e050 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a   cor0..----..0..
2e060 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  0..0....skipif m
2e070 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2e080 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2e090 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 32  owsort label-102
2e0a0 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20  3..SELECT ALL ( 
2e0b0 2b 20 2b 20 63 6f 6c 32 20 29 20 2f 20 2d 20 37  + + col2 ) / - 7
2e0c0 36 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  6 AS col0 FROM t
2e0d0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
2e0e0 2d 0d 0a 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 6f 6e  -..0..0..0....on
2e0f0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
2e100 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
2e110 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2e120 74 20 6c 61 62 65 6c 2d 31 30 32 34 0d 0a 53 45  t label-1024..SE
2e130 4c 45 43 54 20 2d 20 2b 20 36 35 20 63 6f 6c 32  LECT - + 65 col2
2e140 2c 20 31 36 20 2a 20 2d 20 43 4f 55 4e 54 28 20  , 16 * - COUNT( 
2e150 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53  * ) FROM tab1 AS
2e160 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36 35   cor0..----..-65
2e170 0d 0a 2d 34 38 0d 0a 0d 0a 73 6b 69 70 69 66 20  ..-48....skipif 
2e180 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2e190 61 74 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70  atible..skipif p
2e1a0 6f 73 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74  ostgresql # Post
2e1b0 67 72 65 53 51 4c 20 72 65 71 75 69 72 65 73 20  greSQL requires 
2e1c0 41 53 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67  AS when renaming
2e1d0 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d   output columns.
2e1e0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2e1f0 74 20 6c 61 62 65 6c 2d 31 30 32 34 0d 0a 53 45  t label-1024..SE
2e200 4c 45 43 54 20 2d 20 2b 20 36 35 20 63 6f 6c 32  LECT - + 65 col2
2e210 2c 20 31 36 20 2a 20 2d 20 43 4f 55 4e 54 20 28  , 16 * - COUNT (
2e220 20 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41   * ) FROM tab1 A
2e230 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 36  S cor0..----..-6
2e240 35 0d 0a 2d 34 38 0d 0a 0d 0a 71 75 65 72 79 20  5..-48....query 
2e250 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
2e260 45 43 54 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31  ECT col0 AS col1
2e270 2c 20 63 6f 6c 30 20 2b 20 2d 20 34 35 2c 20 2d  , col0 + - 45, -
2e280 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
2e290 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
2e2a0 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
2e2b0 68 69 6e 67 20 74 6f 20 61 64 31 39 63 33 38 38  hing to ad19c388
2e2c0 66 34 64 36 30 38 39 65 39 62 31 62 39 34 30 37  f4d6089e9b1b9407
2e2d0 64 37 34 33 65 39 30 32 0d 0a 0d 0a 71 75 65 72  d743e902....quer
2e2e0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2e2f0 45 43 54 20 2d 20 63 6f 6c 32 20 2a 20 2d 20 63  ECT - col2 * - c
2e300 6f 6c 32 20 2a 20 2b 20 2b 20 39 20 41 53 20 63  ol2 * + + 9 AS c
2e310 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol0 FROM tab0 AS
2e320 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 38   cor0..----..198
2e330 38 31 0d 0a 38 38 32 30 39 0d 0a 39 30 30 0d 0a  81..88209..900..
2e340 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2e350 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30  t..SELECT + col0
2e360 20 2a 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 63 6f   * - - col1 * co
2e370 6c 30 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l0 AS col1 FROM 
2e380 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
2e390 2d 2d 0d 0a 31 30 37 39 31 36 0d 0a 33 31 35 33  --..107916..3153
2e3a0 39 32 0d 0a 33 37 36 38 37 35 0d 0a 0d 0a 71 75  92..376875....qu
2e3b0 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
2e3c0 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
2e3d0 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 4e 55  ab1 WHERE NOT NU
2e3e0 4c 4c 20 42 45 54 57 45 45 4e 20 2d 20 2b 20 63  LL BETWEEN - + c
2e3f0 6f 6c 30 20 41 4e 44 20 4e 55 4c 4c 0d 0a 2d 2d  ol0 AND NULL..--
2e400 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  --....query II r
2e410 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
2e420 4c 4c 20 2d 20 37 2c 20 63 6f 6c 30 20 46 52 4f  LL - 7, col0 FRO
2e430 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 37  M tab0..----..-7
2e440 0d 0a 31 35 0d 0a 2d 37 0d 0a 38 37 0d 0a 2d 37  ..15..-7..87..-7
2e450 0d 0a 39 37 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ..97....query I 
2e460 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2e470 41 4c 4c 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  ALL - col2 FROM 
2e480 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab1 WHERE NOT N
2e490 55 4c 4c 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  ULL < NULL..----
2e4a0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2e4b0 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2e4c0 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2e4d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2e4e0 61 62 65 6c 2d 31 30 33 31 0d 0a 53 45 4c 45 43  abel-1031..SELEC
2e4f0 54 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20 41  T + CAST( NULL A
2e500 53 20 53 49 47 4e 45 44 20 29 20 2f 20 2b 20 2d  S SIGNED ) / + -
2e510 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
2e520 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c  .----..NULL..NUL
2e530 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  L..NULL....skipi
2e540 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
2e550 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
2e560 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2e570 31 30 33 31 0d 0a 53 45 4c 45 43 54 20 2b 20 43  1031..SELECT + C
2e580 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
2e590 54 45 47 45 52 20 29 20 2f 20 2b 20 2d 20 63 6f  TEGER ) / + - co
2e5a0 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l0 FROM tab2..--
2e5b0 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  --..NULL..NULL..
2e5c0 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49 20  NULL....query I 
2e5d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2e5e0 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 38 34 20  DISTINCT - - 84 
2e5f0 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
2e600 4e 4f 54 20 2b 20 2b 20 63 6f 6c 30 20 2f 20 2b  NOT + + col0 / +
2e610 20 63 6f 6c 31 20 2b 20 34 39 20 4e 4f 54 20 42   col1 + 49 NOT B
2e620 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20  ETWEEN NULL AND 
2e630 2b 20 2b 20 39 38 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  + + 98..----....
2e640 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
2e650 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  t..SELECT * FROM
2e660 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
2e670 4e 55 4c 4c 20 42 45 54 57 45 45 4e 20 2b 20 2d  NULL BETWEEN + -
2e680 20 37 32 20 41 4e 44 20 2d 20 63 6f 6c 32 0d 0a   72 AND - col2..
2e690 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20  ----....query I 
2e6a0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
2e6b0 41 4c 4c 20 2d 20 2d 20 63 6f 6c 32 20 46 52 4f  ALL - - col2 FRO
2e6c0 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
2e6d0 48 45 52 45 20 2b 20 63 6f 6c 31 20 2b 20 2d 20  HERE + col1 + - 
2e6e0 2b 20 32 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  + 22 IS NOT NULL
2e6f0 0d 0a 2d 2d 2d 2d 0d 0a 31 30 0d 0a 34 37 0d 0a  ..----..10..47..
2e700 39 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  99....query I ro
2e710 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
2e720 63 6f 6c 32 20 2a 20 2d 20 63 6f 6c 31 20 2a 20  col2 * - col1 * 
2e730 63 6f 6c 32 20 2b 20 2b 20 2d 20 63 6f 6c 32 20  col2 + + - col2 
2e740 2b 20 2d 20 28 20 2d 20 63 6f 6c 30 20 29 20 41  + - ( - col0 ) A
2e750 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
2e760 0d 0a 2d 2d 2d 2d 0d 0a 31 32 33 32 32 34 0d 0a  ..----..123224..
2e770 32 32 35 34 30 35 0d 0a 32 37 30 30 32 0d 0a 0d  225405..27002...
2e780 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
2e790 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 28 20 2d  ..SELECT ALL ( -
2e7a0 20 2d 20 63 6f 6c 32 20 29 20 2b 20 63 6f 6c 31   - col2 ) + col1
2e7b0 20 2a 20 2d 20 2d 20 32 36 20 46 52 4f 4d 20 74   * - - 26 FROM t
2e7c0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 31 33 34 39 0d  ab2..----..1349.
2e7d0 0a 31 38 30 30 0d 0a 32 30 34 32 0d 0a 0d 0a 71  .1800..2042....q
2e7e0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2e7f0 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 2a 20  SELECT + col0 * 
2e800 2d 20 63 6f 6c 30 20 2d 20 2d 20 2d 20 31 32 20  - col0 - - - 12 
2e810 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72  FROM tab1 AS cor
2e820 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 36 31 33 0d 0a  0..----..-2613..
2e830 2d 37 32 33 37 0d 0a 2d 38 32 39 33 0d 0a 0d 0a  -7237..-8293....
2e840 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2e850 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2e860 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73   ..query II rows
2e870 6f 72 74 20 6c 61 62 65 6c 2d 31 30 33 38 0d 0a  ort label-1038..
2e880 53 45 4c 45 43 54 20 2d 20 2b 20 4d 41 58 28 20  SELECT - + MAX( 
2e890 2b 20 33 32 20 29 2c 20 2d 20 31 32 20 41 53 20  + 32 ), - 12 AS 
2e8a0 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 41  col0 FROM tab2 A
2e8b0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  S cor0..----..-3
2e8c0 32 0d 0a 2d 31 32 0d 0a 0d 0a 73 6b 69 70 69 66  2..-12....skipif
2e8d0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
2e8e0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
2e8f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
2e900 31 30 33 38 0d 0a 53 45 4c 45 43 54 20 2d 20 2b  1038..SELECT - +
2e910 20 4d 41 58 20 28 20 2b 20 33 32 20 29 2c 20 2d   MAX ( + 32 ), -
2e920 20 31 32 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   12 AS col0 FROM
2e930 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
2e940 2d 2d 2d 0d 0a 2d 33 32 0d 0a 2d 31 32 0d 0a 0d  ---..-32..-12...
2e950 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2e960 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
2e970 63 6f 6c 31 2c 20 2d 20 35 32 20 41 53 20 63 6f  col1, - 52 AS co
2e980 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l0 FROM tab0 WHE
2e990 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e  RE NOT NULL IS N
2e9a0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
2e9b0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2e9c0 4c 45 43 54 20 63 6f 6c 32 20 2d 20 2d 20 36 38  LECT col2 - - 68
2e9d0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
2e9e0 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 32 37 0d 0a 31  b1..----..127..1
2e9f0 33 36 0d 0a 31 36 34 0d 0a 0d 0a 6f 6e 6c 79 69  36..164....onlyi
2ea00 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73  f mysql # CAST s
2ea10 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65  yntax: aggregate
2ea20 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20   syntax: SIGNED 
2ea30 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
2ea40 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2ea50 34 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  41..SELECT ALL +
2ea60 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
2ea70 49 47 4e 45 44 20 29 20 2b 20 2b 20 2b 20 43 4f  IGNED ) + + + CO
2ea80 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61  UNT( * ) FROM ta
2ea90 62 30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20  b0 WHERE ( NULL 
2eaa0 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  ) IS NULL..----.
2eab0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
2eac0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2ead0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2eae0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2eaf0 34 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  41..SELECT ALL +
2eb00 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20   CAST ( NULL AS 
2eb10 49 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 2b 20  INTEGER ) + + + 
2eb20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d  COUNT ( * ) FROM
2eb30 20 74 61 62 30 20 57 48 45 52 45 20 28 20 4e 55   tab0 WHERE ( NU
2eb40 4c 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  LL ) IS NULL..--
2eb50 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79  --..NULL....only
2eb60 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2eb70 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2eb80 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2eb90 61 62 65 6c 2d 31 30 34 32 0d 0a 53 45 4c 45 43  abel-1042..SELEC
2eba0 54 20 41 4c 4c 20 2d 20 36 32 20 2b 20 2d 20 43  T ALL - 62 + - C
2ebb0 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2d 20 36 32  OUNT( * ) * - 62
2ebc0 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2ebd0 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 0d 0a 0d  b0..----..124...
2ebe0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2ebf0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2ec00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ec10 6c 61 62 65 6c 2d 31 30 34 32 0d 0a 53 45 4c 45  label-1042..SELE
2ec20 43 54 20 41 4c 4c 20 2d 20 36 32 20 2b 20 2d 20  CT ALL - 62 + - 
2ec30 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2d 20  COUNT ( * ) * - 
2ec40 36 32 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  62 AS col2 FROM 
2ec50 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 34 0d  tab0..----..124.
2ec60 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2ec70 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
2ec80 20 35 36 20 2d 20 2d 20 31 30 20 41 53 20 63 6f   56 - - 10 AS co
2ec90 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
2eca0 2d 2d 0d 0a 2d 34 36 0d 0a 2d 34 36 0d 0a 2d 34  --..-46..-46..-4
2ecb0 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
2ecc0 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a  l # CAST syntax:
2ecd0 20 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d   DECIMAL type: .
2ece0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
2ecf0 72 74 20 6c 61 62 65 6c 2d 31 30 34 34 0d 0a 53  rt label-1044..S
2ed00 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d  ELECT ALL * FROM
2ed10 20 74 61 62 32 20 57 48 45 52 45 20 2b 20 43 41   tab2 WHERE + CA
2ed20 53 54 28 20 2d 20 33 30 20 41 53 20 44 45 43 49  ST( - 30 AS DECI
2ed30 4d 41 4c 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d  MAL ) IS NULL..-
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 49 49 20  ible..query III 
2ed70 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2ed80 34 34 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a  44..SELECT ALL *
2ed90 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45   FROM tab2 WHERE
2eda0 20 2b 20 43 41 53 54 20 28 20 2d 20 33 30 20 41   + CAST ( - 30 A
2edb0 53 20 52 45 41 4c 20 29 20 49 53 20 4e 55 4c 4c  S REAL ) IS NULL
2edc0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20  ..----....query 
2edd0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
2ede0 54 20 44 49 53 54 49 4e 43 54 20 36 33 20 2b 20  T DISTINCT 63 + 
2edf0 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46  - col1 AS col0 F
2ee00 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
2ee10 2d 31 38 0d 0a 34 32 0d 0a 36 32 0d 0a 0d 0a 6f  -18..42..62....o
2ee20 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2ee30 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2ee40 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
2ee50 72 74 20 6c 61 62 65 6c 2d 31 30 34 36 0d 0a 53  rt label-1046..S
2ee60 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20 2a  ELECT + COUNT( *
2ee70 20 29 20 2b 20 2d 20 4d 41 58 28 20 2b 20 35 37   ) + - MAX( + 57
2ee80 20 29 2c 20 43 4f 55 4e 54 28 20 2a 20 29 20 41   ), COUNT( * ) A
2ee90 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
2eea0 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 34 0d 0a 33 0d 0a  ..----..-54..3..
2eeb0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
2eec0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
2eed0 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
2eee0 74 20 6c 61 62 65 6c 2d 31 30 34 36 0d 0a 53 45  t label-1046..SE
2eef0 4c 45 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 2a  LECT + COUNT ( *
2ef00 20 29 20 2b 20 2d 20 4d 41 58 20 28 20 2b 20 35   ) + - MAX ( + 5
2ef10 37 20 29 2c 20 43 4f 55 4e 54 20 28 20 2a 20 29  7 ), COUNT ( * )
2ef20 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
2ef30 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 34 0d 0a 33  b2..----..-54..3
2ef40 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2ef50 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2ef60 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71  SIGNED type: ..q
2ef70 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74  uery III rowsort
2ef80 20 6c 61 62 65 6c 2d 31 30 34 37 0d 0a 53 45 4c   label-1047..SEL
2ef90 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
2efa0 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 28  ROM tab0 WHERE (
2efb0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
2efc0 49 47 4e 45 44 20 29 20 29 20 49 53 20 4e 4f 54  IGNED ) ) IS NOT
2efd0 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73   NULL..----....s
2efe0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2eff0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2f000 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20  ery III rowsort 
2f010 6c 61 62 65 6c 2d 31 30 34 37 0d 0a 53 45 4c 45  label-1047..SELE
2f020 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
2f030 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 28 20  OM tab0 WHERE ( 
2f040 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
2f050 4e 54 45 47 45 52 20 29 20 29 20 49 53 20 4e 4f  NTEGER ) ) IS NO
2f060 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  T NULL..----....
2f070 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
2f080 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
2f090 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
2f0a0 72 74 20 6c 61 62 65 6c 2d 31 30 34 38 0d 0a 53  rt label-1048..S
2f0b0 45 4c 45 43 54 20 36 34 20 2b 20 2b 20 43 4f 55  ELECT 64 + + COU
2f0c0 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  NT( * ) FROM tab
2f0d0 31 0d 0a 2d 2d 2d 2d 0d 0a 36 37 0d 0a 0d 0a 73  1..----..67....s
2f0e0 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
2f0f0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
2f100 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
2f110 62 65 6c 2d 31 30 34 38 0d 0a 53 45 4c 45 43 54  bel-1048..SELECT
2f120 20 36 34 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20   64 + + COUNT ( 
2f130 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  * ) FROM tab1..-
2f140 2d 2d 2d 0d 0a 36 37 0d 0a 0d 0a 71 75 65 72 79  ---..67....query
2f150 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
2f160 43 54 20 41 4c 4c 20 28 20 2d 20 38 39 20 29 20  CT ALL ( - 89 ) 
2f170 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
2f180 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 38 39 0d 0a 2d 38  2..----..-89..-8
2f190 39 0d 0a 2d 38 39 0d 0a 0d 0a 6f 6e 6c 79 69 66  9..-89....onlyif
2f1a0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
2f1b0 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
2f1c0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
2f1d0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
2f1e0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35  owsort label-105
2f1f0 30 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 28 20  0..SELECT CAST( 
2f200 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
2f210 20 2b 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20   + - COUNT( * ) 
2f220 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
2f230 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
2f240 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2f250 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2f260 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2f270 35 30 0d 0a 53 45 4c 45 43 54 20 43 41 53 54 20  50..SELECT CAST 
2f280 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
2f290 52 20 29 20 2b 20 2d 20 43 4f 55 4e 54 20 28 20  R ) + - COUNT ( 
2f2a0 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d  * ) FROM tab1..-
2f2b0 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ---..NULL....que
2f2c0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
2f2d0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
2f2e0 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  col2 AS col0 FRO
2f2f0 4d 20 74 61 62 31 20 57 48 45 52 45 20 28 20 2b  M tab1 WHERE ( +
2f300 20 63 6f 6c 30 20 29 20 4e 4f 54 20 42 45 54 57   col0 ) NOT BETW
2f310 45 45 4e 20 2d 20 34 36 20 2a 20 63 6f 6c 32 20  EEN - 46 * col2 
2f320 41 4e 44 20 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d  AND + col1..----
2f330 0d 0a 2d 35 39 0d 0a 2d 36 38 0d 0a 2d 39 36 0d  ..-59..-68..-96.
2f340 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
2f350 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63  rt..SELECT ALL c
2f360 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol1 FROM tab2 WH
2f370 45 52 45 20 4e 55 4c 4c 20 49 4e 20 28 20 2d 20  ERE NULL IN ( - 
2f380 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col0 )..----....
2f390 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
2f3a0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 38 36 20 2b  .SELECT ALL 86 +
2f3b0 20 2d 20 63 6f 6c 32 20 41 53 20 63 6f 6c 31 20   - col2 AS col1 
2f3c0 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d  FROM tab0..----.
2f3d0 0a 2d 31 33 0d 0a 33 39 0d 0a 37 36 0d 0a 0d 0a  .-13..39..76....
2f3e0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
2f3f0 41 53 54 20 73 79 6e 74 61 78 3a 20 44 45 43 49  AST syntax: DECI
2f400 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  MAL type: ..quer
2f410 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2f420 6c 2d 31 30 35 34 0d 0a 53 45 4c 45 43 54 20 2d  l-1054..SELECT -
2f430 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 44   CAST( NULL AS D
2f440 45 43 49 4d 41 4c 20 29 20 2b 20 2b 20 63 6f 6c  ECIMAL ) + + col
2f450 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
2f460 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
2f470 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ULL....skipif my
2f480 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2f490 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2f4a0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 34  wsort label-1054
2f4b0 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41 53 54 20  ..SELECT - CAST 
2f4c0 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29  ( NULL AS REAL )
2f4d0 20 2b 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20 74   + + col1 FROM t
2f4e0 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  ab1..----..NULL.
2f4f0 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f  .NULL..NULL....o
2f500 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67  nlyif mysql # ag
2f510 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20  gregate syntax: 
2f520 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2f530 74 20 6c 61 62 65 6c 2d 31 30 35 35 0d 0a 53 45  t label-1055..SE
2f540 4c 45 43 54 20 43 4f 55 4e 54 28 20 2a 20 29 20  LECT COUNT( * ) 
2f550 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
2f560 32 20 57 48 45 52 45 20 33 38 20 4e 4f 54 20 49  2 WHERE 38 NOT I
2f570 4e 20 28 20 2b 20 37 30 20 29 0d 0a 2d 2d 2d 2d  N ( + 70 )..----
2f580 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..3....skipif my
2f590 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2f5a0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
2f5b0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 35  wsort label-1055
2f5c0 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 20 28  ..SELECT COUNT (
2f5d0 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f   * ) AS col0 FRO
2f5e0 4d 20 74 61 62 32 20 57 48 45 52 45 20 33 38 20  M tab2 WHERE 38 
2f5f0 4e 4f 54 20 49 4e 20 28 20 2b 20 37 30 20 29 0d  NOT IN ( + 70 ).
2f600 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72  .----..3....quer
2f610 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2f620 45 43 54 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61  ECT col1 FROM ta
2f630 62 30 20 57 48 45 52 45 20 2b 20 63 6f 6c 32 20  b0 WHERE + col2 
2f640 2a 20 2d 20 63 6f 6c 31 20 2b 20 63 6f 6c 30 20  * - col1 + col0 
2f650 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
2f660 2d 0d 0a 31 0d 0a 32 31 0d 0a 38 31 0d 0a 0d 0a  -..1..21..81....
2f670 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
2f680 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
2f690 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
2f6a0 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
2f6b0 65 6c 2d 31 30 35 37 0d 0a 53 45 4c 45 43 54 20  el-1057..SELECT 
2f6c0 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
2f6d0 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20 2d 20 63  E NOT + col1 - c
2f6e0 6f 6c 32 20 42 45 54 57 45 45 4e 20 2b 20 43 41  ol2 BETWEEN + CA
2f6f0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
2f700 45 44 20 29 20 41 4e 44 20 2b 20 32 30 0d 0a 2d  ED ) AND + 20..-
2f710 2d 2d 2d 0d 0a 31 35 0d 0a 38 31 0d 0a 34 37 0d  ---..15..81..47.
2f720 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
2f730 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
2f740 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
2f750 6f 72 74 20 6c 61 62 65 6c 2d 31 30 35 37 0d 0a  ort label-1057..
2f760 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
2f770 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2b 20 63  b0 WHERE NOT + c
2f780 6f 6c 31 20 2d 20 63 6f 6c 32 20 42 45 54 57 45  ol1 - col2 BETWE
2f790 45 4e 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c  EN + CAST ( NULL
2f7a0 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 4e   AS INTEGER ) AN
2f7b0 44 20 2b 20 32 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35  D + 20..----..15
2f7c0 0d 0a 38 31 0d 0a 34 37 0d 0a 0d 0a 6f 6e 6c 79  ..81..47....only
2f7d0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
2f7e0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
2f7f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2f800 61 62 65 6c 2d 31 30 35 38 0d 0a 53 45 4c 45 43  abel-1058..SELEC
2f810 54 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20 4d  T COUNT( * ) + M
2f820 49 4e 28 20 41 4c 4c 20 2d 20 36 37 20 2b 20 63  IN( ALL - 67 + c
2f830 6f 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31 0d  ol2 ) FROM tab1.
2f840 0a 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 0d 0a 73 6b 69  .----..-5....ski
2f850 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
2f860 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
2f870 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2f880 6c 2d 31 30 35 38 0d 0a 53 45 4c 45 43 54 20 43  l-1058..SELECT C
2f890 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 4d 49 4e  OUNT ( * ) + MIN
2f8a0 20 28 20 41 4c 4c 20 2d 20 36 37 20 2b 20 63 6f   ( ALL - 67 + co
2f8b0 6c 32 20 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a  l2 ) FROM tab1..
2f8c0 2d 2d 2d 2d 0d 0a 2d 35 0d 0a 0d 0a 71 75 65 72  ----..-5....quer
2f8d0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
2f8e0 45 43 54 20 2d 20 63 6f 6c 32 20 46 52 4f 4d 20  ECT - col2 FROM 
2f8f0 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  tab0 WHERE NOT N
2f900 55 4c 4c 20 49 4e 20 28 20 63 6f 6c 31 20 29 0d  ULL IN ( col1 ).
2f910 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
2f920 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
2f930 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
2f940 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
2f950 6c 2d 31 30 36 30 0d 0a 53 45 4c 45 43 54 20 44  l-1060..SELECT D
2f960 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54 28  ISTINCT - COUNT(
2f970 20 2a 20 29 20 2b 20 4d 49 4e 28 20 2d 20 63 6f   * ) + MIN( - co
2f980 6c 30 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f  l0 ) AS col2 FRO
2f990 4d 20 74 61 62 31 20 57 48 45 52 45 20 63 6f 6c  M tab1 WHERE col
2f9a0 30 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  0 IS NULL..----.
2f9b0 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20  .NULL....skipif 
2f9c0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
2f9d0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
2f9e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30  rowsort label-10
2f9f0 36 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  60..SELECT DISTI
2fa00 4e 43 54 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  NCT - COUNT ( * 
2fa10 29 20 2b 20 4d 49 4e 20 28 20 2d 20 63 6f 6c 30  ) + MIN ( - col0
2fa20 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
2fa30 74 61 62 31 20 57 48 45 52 45 20 63 6f 6c 30 20  tab1 WHERE col0 
2fa40 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e  IS NULL..----..N
2fa50 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
2fa60 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
2fa70 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
2fa80 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
2fa90 74 20 6c 61 62 65 6c 2d 31 30 36 31 0d 0a 53 45  t label-1061..SE
2faa0 4c 45 43 54 20 2b 20 30 20 63 6f 6c 32 20 46 52  LECT + 0 col2 FR
2fab0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f  OM tab2 WHERE NO
2fac0 54 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20  T CAST( NULL AS 
2fad0 53 49 47 4e 45 44 20 29 20 49 53 20 4e 4f 54 20  SIGNED ) IS NOT 
2fae0 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30  NULL..----..0..0
2faf0 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ..0....skipif my
2fb00 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
2fb10 69 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73  ible..skipif pos
2fb20 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
2fb30 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
2fb40 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
2fb50 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
2fb60 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
2fb70 61 62 65 6c 2d 31 30 36 31 0d 0a 53 45 4c 45 43  abel-1061..SELEC
2fb80 54 20 2b 20 30 20 63 6f 6c 32 20 46 52 4f 4d 20  T + 0 col2 FROM 
2fb90 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 43  tab2 WHERE NOT C
2fba0 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e  AST ( NULL AS IN
2fbb0 54 45 47 45 52 20 29 20 49 53 20 4e 4f 54 20 4e  TEGER ) IS NOT N
2fbc0 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 30 0d  ULL..----..0..0.
2fbd0 0a 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  .0....query I ro
2fbe0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
2fbf0 63 6f 6c 30 20 2a 20 63 6f 6c 31 20 46 52 4f 4d  col0 * col1 FROM
2fc00 20 74 61 62 32 20 57 48 45 52 45 20 4e 55 4c 4c   tab2 WHERE NULL
2fc10 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
2fc20 2d 32 33 34 36 0d 0a 2d 34 39 32 38 0d 0a 2d 35  -2346..-4928..-5
2fc30 30 32 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  025....query I r
2fc40 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b  owsort..SELECT +
2fc50 20 63 6f 6c 30 20 41 53 20 63 6f 6c 32 20 46 52   col0 AS col2 FR
2fc60 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20 4e 4f  OM tab0 WHERE NO
2fc70 54 20 2d 20 38 30 20 49 53 20 4e 55 4c 4c 0d 0a  T - 80 IS NULL..
2fc80 2d 2d 2d 2d 0d 0a 31 35 0d 0a 38 37 0d 0a 39 37  ----..15..87..97
2fc90 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
2fca0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
2fcb0 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20  FROM tab1 WHERE 
2fcc0 2d 20 39 31 20 2a 20 2b 20 63 6f 6c 32 20 2b 20  - 91 * + col2 + 
2fcd0 2d 20 31 33 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  - 13 IS NULL..--
2fce0 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 70 6f 73  --....skipif pos
2fcf0 74 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72  tgresql # Postgr
2fd00 65 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53  eSQL requires AS
2fd10 20 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f   when renaming o
2fd20 75 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71  utput columns..q
2fd30 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
2fd40 53 45 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20  SELECT col1 * + 
2fd50 63 6f 6c 31 20 2b 20 63 6f 6c 30 20 63 6f 6c 32  col1 + col0 col2
2fd60 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
2fd70 0d 0a 31 31 30 0d 0a 32 33 30 30 0d 0a 32 34 37  ..110..2300..247
2fd80 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
2fd90 20 23 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20   # CAST syntax: 
2fda0 44 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a  DECIMAL type: ..
2fdb0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2fdc0 6c 61 62 65 6c 2d 31 30 36 36 0d 0a 53 45 4c 45  label-1066..SELE
2fdd0 43 54 20 44 49 53 54 49 4e 43 54 20 33 37 20 46  CT DISTINCT 37 F
2fde0 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 63  ROM tab2 WHERE c
2fdf0 6f 6c 32 20 4e 4f 54 20 42 45 54 57 45 45 4e 20  ol2 NOT BETWEEN 
2fe00 2d 20 63 6f 6c 30 20 2a 20 2b 20 43 41 53 54 28  - col0 * + CAST(
2fe10 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c   NULL AS DECIMAL
2fe20 20 29 20 41 4e 44 20 2d 20 39 0d 0a 2d 2d 2d 2d   ) AND - 9..----
2fe30 0d 0a 33 37 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  ..37....skipif m
2fe40 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
2fe50 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
2fe60 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36  owsort label-106
2fe70 36 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  6..SELECT DISTIN
2fe80 43 54 20 33 37 20 46 52 4f 4d 20 74 61 62 32 20  CT 37 FROM tab2 
2fe90 57 48 45 52 45 20 63 6f 6c 32 20 4e 4f 54 20 42  WHERE col2 NOT B
2fea0 45 54 57 45 45 4e 20 2d 20 63 6f 6c 30 20 2a 20  ETWEEN - col0 * 
2feb0 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
2fec0 20 52 45 41 4c 20 29 20 41 4e 44 20 2d 20 39 0d   REAL ) AND - 9.
2fed0 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a 0d 0a 6f 6e 6c  .----..37....onl
2fee0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
2fef0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
2ff00 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ff10 6c 61 62 65 6c 2d 31 30 36 37 0d 0a 53 45 4c 45  label-1067..SELE
2ff20 43 54 20 2b 20 43 4f 55 4e 54 28 20 41 4c 4c 20  CT + COUNT( ALL 
2ff30 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 32  + col0 ) AS col2
2ff40 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
2ff50 20 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 2b 20 2b   col2 * col2 + +
2ff60 20 63 6f 6c 32 20 3c 3e 20 63 6f 6c 31 20 2a 20   col2 <> col1 * 
2ff70 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d  col2..----..3...
2ff80 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
2ff90 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
2ffa0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
2ffb0 6c 61 62 65 6c 2d 31 30 36 37 0d 0a 53 45 4c 45  label-1067..SELE
2ffc0 43 54 20 2b 20 43 4f 55 4e 54 20 28 20 41 4c 4c  CT + COUNT ( ALL
2ffd0 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c   + col0 ) AS col
2ffe0 32 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  2 FROM tab0 WHER
2fff0 45 20 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 2b 20  E col2 * col2 + 
30000 2b 20 63 6f 6c 32 20 3c 3e 20 63 6f 6c 31 20 2a  + col2 <> col1 *
30010 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a   col2..----..3..
30020 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
30030 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
30040 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
30050 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 36 38 0d  sort label-1068.
30060 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
30070 20 4d 49 4e 28 20 2b 20 63 6f 6c 32 20 29 20 63   MIN( + col2 ) c
30080 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
30090 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d   cor0..----..59.
300a0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
300b0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
300c0 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65  ..skipif postgre
300d0 73 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c  sql # PostgreSQL
300e0 20 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65   requires AS whe
300f0 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75  n renaming outpu
30100 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79  t columns..query
30110 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
30120 2d 31 30 36 38 0d 0a 53 45 4c 45 43 54 20 44 49  -1068..SELECT DI
30130 53 54 49 4e 43 54 20 4d 49 4e 20 28 20 2b 20 63  STINCT MIN ( + c
30140 6f 6c 32 20 29 20 63 6f 6c 31 20 46 52 4f 4d 20  ol2 ) col1 FROM 
30150 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
30160 2d 2d 0d 0a 35 39 0d 0a 0d 0a 71 75 65 72 79 20  --..59....query 
30170 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
30180 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f 4d 20 74  ECT ALL * FROM t
30190 61 62 30 20 41 53 20 63 6f 72 30 20 57 48 45 52  ab0 AS cor0 WHER
301a0 45 20 2b 20 28 20 63 6f 6c 32 20 29 20 3c 3e 20  E + ( col2 ) <> 
301b0 63 6f 6c 31 20 2d 20 2d 20 63 6f 6c 32 0d 0a 2d  col1 - - col2..-
301c0 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
301d0 73 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36  shing to c4b4276
301e0 35 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65  5dff94eaaa46040e
301f0 35 33 37 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c  537fb43b7....onl
30200 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
30210 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
30220 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
30230 6c 61 62 65 6c 2d 31 30 37 30 0d 0a 53 45 4c 45  label-1070..SELE
30240 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28 20  CT ALL + COUNT( 
30250 2a 20 29 20 2b 20 2b 20 53 55 4d 28 20 41 4c 4c  * ) + + SUM( ALL
30260 20 2b 20 34 31 20 2b 20 2b 20 38 35 20 2a 20 63   + 41 + + 85 * c
30270 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ol0 ) FROM tab0 
30280 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
30290 37 30 34 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  7041....skipif m
302a0 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
302b0 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
302c0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 37  owsort label-107
302d0 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20  0..SELECT ALL + 
302e0 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2b 20  COUNT ( * ) + + 
302f0 53 55 4d 20 28 20 41 4c 4c 20 2b 20 34 31 20 2b  SUM ( ALL + 41 +
30300 20 2b 20 38 35 20 2a 20 63 6f 6c 30 20 29 20 46   + 85 * col0 ) F
30310 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
30320 0d 0a 2d 2d 2d 2d 0d 0a 31 37 30 34 31 0d 0a 0d  ..----..17041...
30330 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
30340 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
30350 54 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30  T - col1 AS col0
30360 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
30370 20 28 20 39 33 20 2d 20 2b 20 34 33 20 29 20 3d   ( 93 - + 43 ) =
30380 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71   NULL..----....q
30390 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
303a0 53 45 4c 45 43 54 20 63 6f 6c 32 20 41 53 20 63  SELECT col2 AS c
303b0 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 57 48  ol2 FROM tab2 WH
303c0 45 52 45 20 2d 20 63 6f 6c 32 20 2a 20 2b 20 34  ERE - col2 * + 4
303d0 33 20 4e 4f 54 20 49 4e 20 28 20 2b 20 63 6f 6c  3 NOT IN ( + col
303e0 31 20 29 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 34  1 )..----..23..4
303f0 30 0d 0a 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49  0..58....query I
30400 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
30410 20 41 4c 4c 20 2d 20 34 34 20 41 53 20 63 6f 6c   ALL - 44 AS col
30420 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
30430 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20 74  or0 CROSS JOIN t
30440 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ab2..----..9 val
30450 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 30  ues hashing to 0
30460 37 34 35 37 64 39 65 35 37 31 65 30 33 36 61 39  7457d9e571e036a9
30470 61 33 61 30 66 35 61 35 61 32 65 31 65 66 32 0d  a3a0f5a5a2e1ef2.
30480 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30490 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d  rt..SELECT ALL -
304a0 20 41 56 47 20 28 20 41 4c 4c 20 2b 20 63 6f 6c   AVG ( ALL + col
304b0 32 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d  2 ) AS col1 FROM
304c0 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20   tab2 WHERE NOT 
304d0 36 30 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a  60 IS NOT NULL..
304e0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75  ----..NULL....qu
304f0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
30500 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2b 20 63 6f  ELECT ALL - + co
30510 6c 30 20 2a 20 63 6f 6c 31 20 2d 20 35 34 20 46  l0 * col1 - 54 F
30520 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
30530 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 30 30 0d 0a 2d  ..----..-2400..-
30540 34 39 38 32 0d 0a 2d 35 30 37 39 0d 0a 0d 0a 71  4982..-5079....q
30550 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
30560 53 45 4c 45 43 54 20 41 4c 4c 20 35 35 20 41 53  SELECT ALL 55 AS
30570 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
30580 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 35 0d 0a  cor0..----..55..
30590 35 35 0d 0a 35 35 0d 0a 0d 0a 71 75 65 72 79 20  55..55....query 
305a0 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
305b0 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 31 20  T DISTINCT col1 
305c0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
305d0 30 20 57 48 45 52 45 20 2d 20 28 20 33 34 20 29  0 WHERE - ( 34 )
305e0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
305f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
30600 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30 20 2b  t..SELECT col0 +
30610 20 32 20 2a 20 2d 20 63 6f 6c 30 20 46 52 4f 4d   2 * - col0 FROM
30620 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
30630 2d 2d 2d 0d 0a 2d 34 36 0d 0a 2d 36 34 0d 0a 2d  ---..-46..-64..-
30640 37 35 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  75....query I ro
30650 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
30660 63 6f 6c 31 20 2b 20 37 32 20 46 52 4f 4d 20 74  col1 + 72 FROM t
30670 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
30680 2d 0d 0a 2d 39 0d 0a 35 31 0d 0a 37 31 0d 0a 0d  -..-9..51..71...
30690 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
306a0 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20  DIV for integer 
306b0 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72  division: ..quer
306c0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
306d0 6c 2d 31 30 38 30 0d 0a 53 45 4c 45 43 54 20 2d  l-1080..SELECT -
306e0 20 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 44 49 56   col1 + col1 DIV
306f0 20 2d 20 38 20 41 53 20 63 6f 6c 31 20 46 52 4f   - 8 AS col1 FRO
30700 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
30710 2d 2d 2d 2d 0d 0a 2d 35 37 0d 0a 2d 37 35 0d 0a  ----..-57..-75..
30720 2d 38 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  -86....skipif my
30730 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
30740 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
30750 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 38 30  wsort label-1080
30760 0d 0a 53 45 4c 45 43 54 20 2d 20 63 6f 6c 31 20  ..SELECT - col1 
30770 2b 20 63 6f 6c 31 20 2f 20 2d 20 38 20 41 53 20  + col1 / - 8 AS 
30780 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
30790 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35  S cor0..----..-5
307a0 37 0d 0a 2d 37 35 0d 0a 2d 38 36 0d 0a 0d 0a 6f  7..-75..-86....o
307b0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
307c0 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65  ST syntax: aggre
307d0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47  gate syntax: SIG
307e0 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
307f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
30800 6c 2d 31 30 38 31 0d 0a 53 45 4c 45 43 54 20 43  l-1081..SELECT C
30810 41 53 54 28 20 2d 20 43 4f 55 4e 54 28 20 2a 20  AST( - COUNT( * 
30820 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  ) AS SIGNED ) AS
30830 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20   col1 FROM tab1 
30840 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
30850 39 36 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e  96 NOT BETWEEN N
30860 55 4c 4c 20 41 4e 44 20 28 20 2b 20 63 6f 6c 31  ULL AND ( + col1
30870 20 2a 20 2b 20 63 6f 6c 31 20 2b 20 2b 20 33 34   * + col1 + + 34
30880 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 73   )..----..0....s
30890 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
308a0 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
308b0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
308c0 62 65 6c 2d 31 30 38 31 0d 0a 53 45 4c 45 43 54  bel-1081..SELECT
308d0 20 43 41 53 54 20 28 20 2d 20 43 4f 55 4e 54 20   CAST ( - COUNT 
308e0 28 20 2a 20 29 20 41 53 20 49 4e 54 45 47 45 52  ( * ) AS INTEGER
308f0 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
30900 74 61 62 31 20 41 53 20 63 6f 72 30 20 57 48 45  tab1 AS cor0 WHE
30910 52 45 20 2d 20 39 36 20 4e 4f 54 20 42 45 54 57  RE - 96 NOT BETW
30920 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 28 20 2b  EEN NULL AND ( +
30930 20 63 6f 6c 31 20 2a 20 2b 20 63 6f 6c 31 20 2b   col1 * + col1 +
30940 20 2b 20 33 34 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30   + 34 )..----..0
30950 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
30960 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67   # DIV for integ
30970 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71  er division: ..q
30980 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
30990 61 62 65 6c 2d 31 30 38 32 0d 0a 53 45 4c 45 43  abel-1082..SELEC
309a0 54 20 2d 20 2b 20 63 6f 6c 32 20 2b 20 31 20 44  T - + col2 + 1 D
309b0 49 56 20 2b 20 32 37 20 41 53 20 63 6f 6c 32 20  IV + 27 AS col2 
309c0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
309d0 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 33 0d 0a 2d 34  0..----..-23..-4
309e0 30 0d 0a 2d 35 38 0d 0a 0d 0a 73 6b 69 70 69 66  0..-58....skipif
309f0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
30a00 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
30a10 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
30a20 30 38 32 0d 0a 53 45 4c 45 43 54 20 2d 20 2b 20  082..SELECT - + 
30a30 63 6f 6c 32 20 2b 20 31 20 2f 20 2b 20 32 37 20  col2 + 1 / + 27 
30a40 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
30a50 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
30a60 0a 2d 32 33 0d 0a 2d 34 30 0d 0a 2d 35 38 0d 0a  .-23..-40..-58..
30a70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
30a80 74 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c 30  t..SELECT + col0
30a90 20 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c   * - col0 AS col
30aa0 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  1 FROM tab0 AS c
30ab0 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 4e  or0 WHERE NULL N
30ac0 4f 54 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20  OT BETWEEN NULL 
30ad0 41 4e 44 20 28 20 4e 55 4c 4c 20 29 0d 0a 2d 2d  AND ( NULL )..--
30ae0 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
30af0 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
30b00 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
30b10 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
30b20 20 6c 61 62 65 6c 2d 31 30 38 34 0d 0a 53 45 4c   label-1084..SEL
30b30 45 43 54 20 44 49 53 54 49 4e 43 54 20 34 38 20  ECT DISTINCT 48 
30b40 2b 20 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20  + + col2 * col1 
30b50 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 63  col1 FROM tab2 c
30b60 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 43 41  or0 WHERE NOT CA
30b70 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
30b80 45 44 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  ED ) IS NULL..--
30b90 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  --....skipif mys
30ba0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
30bb0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
30bc0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
30bd0 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
30be0 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
30bf0 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
30c00 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
30c10 62 65 6c 2d 31 30 38 34 0d 0a 53 45 4c 45 43 54  bel-1084..SELECT
30c20 20 44 49 53 54 49 4e 43 54 20 34 38 20 2b 20 2b   DISTINCT 48 + +
30c30 20 63 6f 6c 32 20 2a 20 63 6f 6c 31 20 63 6f 6c   col2 * col1 col
30c40 31 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  1 FROM tab2 cor0
30c50 20 57 48 45 52 45 20 4e 4f 54 20 43 41 53 54 20   WHERE NOT CAST 
30c60 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
30c70 52 20 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d  R ) IS NULL..---
30c80 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
30c90 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
30ca0 54 49 4e 43 54 20 34 32 20 46 52 4f 4d 20 74 61  TINCT 42 FROM ta
30cb0 62 31 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  b1 cor0 WHERE NO
30cc0 54 20 4e 55 4c 4c 20 4e 4f 54 20 49 4e 20 28 20  T NULL NOT IN ( 
30cd0 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  col0 )..----....
30ce0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
30cf0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
30d00 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
30d10 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
30d20 2d 31 30 38 36 0d 0a 53 45 4c 45 43 54 20 63 6f  -1086..SELECT co
30d30 6c 30 20 44 49 56 20 2b 20 2b 20 36 30 20 46 52  l0 DIV + + 60 FR
30d40 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30  OM tab2..----..0
30d50 0d 0a 31 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66  ..1..1....skipif
30d60 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
30d70 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
30d80 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
30d90 30 38 36 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  086..SELECT col0
30da0 20 2f 20 2b 20 2b 20 36 30 20 46 52 4f 4d 20 74   / + + 60 FROM t
30db0 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 31 0d  ab2..----..0..1.
30dc0 0a 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  .1....query III 
30dd0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
30de0 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
30df0 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20 28  tab1 WHERE NOT (
30e00 20 4e 55 4c 4c 20 29 20 3e 20 2d 20 63 6f 6c 32   NULL ) > - col2
30e10 20 2a 20 2d 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d   * - col0..----.
30e20 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
30e30 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
30e40 4e 43 54 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32  NCT col1 AS col2
30e50 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45   FROM tab0 WHERE
30e60 20 33 38 20 3e 3d 20 2b 20 35 34 0d 0a 2d 2d 2d   38 >= + 54..---
30e70 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  -....query I row
30e80 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20 63  sort..SELECT - c
30e90 6f 6c 30 20 2a 20 2d 20 34 32 20 46 52 4f 4d 20  ol0 * - 42 FROM 
30ea0 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 33 36 35 34  tab0..----..3654
30eb0 0d 0a 34 30 37 34 0d 0a 36 33 30 0d 0a 0d 0a 71  ..4074..630....q
30ec0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
30ed0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
30ee0 63 6f 6c 32 20 2a 20 2d 20 36 31 20 46 52 4f 4d  col2 * - 61 FROM
30ef0 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 35   tab1..----..-35
30f00 39 39 0d 0a 2d 34 31 34 38 0d 0a 2d 35 38 35 36  99..-4148..-5856
30f10 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
30f20 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
30f30 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
30f40 2b 20 38 32 20 4e 4f 54 20 49 4e 20 28 20 2b 20  + 82 NOT IN ( + 
30f50 33 32 20 2a 20 2d 20 63 6f 6c 31 20 29 0d 0a 2d  32 * - col1 )..-
30f60 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
30f70 73 68 69 6e 67 20 74 6f 20 37 35 63 39 39 38 61  shing to 75c998a
30f80 61 35 33 61 63 38 33 32 31 38 63 62 66 32 66 65  a53ac83218cbf2fe
30f90 62 39 36 32 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c  b962d0a49....onl
30fa0 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
30fb0 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
30fc0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
30fd0 6c 61 62 65 6c 2d 31 30 39 32 0d 0a 53 45 4c 45  label-1092..SELE
30fe0 43 54 20 53 55 4d 28 20 2b 20 63 6f 6c 32 20 29  CT SUM( + col2 )
30ff0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
31000 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 36 0d 0a 0d  b0..----..156...
31010 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
31020 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
31030 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
31040 6c 61 62 65 6c 2d 31 30 39 32 0d 0a 53 45 4c 45  label-1092..SELE
31050 43 54 20 53 55 4d 20 28 20 2b 20 63 6f 6c 32 20  CT SUM ( + col2 
31060 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
31070 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 35 36 0d 0a  ab0..----..156..
31080 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
31090 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
310a0 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
310b0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 33 0d  sort label-1093.
310c0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
310d0 20 4d 41 58 28 20 2d 20 63 6f 6c 31 20 29 20 2a   MAX( - col1 ) *
310e0 20 33 37 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29   37 - COUNT( * )
310f0 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d   FROM tab2..----
31100 0d 0a 2d 31 38 39 30 0d 0a 0d 0a 73 6b 69 70 69  ..-1890....skipi
31110 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
31120 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
31130 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31140 31 30 39 33 0d 0a 53 45 4c 45 43 54 20 44 49 53  1093..SELECT DIS
31150 54 49 4e 43 54 20 4d 41 58 20 28 20 2d 20 63 6f  TINCT MAX ( - co
31160 6c 31 20 29 20 2a 20 33 37 20 2d 20 43 4f 55 4e  l1 ) * 37 - COUN
31170 54 20 28 20 2a 20 29 20 46 52 4f 4d 20 74 61 62  T ( * ) FROM tab
31180 32 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 39 30 0d 0a  2..----..-1890..
31190 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
311a0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52  ort..SELECT * FR
311b0 4f 4d 20 74 61 62 31 20 57 48 45 52 45 20 33 38  OM tab1 WHERE 38
311c0 20 2a 20 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d   * col2 IS NULL.
311d0 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
311e0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
311f0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
31200 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
31210 6f 72 74 20 6c 61 62 65 6c 2d 31 30 39 35 0d 0a  ort label-1095..
31220 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
31230 34 38 20 2a 20 2d 20 43 41 53 54 28 20 4e 55 4c  48 * - CAST( NUL
31240 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a 20  L AS SIGNED ) * 
31250 35 20 2d 20 2b 20 63 6f 6c 30 20 2a 20 2b 20 63  5 - + col0 * + c
31260 6f 6c 30 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61  ol0 col2 FROM ta
31270 62 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  b1..----..NULL..
31280 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
31290 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
312a0 0a 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73  .skipif postgres
312b0 71 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20  ql # PostgreSQL 
312c0 72 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e  requires AS when
312d0 20 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74   renaming output
312e0 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20   columns..query 
312f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31300 31 30 39 35 0d 0a 53 45 4c 45 43 54 20 44 49 53  1095..SELECT DIS
31310 54 49 4e 43 54 20 34 38 20 2a 20 2d 20 43 41 53  TINCT 48 * - CAS
31320 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
31330 47 45 52 20 29 20 2a 20 35 20 2d 20 2b 20 63 6f  GER ) * 5 - + co
31340 6c 30 20 2a 20 2b 20 63 6f 6c 30 20 63 6f 6c 32  l0 * + col0 col2
31350 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d   FROM tab1..----
31360 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
31370 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
31380 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
31390 57 48 45 52 45 20 28 20 2d 20 33 31 20 29 20 49  WHERE ( - 31 ) I
313a0 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  S NULL..----....
313b0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
313c0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
313d0 6c 30 20 2b 20 2b 20 2b 20 63 6f 6c 31 20 41 53  l0 + + + col1 AS
313e0 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d   col1 FROM tab2.
313f0 0a 2d 2d 2d 2d 0d 0a 2d 38 0d 0a 31 33 0d 0a 35  .----..-8..13..5
31400 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
31410 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 30  ort..SELECT col0
31420 20 2b 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c   + + col0 AS col
31430 31 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52  1 FROM tab2 WHER
31440 45 20 4e 4f 54 20 35 38 20 49 53 20 4e 4f 54 20  E NOT 58 IS NOT 
31450 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
31460 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
31470 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
31480 20 2a 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20   * FROM tab2 AS 
31490 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  cor0 WHERE NOT -
314a0 20 63 6f 6c 30 20 2a 20 2b 20 63 6f 6c 32 20 2b   col0 * + col2 +
314b0 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 63 6f 6c 32   - col1 * - col2
314c0 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a   IS NULL..----..
314d0 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e 67  9 values hashing
314e0 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61 63   to 75c998aa53ac
314f0 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32 64  83218cbf2feb962d
31500 30 61 34 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49  0a49....query II
31510 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31520 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f  T DISTINCT * FRO
31530 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
31540 48 45 52 45 20 2d 20 34 36 20 4e 4f 54 20 42 45  HERE - 46 NOT BE
31550 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 4e  TWEEN NULL AND N
31560 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
31570 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
31580 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
31590 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
315a0 6c 61 62 65 6c 2d 31 31 30 31 0d 0a 53 45 4c 45  label-1101..SELE
315b0 43 54 20 41 4c 4c 20 4d 49 4e 28 20 2d 20 63 6f  CT ALL MIN( - co
315c0 6c 31 20 29 20 2a 20 2b 20 53 55 4d 28 20 41 4c  l1 ) * + SUM( AL
315d0 4c 20 2d 20 63 6f 6c 30 20 2b 20 63 6f 6c 31 20  L - col0 + col1 
315e0 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63  ) FROM tab0 AS c
315f0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37 37 37 36 0d  or0..----..7776.
31600 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
31610 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
31620 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31630 74 20 6c 61 62 65 6c 2d 31 31 30 31 0d 0a 53 45  t label-1101..SE
31640 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 20 28 20 2d  LECT ALL MIN ( -
31650 20 63 6f 6c 31 20 29 20 2a 20 2b 20 53 55 4d 20   col1 ) * + SUM 
31660 28 20 41 4c 4c 20 2d 20 63 6f 6c 30 20 2b 20 63  ( ALL - col0 + c
31670 6f 6c 31 20 29 20 46 52 4f 4d 20 74 61 62 30 20  ol1 ) FROM tab0 
31680 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 37  AS cor0..----..7
31690 37 37 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  776....onlyif my
316a0 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
316b0 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
316c0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
316d0 74 20 6c 61 62 65 6c 2d 31 31 30 32 0d 0a 53 45  t label-1102..SE
316e0 4c 45 43 54 20 2b 20 2b 20 36 30 20 2a 20 2d 20  LECT + + 60 * - 
316f0 63 6f 6c 32 20 2a 20 43 41 53 54 28 20 63 6f 6c  col2 * CAST( col
31700 31 20 2a 20 2d 20 35 33 20 41 53 20 53 49 47 4e  1 * - 53 AS SIGN
31710 45 44 20 29 20 2b 20 2d 20 31 37 20 41 53 20 63  ED ) + - 17 AS c
31720 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53  ol1 FROM tab2 AS
31730 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 33   cor0..----..123
31740 35 37 34 36 33 0d 0a 33 37 33 30 31 32 33 0d 0a  57463..3730123..
31750 39 37 39 34 33 38 33 0d 0a 0d 0a 73 6b 69 70 69  9794383....skipi
31760 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
31770 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
31780 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31790 31 31 30 32 0d 0a 53 45 4c 45 43 54 20 2b 20 2b  1102..SELECT + +
317a0 20 36 30 20 2a 20 2d 20 63 6f 6c 32 20 2a 20 43   60 * - col2 * C
317b0 41 53 54 20 28 20 63 6f 6c 31 20 2a 20 2d 20 35  AST ( col1 * - 5
317c0 33 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2b  3 AS INTEGER ) +
317d0 20 2d 20 31 37 20 41 53 20 63 6f 6c 31 20 46 52   - 17 AS col1 FR
317e0 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
317f0 0a 2d 2d 2d 2d 0d 0a 31 32 33 35 37 34 36 33 0d  .----..12357463.
31800 0a 33 37 33 30 31 32 33 0d 0a 39 37 39 34 33 38  .3730123..979438
31810 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
31820 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 33 38 20  sort..SELECT 38 
31830 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
31840 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 38  2 cor0..----..38
31850 0d 0a 33 38 0d 0a 33 38 0d 0a 0d 0a 71 75 65 72  ..38..38....quer
31860 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
31870 45 43 54 20 31 39 20 2b 20 2b 20 63 6f 6c 32 20  ECT 19 + + col2 
31880 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
31890 30 20 57 48 45 52 45 20 4e 4f 54 20 28 20 2d 20  0 WHERE NOT ( - 
318a0 63 6f 6c 30 20 2b 20 2b 20 63 6f 6c 31 20 29 20  col0 + + col1 ) 
318b0 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  > NULL..----....
318c0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
318d0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
318e0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
318f0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
31900 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
31910 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
31920 54 20 63 6f 6c 31 2c 20 63 6f 6c 30 20 2a 20 2b  T col1, col0 * +
31930 20 2d 20 36 37 20 63 6f 6c 31 20 46 52 4f 4d 20   - 67 col1 FROM 
31940 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 31 34 0d 0a  tab1..----..14..
31950 2d 33 34 31 37 0d 0a 34 37 0d 0a 2d 36 30 39 37  -3417..47..-6097
31960 0d 0a 35 0d 0a 2d 35 36 39 35 0d 0a 0d 0a 71 75  ..5..-5695....qu
31970 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
31980 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74  .SELECT * FROM t
31990 61 62 32 20 57 48 45 52 45 20 4e 4f 54 20 28 20  ab2 WHERE NOT ( 
319a0 2b 20 2b 20 38 33 20 2b 20 2d 20 63 6f 6c 32 20  + + 83 + - col2 
319b0 29 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 4e 55  ) NOT BETWEEN NU
319c0 4c 4c 20 41 4e 44 20 63 6f 6c 30 20 2a 20 2b 20  LL AND col0 * + 
319d0 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  col2..----....on
319e0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
319f0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
31a00 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
31a10 20 6c 61 62 65 6c 2d 31 31 30 37 0d 0a 53 45 4c   label-1107..SEL
31a20 45 43 54 20 44 49 53 54 49 4e 43 54 20 33 32 20  ECT DISTINCT 32 
31a30 2b 20 4d 49 4e 28 20 44 49 53 54 49 4e 43 54 20  + MIN( DISTINCT 
31a40 2b 20 35 39 20 29 20 63 6f 6c 32 20 46 52 4f 4d  + 59 ) col2 FROM
31a50 20 74 61 62 30 2c 20 74 61 62 31 20 41 53 20 63   tab0, tab1 AS c
31a60 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 31 0d 0a 0d  or0..----..91...
31a70 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
31a80 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
31a90 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
31aa0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
31ab0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
31ac0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
31ad0 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
31ae0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
31af0 31 30 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  107..SELECT DIST
31b00 49 4e 43 54 20 33 32 20 2b 20 4d 49 4e 20 28 20  INCT 32 + MIN ( 
31b10 44 49 53 54 49 4e 43 54 20 2b 20 35 39 20 29 20  DISTINCT + 59 ) 
31b20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 2c 20  col2 FROM tab0, 
31b30 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
31b40 2d 2d 0d 0a 39 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  --..91....onlyif
31b50 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
31b60 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
31b70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
31b80 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 30 38 0d  sort label-1108.
31b90 0a 53 45 4c 45 43 54 20 43 41 53 54 28 20 4e 55  .SELECT CAST( NU
31ba0 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a  LL AS SIGNED ) *
31bb0 20 2d 20 32 36 20 41 53 20 63 6f 6c 32 20 46 52   - 26 AS col2 FR
31bc0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e  OM tab2..----..N
31bd0 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d  ULL..NULL..NULL.
31be0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
31bf0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
31c00 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31c10 74 20 6c 61 62 65 6c 2d 31 31 30 38 0d 0a 53 45  t label-1108..SE
31c20 4c 45 43 54 20 43 41 53 54 20 28 20 4e 55 4c 4c  LECT CAST ( NULL
31c30 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 2a 20   AS INTEGER ) * 
31c40 2d 20 32 36 20 41 53 20 63 6f 6c 32 20 46 52 4f  - 26 AS col2 FRO
31c50 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  M tab2..----..NU
31c60 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a  LL..NULL..NULL..
31c70 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
31c80 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 37 39  t..SELECT ALL 79
31c90 20 2a 20 2d 20 31 32 20 2a 20 2d 20 28 20 2d 20   * - 12 * - ( - 
31ca0 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46  col0 ) AS col0 F
31cb0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
31cc0 2d 34 38 33 34 38 0d 0a 2d 38 30 35 38 30 0d 0a  -48348..-80580..
31cd0 2d 38 36 32 36 38 0d 0a 0d 0a 6f 6e 6c 79 69 66  -86268....onlyif
31ce0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
31cf0 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56 20 66  te syntax: DIV f
31d00 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69 73  or integer divis
31d10 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ion: ..query I r
31d20 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31  owsort label-111
31d30 30 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54 28  0..SELECT COUNT(
31d40 20 2d 20 35 20 29 20 44 49 56 20 2d 20 2b 20 43   - 5 ) DIV - + C
31d50 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20 74  OUNT( * ) FROM t
31d60 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
31d70 2d 0d 0a 2d 31 0d 0a 0d 0a 73 6b 69 70 69 66 20  -..-1....skipif 
31d80 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
31d90 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
31da0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
31db0 31 30 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  10..SELECT COUNT
31dc0 20 28 20 2d 20 35 20 29 20 2f 20 2d 20 2b 20 43   ( - 5 ) / - + C
31dd0 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f 4d 20  OUNT ( * ) FROM 
31de0 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
31df0 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 71 75 65 72 79 20  --..-1....query 
31e00 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
31e10 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  ECT * FROM tab2 
31e20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
31e30 54 20 63 6f 6c 32 20 2b 20 63 6f 6c 30 20 4e 4f  T col2 + col0 NO
31e40 54 20 49 4e 20 28 20 2b 20 63 6f 6c 31 20 29 20  T IN ( + col1 ) 
31e50 4f 52 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e  OR NULL IS NOT N
31e60 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c  ULL..----....onl
31e70 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54  yif mysql # CAST
31e80 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67 61   syntax: aggrega
31e90 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  te syntax: SIGNE
31ea0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
31eb0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
31ec0 31 31 31 32 0d 0a 53 45 4c 45 43 54 20 2b 20 53  1112..SELECT + S
31ed0 55 4d 28 20 41 4c 4c 20 2d 20 43 41 53 54 28 20  UM( ALL - CAST( 
31ee0 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
31ef0 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20   ) AS col2 FROM 
31f00 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
31f10 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70  --..NULL....skip
31f20 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
31f30 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
31f40 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
31f50 2d 31 31 31 32 0d 0a 53 45 4c 45 43 54 20 2b 20  -1112..SELECT + 
31f60 53 55 4d 20 28 20 41 4c 4c 20 2d 20 43 41 53 54  SUM ( ALL - CAST
31f70 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47   ( NULL AS INTEG
31f80 45 52 20 29 20 29 20 41 53 20 63 6f 6c 32 20 46  ER ) ) AS col2 F
31f90 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
31fa0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..----..NULL....
31fb0 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
31fc0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
31fd0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 63  CT * FROM tab0 c
31fe0 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2d 20  or0 WHERE NOT - 
31ff0 34 20 4e 4f 54 20 42 45 54 57 45 45 4e 20 2b 20  4 NOT BETWEEN + 
32000 63 6f 6c 32 20 2a 20 2b 20 63 6f 6c 30 20 2b 20  col2 * + col0 + 
32010 2b 20 63 6f 6c 30 20 41 4e 44 20 4e 55 4c 4c 0d  + col0 AND NULL.
32020 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .----....onlyif 
32030 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
32040 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
32050 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
32060 6f 72 74 20 6c 61 62 65 6c 2d 31 31 31 34 0d 0a  ort label-1114..
32070 53 45 4c 45 43 54 20 28 20 2d 20 63 6f 6c 31 20  SELECT ( - col1 
32080 29 20 44 49 56 20 63 6f 6c 32 20 41 53 20 63 6f  ) DIV col2 AS co
32090 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l0 FROM tab1 AS 
320a0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 2b  cor0 WHERE NOT +
320b0 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 30 20 3e   col0 + - col0 >
320c0 3d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a 30 0d  = col2..----..0.
320d0 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  .0..0....skipif 
320e0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
320f0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
32100 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
32110 31 34 0d 0a 53 45 4c 45 43 54 20 28 20 2d 20 63  14..SELECT ( - c
32120 6f 6c 31 20 29 20 2f 20 63 6f 6c 32 20 41 53 20  ol1 ) / col2 AS 
32130 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41  col0 FROM tab1 A
32140 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54  S cor0 WHERE NOT
32150 20 2b 20 63 6f 6c 30 20 2b 20 2d 20 63 6f 6c 30   + col0 + - col0
32160 20 3e 3d 20 63 6f 6c 32 0d 0a 2d 2d 2d 2d 0d 0a   >= col2..----..
32170 30 0d 0a 30 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69  0..0..0....skipi
32180 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23 20 50  f postgresql # P
32190 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75 69 72  ostgreSQL requir
321a0 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e 61 6d  es AS when renam
321b0 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c 75 6d  ing output colum
321c0 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ns..query I rows
321d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
321e0 49 4e 43 54 20 2b 20 38 36 20 2a 20 2b 20 33 36  INCT + 86 * + 36
321f0 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
32200 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
32210 30 39 36 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  096....query III
32220 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
32230 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   * FROM tab0 AS 
32240 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 4e  cor0 WHERE NOT N
32250 55 4c 4c 20 3e 20 63 6f 6c 30 20 2b 20 2b 20 2b  ULL > col0 + + +
32260 20 37 37 20 2b 20 2b 20 63 6f 6c 32 0d 0a 2d 2d   77 + + col2..--
32270 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  --....query I ro
32280 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
32290 2b 20 63 6f 6c 30 20 2a 20 2d 20 37 34 20 46 52  + col0 * - 74 FR
322a0 4f 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d  OM tab2 cor0..--
322b0 2d 2d 0d 0a 33 34 30 34 0d 0a 34 37 33 36 0d 0a  --..3404..4736..
322c0 35 35 35 30 0d 0a 0d 0a 71 75 65 72 79 20 49 20  5550....query I 
322d0 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
322e0 44 49 53 54 49 4e 43 54 20 63 6f 6c 32 20 46 52  DISTINCT col2 FR
322f0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
32300 57 48 45 52 45 20 2b 20 63 6f 6c 32 20 2a 20 2b  WHERE + col2 * +
32310 20 63 6f 6c 32 20 49 4e 20 28 20 33 33 20 2b 20   col2 IN ( 33 + 
32320 2d 20 34 38 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  - 48 )..----....
32330 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
32340 0d 0a 53 45 4c 45 43 54 20 34 38 20 41 53 20 63  ..SELECT 48 AS c
32350 6f 6c 32 2c 20 63 6f 6c 30 20 41 53 20 63 6f 6c  ol2, col0 AS col
32360 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30  2 FROM tab0 cor0
32370 0d 0a 2d 2d 2d 2d 0d 0a 34 38 0d 0a 31 35 0d 0a  ..----..48..15..
32380 34 38 0d 0a 38 37 0d 0a 34 38 0d 0a 39 37 0d 0a  48..87..48..97..
32390 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
323a0 20 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49   CAST syntax: SI
323b0 47 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65  GNED type: ..que
323c0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
323d0 65 6c 2d 31 31 32 30 0d 0a 53 45 4c 45 43 54 20  el-1120..SELECT 
323e0 41 4c 4c 20 2b 20 2d 20 39 36 20 2b 20 2b 20 2b  ALL + - 96 + + +
323f0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
32400 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c 32 20  IGNED ) AS col2 
32410 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
32420 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
32430 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ULL..NULL....ski
32440 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
32450 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
32460 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
32470 6c 2d 31 31 32 30 0d 0a 53 45 4c 45 43 54 20 41  l-1120..SELECT A
32480 4c 4c 20 2b 20 2d 20 39 36 20 2b 20 2b 20 2b 20  LL + - 96 + + + 
32490 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
324a0 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 32  NTEGER ) AS col2
324b0 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
324c0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a  r0..----..NULL..
324d0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e  NULL..NULL....on
324e0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
324f0 54 20 73 79 6e 74 61 78 3a 20 61 67 67 72 65 67  T syntax: aggreg
32500 61 74 65 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  ate syntax: SIGN
32510 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
32520 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
32530 2d 31 31 32 31 0d 0a 53 45 4c 45 43 54 20 2d 20  -1121..SELECT - 
32540 4d 49 4e 28 20 43 41 53 54 28 20 4e 55 4c 4c 20  MIN( CAST( NULL 
32550 41 53 20 53 49 47 4e 45 44 20 29 20 29 20 41 53  AS SIGNED ) ) AS
32560 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d   col0 FROM tab2.
32570 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
32580 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
32590 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
325a0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
325b0 62 65 6c 2d 31 31 32 31 0d 0a 53 45 4c 45 43 54  bel-1121..SELECT
325c0 20 2d 20 4d 49 4e 20 28 20 43 41 53 54 20 28 20   - MIN ( CAST ( 
325d0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
325e0 29 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d  ) ) AS col0 FROM
325f0 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c   tab2..----..NUL
32600 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  L....onlyif mysq
32610 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
32620 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
32630 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
32640 32 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  22..SELECT DISTI
32650 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  NCT - COUNT( * )
32660 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
32670 62 31 20 57 48 45 52 45 20 4e 4f 54 20 38 35 20  b1 WHERE NOT 85 
32680 4e 4f 54 20 49 4e 20 28 20 2b 20 2d 20 35 31 20  NOT IN ( + - 51 
32690 2a 20 28 20 63 6f 6c 32 20 2f 20 63 6f 6c 32 20  * ( col2 / col2 
326a0 29 20 29 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a  ) )..----..0....
326b0 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
326c0 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
326d0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
326e0 61 62 65 6c 2d 31 31 32 32 0d 0a 53 45 4c 45 43  abel-1122..SELEC
326f0 54 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55  T DISTINCT - COU
32700 4e 54 20 28 20 2a 20 29 20 41 53 20 63 6f 6c 31  NT ( * ) AS col1
32710 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
32720 20 4e 4f 54 20 38 35 20 4e 4f 54 20 49 4e 20 28   NOT 85 NOT IN (
32730 20 2b 20 2d 20 35 31 20 2a 20 28 20 63 6f 6c 32   + - 51 * ( col2
32740 20 2f 20 63 6f 6c 32 20 29 20 29 0d 0a 2d 2d 2d   / col2 ) )..---
32750 2d 0d 0a 30 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  -..0....onlyif m
32760 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
32770 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
32780 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
32790 2d 31 31 32 33 0d 0a 53 45 4c 45 43 54 20 2d 20  -1123..SELECT - 
327a0 4d 49 4e 28 20 2d 20 2d 20 31 33 20 29 20 46 52  MIN( - - 13 ) FR
327b0 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab1..----..-
327c0 31 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  13....skipif mys
327d0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
327e0 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
327f0 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 33 0d  sort label-1123.
32800 0a 53 45 4c 45 43 54 20 2d 20 4d 49 4e 20 28 20  .SELECT - MIN ( 
32810 2d 20 2d 20 31 33 20 29 20 46 52 4f 4d 20 74 61  - - 13 ) FROM ta
32820 62 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 33 0d 0a 0d  b1..----..-13...
32830 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32840 0d 0a 53 45 4c 45 43 54 20 63 6f 6c 32 20 41 53  ..SELECT col2 AS
32850 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 20   col0 FROM tab2 
32860 57 48 45 52 45 20 63 6f 6c 32 20 2b 20 63 6f 6c  WHERE col2 + col
32870 32 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d  2 IS NOT NULL..-
32880 2d 2d 2d 0d 0a 32 33 0d 0a 34 30 0d 0a 35 38 0d  ---..23..40..58.
32890 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
328a0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
328b0 4e 43 54 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31  NCT col1 AS col1
328c0 20 46 52 4f 4d 20 74 61 62 31 20 57 48 45 52 45   FROM tab1 WHERE
328d0 20 2d 20 63 6f 6c 32 20 2a 20 28 20 35 37 20 29   - col2 * ( 57 )
328e0 20 2f 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 31   / col1 + + col1
328f0 20 3d 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d   = NULL..----...
32900 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
32910 0d 0a 53 45 4c 45 43 54 20 2d 20 28 20 2d 20 28  ..SELECT - ( - (
32920 20 2b 20 2d 20 36 30 20 29 20 29 20 2a 20 63 6f   + - 60 ) ) * co
32930 6c 32 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20  l2 AS col1 FROM 
32940 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 38 32  tab0..----..-282
32950 30 0d 0a 2d 35 39 34 30 0d 0a 2d 36 30 30 0d 0a  0..-5940..-600..
32960 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
32970 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
32980 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
32990 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 32 37 0d  sort label-1127.
329a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
329b0 20 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d   COUNT( * ) FROM
329c0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
329d0 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 42 45 54  ERE NOT NULL BET
329e0 57 45 45 4e 20 28 20 63 6f 6c 31 20 29 20 41 4e  WEEN ( col1 ) AN
329f0 44 20 28 20 2d 20 63 6f 6c 30 20 2a 20 2d 20 34  D ( - col0 * - 4
32a00 36 20 2a 20 2d 20 63 6f 6c 31 20 29 0d 0a 2d 2d  6 * - col1 )..--
32a10 2d 2d 0d 0a 30 0d 0a 0d 0a 73 6b 69 70 69 66 20  --..0....skipif 
32a20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
32a30 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20  atible..query I 
32a40 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
32a50 32 37 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  27..SELECT DISTI
32a60 4e 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  NCT COUNT ( * ) 
32a70 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
32a80 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
32a90 20 42 45 54 57 45 45 4e 20 28 20 63 6f 6c 31 20   BETWEEN ( col1 
32aa0 29 20 41 4e 44 20 28 20 2d 20 63 6f 6c 30 20 2a  ) AND ( - col0 *
32ab0 20 2d 20 34 36 20 2a 20 2d 20 63 6f 6c 31 20 29   - 46 * - col1 )
32ac0 0d 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 0d 0a 71 75 65  ..----..0....que
32ad0 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
32ae0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
32af0 63 6f 6c 32 20 2d 20 35 31 20 2b 20 39 31 20 2a  col2 - 51 + 91 *
32b00 20 63 6f 6c 32 20 2b 20 2b 20 63 6f 6c 30 20 41   col2 + + col0 A
32b10 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30  S col1 FROM tab0
32b20 0d 0a 2d 2d 2d 2d 0d 0a 34 32 38 38 0d 0a 39 31  ..----..4288..91
32b30 35 34 0d 0a 39 35 36 0d 0a 0d 0a 71 75 65 72 79  54..956....query
32b40 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
32b50 43 54 20 41 4c 4c 20 31 34 20 2b 20 2d 20 2d 20  CT ALL 14 + - - 
32b60 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20 46 52 4f  col1 AS col1 FRO
32b70 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a  M tab1 AS cor0..
32b80 2d 2d 2d 2d 0d 0a 31 39 0d 0a 32 38 0d 0a 36 31  ----..19..28..61
32b90 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
32ba0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
32bb0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
32bc0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33  owsort label-113
32bd0 30 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  0..SELECT ALL - 
32be0 2d 20 4d 49 4e 28 20 41 4c 4c 20 63 6f 6c 32 20  - MIN( ALL col2 
32bf0 29 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  ) FROM tab2 AS c
32c00 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 0d 0a 0d  or0..----..23...
32c10 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
32c20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
32c30 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
32c40 6c 61 62 65 6c 2d 31 31 33 30 0d 0a 53 45 4c 45  label-1130..SELE
32c50 43 54 20 41 4c 4c 20 2d 20 2d 20 4d 49 4e 20 28  CT ALL - - MIN (
32c60 20 41 4c 4c 20 63 6f 6c 32 20 29 20 46 52 4f 4d   ALL col2 ) FROM
32c70 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d   tab2 AS cor0..-
32c80 2d 2d 2d 0d 0a 32 33 0d 0a 0d 0a 6f 6e 6c 79 69  ---..23....onlyi
32c90 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
32ca0 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
32cb0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
32cc0 62 65 6c 2d 31 31 33 31 0d 0a 53 45 4c 45 43 54  bel-1131..SELECT
32cd0 20 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e   DISTINCT - COUN
32ce0 54 28 20 2d 20 28 20 63 6f 6c 30 20 29 20 29 20  T( - ( col0 ) ) 
32cf0 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
32d00 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
32d10 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-3....skipif my
32d20 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
32d30 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
32d40 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33 31  wsort label-1131
32d50 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
32d60 54 20 2d 20 43 4f 55 4e 54 20 28 20 2d 20 28 20  T - COUNT ( - ( 
32d70 63 6f 6c 30 20 29 20 29 20 41 53 20 63 6f 6c 31  col0 ) ) AS col1
32d80 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
32d90 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a  r0..----..-3....
32da0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
32db0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
32dc0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
32dd0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
32de0 2d 31 31 33 32 0d 0a 53 45 4c 45 43 54 20 41 4c  -1132..SELECT AL
32df0 4c 20 2d 20 41 56 47 20 28 20 2b 20 63 6f 6c 32  L - AVG ( + col2
32e00 20 29 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20   ) FROM tab0 AS 
32e10 63 6f 72 30 20 57 48 45 52 45 20 43 41 53 54 28  cor0 WHERE CAST(
32e20 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20   NULL AS SIGNED 
32e30 29 20 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a  ) < NULL..----..
32e40 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  NULL....skipif m
32e50 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
32e60 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72  tible..query I r
32e70 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 33  owsort label-113
32e80 32 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  2..SELECT ALL - 
32e90 41 56 47 20 28 20 2b 20 63 6f 6c 32 20 29 20 46  AVG ( + col2 ) F
32ea0 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30  ROM tab0 AS cor0
32eb0 20 57 48 45 52 45 20 43 41 53 54 20 28 20 4e 55   WHERE CAST ( NU
32ec0 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
32ed0 3c 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 4e 55  < NULL..----..NU
32ee0 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  LL....onlyif mys
32ef0 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73  ql # aggregate s
32f00 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49  yntax: ..query I
32f10 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
32f20 31 33 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  133..SELECT DIST
32f30 49 4e 43 54 20 2d 20 43 4f 55 4e 54 28 20 2b 20  INCT - COUNT( + 
32f40 63 6f 6c 30 20 29 20 41 53 20 63 6f 6c 30 20 46  col0 ) AS col0 F
32f50 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
32f60 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d 0a 73 6b  ..----..-3....sk
32f70 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
32f80 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
32f90 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
32fa0 65 6c 2d 31 31 33 33 0d 0a 53 45 4c 45 43 54 20  el-1133..SELECT 
32fb0 44 49 53 54 49 4e 43 54 20 2d 20 43 4f 55 4e 54  DISTINCT - COUNT
32fc0 20 28 20 2b 20 63 6f 6c 30 20 29 20 41 53 20 63   ( + col0 ) AS c
32fd0 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol0 FROM tab1 AS
32fe0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   cor0..----..-3.
32ff0 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77  ...query III row
33000 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46  sort..SELECT * F
33010 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
33020 20 57 48 45 52 45 20 28 20 2b 20 31 39 20 2a 20   WHERE ( + 19 * 
33030 2b 20 63 6f 6c 32 20 2a 20 63 6f 6c 32 20 29 20  + col2 * col2 ) 
33040 3c 3e 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d  <> NULL..----...
33050 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
33060 43 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47  CAST syntax: SIG
33070 4e 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72  NED type: ..quer
33080 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
33090 6c 2d 31 31 33 35 0d 0a 53 45 4c 45 43 54 20 41  l-1135..SELECT A
330a0 4c 4c 20 2d 20 2d 20 28 20 43 41 53 54 28 20 4e  LL - - ( CAST( N
330b0 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
330c0 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  ) AS col2 FROM t
330d0 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a  ab0 cor0..----..
330e0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
330f0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
33100 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
33110 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
33120 72 74 20 6c 61 62 65 6c 2d 31 31 33 35 0d 0a 53  rt label-1135..S
33130 45 4c 45 43 54 20 41 4c 4c 20 2d 20 2d 20 28 20  ELECT ALL - - ( 
33140 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
33150 4e 54 45 47 45 52 20 29 20 29 20 41 53 20 63 6f  NTEGER ) ) AS co
33160 6c 32 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72  l2 FROM tab0 cor
33170 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e  0..----..NULL..N
33180 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65  ULL..NULL....que
33190 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
331a0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 38  ELECT DISTINCT 8
331b0 37 2c 20 2d 20 31 35 20 41 53 20 63 6f 6c 32 20  7, - 15 AS col2 
331c0 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a  FROM tab1 cor0..
331d0 2d 2d 2d 2d 0d 0a 38 37 0d 0a 2d 31 35 0d 0a 0d  ----..87..-15...
331e0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
331f0 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
33200 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 20 57  M tab2 AS cor0 W
33210 48 45 52 45 20 63 6f 6c 32 20 2b 20 2d 20 2d 20  HERE col2 + - - 
33220 63 6f 6c 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d  col2 IS NULL..--
33230 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20  --....query III 
33240 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
33250 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52  * FROM tab0 WHER
33260 45 20 28 20 2b 20 2b 20 34 30 20 2a 20 2d 20 63  E ( + + 40 * - c
33270 6f 6c 30 20 2a 20 2d 20 63 6f 6c 32 20 29 20 42  ol0 * - col2 ) B
33280 45 54 57 45 45 4e 20 2b 20 38 34 20 41 4e 44 20  ETWEEN + 84 AND 
33290 2b 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  + col0..----....
332a0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
332b0 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
332c0 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
332d0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
332e0 2d 31 31 33 39 0d 0a 53 45 4c 45 43 54 20 2d 20  -1139..SELECT - 
332f0 43 41 53 54 28 20 2d 20 2b 20 43 41 53 54 28 20  CAST( - + CAST( 
33300 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
33310 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20   AS SIGNED ) AS 
33320 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col0 FROM tab1..
33330 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
33340 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
33350 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
33360 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
33370 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
33380 31 33 39 0d 0a 53 45 4c 45 43 54 20 2d 20 43 41  139..SELECT - CA
33390 53 54 20 28 20 2d 20 2b 20 43 41 53 54 20 28 20  ST ( - + CAST ( 
333a0 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20  NULL AS INTEGER 
333b0 29 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 41  ) AS INTEGER ) A
333c0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 31  S col0 FROM tab1
333d0 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
333e0 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
333f0 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
33400 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20 38 34 20  ECT col1 * + 84 
33410 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
33420 0a 34 32 38 34 0d 0a 35 36 32 38 0d 0a 36 34 36  .4284..5628..646
33430 38 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72 6f  8....query II ro
33440 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
33450 63 6f 6c 31 20 41 53 20 63 6f 6c 30 2c 20 63 6f  col1 AS col0, co
33460 6c 30 20 2a 20 2d 20 63 6f 6c 30 20 41 53 20 63  l0 * - col0 AS c
33470 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol2 FROM tab2..-
33480 2d 2d 2d 0d 0a 2d 35 31 0d 0a 2d 32 31 31 36 0d  ---..-51..-2116.
33490 0a 2d 36 37 0d 0a 2d 35 36 32 35 0d 0a 2d 37 37  .-67..-5625..-77
334a0 0d 0a 2d 34 30 39 36 0d 0a 0d 0a 71 75 65 72 79  ..-4096....query
334b0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
334c0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20  LECT DISTINCT * 
334d0 46 52 4f 4d 20 74 61 62 30 20 57 48 45 52 45 20  FROM tab0 WHERE 
334e0 4e 4f 54 20 2d 20 35 34 20 2a 20 2d 20 63 6f 6c  NOT - 54 * - col
334f0 30 20 49 4e 20 28 20 31 35 20 29 0d 0a 2d 2d 2d  0 IN ( 15 )..---
33500 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
33510 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35 64  ing to c4b42765d
33520 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35 33  ff94eaaa46040e53
33530 37 66 62 34 33 62 37 0d 0a 0d 0a 6f 6e 6c 79 69  7fb43b7....onlyi
33540 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
33550 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
33560 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
33570 61 62 65 6c 2d 31 31 34 33 0d 0a 53 45 4c 45 43  abel-1143..SELEC
33580 54 20 41 4c 4c 20 31 32 20 41 53 20 63 6f 6c 32  T ALL 12 AS col2
33590 2c 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20 2b  , COUNT( * ) * +
335a0 20 43 4f 55 4e 54 28 20 63 6f 6c 32 20 29 20 46   COUNT( col2 ) F
335b0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
335c0 31 32 0d 0a 39 0d 0a 0d 0a 73 6b 69 70 69 66 20  12..9....skipif 
335d0 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70  mysql # not comp
335e0 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49  atible..query II
335f0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
33600 31 34 33 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  143..SELECT ALL 
33610 31 32 20 41 53 20 63 6f 6c 32 2c 20 43 4f 55 4e  12 AS col2, COUN
33620 54 20 28 20 2a 20 29 20 2a 20 2b 20 43 4f 55 4e  T ( * ) * + COUN
33630 54 20 28 20 63 6f 6c 32 20 29 20 46 52 4f 4d 20  T ( col2 ) FROM 
33640 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 32 0d 0a  tab0..----..12..
33650 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  9....onlyif mysq
33660 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
33670 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20  ntax: ..query I 
33680 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
33690 34 34 0d 0a 53 45 4c 45 43 54 20 53 55 4d 28 20  44..SELECT SUM( 
336a0 41 4c 4c 20 63 6f 6c 32 20 29 20 41 53 20 63 6f  ALL col2 ) AS co
336b0 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l2 FROM tab2..--
336c0 2d 2d 0d 0a 31 32 31 0d 0a 0d 0a 73 6b 69 70 69  --..121....skipi
336d0 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
336e0 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
336f0 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
33700 31 31 34 34 0d 0a 53 45 4c 45 43 54 20 53 55 4d  1144..SELECT SUM
33710 20 28 20 41 4c 4c 20 63 6f 6c 32 20 29 20 41 53   ( ALL col2 ) AS
33720 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 0d   col2 FROM tab2.
33730 0a 2d 2d 2d 2d 0d 0a 31 32 31 0d 0a 0d 0a 6f 6e  .----..121....on
33740 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
33750 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
33760 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
33770 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
33780 31 34 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  145..SELECT ALL 
33790 43 41 53 54 28 20 2b 20 28 20 2b 20 63 6f 6c 31  CAST( + ( + col1
337a0 20 29 20 41 53 20 53 49 47 4e 45 44 20 29 20 2a   ) AS SIGNED ) *
337b0 20 2b 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62   + col0 FROM tab
337c0 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33  2 cor0..----..23
337d0 34 36 0d 0a 34 39 32 38 0d 0a 35 30 32 35 0d 0a  46..4928..5025..
337e0 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23  ..skipif mysql #
337f0 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d   not compatible.
33800 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
33810 20 6c 61 62 65 6c 2d 31 31 34 35 0d 0a 53 45 4c   label-1145..SEL
33820 45 43 54 20 41 4c 4c 20 43 41 53 54 20 28 20 2b  ECT ALL CAST ( +
33830 20 28 20 2b 20 63 6f 6c 31 20 29 20 41 53 20 49   ( + col1 ) AS I
33840 4e 54 45 47 45 52 20 29 20 2a 20 2b 20 63 6f 6c  NTEGER ) * + col
33850 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  0 FROM tab2 cor0
33860 0d 0a 2d 2d 2d 2d 0d 0a 32 33 34 36 0d 0a 34 39  ..----..2346..49
33870 32 38 0d 0a 35 30 32 35 0d 0a 0d 0a 71 75 65 72  28..5025....quer
33880 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
33890 45 43 54 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  ECT + col1 FROM 
338a0 74 61 62 30 20 57 48 45 52 45 20 4e 4f 54 20 2d  tab0 WHERE NOT -
338b0 20 2b 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d   + col1 IS NULL.
338c0 0a 2d 2d 2d 2d 0d 0a 31 0d 0a 32 31 0d 0a 38 31  .----..1..21..81
338d0 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  ....query III ro
338e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20  wsort..SELECT * 
338f0 46 52 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20  FROM tab2 WHERE 
33900 4e 4f 54 20 28 20 2d 20 31 32 20 2a 20 33 34 20  NOT ( - 12 * 34 
33910 29 20 49 53 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d  ) IS NULL..----.
33920 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68 69 6e  .9 values hashin
33930 67 20 74 6f 20 37 35 63 39 39 38 61 61 35 33 61  g to 75c998aa53a
33940 63 38 33 32 31 38 63 62 66 32 66 65 62 39 36 32  c83218cbf2feb962
33950 64 30 61 34 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  d0a49....onlyif 
33960 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
33970 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
33980 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
33990 6f 72 74 20 6c 61 62 65 6c 2d 31 31 34 38 0d 0a  ort label-1148..
339a0 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
339b0 2d 20 2d 20 32 20 2a 20 2d 20 2d 20 63 6f 6c 31  - - 2 * - - col1
339c0 20 2a 20 2d 20 35 31 20 2a 20 43 41 53 54 28 20   * - 51 * CAST( 
339d0 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29  NULL AS SIGNED )
339e0 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
339f0 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73  .----..NULL....s
33a00 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
33a10 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
33a20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
33a30 62 65 6c 2d 31 31 34 38 0d 0a 53 45 4c 45 43 54  bel-1148..SELECT
33a40 20 44 49 53 54 49 4e 43 54 20 2d 20 2d 20 32 20   DISTINCT - - 2 
33a50 2a 20 2d 20 2d 20 63 6f 6c 31 20 2a 20 2d 20 35  * - - col1 * - 5
33a60 31 20 2a 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  1 * CAST ( NULL 
33a70 41 53 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f  AS INTEGER ) FRO
33a80 4d 20 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab1 cor0..---
33a90 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79  -..NULL....query
33aa0 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
33ab0 45 43 54 20 2d 20 63 6f 6c 31 20 2a 20 2b 20 63  ECT - col1 * + c
33ac0 6f 6c 30 2c 20 63 6f 6c 32 20 41 53 20 63 6f 6c  ol0, col2 AS col
33ad0 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
33ae0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34 32 35 0d  or0..----..-425.
33af0 0a 35 39 0d 0a 2d 34 32 37 37 0d 0a 36 38 0d 0a  .59..-4277..68..
33b00 2d 37 31 34 0d 0a 39 36 0d 0a 0d 0a 71 75 65 72  -714..96....quer
33b10 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
33b20 45 43 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c  ECT DISTINCT col
33b30 30 20 2a 20 63 6f 6c 31 20 2b 20 2b 20 2d 20 37  0 * col1 + + - 7
33b40 37 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  7 FROM tab2 AS c
33b50 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32 32 36 39 0d  or0..----..2269.
33b60 0a 34 38 35 31 0d 0a 34 39 34 38 0d 0a 0d 0a 71  .4851..4948....q
33b70 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
33b80 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 31 20  SELECT ALL col1 
33b90 2a 20 2d 20 37 35 20 46 52 4f 4d 20 74 61 62 30  * - 75 FROM tab0
33ba0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
33bb0 2d 31 35 37 35 0d 0a 2d 36 30 37 35 0d 0a 2d 37  -1575..-6075..-7
33bc0 35 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  5....onlyif mysq
33bd0 6c 20 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65  l # DIV for inte
33be0 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a  ger division: ..
33bf0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
33c00 6c 61 62 65 6c 2d 31 31 35 32 0d 0a 53 45 4c 45  label-1152..SELE
33c10 43 54 20 2b 20 37 33 20 44 49 56 20 2d 20 63 6f  CT + 73 DIV - co
33c20 6c 30 20 2b 20 2b 20 2d 20 38 37 20 46 52 4f 4d  l0 + + - 87 FROM
33c30 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
33c40 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c 20 29  ERE NOT ( NULL )
33c50 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
33c60 2d 2d 0d 0a 2d 38 37 0d 0a 2d 38 37 0d 0a 2d 39  --..-87..-87..-9
33c70 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  1....skipif mysq
33c80 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
33c90 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
33ca0 6f 72 74 20 6c 61 62 65 6c 2d 31 31 35 32 0d 0a  ort label-1152..
33cb0 53 45 4c 45 43 54 20 2b 20 37 33 20 2f 20 2d 20  SELECT + 73 / - 
33cc0 63 6f 6c 30 20 2b 20 2b 20 2d 20 38 37 20 46 52  col0 + + - 87 FR
33cd0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20  OM tab0 AS cor0 
33ce0 57 48 45 52 45 20 4e 4f 54 20 28 20 4e 55 4c 4c  WHERE NOT ( NULL
33cf0 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a   ) IS NOT NULL..
33d00 2d 2d 2d 2d 0d 0a 2d 38 37 0d 0a 2d 38 37 0d 0a  ----..-87..-87..
33d10 2d 39 31 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20  -91....query II 
33d20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
33d30 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63 6f 6c  DISTINCT + + col
33d40 30 20 2a 20 2b 20 32 34 2c 20 2b 20 63 6f 6c 32  0 * + 24, + col2
33d50 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
33d60 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 31 30 34 0d 0a  r0..----..1104..
33d70 32 33 0d 0a 31 35 33 36 0d 0a 34 30 0d 0a 31 38  23..1536..40..18
33d80 30 30 0d 0a 35 38 0d 0a 0d 0a 71 75 65 72 79 20  00..58....query 
33d90 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
33da0 54 20 41 4c 4c 20 2d 20 34 39 20 2a 20 2b 20 31  T ALL - 49 * + 1
33db0 32 20 2b 20 63 6f 6c 30 20 41 53 20 63 6f 6c 31  2 + col0 AS col1
33dc0 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
33dd0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 35 31 33 0d 0a  r0..----..-513..
33de0 2d 35 32 34 0d 0a 2d 35 34 32 0d 0a 0d 0a 71 75  -524..-542....qu
33df0 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
33e00 45 4c 45 43 54 20 2b 20 2d 20 63 6f 6c 32 20 2a  ELECT + - col2 *
33e10 20 33 36 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 2b   36 * + - col0 +
33e20 20 2b 20 2d 20 39 32 20 2d 20 2b 20 63 6f 6c 31   + - 92 - + col1
33e30 20 2a 20 33 31 20 2b 20 2d 20 2b 20 63 6f 6c 31   * 31 + - + col1
33e40 20 2a 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   * - col1 FROM t
33e50 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
33e60 2d 0d 0a 31 37 35 39 32 36 0d 0a 31 38 30 33 31  -..175926..18031
33e70 38 0d 0a 32 32 33 34 32 38 0d 0a 0d 0a 71 75 65  8..223428....que
33e80 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  ry I rowsort..SE
33e90 4c 45 43 54 20 63 6f 6c 31 20 2a 20 2b 20 63 6f  LECT col1 * + co
33ea0 6c 30 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l0 FROM tab0 WHE
33eb0 52 45 20 63 6f 6c 31 20 49 53 20 4e 55 4c 4c 0d  RE col1 IS NULL.
33ec0 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
33ed0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
33ee0 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52  CT DISTINCT * FR
33ef0 4f 4d 20 74 61 62 32 20 57 48 45 52 45 20 2d 20  OM tab2 WHERE - 
33f00 34 36 20 3d 20 28 20 2d 20 2b 20 63 6f 6c 31 20  46 = ( - + col1 
33f10 2b 20 2d 20 2d 20 63 6f 6c 32 20 29 0d 0a 2d 2d  + - - col2 )..--
33f20 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 20 72  --....query II r
33f30 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
33f40 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 41  ISTINCT - col0 A
33f50 53 20 63 6f 6c 31 2c 20 63 6f 6c 31 20 46 52 4f  S col1, col1 FRO
33f60 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31  M tab0..----..-1
33f70 35 0d 0a 38 31 0d 0a 2d 38 37 0d 0a 32 31 0d 0a  5..81..-87..21..
33f80 2d 39 37 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  -97..1....onlyif
33f90 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
33fa0 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
33fb0 73 79 6e 74 61 78 3a 20 44 45 43 49 4d 41 4c 20  syntax: DECIMAL 
33fc0 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20  type: ..query I 
33fd0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
33fe0 35 39 0d 0a 53 45 4c 45 43 54 20 43 4f 55 4e 54  59..SELECT COUNT
33ff0 28 20 2a 20 29 20 2b 20 2d 20 43 4f 55 4e 54 28  ( * ) + - COUNT(
34000 20 2a 20 29 20 2a 20 2d 20 43 41 53 54 28 20 4e   * ) * - CAST( N
34010 55 4c 4c 20 41 53 20 44 45 43 49 4d 41 4c 20 29  ULL AS DECIMAL )
34020 20 2a 20 2d 20 35 34 20 46 52 4f 4d 20 74 61 62   * - 54 FROM tab
34030 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d  2..----..NULL...
34040 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
34050 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
34060 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
34070 6c 61 62 65 6c 2d 31 31 35 39 0d 0a 53 45 4c 45  label-1159..SELE
34080 43 54 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2b  CT COUNT ( * ) +
34090 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a   - COUNT ( * ) *
340a0 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41   - CAST ( NULL A
340b0 53 20 52 45 41 4c 20 29 20 2a 20 2d 20 35 34 20  S REAL ) * - 54 
340c0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
340d0 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49  .NULL....query I
340e0 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45  II rowsort..SELE
340f0 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
34100 48 45 52 45 20 2b 20 2b 20 28 20 2b 20 2d 20 63  HERE + + ( + - c
34110 6f 6c 31 20 29 20 49 53 20 4e 4f 54 20 4e 55 4c  ol1 ) IS NOT NUL
34120 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65  L..----..9 value
34130 73 20 68 61 73 68 69 6e 67 20 74 6f 20 63 36 63  s hashing to c6c
34140 30 61 34 31 31 31 62 33 36 64 30 34 64 62 63 38  0a4111b36d04dbc8
34150 31 31 61 31 31 65 34 64 35 34 63 61 64 0d 0a 0d  11a11e4d54cad...
34160 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
34170 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
34180 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
34190 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 31 0d 0a  ort label-1161..
341a0 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54 28 20  SELECT + COUNT( 
341b0 2a 20 29 20 2b 20 33 20 2b 20 2d 20 28 20 43 4f  * ) + 3 + - ( CO
341c0 55 4e 54 28 20 2a 20 29 20 29 20 2b 20 35 38 20  UNT( * ) ) + 58 
341d0 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d  FROM tab2..----.
341e0 0a 36 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .61....skipif my
341f0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
34200 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
34210 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 36 31  wsort label-1161
34220 0d 0a 53 45 4c 45 43 54 20 2b 20 43 4f 55 4e 54  ..SELECT + COUNT
34230 20 28 20 2a 20 29 20 2b 20 33 20 2b 20 2d 20 28   ( * ) + 3 + - (
34240 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 29 20 2b   COUNT ( * ) ) +
34250 20 35 38 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d   58 FROM tab2..-
34260 2d 2d 2d 0d 0a 36 31 0d 0a 0d 0a 71 75 65 72 79  ---..61....query
34270 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
34280 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20 33 33  CT DISTINCT - 33
34290 20 2b 20 2b 20 63 6f 6c 30 20 2d 20 2b 20 63 6f   + + col0 - + co
342a0 6c 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d  l1 FROM tab2..--
342b0 2d 2d 0d 0a 2d 32 35 0d 0a 2d 33 38 0d 0a 2d 34  --..-25..-38..-4
342c0 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71  6....onlyif mysq
342d0 6c 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79  l # aggregate sy
342e0 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e  ntax: DIV for in
342f0 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20  teger division: 
34300 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
34310 74 20 6c 61 62 65 6c 2d 31 31 36 33 0d 0a 53 45  t label-1163..SE
34320 4c 45 43 54 20 39 38 20 44 49 56 20 2d 20 43 4f  LECT 98 DIV - CO
34330 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  UNT( * ) AS col0
34340 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f   FROM tab0 AS co
34350 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 32 0d 0a 0d  r0..----..-32...
34360 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
34370 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
34380 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20  query I rowsort 
34390 6c 61 62 65 6c 2d 31 31 36 33 0d 0a 53 45 4c 45  label-1163..SELE
343a0 43 54 20 39 38 20 2f 20 2d 20 43 4f 55 4e 54 20  CT 98 / - COUNT 
343b0 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 20 46 52  ( * ) AS col0 FR
343c0 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
343d0 0a 2d 2d 2d 2d 0d 0a 2d 33 32 0d 0a 0d 0a 6f 6e  .----..-32....on
343e0 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
343f0 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
34400 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
34410 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
34420 31 36 34 0d 0a 53 45 4c 45 43 54 20 2b 20 34 38  164..SELECT + 48
34430 20 2f 20 2d 20 2b 20 43 41 53 54 28 20 4e 55 4c   / - + CAST( NUL
34440 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 41 53  L AS SIGNED ) AS
34450 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20   col1 FROM tab2 
34460 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 2d 20  AS cor0 WHERE - 
34470 63 6f 6c 31 20 42 45 54 57 45 45 4e 20 2b 20 63  col1 BETWEEN + c
34480 6f 6c 32 20 2a 20 2d 20 34 35 20 2b 20 63 6f 6c  ol2 * - 45 + col
34490 30 20 41 4e 44 20 2d 20 2d 20 63 6f 6c 32 0d 0a  0 AND - - col2..
344a0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
344b0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
344c0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
344d0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
344e0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
344f0 31 36 34 0d 0a 53 45 4c 45 43 54 20 2b 20 34 38  164..SELECT + 48
34500 20 2f 20 2d 20 2b 20 43 41 53 54 20 28 20 4e 55   / - + CAST ( NU
34510 4c 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20  LL AS INTEGER ) 
34520 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62  AS col1 FROM tab
34530 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
34540 2d 20 63 6f 6c 31 20 42 45 54 57 45 45 4e 20 2b  - col1 BETWEEN +
34550 20 63 6f 6c 32 20 2a 20 2d 20 34 35 20 2b 20 63   col2 * - 45 + c
34560 6f 6c 30 20 41 4e 44 20 2d 20 2d 20 63 6f 6c 32  ol0 AND - - col2
34570 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55  ..----..NULL..NU
34580 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72  LL..NULL....quer
34590 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
345a0 4c 45 43 54 20 2b 20 33 35 20 2a 20 37 20 41 53  LECT + 35 * 7 AS
345b0 20 63 6f 6c 30 2c 20 2d 20 34 34 20 46 52 4f 4d   col0, - 44 FROM
345c0 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52 45   tab2 cor0 WHERE
345d0 20 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c   NULL IS NOT NUL
345e0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
345f0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
34600 43 54 20 41 4c 4c 20 2d 20 31 30 20 41 53 20 63  CT ALL - 10 AS c
34610 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
34620 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
34630 4e 55 4c 4c 20 49 53 20 4e 4f 54 20 4e 55 4c 4c  NULL IS NOT NULL
34640 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d 31 30  ..----..-10..-10
34650 0d 0a 2d 31 30 0d 0a 0d 0a 71 75 65 72 79 20 49  ..-10....query I
34660 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
34670 20 2b 20 63 6f 6c 30 20 2d 20 2b 20 36 34 20 2b   + col0 - + 64 +
34680 20 63 6f 6c 32 20 41 53 20 63 6f 6c 30 20 46 52   col2 AS col0 FR
34690 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a 38  OM tab1..----..8
346a0 30 0d 0a 38 33 0d 0a 39 35 0d 0a 0d 0a 6f 6e 6c  0..83..95....onl
346b0 79 69 66 20 6d 79 73 71 6c 20 23 20 44 49 56 20  yif mysql # DIV 
346c0 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76 69  for integer divi
346d0 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49 20  sion: ..query I 
346e0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
346f0 36 38 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  68..SELECT ALL +
34700 20 2b 20 28 20 2b 20 2d 20 63 6f 6c 30 20 29 20   + ( + - col0 ) 
34710 2a 20 2d 20 32 33 20 2a 20 2d 20 63 6f 6c 31 20  * - 23 * - col1 
34720 2d 20 63 6f 6c 31 20 2d 20 2b 20 2b 20 34 20 44  - col1 - + + 4 D
34730 49 56 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c  IV + col1 AS col
34740 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  2 FROM tab1 AS c
34750 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 36 34 33  or0..----..-1643
34760 36 0d 0a 2d 39 37 38 30 0d 0a 2d 39 38 34 31 38  6..-9780..-98418
34770 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
34780 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
34790 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
347a0 72 74 20 6c 61 62 65 6c 2d 31 31 36 38 0d 0a 53  rt label-1168..S
347b0 45 4c 45 43 54 20 41 4c 4c 20 2b 20 2b 20 28 20  ELECT ALL + + ( 
347c0 2b 20 2d 20 63 6f 6c 30 20 29 20 2a 20 2d 20 32  + - col0 ) * - 2
347d0 33 20 2a 20 2d 20 63 6f 6c 31 20 2d 20 63 6f 6c  3 * - col1 - col
347e0 31 20 2d 20 2b 20 2b 20 34 20 2f 20 2b 20 63 6f  1 - + + 4 / + co
347f0 6c 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l1 AS col2 FROM 
34800 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
34810 2d 2d 0d 0a 2d 31 36 34 33 36 0d 0a 2d 39 37 38  --..-16436..-978
34820 30 0d 0a 2d 39 38 34 31 38 0d 0a 0d 0a 73 6b 69  0..-98418....ski
34830 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
34840 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
34850 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
34860 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
34870 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 49 20 72  umns..query II r
34880 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41  owsort..SELECT A
34890 4c 4c 20 2b 20 2b 20 36 35 20 2d 20 2d 20 63 6f  LL + + 65 - - co
348a0 6c 30 2c 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 34  l0, - col0 + - 4
348b0 31 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  1 col2 FROM tab0
348c0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
348d0 31 35 32 0d 0a 2d 31 32 38 0d 0a 31 36 32 0d 0a  152..-128..162..
348e0 2d 31 33 38 0d 0a 38 30 0d 0a 2d 35 36 0d 0a 0d  -138..80..-56...
348f0 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
34900 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
34910 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
34920 48 45 52 45 20 4e 4f 54 20 2b 20 63 6f 6c 31 20  HERE NOT + col1 
34930 42 45 54 57 45 45 4e 20 63 6f 6c 32 20 2b 20 63  BETWEEN col2 + c
34940 6f 6c 31 20 41 4e 44 20 63 6f 6c 32 0d 0a 2d 2d  ol1 AND col2..--
34950 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73  --..9 values has
34960 68 69 6e 67 20 74 6f 20 63 34 62 34 32 37 36 35  hing to c4b42765
34970 64 66 66 39 34 65 61 61 61 34 36 30 34 30 65 35  dff94eaaa46040e5
34980 33 37 66 62 34 33 62 37 0d 0a 0d 0a 71 75 65 72  37fb43b7....quer
34990 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  y I rowsort..SEL
349a0 45 43 54 20 2b 20 63 6f 6c 32 20 41 53 20 63 6f  ECT + col2 AS co
349b0 6c 32 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20  l2 FROM tab1 AS 
349c0 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20 63  cor0 WHERE NOT c
349d0 6f 6c 32 20 2f 20 2b 20 63 6f 6c 32 20 2b 20 2b  ol2 / + col2 + +
349e0 20 63 6f 6c 32 20 49 53 20 4e 4f 54 20 4e 55 4c   col2 IS NOT NUL
349f0 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  L..----....query
34a00 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
34a10 43 54 20 35 34 20 2a 20 2b 20 2b 20 63 6f 6c 32  CT 54 * + + col2
34a20 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61   AS col2 FROM ta
34a30 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 32  b0 cor0..----..2
34a40 35 33 38 0d 0a 35 33 34 36 0d 0a 35 34 30 0d 0a  538..5346..540..
34a50 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
34a60 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
34a70 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
34a80 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37 33 0d  sort label-1173.
34a90 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
34aa0 20 2d 20 2b 20 43 4f 55 4e 54 28 20 41 4c 4c 20   - + COUNT( ALL 
34ab0 2b 20 2b 20 31 20 29 20 46 52 4f 4d 20 74 61 62  + + 1 ) FROM tab
34ac0 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  1 AS cor0..----.
34ad0 0a 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .-3....skipif my
34ae0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
34af0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
34b00 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37 33  wsort label-1173
34b10 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
34b20 54 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 41 4c  T - + COUNT ( AL
34b30 4c 20 2b 20 2b 20 31 20 29 20 46 52 4f 4d 20 74  L + + 1 ) FROM t
34b40 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab1 AS cor0..---
34b50 2d 0d 0a 2d 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..-3....onlyif 
34b60 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
34b70 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
34b80 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
34b90 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37 34 0d 0a  ort label-1174..
34ba0 53 45 4c 45 43 54 20 2b 20 43 41 53 54 28 20 2b  SELECT + CAST( +
34bb0 20 63 6f 6c 31 20 41 53 20 53 49 47 4e 45 44 20   col1 AS SIGNED 
34bc0 29 20 2a 20 2b 20 63 6f 6c 31 20 46 52 4f 4d 20  ) * + col1 FROM 
34bd0 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab2 cor0..----.
34be0 0a 32 36 30 31 0d 0a 34 34 38 39 0d 0a 35 39 32  .2601..4489..592
34bf0 39 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  9....skipif mysq
34c00 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
34c10 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
34c20 6f 72 74 20 6c 61 62 65 6c 2d 31 31 37 34 0d 0a  ort label-1174..
34c30 53 45 4c 45 43 54 20 2b 20 43 41 53 54 20 28 20  SELECT + CAST ( 
34c40 2b 20 63 6f 6c 31 20 41 53 20 49 4e 54 45 47 45  + col1 AS INTEGE
34c50 52 20 29 20 2a 20 2b 20 63 6f 6c 31 20 46 52 4f  R ) * + col1 FRO
34c60 4d 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d  M tab2 cor0..---
34c70 2d 0d 0a 32 36 30 31 0d 0a 34 34 38 39 0d 0a 35  -..2601..4489..5
34c80 39 32 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  929....query I r
34c90 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 39  owsort..SELECT 9
34ca0 33 20 2a 20 2d 20 2d 20 63 6f 6c 30 20 41 53 20  3 * - - col0 AS 
34cb0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 0d 0a  col1 FROM tab0..
34cc0 2d 2d 2d 2d 0d 0a 31 33 39 35 0d 0a 38 30 39 31  ----..1395..8091
34cd0 0d 0a 39 30 32 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..9021....onlyif
34ce0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
34cf0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
34d00 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
34d10 65 6c 2d 31 31 37 36 0d 0a 53 45 4c 45 43 54 20  el-1176..SELECT 
34d20 44 49 53 54 49 4e 43 54 20 2d 20 4d 49 4e 28 20  DISTINCT - MIN( 
34d30 41 4c 4c 20 2b 20 63 6f 6c 32 20 29 20 41 53 20  ALL + col2 ) AS 
34d40 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
34d50 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 0d 0a 73 6b 69  ----..-59....ski
34d60 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
34d70 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
34d80 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
34d90 6c 2d 31 31 37 36 0d 0a 53 45 4c 45 43 54 20 44  l-1176..SELECT D
34da0 49 53 54 49 4e 43 54 20 2d 20 4d 49 4e 20 28 20  ISTINCT - MIN ( 
34db0 41 4c 4c 20 2b 20 63 6f 6c 32 20 29 20 41 53 20  ALL + col2 ) AS 
34dc0 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 0d 0a  col2 FROM tab1..
34dd0 2d 2d 2d 2d 0d 0a 2d 35 39 0d 0a 0d 0a 71 75 65  ----..-59....que
34de0 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
34df0 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52 4f  SELECT ALL * FRO
34e00 4d 20 74 61 62 32 20 57 48 45 52 45 20 4e 4f 54  M tab2 WHERE NOT
34e10 20 2d 20 63 6f 6c 32 20 2b 20 2b 20 28 20 2b 20   - col2 + + ( + 
34e20 37 39 20 29 20 2f 20 28 20 2b 20 2d 20 33 36 20  79 ) / ( + - 36 
34e30 29 20 2b 20 2d 20 63 6f 6c 30 20 42 45 54 57 45  ) + - col0 BETWE
34e40 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 28 20 2d 20  EN NULL AND ( - 
34e50 63 6f 6c 32 20 2b 20 2d 20 63 6f 6c 31 20 2a 20  col2 + - col1 * 
34e60 2d 20 63 6f 6c 30 20 29 0d 0a 2d 2d 2d 2d 0d 0a  - col0 )..----..
34e70 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73  ..query III rows
34e80 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  ort..SELECT DIST
34e90 49 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 30  INCT * FROM tab0
34ea0 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 20 2b 20   WHERE NULL < + 
34eb0 2b 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  + col1..----....
34ec0 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d  query I rowsort.
34ed0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 63 6f  .SELECT ALL - co
34ee0 6c 31 20 2f 20 2b 20 63 6f 6c 30 20 2a 20 63 6f  l1 / + col0 * co
34ef0 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 57 48 45  l1 FROM tab0 WHE
34f00 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 49 53 20 4e  RE NOT NULL IS N
34f10 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65  ULL..----....que
34f20 72 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ry II rowsort..S
34f30 45 4c 45 43 54 20 2b 20 37 30 2c 20 2d 20 35 39  ELECT + 70, - 59
34f40 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61   AS col0 FROM ta
34f50 62 31 0d 0a 2d 2d 2d 2d 0d 0a 37 30 0d 0a 2d 35  b1..----..70..-5
34f60 39 0d 0a 37 30 0d 0a 2d 35 39 0d 0a 37 30 0d 0a  9..70..-59..70..
34f70 2d 35 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  -59....onlyif my
34f80 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
34f90 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
34fa0 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f  ..query II rowso
34fb0 72 74 20 6c 61 62 65 6c 2d 31 31 38 31 0d 0a 53  rt label-1181..S
34fc0 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 2b 20 2d  ELECT + col0 + -
34fd0 20 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53   CAST( NULL AS S
34fe0 49 47 4e 45 44 20 29 2c 20 2b 20 63 6f 6c 31 20  IGNED ), + col1 
34ff0 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
35000 31 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 31  1..----..NULL..1
35010 34 0d 0a 4e 55 4c 4c 0d 0a 34 37 0d 0a 4e 55 4c  4..NULL..47..NUL
35020 4c 0d 0a 35 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d  L..5....skipif m
35030 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61  ysql # not compa
35040 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 20  tible..query II 
35050 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
35060 38 31 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f 6c  81..SELECT + col
35070 30 20 2b 20 2d 20 43 41 53 54 20 28 20 4e 55 4c  0 + - CAST ( NUL
35080 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 2c 20  L AS INTEGER ), 
35090 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20 46  + col1 AS col0 F
350a0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
350b0 4e 55 4c 4c 0d 0a 31 34 0d 0a 4e 55 4c 4c 0d 0a  NULL..14..NULL..
350c0 34 37 0d 0a 4e 55 4c 4c 0d 0a 35 0d 0a 0d 0a 6f  47..NULL..5....o
350d0 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41  nlyif mysql # CA
350e0 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45  ST syntax: SIGNE
350f0 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20  D type: ..query 
35100 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
35110 31 31 38 32 0d 0a 53 45 4c 45 43 54 20 63 6f 6c  1182..SELECT col
35120 32 20 2b 20 2b 20 2b 20 36 31 20 2a 20 2d 20 2d  2 + + + 61 * - -
35130 20 43 41 53 54 28 20 2d 20 63 6f 6c 31 20 41 53   CAST( - col1 AS
35140 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c   SIGNED ) AS col
35150 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  1 FROM tab1 AS c
35160 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32 34 36 0d  or0..----..-246.
35170 0a 2d 32 37 39 39 0d 0a 2d 37 35 38 0d 0a 0d 0a  .-2799..-758....
35180 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
35190 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
351a0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
351b0 61 62 65 6c 2d 31 31 38 32 0d 0a 53 45 4c 45 43  abel-1182..SELEC
351c0 54 20 63 6f 6c 32 20 2b 20 2b 20 2b 20 36 31 20  T col2 + + + 61 
351d0 2a 20 2d 20 2d 20 43 41 53 54 20 28 20 2d 20 63  * - - CAST ( - c
351e0 6f 6c 31 20 41 53 20 49 4e 54 45 47 45 52 20 29  ol1 AS INTEGER )
351f0 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74 61   AS col1 FROM ta
35200 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
35210 0d 0a 2d 32 34 36 0d 0a 2d 32 37 39 39 0d 0a 2d  ..-246..-2799..-
35220 37 35 38 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  758....onlyif my
35230 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
35240 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79 20  syntax: ..query 
35250 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
35260 31 31 38 33 0d 0a 53 45 4c 45 43 54 20 44 49 53  1183..SELECT DIS
35270 54 49 4e 43 54 20 2b 20 4d 49 4e 28 20 63 6f 6c  TINCT + MIN( col
35280 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
35290 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
352a0 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 73 6b 69 70 69 66  ---..1....skipif
352b0 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
352c0 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
352d0 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
352e0 31 38 33 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  183..SELECT DIST
352f0 49 4e 43 54 20 2b 20 4d 49 4e 20 28 20 63 6f 6c  INCT + MIN ( col
35300 31 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  1 ) AS col2 FROM
35310 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
35320 2d 2d 2d 0d 0a 31 0d 0a 0d 0a 6f 6e 6c 79 69 66  ---..1....onlyif
35330 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
35340 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
35350 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72  e: ..query III r
35360 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38  owsort label-118
35370 34 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d  4..SELECT * FROM
35380 20 74 61 62 31 20 63 6f 72 30 20 57 48 45 52 45   tab1 cor0 WHERE
35390 20 28 20 63 6f 6c 32 20 29 20 4e 4f 54 20 42 45   ( col2 ) NOT BE
353a0 54 57 45 45 4e 20 2b 20 35 35 20 2f 20 2b 20 2d  TWEEN + 55 / + -
353b0 20 63 6f 6c 31 20 41 4e 44 20 2b 20 2d 20 63 6f   col1 AND + - co
353c0 6c 30 20 2a 20 2d 20 43 41 53 54 28 20 4e 55 4c  l0 * - CAST( NUL
353d0 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20 2b 20  L AS SIGNED ) + 
353e0 63 6f 6c 31 20 2b 20 63 6f 6c 31 20 2a 20 37 35  col1 + col1 * 75
353f0 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66  ..----....skipif
35400 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
35410 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
35420 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
35430 2d 31 31 38 34 0d 0a 53 45 4c 45 43 54 20 2a 20  -1184..SELECT * 
35440 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 20 57  FROM tab1 cor0 W
35450 48 45 52 45 20 28 20 63 6f 6c 32 20 29 20 4e 4f  HERE ( col2 ) NO
35460 54 20 42 45 54 57 45 45 4e 20 2b 20 35 35 20 2f  T BETWEEN + 55 /
35470 20 2b 20 2d 20 63 6f 6c 31 20 41 4e 44 20 2b 20   + - col1 AND + 
35480 2d 20 63 6f 6c 30 20 2a 20 2d 20 43 41 53 54 20  - col0 * - CAST 
35490 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45 47 45  ( NULL AS INTEGE
354a0 52 20 29 20 2b 20 63 6f 6c 31 20 2b 20 63 6f 6c  R ) + col1 + col
354b0 31 20 2a 20 37 35 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  1 * 75..----....
354c0 73 6b 69 70 69 66 20 70 6f 73 74 67 72 65 73 71  skipif postgresq
354d0 6c 20 23 20 50 6f 73 74 67 72 65 53 51 4c 20 72  l # PostgreSQL r
354e0 65 71 75 69 72 65 73 20 41 53 20 77 68 65 6e 20  equires AS when 
354f0 72 65 6e 61 6d 69 6e 67 20 6f 75 74 70 75 74 20  renaming output 
35500 63 6f 6c 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49  columns..query I
35510 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
35520 54 20 2b 20 2d 20 31 38 20 41 53 20 63 6f 6c 32  T + - 18 AS col2
35530 2c 20 63 6f 6c 32 20 2d 20 63 6f 6c 30 20 63 6f  , col2 - col0 co
35540 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
35550 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 38 0d  cor0..----..-18.
35560 0a 2d 31 37 0d 0a 2d 31 38 0d 0a 2d 32 33 0d 0a  .-17..-18..-23..
35570 2d 31 38 0d 0a 2d 32 34 0d 0a 0d 0a 71 75 65 72  -18..-24....quer
35580 79 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45  y II rowsort..SE
35590 4c 45 43 54 20 2d 20 2b 20 35 31 20 41 53 20 63  LECT - + 51 AS c
355a0 6f 6c 31 2c 20 2b 20 63 6f 6c 32 20 46 52 4f 4d  ol1, + col2 FROM
355b0 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d   tab0 AS cor0..-
355c0 2d 2d 2d 0d 0a 2d 35 31 0d 0a 31 30 0d 0a 2d 35  ---..-51..10..-5
355d0 31 0d 0a 34 37 0d 0a 2d 35 31 0d 0a 39 39 0d 0a  1..47..-51..99..
355e0 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23  ..onlyif mysql #
355f0 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61   aggregate synta
35600 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  x: ..query I row
35610 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 37 0d  sort label-1187.
35620 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36 31  .SELECT ALL + 61
35630 20 2a 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53   * COUNT( * ) AS
35640 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32 20   col2 FROM tab2 
35650 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31  AS cor0..----..1
35660 38 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  83....skipif mys
35670 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
35680 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
35690 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 37 0d  sort label-1187.
356a0 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 36 31  .SELECT ALL + 61
356b0 20 2a 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   * COUNT ( * ) A
356c0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
356d0 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
356e0 31 38 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  183....onlyif my
356f0 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65 20  sql # aggregate 
35700 73 79 6e 74 61 78 3a 20 44 49 56 20 66 6f 72 20  syntax: DIV for 
35710 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
35720 3a 20 0d 0a 71 75 65 72 79 20 49 49 20 72 6f 77  : ..query II row
35730 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 38 38 0d  sort label-1188.
35740 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20 43 4f  .SELECT ALL - CO
35750 55 4e 54 28 20 2a 20 29 20 41 53 20 63 6f 6c 30  UNT( * ) AS col0
35760 2c 20 43 4f 55 4e 54 28 20 2a 20 29 20 44 49 56  , COUNT( * ) DIV
35770 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2b 20   + COUNT( * ) + 
35780 2d 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  - - COUNT( * ) F
35790 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
357a0 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 34 0d 0a 0d  ..----..-3..4...
357b0 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
357c0 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
357d0 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
357e0 20 6c 61 62 65 6c 2d 31 31 38 38 0d 0a 53 45 4c   label-1188..SEL
357f0 45 43 54 20 41 4c 4c 20 2d 20 43 4f 55 4e 54 20  ECT ALL - COUNT 
35800 28 20 2a 20 29 20 41 53 20 63 6f 6c 30 2c 20 43  ( * ) AS col0, C
35810 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20 2b 20 43  OUNT ( * ) / + C
35820 4f 55 4e 54 20 28 20 2a 20 29 20 2b 20 2d 20 2d  OUNT ( * ) + - -
35830 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 46 52 4f   COUNT ( * ) FRO
35840 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a  M tab2 AS cor0..
35850 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 34 0d 0a 0d 0a 71  ----..-3..4....q
35860 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
35870 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
35880 63 6f 6c 31 20 2a 20 2b 20 37 32 20 2b 20 34 32  col1 * + 72 + 42
35890 20 2b 20 2b 20 2b 20 63 6f 6c 30 20 46 52 4f 4d   + + + col0 FROM
358a0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
358b0 45 52 45 20 28 20 2d 20 63 6f 6c 31 20 29 20 49  ERE ( - col1 ) I
358c0 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d 2d  S NOT NULL..----
358d0 0d 0a 31 36 34 31 0d 0a 32 31 31 0d 0a 35 38 38  ..1641..211..588
358e0 39 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  9....query I row
358f0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
35900 54 49 4e 43 54 20 63 6f 6c 31 20 2b 20 2d 20 63  TINCT col1 + - c
35910 6f 6c 32 20 2a 20 2d 20 2b 20 63 6f 6c 31 20 46  ol2 * - + col1 F
35920 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab2..----..
35930 31 32 32 34 0d 0a 33 31 35 37 0d 0a 33 39 35 33  1224..3157..3953
35940 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
35950 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
35960 74 61 78 3a 20 44 49 56 20 66 6f 72 20 69 6e 74  tax: DIV for int
35970 65 67 65 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d  eger division: .
35980 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
35990 20 6c 61 62 65 6c 2d 31 31 39 31 0d 0a 53 45 4c   label-1191..SEL
359a0 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55 4e 54 28  ECT ALL + COUNT(
359b0 20 2a 20 29 20 44 49 56 20 2d 20 31 30 20 2b 20   * ) DIV - 10 + 
359c0 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 46  + + COUNT( * ) F
359d0 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab1..----..
359e0 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71  3....skipif mysq
359f0 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62  l # not compatib
35a00 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  le..query I rows
35a10 6f 72 74 20 6c 61 62 65 6c 2d 31 31 39 31 0d 0a  ort label-1191..
35a20 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 43 4f 55  SELECT ALL + COU
35a30 4e 54 20 28 20 2a 20 29 20 2f 20 2d 20 31 30 20  NT ( * ) / - 10 
35a40 2b 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20  + + + COUNT ( * 
35a50 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
35a60 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20  -..3....query I 
35a70 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20  rowsort..SELECT 
35a80 41 4c 4c 20 63 6f 6c 32 20 2b 20 2d 20 2b 20 28  ALL col2 + - + (
35a90 20 2d 20 28 20 2b 20 2b 20 63 6f 6c 32 20 29 20   - ( + + col2 ) 
35aa0 29 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  ) FROM tab1..---
35ab0 2d 0d 0a 31 31 38 0d 0a 31 33 36 0d 0a 31 39 32  -..118..136..192
35ac0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
35ad0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20  ort..SELECT ALL 
35ae0 63 6f 6c 32 20 2a 20 2b 20 2d 20 63 6f 6c 31 20  col2 * + - col1 
35af0 2d 20 2d 20 2b 20 38 39 20 46 52 4f 4d 20 74 61  - - + 89 FROM ta
35b00 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d 0a 2d  b0..----..-10..-
35b10 31 32 31 0d 0a 2d 33 37 31 38 0d 0a 0d 0a 71 75  121..-3718....qu
35b20 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
35b30 45 4c 45 43 54 20 2b 20 63 6f 6c 30 20 2b 20 2d  ELECT + col0 + -
35b40 20 28 20 2d 20 63 6f 6c 32 20 29 20 2b 20 63 6f   ( - col2 ) + co
35b50 6c 30 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20  l0 AS col2 FROM 
35b60 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 38 34 0d  tab0..----..184.
35b70 0a 32 39 33 0d 0a 37 37 0d 0a 0d 0a 6f 6e 6c 79  .293..77....only
35b80 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
35b90 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
35ba0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  ype: ..query I r
35bb0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31 39  owsort label-119
35bc0 35 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 63 6f  5..SELECT ALL co
35bd0 6c 32 20 2b 20 39 31 20 2f 20 2d 20 43 41 53 54  l2 + 91 / - CAST
35be0 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e 45 44  ( NULL AS SIGNED
35bf0 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
35c00 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c  tab2..----..NULL
35c10 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 0d 0a  ..NULL..NULL....
35c20 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e  skipif mysql # n
35c30 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71  ot compatible..q
35c40 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
35c50 61 62 65 6c 2d 31 31 39 35 0d 0a 53 45 4c 45 43  abel-1195..SELEC
35c60 54 20 41 4c 4c 20 63 6f 6c 32 20 2b 20 39 31 20  T ALL col2 + 91 
35c70 2f 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  / - CAST ( NULL 
35c80 41 53 20 49 4e 54 45 47 45 52 20 29 20 41 53 20  AS INTEGER ) AS 
35c90 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a  col0 FROM tab2..
35ca0 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  ----..NULL..NULL
35cb0 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66  ..NULL....onlyif
35cc0 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79   mysql # CAST sy
35cd0 6e 74 61 78 3a 20 61 67 67 72 65 67 61 74 65 20  ntax: aggregate 
35ce0 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
35cf0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
35d00 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 31  rowsort label-11
35d10 39 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  96..SELECT ALL +
35d20 20 2d 20 4d 41 58 28 20 2b 20 2b 20 63 6f 6c 31   - MAX( + + col1
35d30 20 29 20 41 53 20 63 6f 6c 30 2c 20 2d 20 43 41   ) AS col0, - CA
35d40 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
35d50 45 44 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41  ED ) FROM tab1 A
35d60 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 34  S cor0..----..-4
35d70 37 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69  7..NULL....skipi
35d80 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
35d90 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
35da0 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c  II rowsort label
35db0 2d 31 31 39 36 0d 0a 53 45 4c 45 43 54 20 41 4c  -1196..SELECT AL
35dc0 4c 20 2b 20 2d 20 4d 41 58 20 28 20 2b 20 2b 20  L + - MAX ( + + 
35dd0 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c 30 2c 20  col1 ) AS col0, 
35de0 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  - CAST ( NULL AS
35df0 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
35e00 74 61 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab1 AS cor0..--
35e10 2d 2d 0d 0a 2d 34 37 0d 0a 4e 55 4c 4c 0d 0a 0d  --..-47..NULL...
35e20 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
35e30 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
35e40 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
35e50 6f 72 74 20 6c 61 62 65 6c 2d 31 31 39 37 0d 0a  ort label-1197..
35e60 53 45 4c 45 43 54 20 2d 20 4d 41 58 28 20 2b 20  SELECT - MAX( + 
35e70 39 38 20 29 20 2b 20 4d 49 4e 28 20 44 49 53 54  98 ) + MIN( DIST
35e80 49 4e 43 54 20 2b 20 63 6f 6c 30 20 29 20 46 52  INCT + col0 ) FR
35e90 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
35ea0 0a 2d 2d 2d 2d 0d 0a 2d 35 32 0d 0a 0d 0a 73 6b  .----..-52....sk
35eb0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
35ec0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
35ed0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
35ee0 65 6c 2d 31 31 39 37 0d 0a 53 45 4c 45 43 54 20  el-1197..SELECT 
35ef0 2d 20 4d 41 58 20 28 20 2b 20 39 38 20 29 20 2b  - MAX ( + 98 ) +
35f00 20 4d 49 4e 20 28 20 44 49 53 54 49 4e 43 54 20   MIN ( DISTINCT 
35f10 2b 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20 74 61  + col0 ) FROM ta
35f20 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b2 AS cor0..----
35f30 0d 0a 2d 35 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  ..-52....onlyif 
35f40 6d 79 73 71 6c 20 23 20 44 49 56 20 66 6f 72 20  mysql # DIV for 
35f50 69 6e 74 65 67 65 72 20 64 69 76 69 73 69 6f 6e  integer division
35f60 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
35f70 6f 72 74 20 6c 61 62 65 6c 2d 31 31 39 38 0d 0a  ort label-1198..
35f80 53 45 4c 45 43 54 20 41 4c 4c 20 2b 20 35 31 20  SELECT ALL + 51 
35f90 44 49 56 20 2b 20 33 34 20 2b 20 2d 20 2b 20 36  DIV + 34 + - + 6
35fa0 36 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  6 AS col2 FROM t
35fb0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
35fc0 2d 0d 0a 2d 36 35 0d 0a 2d 36 35 0d 0a 2d 36 35  -..-65..-65..-65
35fd0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
35fe0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
35ff0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
36000 72 74 20 6c 61 62 65 6c 2d 31 31 39 38 0d 0a 53  rt label-1198..S
36010 45 4c 45 43 54 20 41 4c 4c 20 2b 20 35 31 20 2f  ELECT ALL + 51 /
36020 20 2b 20 33 34 20 2b 20 2d 20 2b 20 36 36 20 41   + 34 + - + 66 A
36030 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
36040 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
36050 2d 36 35 0d 0a 2d 36 35 0d 0a 2d 36 35 0d 0a 0d  -65..-65..-65...
36060 0a 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f  .query III rowso
36070 72 74 0d 0a 53 45 4c 45 43 54 20 2a 20 46 52 4f  rt..SELECT * FRO
36080 4d 20 74 61 62 32 20 63 6f 72 30 20 57 48 45 52  M tab2 cor0 WHER
36090 45 20 28 20 4e 55 4c 4c 20 29 20 42 45 54 57 45  E ( NULL ) BETWE
360a0 45 4e 20 2b 20 2b 20 63 6f 6c 31 20 41 4e 44 20  EN + + col1 AND 
360b0 2d 20 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  - col1..----....
360c0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 44  onlyif mysql # D
360d0 49 56 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64  IV for integer d
360e0 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79  ivision: ..query
360f0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
36100 2d 31 32 30 30 0d 0a 53 45 4c 45 43 54 20 41 4c  -1200..SELECT AL
36110 4c 20 63 6f 6c 32 20 2d 20 39 39 20 44 49 56 20  L col2 - 99 DIV 
36120 28 20 2d 20 63 6f 6c 30 20 29 20 46 52 4f 4d 20  ( - col0 ) FROM 
36130 74 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab0 AS cor0..--
36140 2d 2d 0d 0a 31 30 30 0d 0a 31 31 0d 0a 35 33 0d  --..100..11..53.
36150 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
36160 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
36170 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
36180 74 20 6c 61 62 65 6c 2d 31 32 30 30 0d 0a 53 45  t label-1200..SE
36190 4c 45 43 54 20 41 4c 4c 20 63 6f 6c 32 20 2d 20  LECT ALL col2 - 
361a0 39 39 20 2f 20 28 20 2d 20 63 6f 6c 30 20 29 20  99 / ( - col0 ) 
361b0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
361c0 30 0d 0a 2d 2d 2d 2d 0d 0a 31 30 30 0d 0a 31 31  0..----..100..11
361d0 0d 0a 35 33 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  ..53....onlyif m
361e0 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74 65  ysql # aggregate
361f0 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72 79   syntax: ..query
36200 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
36210 2d 31 32 30 31 0d 0a 53 45 4c 45 43 54 20 44 49  -1201..SELECT DI
36220 53 54 49 4e 43 54 20 2d 20 2b 20 4d 49 4e 28 20  STINCT - + MIN( 
36230 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20  DISTINCT - col0 
36240 29 20 2b 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29  ) + + COUNT( * )
36250 20 46 52 4f 4d 20 74 61 62 31 20 63 6f 72 30 0d   FROM tab1 cor0.
36260 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a 0d 0a 73 6b 69  .----..94....ski
36270 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
36280 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
36290 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
362a0 6c 2d 31 32 30 31 0d 0a 53 45 4c 45 43 54 20 44  l-1201..SELECT D
362b0 49 53 54 49 4e 43 54 20 2d 20 2b 20 4d 49 4e 20  ISTINCT - + MIN 
362c0 28 20 44 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c  ( DISTINCT - col
362d0 30 20 29 20 2b 20 2b 20 43 4f 55 4e 54 20 28 20  0 ) + + COUNT ( 
362e0 2a 20 29 20 46 52 4f 4d 20 74 61 62 31 20 63 6f  * ) FROM tab1 co
362f0 72 30 0d 0a 2d 2d 2d 2d 0d 0a 39 34 0d 0a 0d 0a  r0..----..94....
36300 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43  onlyif mysql # C
36310 41 53 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e  AST syntax: SIGN
36320 45 44 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79  ED type: ..query
36330 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62   III rowsort lab
36340 65 6c 2d 31 32 30 32 0d 0a 53 45 4c 45 43 54 20  el-1202..SELECT 
36350 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d 20  DISTINCT * FROM 
36360 74 61 62 32 20 41 53 20 63 6f 72 30 20 57 48 45  tab2 AS cor0 WHE
36370 52 45 20 4e 4f 54 20 2d 20 43 41 53 54 28 20 4e  RE NOT - CAST( N
36380 55 4c 4c 20 41 53 20 53 49 47 4e 45 44 20 29 20  ULL AS SIGNED ) 
36390 4e 4f 54 20 49 4e 20 28 20 2b 20 2d 20 28 20 63  NOT IN ( + - ( c
363a0 6f 6c 30 20 29 20 2b 20 2d 20 63 6f 6c 30 2c 20  ol0 ) + - col0, 
363b0 63 6f 6c 31 2c 20 33 31 2c 20 2d 20 63 6f 6c 30  col1, 31, - col0
363c0 20 2b 20 28 20 2b 20 63 6f 6c 31 20 29 20 2a 20   + ( + col1 ) * 
363d0 35 36 20 2d 20 2d 20 63 6f 6c 31 20 29 0d 0a 2d  56 - - col1 )..-
363e0 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  ---....skipif my
363f0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
36400 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 49 49 20  ible..query III 
36410 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
36420 30 32 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  02..SELECT DISTI
36430 4e 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 32 20  NCT * FROM tab2 
36440 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f  AS cor0 WHERE NO
36450 54 20 2d 20 43 41 53 54 20 28 20 4e 55 4c 4c 20  T - CAST ( NULL 
36460 41 53 20 49 4e 54 45 47 45 52 20 29 20 4e 4f 54  AS INTEGER ) NOT
36470 20 49 4e 20 28 20 2b 20 2d 20 28 20 63 6f 6c 30   IN ( + - ( col0
36480 20 29 20 2b 20 2d 20 63 6f 6c 30 2c 20 63 6f 6c   ) + - col0, col
36490 31 2c 20 33 31 2c 20 2d 20 63 6f 6c 30 20 2b 20  1, 31, - col0 + 
364a0 28 20 2b 20 63 6f 6c 31 20 29 20 2a 20 35 36 20  ( + col1 ) * 56 
364b0 2d 20 2d 20 63 6f 6c 31 20 29 0d 0a 2d 2d 2d 2d  - - col1 )..----
364c0 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  ....query I rows
364d0 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2b 20 38 32  ort..SELECT + 82
364e0 20 2b 20 2d 20 31 35 20 41 53 20 63 6f 6c 30 20   + - 15 AS col0 
364f0 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
36500 30 20 57 48 45 52 45 20 28 20 4e 55 4c 4c 20 29  0 WHERE ( NULL )
36510 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
36520 2d 2d 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73  --....onlyif mys
36530 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61 78  ql # CAST syntax
36540 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20 0d  : SIGNED type: .
36550 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
36560 74 20 6c 61 62 65 6c 2d 31 32 30 34 0d 0a 53 45  t label-1204..SE
36570 4c 45 43 54 20 63 6f 6c 32 20 41 53 20 63 6f 6c  LECT col2 AS col
36580 32 2c 20 2b 20 43 41 53 54 28 20 4e 55 4c 4c 20  2, + CAST( NULL 
36590 41 53 20 53 49 47 4e 45 44 20 29 20 41 53 20 63  AS SIGNED ) AS c
365a0 6f 6c 31 20 46 52 4f 4d 20 74 61 62 31 20 41 53  ol1 FROM tab1 AS
365b0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d   cor0..----..59.
365c0 0a 4e 55 4c 4c 0d 0a 36 38 0d 0a 4e 55 4c 4c 0d  .NULL..68..NULL.
365d0 0a 39 36 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  .96..NULL....ski
365e0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
365f0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
36600 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
36610 65 6c 2d 31 32 30 34 0d 0a 53 45 4c 45 43 54 20  el-1204..SELECT 
36620 63 6f 6c 32 20 41 53 20 63 6f 6c 32 2c 20 2b 20  col2 AS col2, + 
36630 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
36640 4e 54 45 47 45 52 20 29 20 41 53 20 63 6f 6c 31  NTEGER ) AS col1
36650 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f   FROM tab1 AS co
36660 72 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 4e 55  r0..----..59..NU
36670 4c 4c 0d 0a 36 38 0d 0a 4e 55 4c 4c 0d 0a 39 36  LL..68..NULL..96
36680 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20  ..NULL....query 
36690 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c  III rowsort..SEL
366a0 45 43 54 20 44 49 53 54 49 4e 43 54 20 2a 20 46  ECT DISTINCT * F
366b0 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30  ROM tab2 AS cor0
366c0 20 57 48 45 52 45 20 4e 55 4c 4c 20 3c 3e 20 38   WHERE NULL <> 8
366d0 36 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  6..----....query
366e0 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45   III rowsort..SE
366f0 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31  LECT * FROM tab1
36700 20 63 6f 72 30 20 57 48 45 52 45 20 4e 4f 54 20   cor0 WHERE NOT 
36710 28 20 34 33 20 29 20 49 53 20 4e 4f 54 20 4e 55  ( 43 ) IS NOT NU
36720 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72  LL..----....quer
36730 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53  y III rowsort..S
36740 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61 62  ELECT * FROM tab
36750 32 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  2 AS cor0 WHERE 
36760 4e 4f 54 20 2d 20 39 35 20 49 53 20 4e 4f 54 20  NOT - 95 IS NOT 
36770 4e 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75  NULL..----....qu
36780 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d  ery III rowsort.
36790 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2a 20 46 52  .SELECT ALL * FR
367a0 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 20  OM tab1 AS cor0 
367b0 57 48 45 52 45 20 4e 4f 54 20 63 6f 6c 31 20 2a  WHERE NOT col1 *
367c0 20 2b 20 33 32 20 49 53 20 4e 55 4c 4c 0d 0a 2d   + 32 IS NULL..-
367d0 2d 2d 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61  ---..9 values ha
367e0 73 68 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31  shing to c6c0a41
367f0 31 31 62 33 36 64 30 34 64 62 63 38 31 31 61 31  11b36d04dbc811a1
36800 31 65 34 64 35 34 63 61 64 0d 0a 0d 0a 6f 6e 6c  1e4d54cad....onl
36810 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72  yif mysql # aggr
36820 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a  egate syntax: ..
36830 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
36840 20 6c 61 62 65 6c 2d 31 32 30 39 0d 0a 53 45 4c   label-1209..SEL
36850 45 43 54 20 44 49 53 54 49 4e 43 54 20 43 4f 55  ECT DISTINCT COU
36860 4e 54 28 20 2a 20 29 20 2a 20 2d 20 35 34 20 2a  NT( * ) * - 54 *
36870 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20 2a 20   + COUNT( * ) * 
36880 2b 20 53 55 4d 28 20 41 4c 4c 20 32 36 20 29 20  + SUM( ALL 26 ) 
36890 41 53 20 63 6f 6c 32 2c 20 2d 20 34 37 20 46 52  AS col2, - 47 FR
368a0 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
368b0 33 37 39 30 38 0d 0a 2d 34 37 0d 0a 0d 0a 73 6b  37908..-47....sk
368c0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
368d0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
368e0 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  ry II rowsort la
368f0 62 65 6c 2d 31 32 30 39 0d 0a 53 45 4c 45 43 54  bel-1209..SELECT
36900 20 44 49 53 54 49 4e 43 54 20 43 4f 55 4e 54 20   DISTINCT COUNT 
36910 28 20 2a 20 29 20 2a 20 2d 20 35 34 20 2a 20 2b  ( * ) * - 54 * +
36920 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2a 20 2b   COUNT ( * ) * +
36930 20 53 55 4d 20 28 20 41 4c 4c 20 32 36 20 29 20   SUM ( ALL 26 ) 
36940 41 53 20 63 6f 6c 32 2c 20 2d 20 34 37 20 46 52  AS col2, - 47 FR
36950 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab0..----..-
36960 33 37 39 30 38 0d 0a 2d 34 37 0d 0a 0d 0a 71 75  37908..-47....qu
36970 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53  ery I rowsort..S
36980 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 63  ELECT DISTINCT c
36990 6f 6c 32 20 2a 20 2b 20 2b 20 63 6f 6c 31 20 41  ol2 * + + col1 A
369a0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
369b0 0d 0a 2d 2d 2d 2d 0d 0a 32 31 30 0d 0a 33 38 30  ..----..210..380
369c0 37 0d 0a 39 39 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  7..99....onlyif 
369d0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
369e0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
369f0 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
36a00 6c 2d 31 32 31 31 0d 0a 53 45 4c 45 43 54 20 41  l-1211..SELECT A
36a10 4c 4c 20 2b 20 43 4f 55 4e 54 28 20 2a 20 29 20  LL + COUNT( * ) 
36a20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
36a30 30 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20  0 AS cor0 WHERE 
36a40 4e 4f 54 20 36 36 20 49 4e 20 28 20 2b 20 2d 20  NOT 66 IN ( + - 
36a50 28 20 2d 20 2d 20 63 6f 6c 30 20 29 20 29 0d 0a  ( - - col0 ) )..
36a60 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69 70 69  ----..3....skipi
36a70 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
36a80 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
36a90 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
36aa0 31 32 31 31 0d 0a 53 45 4c 45 43 54 20 41 4c 4c  1211..SELECT ALL
36ab0 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   + COUNT ( * ) A
36ac0 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
36ad0 20 41 53 20 63 6f 72 30 20 57 48 45 52 45 20 4e   AS cor0 WHERE N
36ae0 4f 54 20 36 36 20 49 4e 20 28 20 2b 20 2d 20 28  OT 66 IN ( + - (
36af0 20 2d 20 2d 20 63 6f 6c 30 20 29 20 29 0d 0a 2d   - - col0 ) )..-
36b00 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 71 75 65 72 79 20  ---..3....query 
36b10 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
36b20 54 20 44 49 53 54 49 4e 43 54 20 63 6f 6c 30 20  T DISTINCT col0 
36b30 2a 20 2d 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20  * - - col1 FROM 
36b40 74 61 62 31 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab1 cor0..----.
36b50 0a 34 32 35 0d 0a 34 32 37 37 0d 0a 37 31 34 0d  .425..4277..714.
36b60 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
36b70 72 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  rt..SELECT ALL +
36b80 20 36 36 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d   66 AS col0 FROM
36b90 20 74 61 62 30 20 63 6f 72 30 20 57 48 45 52 45   tab0 cor0 WHERE
36ba0 20 2d 20 32 33 20 3e 3d 20 4e 55 4c 4c 0d 0a 2d   - 23 >= NULL..-
36bb0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49  ---....query III
36bc0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
36bd0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
36be0 20 74 61 62 31 20 57 48 45 52 45 20 4e 4f 54 20   tab1 WHERE NOT 
36bf0 28 20 4e 4f 54 20 32 36 20 49 53 20 4e 55 4c 4c  ( NOT 26 IS NULL
36c00 20 29 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e 6c 79   )..----....only
36c10 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
36c20 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44 49 56  gate syntax: DIV
36c30 20 66 6f 72 20 69 6e 74 65 67 65 72 20 64 69 76   for integer div
36c40 69 73 69 6f 6e 3a 20 0d 0a 71 75 65 72 79 20 49  ision: ..query I
36c50 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
36c60 32 31 35 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f  215..SELECT - CO
36c70 55 4e 54 28 20 2a 20 29 20 44 49 56 20 35 20 41  UNT( * ) DIV 5 A
36c80 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 30  S col0 FROM tab0
36c90 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
36ca0 4f 49 4e 20 74 61 62 30 20 41 53 20 63 6f 72 31  OIN tab0 AS cor1
36cb0 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d 0a 73 6b  ..----..-1....sk
36cc0 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74  ipif mysql # not
36cd0 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65   compatible..que
36ce0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
36cf0 65 6c 2d 31 32 31 35 0d 0a 53 45 4c 45 43 54 20  el-1215..SELECT 
36d00 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 2f 20  - COUNT ( * ) / 
36d10 35 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  5 AS col0 FROM t
36d20 61 62 30 20 41 53 20 63 6f 72 30 20 43 52 4f 53  ab0 AS cor0 CROS
36d30 53 20 4a 4f 49 4e 20 74 61 62 30 20 41 53 20 63  S JOIN tab0 AS c
36d40 6f 72 31 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 0d 0a 0d  or1..----..-1...
36d50 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
36d60 61 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78  aggregate syntax
36d70 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
36d80 6f 72 74 20 6c 61 62 65 6c 2d 31 32 31 36 0d 0a  ort label-1216..
36d90 53 45 4c 45 43 54 20 28 20 2d 20 2b 20 43 4f 55  SELECT ( - + COU
36da0 4e 54 28 20 2a 20 29 20 29 20 63 6f 6c 32 20 46  NT( * ) ) col2 F
36db0 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a  ROM tab0..----..
36dc0 2d 33 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  -3....skipif mys
36dd0 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
36de0 62 6c 65 0d 0a 73 6b 69 70 69 66 20 70 6f 73 74  ble..skipif post
36df0 67 72 65 73 71 6c 20 23 20 50 6f 73 74 67 72 65  gresql # Postgre
36e00 53 51 4c 20 72 65 71 75 69 72 65 73 20 41 53 20  SQL requires AS 
36e10 77 68 65 6e 20 72 65 6e 61 6d 69 6e 67 20 6f 75  when renaming ou
36e20 74 70 75 74 20 63 6f 6c 75 6d 6e 73 0d 0a 71 75  tput columns..qu
36e30 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
36e40 62 65 6c 2d 31 32 31 36 0d 0a 53 45 4c 45 43 54  bel-1216..SELECT
36e50 20 28 20 2d 20 2b 20 43 4f 55 4e 54 20 28 20 2a   ( - + COUNT ( *
36e60 20 29 20 29 20 63 6f 6c 32 20 46 52 4f 4d 20 74   ) ) col2 FROM t
36e70 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d 0a 0d  ab0..----..-3...
36e80 0a 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72  .query II rowsor
36e90 74 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2d 20  t..SELECT ALL - 
36ea0 2d 20 33 37 20 41 53 20 63 6f 6c 32 2c 20 63 6f  - 37 AS col2, co
36eb0 6c 32 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l2 FROM tab2 AS 
36ec0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33 37 0d 0a  cor0..----..37..
36ed0 32 33 0d 0a 33 37 0d 0a 34 30 0d 0a 33 37 0d 0a  23..37..40..37..
36ee0 35 38 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  58....query I ro
36ef0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d 20  wsort..SELECT - 
36f00 63 6f 6c 31 20 2a 20 2d 20 2d 20 63 6f 6c 31 20  col1 * - - col1 
36f10 2b 20 2b 20 31 38 20 2b 20 2d 20 34 39 20 46 52  + + 18 + - 49 FR
36f20 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30 0d  OM tab1 AS cor0.
36f30 0a 2d 2d 2d 2d 0d 0a 2d 32 32 34 30 0d 0a 2d 32  .----..-2240..-2
36f40 32 37 0d 0a 2d 35 36 0d 0a 0d 0a 6f 6e 6c 79 69  27..-56....onlyi
36f50 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67  f mysql # aggreg
36f60 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75  ate syntax: ..qu
36f70 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61  ery I rowsort la
36f80 62 65 6c 2d 31 32 31 39 0d 0a 53 45 4c 45 43 54  bel-1219..SELECT
36f90 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 28 20   DISTINCT + + ( 
36fa0 2d 20 43 4f 55 4e 54 28 20 2a 20 29 20 29 20 41  - COUNT( * ) ) A
36fb0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 32  S col2 FROM tab2
36fc0 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33 0d   cor0..----..-3.
36fd0 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20  ...skipif mysql 
36fe0 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65  # not compatible
36ff0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
37000 74 20 6c 61 62 65 6c 2d 31 32 31 39 0d 0a 53 45  t label-1219..SE
37010 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b 20  LECT DISTINCT + 
37020 2b 20 28 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20  + ( - COUNT ( * 
37030 29 20 29 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d  ) ) AS col2 FROM
37040 20 74 61 62 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d   tab2 cor0..----
37050 0d 0a 2d 33 0d 0a 0d 0a 71 75 65 72 79 20 49 49  ..-3....query II
37060 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
37070 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 57 48  T * FROM tab0 WH
37080 45 52 45 20 4e 55 4c 4c 20 3e 20 2d 20 63 6f 6c  ERE NULL > - col
37090 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79  0..----....query
370a0 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
370b0 43 54 20 63 6f 6c 31 20 2b 20 2b 20 63 6f 6c 32  CT col1 + + col2
370c0 20 2b 20 2b 20 2d 20 39 32 20 41 53 20 63 6f 6c   + + - 92 AS col
370d0 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d  1 FROM tab1..---
370e0 2d 0d 0a 2d 32 38 0d 0a 31 38 0d 0a 32 33 0d 0a  -..-28..18..23..
370f0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
37100 74 0d 0a 53 45 4c 45 43 54 20 2b 20 2d 20 63 6f  t..SELECT + - co
37110 6c 30 20 46 52 4f 4d 20 74 61 62 32 20 57 48 45  l0 FROM tab2 WHE
37120 52 45 20 2d 20 63 6f 6c 30 20 3e 3d 20 38 36 0d  RE - col0 >= 86.
37130 0a 2d 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49  .----....query I
37140 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
37150 20 2b 20 36 33 20 2b 20 2b 20 28 20 2b 20 38 30   + 63 + + ( + 80
37160 20 29 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20   ) AS col0 FROM 
37170 74 61 62 30 0d 0a 2d 2d 2d 2d 0d 0a 31 34 33 0d  tab0..----..143.
37180 0a 31 34 33 0d 0a 31 34 33 0d 0a 0d 0a 71 75 65  .143..143....que
37190 72 79 20 49 49 49 20 72 6f 77 73 6f 72 74 0d 0a  ry III rowsort..
371a0 53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 74 61  SELECT * FROM ta
371b0 62 31 20 57 48 45 52 45 20 2b 20 2d 20 36 30 20  b1 WHERE + - 60 
371c0 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
371d0 2d 0d 0a 39 20 76 61 6c 75 65 73 20 68 61 73 68  -..9 values hash
371e0 69 6e 67 20 74 6f 20 63 36 63 30 61 34 31 31 31  ing to c6c0a4111
371f0 62 33 36 64 30 34 64 62 63 38 31 31 61 31 31 65  b36d04dbc811a11e
37200 34 64 35 34 63 61 64 0d 0a 0d 0a 71 75 65 72 79  4d54cad....query
37210 20 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45   I rowsort..SELE
37220 43 54 20 44 49 53 54 49 4e 43 54 20 36 39 20 2d  CT DISTINCT 69 -
37230 20 2b 20 63 6f 6c 31 20 41 53 20 63 6f 6c 31 20   + col1 AS col1 
37240 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d 2d 2d 0d  FROM tab1..----.
37250 0a 32 32 0d 0a 35 35 0d 0a 36 34 0d 0a 0d 0a 71  .22..55..64....q
37260 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
37270 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
37280 2b 20 63 6f 6c 31 20 2b 20 2b 20 28 20 39 20 29  + col1 + + ( 9 )
37290 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d 2d 2d 2d   FROM tab0..----
372a0 0d 0a 31 30 0d 0a 33 30 0d 0a 39 30 0d 0a 0d 0a  ..10..30..90....
372b0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
372c0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
372d0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
372e0 72 74 20 6c 61 62 65 6c 2d 31 32 32 37 0d 0a 53  rt label-1227..S
372f0 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2b  ELECT DISTINCT +
37300 20 2d 20 53 55 4d 28 20 2b 20 2d 20 63 6f 6c 31   - SUM( + - col1
37310 20 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20   ) AS col1 FROM 
37320 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
37330 2d 2d 0d 0a 31 39 35 0d 0a 0d 0a 73 6b 69 70 69  --..195....skipi
37340 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
37350 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
37360 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
37370 31 32 32 37 0d 0a 53 45 4c 45 43 54 20 44 49 53  1227..SELECT DIS
37380 54 49 4e 43 54 20 2b 20 2d 20 53 55 4d 20 28 20  TINCT + - SUM ( 
37390 2b 20 2d 20 63 6f 6c 31 20 29 20 41 53 20 63 6f  + - col1 ) AS co
373a0 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20  l1 FROM tab2 AS 
373b0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 31 39 35 0d  cor0..----..195.
373c0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
373d0 23 20 44 49 56 20 66 6f 72 20 69 6e 74 65 67 65  # DIV for intege
373e0 72 20 64 69 76 69 73 69 6f 6e 3a 20 0d 0a 71 75  r division: ..qu
373f0 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
37400 61 62 65 6c 2d 31 32 32 38 0d 0a 53 45 4c 45 43  abel-1228..SELEC
37410 54 20 63 6f 6c 30 20 44 49 56 20 32 30 2c 20 2b  T col0 DIV 20, +
37420 20 63 6f 6c 31 20 41 53 20 63 6f 6c 32 20 46 52   col1 AS col2 FR
37430 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 0d  OM tab0 AS cor0.
37440 0a 2d 2d 2d 2d 0d 0a 30 0d 0a 38 31 0d 0a 34 0d  .----..0..81..4.
37450 0a 31 0d 0a 34 0d 0a 32 31 0d 0a 0d 0a 73 6b 69  .1..4..21....ski
37460 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
37470 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
37480 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
37490 65 6c 2d 31 32 32 38 0d 0a 53 45 4c 45 43 54 20  el-1228..SELECT 
374a0 63 6f 6c 30 20 2f 20 32 30 2c 20 2b 20 63 6f 6c  col0 / 20, + col
374b0 31 20 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74  1 AS col2 FROM t
374c0 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
374d0 2d 0d 0a 30 0d 0a 38 31 0d 0a 34 0d 0a 31 0d 0a  -..0..81..4..1..
374e0 34 0d 0a 32 31 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  4..21....onlyif 
374f0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
37500 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
37510 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73  : ..query I rows
37520 6f 72 74 20 6c 61 62 65 6c 2d 31 32 32 39 0d 0a  ort label-1229..
37530 53 45 4c 45 43 54 20 36 34 20 2d 20 2d 20 43 41  SELECT 64 - - CA
37540 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
37550 45 44 20 29 20 2f 20 2b 20 32 20 2f 20 2d 20 43  ED ) / + 2 / - C
37560 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47  AST( NULL AS SIG
37570 4e 45 44 20 29 20 2b 20 2b 20 2b 20 34 34 20 41  NED ) + + + 44 A
37580 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32  S col0 FROM tab2
37590 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
375a0 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c  NULL..NULL..NULL
375b0 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c  ....skipif mysql
375c0 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c   # not compatibl
375d0 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  e..query I rowso
375e0 72 74 20 6c 61 62 65 6c 2d 31 32 32 39 0d 0a 53  rt label-1229..S
375f0 45 4c 45 43 54 20 36 34 20 2d 20 2d 20 43 41 53  ELECT 64 - - CAS
37600 54 20 28 20 4e 55 4c 4c 20 41 53 20 49 4e 54 45  T ( NULL AS INTE
37610 47 45 52 20 29 20 2f 20 2b 20 32 20 2f 20 2d 20  GER ) / + 2 / - 
37620 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53 20 49  CAST ( NULL AS I
37630 4e 54 45 47 45 52 20 29 20 2b 20 2b 20 2b 20 34  NTEGER ) + + + 4
37640 34 20 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74  4 AS col0 FROM t
37650 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
37660 2d 0d 0a 4e 55 4c 4c 0d 0a 4e 55 4c 4c 0d 0a 4e  -..NULL..NULL..N
37670 55 4c 4c 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79  ULL....onlyif my
37680 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74 61  sql # CAST synta
37690 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65 3a 20  x: SIGNED type: 
376a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
376b0 74 20 6c 61 62 65 6c 2d 31 32 33 30 0d 0a 53 45  t label-1230..SE
376c0 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20 2d 20  LECT DISTINCT - 
376d0 28 20 2d 20 2d 20 41 56 47 20 28 20 2b 20 43 41  ( - - AVG ( + CA
376e0 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
376f0 45 44 20 29 20 29 20 29 20 46 52 4f 4d 20 74 61  ED ) ) ) FROM ta
37700 62 31 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d  b1 AS cor0..----
37710 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69 70 69 66  ..NULL....skipif
37720 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
37730 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
37740 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
37750 32 33 30 0d 0a 53 45 4c 45 43 54 20 44 49 53 54  230..SELECT DIST
37760 49 4e 43 54 20 2d 20 28 20 2d 20 2d 20 41 56 47  INCT - ( - - AVG
37770 20 28 20 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c   ( + CAST ( NULL
37780 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 29 20   AS INTEGER ) ) 
37790 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20 63  ) FROM tab1 AS c
377a0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 4e 55 4c 4c 0d  or0..----..NULL.
377b0 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ...query I rowso
377c0 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49  rt..SELECT DISTI
377d0 4e 43 54 20 2d 20 63 6f 6c 30 20 2b 20 2d 20 2b  NCT - col0 + - +
377e0 20 28 20 63 6f 6c 31 20 29 20 41 53 20 63 6f 6c   ( col1 ) AS col
377f0 30 20 46 52 4f 4d 20 74 61 62 32 20 63 6f 72 30  0 FROM tab2 cor0
37800 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 34 31 0d 0a 2d 31  ..----..-141..-1
37810 34 32 0d 0a 2d 39 37 0d 0a 0d 0a 71 75 65 72 79  42..-97....query
37820 20 49 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c   II rowsort..SEL
37830 45 43 54 20 41 4c 4c 20 2d 20 2d 20 35 39 20 41  ECT ALL - - 59 A
37840 53 20 63 6f 6c 32 2c 20 2d 20 36 36 20 2a 20 2d  S col2, - 66 * -
37850 20 2d 20 63 6f 6c 31 20 41 53 20 63 6f 6c 30 20   - col1 AS col0 
37860 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
37870 30 0d 0a 2d 2d 2d 2d 0d 0a 35 39 0d 0a 2d 31 33  0..----..59..-13
37880 38 36 0d 0a 35 39 0d 0a 2d 35 33 34 36 0d 0a 35  86..59..-5346..5
37890 39 0d 0a 2d 36 36 0d 0a 0d 0a 6f 6e 6c 79 69 66  9..-66....onlyif
378a0 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61   mysql # aggrega
378b0 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65  te syntax: ..que
378c0 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  ry I rowsort lab
378d0 65 6c 2d 31 32 33 33 0d 0a 53 45 4c 45 43 54 20  el-1233..SELECT 
378e0 44 49 53 54 49 4e 43 54 20 4d 41 58 28 20 44 49  DISTINCT MAX( DI
378f0 53 54 49 4e 43 54 20 2b 20 2b 20 38 31 20 29 20  STINCT + + 81 ) 
37900 41 53 20 63 6f 6c 30 20 46 52 4f 4d 20 74 61 62  AS col0 FROM tab
37910 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  2 AS cor0..----.
37920 0a 38 31 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  .81....skipif my
37930 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
37940 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
37950 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 33 33  wsort label-1233
37960 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
37970 54 20 4d 41 58 20 28 20 44 49 53 54 49 4e 43 54  T MAX ( DISTINCT
37980 20 2b 20 2b 20 38 31 20 29 20 41 53 20 63 6f 6c   + + 81 ) AS col
37990 30 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63  0 FROM tab2 AS c
379a0 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 0d  or0..----..81...
379b0 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20  .onlyif mysql # 
379c0 43 41 53 54 20 73 79 6e 74 61 78 3a 20 61 67 67  CAST syntax: agg
379d0 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 44  regate syntax: D
379e0 45 43 49 4d 41 4c 20 74 79 70 65 3a 20 0d 0a 71  ECIMAL type: ..q
379f0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
37a00 61 62 65 6c 2d 31 32 33 34 0d 0a 53 45 4c 45 43  abel-1234..SELEC
37a10 54 20 4d 41 58 28 20 41 4c 4c 20 2b 20 43 41 53  T MAX( ALL + CAS
37a20 54 28 20 4e 55 4c 4c 20 41 53 20 44 45 43 49 4d  T( NULL AS DECIM
37a30 41 4c 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31  AL ) ) FROM tab1
37a40 20 41 53 20 63 6f 72 30 20 43 52 4f 53 53 20 4a   AS cor0 CROSS J
37a50 4f 49 4e 20 74 61 62 31 20 63 6f 72 31 0d 0a 2d  OIN tab1 cor1..-
37a60 2d 2d 2d 0d 0a 4e 55 4c 4c 0d 0a 0d 0a 73 6b 69  ---..NULL....ski
37a70 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
37a80 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
37a90 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
37aa0 6c 2d 31 32 33 34 0d 0a 53 45 4c 45 43 54 20 4d  l-1234..SELECT M
37ab0 41 58 20 28 20 41 4c 4c 20 2b 20 43 41 53 54 20  AX ( ALL + CAST 
37ac0 28 20 4e 55 4c 4c 20 41 53 20 52 45 41 4c 20 29  ( NULL AS REAL )
37ad0 20 29 20 46 52 4f 4d 20 74 61 62 31 20 41 53 20   ) FROM tab1 AS 
37ae0 63 6f 72 30 20 43 52 4f 53 53 20 4a 4f 49 4e 20  cor0 CROSS JOIN 
37af0 74 61 62 31 20 63 6f 72 31 0d 0a 2d 2d 2d 2d 0d  tab1 cor1..----.
37b00 0a 4e 55 4c 4c 0d 0a 0d 0a 71 75 65 72 79 20 49  .NULL....query I
37b10 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
37b20 54 20 44 49 53 54 49 4e 43 54 20 2b 20 33 34 20  T DISTINCT + 34 
37b30 2a 20 37 36 20 41 53 20 63 6f 6c 31 2c 20 2d 20  * 76 AS col1, - 
37b40 63 6f 6c 32 20 2b 20 63 6f 6c 31 20 46 52 4f 4d  col2 + col1 FROM
37b50 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 32 35 38   tab2..----..258
37b60 34 0d 0a 32 38 0d 0a 32 35 38 34 0d 0a 33 37 0d  4..28..2584..37.
37b70 0a 32 35 38 34 0d 0a 39 0d 0a 0d 0a 6f 6e 6c 79  .2584..9....only
37b80 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53 54 20  if mysql # CAST 
37b90 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74  syntax: SIGNED t
37ba0 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49 49 20  ype: ..query II 
37bb0 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32  rowsort label-12
37bc0 33 36 0d 0a 53 45 4c 45 43 54 20 41 4c 4c 20 2b  36..SELECT ALL +
37bd0 20 43 41 53 54 28 20 2b 20 2d 20 31 30 20 41 53   CAST( + - 10 AS
37be0 20 53 49 47 4e 45 44 20 29 20 41 53 20 63 6f 6c   SIGNED ) AS col
37bf0 32 2c 20 2d 20 36 33 20 46 52 4f 4d 20 74 61 62  2, - 63 FROM tab
37c00 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  0 AS cor0..----.
37c10 0a 2d 31 30 0d 0a 2d 36 33 0d 0a 2d 31 30 0d 0a  .-10..-63..-10..
37c20 2d 36 33 0d 0a 2d 31 30 0d 0a 2d 36 33 0d 0a 0d  -63..-10..-63...
37c30 0a 73 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20  .skipif mysql # 
37c40 6e 6f 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a  not compatible..
37c50 71 75 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74  query II rowsort
37c60 20 6c 61 62 65 6c 2d 31 32 33 36 0d 0a 53 45 4c   label-1236..SEL
37c70 45 43 54 20 41 4c 4c 20 2b 20 43 41 53 54 20 28  ECT ALL + CAST (
37c80 20 2b 20 2d 20 31 30 20 41 53 20 49 4e 54 45 47   + - 10 AS INTEG
37c90 45 52 20 29 20 41 53 20 63 6f 6c 32 2c 20 2d 20  ER ) AS col2, - 
37ca0 36 33 20 46 52 4f 4d 20 74 61 62 30 20 41 53 20  63 FROM tab0 AS 
37cb0 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 31 30 0d  cor0..----..-10.
37cc0 0a 2d 36 33 0d 0a 2d 31 30 0d 0a 2d 36 33 0d 0a  .-63..-10..-63..
37cd0 2d 31 30 0d 0a 2d 36 33 0d 0a 0d 0a 6f 6e 6c 79  -10..-63....only
37ce0 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67 72 65  if mysql # aggre
37cf0 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71  gate syntax: ..q
37d00 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 20 6c  uery I rowsort l
37d10 61 62 65 6c 2d 31 32 33 37 0d 0a 53 45 4c 45 43  abel-1237..SELEC
37d20 54 20 2d 20 4d 49 4e 28 20 2b 20 63 6f 6c 32 20  T - MIN( + col2 
37d30 29 20 41 53 20 63 6f 6c 31 20 46 52 4f 4d 20 74  ) AS col1 FROM t
37d40 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
37d50 2d 0d 0a 2d 32 33 0d 0a 0d 0a 73 6b 69 70 69 66  -..-23....skipif
37d60 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d   mysql # not com
37d70 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20 49  patible..query I
37d80 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
37d90 32 33 37 0d 0a 53 45 4c 45 43 54 20 2d 20 4d 49  237..SELECT - MI
37da0 4e 20 28 20 2b 20 63 6f 6c 32 20 29 20 41 53 20  N ( + col2 ) AS 
37db0 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
37dc0 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 32  S cor0..----..-2
37dd0 33 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  3....query I row
37de0 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49 53  sort..SELECT DIS
37df0 54 49 4e 43 54 20 2d 20 2b 20 31 36 20 41 53 20  TINCT - + 16 AS 
37e00 63 6f 6c 31 20 46 52 4f 4d 20 74 61 62 32 20 41  col1 FROM tab2 A
37e10 53 20 63 6f 72 30 20 57 48 45 52 45 20 31 37 20  S cor0 WHERE 17 
37e20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d 2d  IS NOT NULL..---
37e30 2d 0d 0a 2d 31 36 0d 0a 0d 0a 71 75 65 72 79 20  -..-16....query 
37e40 49 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43  I rowsort..SELEC
37e50 54 20 44 49 53 54 49 4e 43 54 20 2b 20 2b 20 63  T DISTINCT + + c
37e60 6f 6c 32 20 2a 20 2b 20 2d 20 63 6f 6c 32 20 2b  ol2 * + - col2 +
37e70 20 2b 20 2d 20 63 6f 6c 31 20 46 52 4f 4d 20 74   + - col1 FROM t
37e80 61 62 30 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab0 AS cor0..---
37e90 2d 0d 0a 2d 31 32 31 0d 0a 2d 32 32 39 30 0d 0a  -..-121..-2290..
37ea0 2d 39 38 30 32 0d 0a 0d 0a 71 75 65 72 79 20 49  -9802....query I
37eb0 20 72 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54   rowsort..SELECT
37ec0 20 2b 20 2d 20 33 36 20 46 52 4f 4d 20 74 61 62   + - 36 FROM tab
37ed0 32 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 2d 33  2 cor0..----..-3
37ee0 36 0d 0a 2d 33 36 0d 0a 2d 33 36 0d 0a 0d 0a 71  6..-36..-36....q
37ef0 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74 0d 0a  uery I rowsort..
37f00 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54 20  SELECT DISTINCT 
37f10 2b 20 34 32 20 41 53 20 63 6f 6c 30 20 46 52 4f  + 42 AS col0 FRO
37f20 4d 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57  M tab0 AS cor0 W
37f30 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c 20 3d 20  HERE NOT NULL = 
37f40 63 6f 6c 31 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 6f 6e  col1..----....on
37f50 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61 67 67  lyif mysql # agg
37f60 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a 20 0d  regate syntax: .
37f70 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
37f80 20 6c 61 62 65 6c 2d 31 32 34 32 0d 0a 53 45 4c   label-1242..SEL
37f90 45 43 54 20 2d 20 43 4f 55 4e 54 28 20 2a 20 29  ECT - COUNT( * )
37fa0 20 2a 20 35 34 20 41 53 20 63 6f 6c 30 20 46 52   * 54 AS col0 FR
37fb0 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d 2d 0d 0a 2d  OM tab2..----..-
37fc0 31 36 32 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79  162....skipif my
37fd0 73 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74  sql # not compat
37fe0 69 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f  ible..query I ro
37ff0 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 34 32  wsort label-1242
38000 0d 0a 53 45 4c 45 43 54 20 2d 20 43 4f 55 4e 54  ..SELECT - COUNT
38010 20 28 20 2a 20 29 20 2a 20 35 34 20 41 53 20 63   ( * ) * 54 AS c
38020 6f 6c 30 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d  ol0 FROM tab2..-
38030 2d 2d 2d 0d 0a 2d 31 36 32 0d 0a 0d 0a 73 6b 69  ---..-162....ski
38040 70 69 66 20 70 6f 73 74 67 72 65 73 71 6c 20 23  pif postgresql #
38050 20 50 6f 73 74 67 72 65 53 51 4c 20 72 65 71 75   PostgreSQL requ
38060 69 72 65 73 20 41 53 20 77 68 65 6e 20 72 65 6e  ires AS when ren
38070 61 6d 69 6e 67 20 6f 75 74 70 75 74 20 63 6f 6c  aming output col
38080 75 6d 6e 73 0d 0a 71 75 65 72 79 20 49 20 72 6f  umns..query I ro
38090 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 63 6f  wsort..SELECT co
380a0 6c 31 20 2a 20 2b 20 2d 20 63 6f 6c 30 20 63 6f  l1 * + - col0 co
380b0 6c 31 20 46 52 4f 4d 20 74 61 62 31 0d 0a 2d 2d  l1 FROM tab1..--
380c0 2d 2d 0d 0a 2d 34 32 35 0d 0a 2d 34 32 37 37 0d  --..-425..-4277.
380d0 0a 2d 37 31 34 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  .-714....onlyif 
380e0 6d 79 73 71 6c 20 23 20 61 67 67 72 65 67 61 74  mysql # aggregat
380f0 65 20 73 79 6e 74 61 78 3a 20 0d 0a 71 75 65 72  e syntax: ..quer
38100 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c 61 62  y II rowsort lab
38110 65 6c 2d 31 32 34 34 0d 0a 53 45 4c 45 43 54 20  el-1244..SELECT 
38120 44 49 53 54 49 4e 43 54 20 2b 20 36 37 2c 20 2d  DISTINCT + 67, -
38130 20 43 4f 55 4e 54 28 20 2a 20 29 20 41 53 20 63   COUNT( * ) AS c
38140 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30 0d 0a 2d  ol2 FROM tab0..-
38150 2d 2d 2d 0d 0a 36 37 0d 0a 2d 33 0d 0a 0d 0a 73  ---..67..-3....s
38160 6b 69 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f  kipif mysql # no
38170 74 20 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75  t compatible..qu
38180 65 72 79 20 49 49 20 72 6f 77 73 6f 72 74 20 6c  ery II rowsort l
38190 61 62 65 6c 2d 31 32 34 34 0d 0a 53 45 4c 45 43  abel-1244..SELEC
381a0 54 20 44 49 53 54 49 4e 43 54 20 2b 20 36 37 2c  T DISTINCT + 67,
381b0 20 2d 20 43 4f 55 4e 54 20 28 20 2a 20 29 20 41   - COUNT ( * ) A
381c0 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 30  S col2 FROM tab0
381d0 0d 0a 2d 2d 2d 2d 0d 0a 36 37 0d 0a 2d 33 0d 0a  ..----..67..-3..
381e0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
381f0 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
38200 43 54 20 63 6f 6c 32 20 2b 20 63 6f 6c 32 20 2b  CT col2 + col2 +
38210 20 2b 20 36 36 20 41 53 20 63 6f 6c 30 20 46 52   + 66 AS col0 FR
38220 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72 30 0d  OM tab2 AS cor0.
38230 0a 2d 2d 2d 2d 0d 0a 31 31 32 0d 0a 31 34 36 0d  .----..112..146.
38240 0a 31 38 32 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d  .182....onlyif m
38250 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e 74  ysql # CAST synt
38260 61 78 3a 20 61 67 67 72 65 67 61 74 65 20 73 79  ax: aggregate sy
38270 6e 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70  ntax: SIGNED typ
38280 65 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  e: ..query I row
38290 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 34 36 0d  sort label-1246.
382a0 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43 54  .SELECT DISTINCT
382b0 20 2b 20 43 41 53 54 28 20 4d 41 58 28 20 63 6f   + CAST( MAX( co
382c0 6c 31 20 29 20 41 53 20 53 49 47 4e 45 44 20 29  l1 ) AS SIGNED )
382d0 20 46 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d   FROM tab0 cor0.
382e0 0a 2d 2d 2d 2d 0d 0a 38 31 0d 0a 0d 0a 73 6b 69  .----..81....ski
382f0 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
38300 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
38310 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
38320 6c 2d 31 32 34 36 0d 0a 53 45 4c 45 43 54 20 44  l-1246..SELECT D
38330 49 53 54 49 4e 43 54 20 2b 20 43 41 53 54 20 28  ISTINCT + CAST (
38340 20 4d 41 58 20 28 20 63 6f 6c 31 20 29 20 41 53   MAX ( col1 ) AS
38350 20 49 4e 54 45 47 45 52 20 29 20 46 52 4f 4d 20   INTEGER ) FROM 
38360 74 61 62 30 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d  tab0 cor0..----.
38370 0a 38 31 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  .81....query I r
38380 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44  owsort..SELECT D
38390 49 53 54 49 4e 43 54 20 2d 20 63 6f 6c 30 20 2b  ISTINCT - col0 +
383a0 20 2b 20 2d 20 63 6f 6c 30 20 41 53 20 63 6f 6c   + - col0 AS col
383b0 31 20 46 52 4f 4d 20 74 61 62 32 0d 0a 2d 2d 2d  1 FROM tab2..---
383c0 2d 0d 0a 2d 31 32 38 0d 0a 2d 31 35 30 0d 0a 2d  -..-128..-150..-
383d0 39 32 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72 6f  92....query I ro
383e0 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 44 49  wsort..SELECT DI
383f0 53 54 49 4e 43 54 20 2d 20 2b 20 63 6f 6c 32 20  STINCT - + col2 
38400 41 53 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62  AS col2 FROM tab
38410 30 20 57 48 45 52 45 20 4e 4f 54 20 4e 55 4c 4c  0 WHERE NOT NULL
38420 20 49 53 20 4e 4f 54 20 4e 55 4c 4c 0d 0a 2d 2d   IS NOT NULL..--
38430 2d 2d 0d 0a 2d 31 30 0d 0a 2d 34 37 0d 0a 2d 39  --..-10..-47..-9
38440 39 0d 0a 0d 0a 71 75 65 72 79 20 49 49 49 20 72  9....query III r
38450 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2a  owsort..SELECT *
38460 20 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f   FROM tab2 AS co
38470 72 30 20 57 48 45 52 45 20 2d 20 28 20 2d 20 2d  r0 WHERE - ( - -
38480 20 63 6f 6c 31 20 29 20 49 53 20 4e 4f 54 20 4e   col1 ) IS NOT N
38490 55 4c 4c 0d 0a 2d 2d 2d 2d 0d 0a 39 20 76 61 6c  ULL..----..9 val
384a0 75 65 73 20 68 61 73 68 69 6e 67 20 74 6f 20 37  ues hashing to 7
384b0 35 63 39 39 38 61 61 35 33 61 63 38 33 32 31 38  5c998aa53ac83218
384c0 63 62 66 32 66 65 62 39 36 32 64 30 61 34 39 0d  cbf2feb962d0a49.
384d0 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20  ...onlyif mysql 
384e0 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e 74  # aggregate synt
384f0 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72 6f  ax: ..query I ro
38500 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 35 30  wsort label-1250
38510 0d 0a 53 45 4c 45 43 54 20 2d 20 2d 20 28 20 43  ..SELECT - - ( C
38520 4f 55 4e 54 28 20 2d 20 32 36 20 29 20 29 20 46  OUNT( - 26 ) ) F
38530 52 4f 4d 20 74 61 62 31 20 41 53 20 63 6f 72 30  ROM tab1 AS cor0
38540 0d 0a 2d 2d 2d 2d 0d 0a 33 0d 0a 0d 0a 73 6b 69  ..----..3....ski
38550 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
38560 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
38570 79 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65  y I rowsort labe
38580 6c 2d 31 32 35 30 0d 0a 53 45 4c 45 43 54 20 2d  l-1250..SELECT -
38590 20 2d 20 28 20 43 4f 55 4e 54 20 28 20 2d 20 32   - ( COUNT ( - 2
385a0 36 20 29 20 29 20 46 52 4f 4d 20 74 61 62 31 20  6 ) ) FROM tab1 
385b0 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a 33  AS cor0..----..3
385c0 0d 0a 0d 0a 6f 6e 6c 79 69 66 20 6d 79 73 71 6c  ....onlyif mysql
385d0 20 23 20 61 67 67 72 65 67 61 74 65 20 73 79 6e   # aggregate syn
385e0 74 61 78 3a 20 0d 0a 71 75 65 72 79 20 49 20 72  tax: ..query I r
385f0 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 35  owsort label-125
38600 31 0d 0a 53 45 4c 45 43 54 20 4d 41 58 28 20 41  1..SELECT MAX( A
38610 4c 4c 20 2b 20 63 6f 6c 31 20 29 20 2a 20 2b 20  LL + col1 ) * + 
38620 43 4f 55 4e 54 28 20 2a 20 29 20 46 52 4f 4d 20  COUNT( * ) FROM 
38630 74 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d  tab2 AS cor0..--
38640 2d 2d 0d 0a 32 33 31 0d 0a 0d 0a 73 6b 69 70 69  --..231....skipi
38650 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63 6f  f mysql # not co
38660 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79 20  mpatible..query 
38670 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d  I rowsort label-
38680 31 32 35 31 0d 0a 53 45 4c 45 43 54 20 4d 41 58  1251..SELECT MAX
38690 20 28 20 41 4c 4c 20 2b 20 63 6f 6c 31 20 29 20   ( ALL + col1 ) 
386a0 2a 20 2b 20 43 4f 55 4e 54 20 28 20 2a 20 29 20  * + COUNT ( * ) 
386b0 46 52 4f 4d 20 74 61 62 32 20 41 53 20 63 6f 72  FROM tab2 AS cor
386c0 30 0d 0a 2d 2d 2d 2d 0d 0a 32 33 31 0d 0a 0d 0a  0..----..231....
386d0 6f 6e 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 61  onlyif mysql # a
386e0 67 67 72 65 67 61 74 65 20 73 79 6e 74 61 78 3a  ggregate syntax:
386f0 20 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f   ..query I rowso
38700 72 74 20 6c 61 62 65 6c 2d 31 32 35 32 0d 0a 53  rt label-1252..S
38710 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 28 20 44  ELECT ALL MIN( D
38720 49 53 54 49 4e 43 54 20 2d 20 28 20 2d 20 63 6f  ISTINCT - ( - co
38730 6c 30 20 29 20 29 20 46 52 4f 4d 20 74 61 62 32  l0 ) ) FROM tab2
38740 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d 2d 0d 0a   AS cor0..----..
38750 34 36 0d 0a 0d 0a 73 6b 69 70 69 66 20 6d 79 73  46....skipif mys
38760 71 6c 20 23 20 6e 6f 74 20 63 6f 6d 70 61 74 69  ql # not compati
38770 62 6c 65 0d 0a 71 75 65 72 79 20 49 20 72 6f 77  ble..query I row
38780 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 35 32 0d  sort label-1252.
38790 0a 53 45 4c 45 43 54 20 41 4c 4c 20 4d 49 4e 20  .SELECT ALL MIN 
387a0 28 20 44 49 53 54 49 4e 43 54 20 2d 20 28 20 2d  ( DISTINCT - ( -
387b0 20 63 6f 6c 30 20 29 20 29 20 46 52 4f 4d 20 74   col0 ) ) FROM t
387c0 61 62 32 20 41 53 20 63 6f 72 30 0d 0a 2d 2d 2d  ab2 AS cor0..---
387d0 2d 0d 0a 34 36 0d 0a 0d 0a 6f 6e 6c 79 69 66 20  -..46....onlyif 
387e0 6d 79 73 71 6c 20 23 20 43 41 53 54 20 73 79 6e  mysql # CAST syn
387f0 74 61 78 3a 20 53 49 47 4e 45 44 20 74 79 70 65  tax: SIGNED type
38800 3a 20 0d 0a 71 75 65 72 79 20 49 49 49 20 72 6f  : ..query III ro
38810 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31 32 35 33  wsort label-1253
38820 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e 43  ..SELECT DISTINC
38830 54 20 2a 20 46 52 4f 4d 20 74 61 62 30 20 41 53  T * FROM tab0 AS
38840 20 63 6f 72 30 20 57 48 45 52 45 20 2b 20 43 41   cor0 WHERE + CA
38850 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49 47 4e  ST( NULL AS SIGN
38860 45 44 20 29 20 42 45 54 57 45 45 4e 20 2b 20 63  ED ) BETWEEN + c
38870 6f 6c 31 20 41 4e 44 20 2d 20 63 6f 6c 31 20 2b  ol1 AND - col1 +
38880 20 33 37 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69   37..----....ski
38890 70 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20  pif mysql # not 
388a0 63 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72  compatible..quer
388b0 79 20 49 49 49 20 72 6f 77 73 6f 72 74 20 6c 61  y III rowsort la
388c0 62 65 6c 2d 31 32 35 33 0d 0a 53 45 4c 45 43 54  bel-1253..SELECT
388d0 20 44 49 53 54 49 4e 43 54 20 2a 20 46 52 4f 4d   DISTINCT * FROM
388e0 20 74 61 62 30 20 41 53 20 63 6f 72 30 20 57 48   tab0 AS cor0 WH
388f0 45 52 45 20 2b 20 43 41 53 54 20 28 20 4e 55 4c  ERE + CAST ( NUL
38900 4c 20 41 53 20 49 4e 54 45 47 45 52 20 29 20 42  L AS INTEGER ) B
38910 45 54 57 45 45 4e 20 2b 20 63 6f 6c 31 20 41 4e  ETWEEN + col1 AN
38920 44 20 2d 20 63 6f 6c 31 20 2b 20 33 37 0d 0a 2d  D - col1 + 37..-
38930 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
38940 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
38950 20 63 6f 6c 32 20 46 52 4f 4d 20 74 61 62 31 20   col2 FROM tab1 
38960 63 6f 72 30 20 57 48 45 52 45 20 28 20 4e 4f 54  cor0 WHERE ( NOT
38970 20 28 20 4e 4f 54 20 34 30 20 49 53 20 4e 4f 54   ( NOT 40 IS NOT
38980 20 4e 55 4c 4c 20 29 20 29 0d 0a 2d 2d 2d 2d 0d   NULL ) )..----.
38990 0a 2d 35 39 0d 0a 2d 36 38 0d 0a 2d 39 36 0d 0a  .-59..-68..-96..
389a0 0d 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
389b0 74 0d 0a 53 45 4c 45 43 54 20 2d 20 33 33 20 2a  t..SELECT - 33 *
389c0 20 32 34 20 2a 20 2d 20 2d 20 63 6f 6c 32 20 46   24 * - - col2 F
389d0 52 4f 4d 20 74 61 62 30 20 63 6f 72 30 0d 0a 2d  ROM tab0 cor0..-
389e0 2d 2d 2d 0d 0a 2d 33 37 32 32 34 0d 0a 2d 37 38  ---..-37224..-78
389f0 34 30 38 0d 0a 2d 37 39 32 30 0d 0a 0d 0a 6f 6e  408..-7920....on
38a00 6c 79 69 66 20 6d 79 73 71 6c 20 23 20 43 41 53  lyif mysql # CAS
38a10 54 20 73 79 6e 74 61 78 3a 20 53 49 47 4e 45 44  T syntax: SIGNED
38a20 20 74 79 70 65 3a 20 0d 0a 71 75 65 72 79 20 49   type: ..query I
38a30 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c 2d 31   rowsort label-1
38a40 32 35 36 0d 0a 53 45 4c 45 43 54 20 2b 20 63 6f  256..SELECT + co
38a50 6c 30 20 2a 20 2b 20 2b 20 39 33 20 2a 20 2b 20  l0 * + + 93 * + 
38a60 43 41 53 54 28 20 4e 55 4c 4c 20 41 53 20 53 49  CAST( NULL AS SI
38a70 47 4e 45 44 20 29 20 2f 20 2b 20 63 6f 6c 31 20  GNED ) / + col1 
38a80 46 52 4f 4d 20 74 61 62 30 20 41 53 20 63 6f 72  FROM tab0 AS cor
38a90 30 20 57 48 45 52 45 20 4e 55 4c 4c 20 42 45 54  0 WHERE NULL BET
38aa0 57 45 45 4e 20 4e 55 4c 4c 20 41 4e 44 20 63 6f  WEEN NULL AND co
38ab0 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a 73 6b 69 70  l0..----....skip
38ac0 69 66 20 6d 79 73 71 6c 20 23 20 6e 6f 74 20 63  if mysql # not c
38ad0 6f 6d 70 61 74 69 62 6c 65 0d 0a 71 75 65 72 79  ompatible..query
38ae0 20 49 20 72 6f 77 73 6f 72 74 20 6c 61 62 65 6c   I rowsort label
38af0 2d 31 32 35 36 0d 0a 53 45 4c 45 43 54 20 2b 20  -1256..SELECT + 
38b00 63 6f 6c 30 20 2a 20 2b 20 2b 20 39 33 20 2a 20  col0 * + + 93 * 
38b10 2b 20 43 41 53 54 20 28 20 4e 55 4c 4c 20 41 53  + CAST ( NULL AS
38b20 20 49 4e 54 45 47 45 52 20 29 20 2f 20 2b 20 63   INTEGER ) / + c
38b30 6f 6c 31 20 46 52 4f 4d 20 74 61 62 30 20 41 53  ol1 FROM tab0 AS
38b40 20 63 6f 72 30 20 57 48 45 52 45 20 4e 55 4c 4c   cor0 WHERE NULL
38b50 20 42 45 54 57 45 45 4e 20 4e 55 4c 4c 20 41 4e   BETWEEN NULL AN
38b60 44 20 63 6f 6c 30 0d 0a 2d 2d 2d 2d 0d 0a 0d 0a  D col0..----....
38b70 71 75 65 72 79 20 49 49 49 20 72 6f 77 73 6f 72  query III rowsor
38b80 74 0d 0a 53 45 4c 45 43 54 20 44 49 53 54 49 4e  t..SELECT DISTIN
38b90 43 54 20 2a 20 46 52 4f 4d 20 74 61 62 31 20 57  CT * FROM tab1 W
38ba0 48 45 52 45 20 28 20 2b 20 63 6f 6c 30 20 2b 20  HERE ( + col0 + 
38bb0 63 6f 6c 32 20 29 20 3d 20 4e 55 4c 4c 0d 0a 2d  col2 ) = NULL..-
38bc0 2d 2d 2d 0d 0a 0d 0a 71 75 65 72 79 20 49 20 72  ---....query I r
38bd0 6f 77 73 6f 72 74 0d 0a 53 45 4c 45 43 54 20 2d  owsort..SELECT -
38be0 20 63 6f 6c 32 20 2d 20 2b 20 63 6f 6c 32 20 41   col2 - + c