Hướng dẫn mysql minus syntax error - mysql trừ lỗi cú pháp

Tôi có hai truy vấn.

Truy vấn đầu tiên trả về 11 hàng và truy vấn thứ hai trả về 6 hàng khi tôi sử dụng toán tử trừ trên chúng, nó sẽ trả lại 5 hàng theo như sự hiểu biết của tôi

 SELECT location from uploads where username='Gates'
 MINUS
 SELECT fileshare FROM `whiteboard` where username='Gates' and friend='Curlyclouds'

Nhưng tôi đang gặp lỗi sau:following error:

Bạn có lỗi trong cú pháp SQL của mình; Kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn để sử dụng gần 'trừ' Chọn Fileshare từ

mysql> SELECT 1 = 0;
        -> 0
mysql> SELECT '0' = 0;
        -> 1
mysql> SELECT '0.0' = 0;
        -> 1
mysql> SELECT '0.01' = 0;
        -> 0
mysql> SELECT '.01' = 0.01;
        -> 1
4 trong đó username = 'gates' và friend = 'cur' ở dòng 2

Hy vọng câu hỏi của tôi là rõ ràng và bất kỳ sự giúp đỡ nào cũng sẽ hữu ích cho tôi ..... cảm ơn bạn

Hướng dẫn mysql minus syntax error - mysql trừ lỗi cú pháp

Hỏi ngày 26 tháng 8 năm 2012 lúc 8:57Aug 26, 2012 at 8:57

MySQL không hỗ trợ

mysql> SELECT 1 = 0;
        -> 0
mysql> SELECT '0' = 0;
        -> 1
mysql> SELECT '0.0' = 0;
        -> 1
mysql> SELECT '0.01' = 0;
        -> 0
mysql> SELECT '.01' = 0.01;
        -> 1
5 hoặc
mysql> SELECT 1 = 0;
        -> 0
mysql> SELECT '0' = 0;
        -> 1
mysql> SELECT '0.0' = 0;
        -> 1
mysql> SELECT '0.01' = 0;
        -> 0
mysql> SELECT '.01' = 0.01;
        -> 1
6.

Bạn có thể sử dụng

mysql> SELECT 1 = 0;
        -> 0
mysql> SELECT '0' = 0;
        -> 1
mysql> SELECT '0.0' = 0;
        -> 1
mysql> SELECT '0.01' = 0;
        -> 0
mysql> SELECT '.01' = 0.01;
        -> 1
7,
mysql> SELECT 1 = 0;
        -> 0
mysql> SELECT '0' = 0;
        -> 1
mysql> SELECT '0.0' = 0;
        -> 1
mysql> SELECT '0.01' = 0;
        -> 0
mysql> SELECT '.01' = 0.01;
        -> 1
8 hoặc
mysql> SELECT 1 = 0;
        -> 0
mysql> SELECT '0' = 0;
        -> 1
mysql> SELECT '0.0' = 0;
        -> 1
mysql> SELECT '0.01' = 0;
        -> 0
mysql> SELECT '.01' = 0.01;
        -> 1
9 (cẩn thận với null) để thực hiện tham gia chống bán.

Xem ví dụ và so sánh hiệu suất ở đây

Đã trả lời ngày 26 tháng 8 năm 2012 lúc 8:59Aug 26, 2012 at 8:59

Hướng dẫn mysql minus syntax error - mysql trừ lỗi cú pháp

Martin Smithmartin SmithMartin Smith

426K86 Huy hiệu vàng719 Huy hiệu bạc814 Huy hiệu đồng86 gold badges719 silver badges814 bronze badges

1

Sử dụng "không trong" hoặc "không tồn tại" để thực hiện truy vấn "trừ" trên các bộ dữ liệu rất lớn có thể dẫn đến thời gian truy vấn cực kỳ dài. Tôi đã đưa ra một phương pháp bắt chước các hoạt động dựa trên tập hợp được thực hiện bởi các cơ sở dữ liệu khác (hợp nhất, sắp xếp, loại bỏ các bản sao).

select column1, count(*), min(setnum)
from
(
      select distinct column1, 1 as setnum
        from table1
   union all
      select distinct column1, 2 as setnum
        from table2
) as tbl_a
group by column1  
having count(*) = 1 and min(setnum) = 1

Các chọn ở trên mang lại hiệu suất rất tốt trên các tập dữ liệu lớn so với việc sử dụng không tồn tại hay không. Về cơ bản, nó đang tìm kiếm các hàng chỉ tồn tại trong tập đầu tiên chứ không phải trong thứ hai. Tôi đã sử dụng điều này khá thường xuyên gần đây với thành công rất tốt đối với hiệu suất.

Hướng dẫn mysql minus syntax error - mysql trừ lỗi cú pháp

Đã trả lời ngày 25 tháng 9 năm 2015 lúc 20:47Sep 25, 2015 at 20:47

12.4.2 & nbsp; các chức năng và toán tử so sánh

Bảng & NBSP; 12.4 & NBSP; Các toán tử so sánh

TênSự mô tả
(a = x) AND (b = y)
0
Lớn hơn nhà điều hành
(a = x) AND (b = y)
1
Toán tử lớn hơn hoặc bằng nhau
(a = x) AND (b = y)
2
Ít hơn nhà điều hành
(a = x) AND (b = y)
3,
(a = x) AND (b = y)
4
Không phải là toán tử bằng nhau
(a = x) AND (b = y)
5
Ít hơn hoặc người vận hành bằng nhau
(a = x) AND (b = y)
6
Null-safe bằng người vận hành
(a = x) AND (b = y)
7
Toán tử bình đẳng
(a = x) AND (b = y)
8
Liệu một giá trị có nằm trong một phạm vi của các giá trị
(a = x) AND (b = y)
9
Trả lại đối số không null đầu tiên
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
0
Trả lại đối số lớn nhất
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
1
Liệu một giá trị có nằm trong một tập hợp các giá trị
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
2
Trả về chỉ mục của đối số nhỏ hơn đối số đầu tiên
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
3
Kiểm tra giá trị chống lại Boolean
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
4
Kiểm tra giá trị chống lại Boolean
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
4
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
5
Không kiểm tra giá trị null
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
6
Kiểm tra giá trị null
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
7
Kiểm tra xem đối số có phải là null không
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
8
Trả lại đối số nhỏ nhất
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
9
Phù hợp với mô hình đơn giản
(a <=> x) AND (b <=> y)
0
Liệu một giá trị không nằm trong một phạm vi của các giá trị
(a <=> x) AND (b <=> y)
1
Liệu một giá trị không nằm trong một tập hợp các giá trị
(a <=> x) AND (b <=> y)
2
Sự phủ định của kết hợp mô hình đơn giản
(a <=> x) AND (b <=> y)
3

So sánh hai chuỗi

Các hoạt động so sánh dẫn đến giá trị

(a <=> x) AND (b <=> y)
4 (
(a <=> x) AND (b <=> y)
5),
(a <=> x) AND (b <=> y)
6 (
(a <=> x) AND (b <=> y)
7) hoặc
(a <=> x) AND (b <=> y)
8. Các hoạt động này hoạt động cho cả số và chuỗi. Chuỗi được tự động chuyển đổi thành số và số thành chuỗi khi cần thiết.

=  >  <  >=  <=  <>  !=

Các toán tử so sánh quan hệ sau đây có thể được sử dụng để so sánh không chỉ các toán hạng vô hướng, mà cả các toán hạng hàng:

Các mô tả cho các nhà khai thác sau này trong phần này chi tiết cách chúng làm việc với các toán hạng hàng. Để biết các ví dụ bổ sung về các so sánh hàng trong bối cảnh của các nhóm con hàng, xem Phần & NBSP; 13.2.11.5, các nhóm con hàng của Row.

Ghi chú

Trong các phiên bản trước của MySQL, khi đánh giá một biểu thức chứa

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
8 hoặc
mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
        -> 1, 1, 0
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
        -> 1, NULL, NULL
0, máy chủ đã cố gắng đoán bối cảnh mà hàm được sử dụng và để buộc các đối số của hàm vào loại dữ liệu của biểu thức nói chung. Ví dụ, các đối số cho
mysql> SELECT '.01' <> '0.01';
        -> 1
mysql> SELECT .01 <> '0.01';
        -> 0
mysql> SELECT 'zapp' <> 'zappp';
        -> 1
8 được đánh giá và sắp xếp dưới dạng chuỗi, để biểu thức này trả về
mysql> SELECT '.01' <> '0.01';
        -> 1
mysql> SELECT .01 <> '0.01';
        -> 0
mysql> SELECT 'zapp' <> 'zappp';
        -> 1
9. Trong MySQL 8.0.3 và sớm hơn, khi đánh giá biểu thức
(a <> x) OR (b <> y)
0, máy chủ đã chuyển đổi các đối số thành số nguyên (dự đoán việc bổ sung số nguyên 0 thành kết quả) trước khi sắp xếp chúng, do đó trả về 2.

Bắt đầu với MySQL 8.0.4, máy chủ không còn cố gắng suy ra bối cảnh theo kiểu này. Thay vào đó, hàm được thực thi bằng cách sử dụng các đối số như được cung cấp, thực hiện chuyển đổi kiểu dữ liệu sang một hoặc nhiều đối số nếu và chỉ khi chúng không phải là cùng một loại. Bất kỳ loại ép buộc nào được bắt buộc bởi một biểu thức sử dụng giá trị trả về hiện được thực hiện sau khi thực thi chức năng. Điều này có nghĩa là, trong MySQL 8.0.4 trở lên,

(a <> x) OR (b <> y)
1 đánh giá thành
(a <> x) OR (b <> y)
2 và do đó là số nguyên 11. (BUG #83895, BUG #25123839)

Để chuyển đổi giá trị thành một loại cụ thể cho mục đích so sánh, bạn có thể sử dụng hàm

(a <> x) OR (b <> y)
3. Các giá trị chuỗi có thể được chuyển đổi thành một bộ ký tự khác bằng
(a <> x) OR (b <> y)
4. Xem Phần & NBSP; 12.11, Chức năng Cast Cast và toán tử.

Theo mặc định, các so sánh chuỗi không nhạy cảm trường hợp và sử dụng bộ ký tự hiện tại. Mặc định là

(a <> x) OR (b <> y)
5.

  • (a = x) AND (b = y)
    7

    Bình đẳng:

    mysql> SELECT 1 = 0;
            -> 0
    mysql> SELECT '0' = 0;
            -> 1
    mysql> SELECT '0.0' = 0;
            -> 1
    mysql> SELECT '0.01' = 0;
            -> 0
    mysql> SELECT '.01' = 0.01;
            -> 1

    Để so sánh hàng,

    (a <> x) OR (b <> y)
    7 tương đương với:

    (a = x) AND (b = y)
  • (a = x) AND (b = y)
    6

    ________ 68 an toàn bằng nhau. Toán tử này thực hiện so sánh bình đẳng như toán tử

    (a = x) AND (b = y)
    7, nhưng trả về
    (a <=> x) AND (b <=> y)
    4 thay vì
    (a <=> x) AND (b <=> y)
    8 nếu cả hai toán hạng là
    (a <=> x) AND (b <=> y)
    8 và
    (a <=> x) AND (b <=> y)
    6 thay vì
    (a <=> x) AND (b <=> y)
    8 nếu một toán hạng là
    (a <=> x) AND (b <=> y)
    8.

    Toán tử

    (a = x) AND (b = y)
    6 tương đương với toán tử SQL
    mysql> SELECT 0.1 <= 2;
            -> 1
    8 tiêu chuẩn.

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL

    Để so sánh hàng,

    mysql> SELECT 0.1 <= 2;
            -> 1
    9 tương đương với:

    (a <=> x) AND (b <=> y)
  • (a = x) AND (b = y)
    3,
    (a = x) AND (b = y)
    4

    Không công bằng:

    mysql> SELECT '.01' <> '0.01';
            -> 1
    mysql> SELECT .01 <> '0.01';
            -> 0
    mysql> SELECT 'zapp' <> 'zappp';
            -> 1

    Để so sánh hàng,

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    02 và
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    03 tương đương với:

    (a <> x) OR (b <> y)
  • (a = x) AND (b = y)
    5

    Nhỏ hơn hoặc bằng:

    mysql> SELECT 0.1 <= 2;
            -> 1

    Để so sánh hàng,

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    05 tương đương với:

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    0
  • (a = x) AND (b = y)
    2

    Ít hơn:

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    1

    Để so sánh hàng,

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    07 tương đương với:

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    2
  • (a = x) AND (b = y)
    1

    Lớn hơn hoặc bằng:

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    3

    Để so sánh hàng,

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    09 tương đương với:

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    4
  • (a = x) AND (b = y)
    0

    Lớn hơn:

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    5

    Để so sánh hàng,

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    11 tương đương với:

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    6
  • select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    12 giữa
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    13 và
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    14

    Nếu

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 lớn hơn hoặc bằng
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    13 và
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 nhỏ hơn hoặc bằng
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    14,
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    19 trả về
    (a <=> x) AND (b <=> y)
    4, nếu không thì nó sẽ trả về
    (a <=> x) AND (b <=> y)
    6. Điều này tương đương với biểu thức (
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    13(
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    13 <=
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 AND
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 <=
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    14)
    if all the arguments are of the same type. Otherwise type conversion takes place according to the rules described in Section 12.3, “Type Conversion in Expression Evaluation”, but applied to all the three arguments.

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    7

    Để có kết quả tốt nhất khi sử dụng

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    19 với các giá trị ngày hoặc thời gian, hãy sử dụng
    (a <> x) OR (b <> y)
    3 để chuyển đổi rõ ràng các giá trị thành kiểu dữ liệu mong muốn. Ví dụ: Nếu bạn so sánh
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    28 với hai giá trị
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    29, hãy chuyển đổi các giá trị
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    29 thành các giá trị
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    28. Nếu bạn sử dụng một hằng số chuỗi như
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    32 so sánh với
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    29, hãy chuyển chuỗi vào A
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    29.

  • select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    12 Không giữa
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    13 và
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    14

    Điều này giống như không (

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 giữa
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    13 và
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    14).NOT (
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 BETWEEN
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    13 AND
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    14)
    .

  • ________ 141, ...)

    Trả về giá trị không phải đầu tiên trong danh sách hoặc

    (a <=> x) AND (b <=> y)
    8 nếu không có giá trị không phải là 68.

    Loại trả về của

    (a = x) AND (b = y)
    9 là loại tổng hợp của các loại đối số.

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    8
  • ________ 146, ________ 147, ...)

    Với hai hoặc nhiều đối số, trả về đối số lớn nhất (có giá trị tối đa). Các đối số được so sánh bằng cách sử dụng các quy tắc tương tự như đối với

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    8.

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    9

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    0 Trả về
    (a <=> x) AND (b <=> y)
    8 nếu bất kỳ đối số nào là
    (a <=> x) AND (b <=> y)
    8.

  • select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    12 in (____ 153, ...)

    Trả về

    (a <=> x) AND (b <=> y)
    4 (đúng) nếu
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 bằng với bất kỳ giá trị nào trong danh sách
    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1, thì khác sẽ trả về
    (a <=> x) AND (b <=> y)
    6 (sai).

    Chuyển đổi loại diễn ra theo các quy tắc được mô tả trong Phần & NBSP; 12.3, Chuyển đổi loại trong đánh giá biểu thức, được áp dụng cho tất cả các đối số. Nếu không cần chuyển đổi loại cho các giá trị trong danh sách

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1, tất cả đều không phải là hằng số của cùng một loại và
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 có thể được so sánh với từng hằng số chúng là giá trị của cùng loại (có thể sau khi chuyển đổi loại), một Tối ưu hóa diễn ra. Các giá trị mà danh sách được sắp xếp và việc tìm kiếm
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 được thực hiện bằng cách sử dụng tìm kiếm nhị phân, điều này làm cho hoạt động
    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1 rất nhanh.

    =  >  <  >=  <=  <>  !=
    0

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1 có thể được sử dụng để so sánh các hàm tạo hàng:

    =  >  <  >=  <=  <>  !=
    1

    Bạn không bao giờ nên trộn các giá trị được trích dẫn và chưa được trích dẫn trong danh sách

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1 vì các quy tắc so sánh cho các giá trị được trích dẫn (như chuỗi) và các giá trị chưa được trình cấp (như số) khác nhau. Do đó, các loại trộn có thể dẫn đến kết quả không nhất quán. Ví dụ: không viết biểu thức
    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1 như thế này:

    =  >  <  >=  <=  <>  !=
    2

    Thay vào đó, hãy viết nó như thế này:

    =  >  <  >=  <=  <>  !=
    3

    Chuyển đổi loại ẩn có thể tạo ra kết quả không trực quan:

    =  >  <  >=  <=  <>  !=
    4

    Trong cả hai trường hợp, các giá trị so sánh được chuyển đổi thành các giá trị dấu phẩy động, mang lại 0,0 trong mỗi trường hợp và kết quả so sánh là 1 (true).

    Số lượng giá trị trong danh sách

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1 chỉ bị giới hạn bởi giá trị
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    67.

    Để tuân thủ tiêu chuẩn SQL,

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1 trả về
    (a <=> x) AND (b <=> y)
    8 không chỉ nếu biểu thức ở phía bên trái là
    (a <=> x) AND (b <=> y)
    8, mà còn nếu không tìm thấy trận đấu nào trong danh sách và một trong các biểu thức trong danh sách là
    (a <=> x) AND (b <=> y)
    8.

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    1 Cú pháp cũng có thể được sử dụng để viết một số loại truy vấn con. Xem phần & nbsp; 13.2.11.3, các nhóm phụ với bất kỳ, trong hoặc một số.

  • select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    12 không ở (____ 153, ...)

    Điều này giống như không (

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 trong (____ 153, ...)).NOT (
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 IN (
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    53,...))
    .

  • ________ 177, ________ 178, ________ 179, ________ 180, ...)

    Trả về

    (a <=> x) AND (b <=> y)
    6 nếu
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    82 <
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    78,
    (a <=> x) AND (b <=> y)
    4 nếu
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    82 <
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    79 và v.v. Tất cả các lập luận được coi là số nguyên. Yêu cầu
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    78 <
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    79 <
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    80 <
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    93 <
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    94 Để chức năng này hoạt động chính xác. Điều này là do tìm kiếm nhị phân được sử dụng (rất nhanh).

    =  >  <  >=  <=  <>  !=
    5
  • select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    95

    Kiểm tra giá trị theo giá trị boolean, trong đó

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    96 có thể là
    (a <=> x) AND (b <=> y)
    5,
    (a <=> x) AND (b <=> y)
    7 hoặc
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    99.

    =  >  <  >=  <=  <>  !=
    6
  • Không phải là

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    96

    Kiểm tra giá trị theo giá trị boolean, trong đó

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    96 có thể là
    (a <=> x) AND (b <=> y)
    5,
    (a <=> x) AND (b <=> y)
    7 hoặc
    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    99.

    =  >  <  >=  <=  <>  !=
    7
  • Không phải là

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    96

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    6

    =  >  <  >=  <=  <>  !=
    8

    Kiểm tra xem một giá trị là

    (a <=> x) AND (b <=> y)
    8.

    • Để hoạt động tốt với các chương trình ODBC, MySQL hỗ trợ các tính năng bổ sung sau khi sử dụng

      =  >  <  >=  <=  <>  !=
      07:

      =  >  <  >=  <=  <>  !=
      9

      Nếu biến

      =  >  <  >=  <=  <>  !=
      08 được đặt thành 1, thì sau khi một câu lệnh chèn thành công giá trị
      =  >  <  >=  <=  <>  !=
      09 được tạo tự động, bạn có thể tìm thấy giá trị đó bằng cách đưa ra một câu lệnh của biểu mẫu sau:

      Nếu câu lệnh trả về một hàng, giá trị được trả về giống như khi bạn gọi hàm

      =  >  <  >=  <=  <>  !=
      10. Để biết chi tiết, bao gồm giá trị trả về sau khi chèn nhiều hàng, xem Phần & NBSP; 12.16, các chức năng thông tin của Hồi giáo. Nếu không có giá trị
      =  >  <  >=  <=  <>  !=
      09 được chèn thành công, câu lệnh
      =  >  <  >=  <=  <>  !=
      12 sẽ không có hàng.

      Hành vi truy xuất giá trị

      =  >  <  >=  <=  <>  !=
      09 bằng cách sử dụng so sánh
      mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
              -> 1, 1, 0
      mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
              -> 1, NULL, NULL
      6 có thể bị vô hiệu hóa bằng cách đặt
      =  >  <  >=  <=  <>  !=
      15. Xem Phần & NBSP; 5.1.8, Biến hệ thống máy chủ của Cameron.

    • Giá trị mặc định của

      =  >  <  >=  <=  <>  !=
      08 là 0.

      mysql> SELECT 1 = 0;
              -> 0
      mysql> SELECT '0' = 0;
              -> 1
      mysql> SELECT '0.0' = 0;
              -> 1
      mysql> SELECT '0.01' = 0;
              -> 0
      mysql> SELECT '.01' = 0.01;
              -> 1
      0

      Đối với các cột

      select column1, count(*), min(setnum)
      from
      (
            select distinct column1, 1 as setnum
              from table1
         union all
            select distinct column1, 2 as setnum
              from table2
      ) as tbl_a
      group by column1  
      having count(*) = 1 and min(setnum) = 1
      
      29 và
      select column1, count(*), min(setnum)
      from
      (
            select distinct column1, 1 as setnum
              from table1
         union all
            select distinct column1, 2 as setnum
              from table2
      ) as tbl_a
      group by column1  
      having count(*) = 1 and min(setnum) = 1
      
      28 được khai báo là
      =  >  <  >=  <=  <>  !=
      19, bạn có thể tìm thấy ngày đặc biệt
      =  >  <  >=  <=  <>  !=
      20 bằng cách sử dụng câu lệnh như thế này:

      Điều này là cần thiết để có được một số ứng dụng ODBC hoạt động vì ODBC không hỗ trợ giá trị ngày

      =  >  <  >=  <=  <>  !=
      20.

  • Xem Nhận các giá trị tự động và mô tả cho tùy chọn

    =  >  <  >=  <=  <>  !=
    22 tại các tham số kết nối đầu nối/ODBC.

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    5

    mysql> SELECT 1 = 0;
            -> 0
    mysql> SELECT '0' = 0;
            -> 1
    mysql> SELECT '0.0' = 0;
            -> 1
    mysql> SELECT '0.01' = 0;
            -> 0
    mysql> SELECT '.01' = 0.01;
            -> 1
    1
  • ISNULL(

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15)

    Kiểm tra xem một giá trị không phải là

    (a <=> x) AND (b <=> y)
    8.

    mysql> SELECT 1 = 0;
            -> 0
    mysql> SELECT '0' = 0;
            -> 1
    mysql> SELECT '0.0' = 0;
            -> 1
    mysql> SELECT '0.01' = 0;
            -> 0
    mysql> SELECT '.01' = 0.01;
            -> 1
    2

    Nếu

    select column1, count(*), min(setnum)
    from
    (
          select distinct column1, 1 as setnum
            from table1
       union all
          select distinct column1, 2 as setnum
            from table2
    ) as tbl_a
    group by column1  
    having count(*) = 1 and min(setnum) = 1
    
    15 là
    (a <=> x) AND (b <=> y)
    8,
    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    7 trả về
    (a <=> x) AND (b <=> y)
    4, nếu không nó sẽ trả về
    (a <=> x) AND (b <=> y)
    6.

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    7 có thể được sử dụng thay vì
    (a = x) AND (b = y)
    7 để kiểm tra xem giá trị có phải là
    (a <=> x) AND (b <=> y)
    8 hay không. (So ​​sánh giá trị với
    (a <=> x) AND (b <=> y)
    8 bằng cách sử dụng
    (a = x) AND (b = y)
    7 luôn mang lại
    (a <=> x) AND (b <=> y)
    8.)

  • Hàm

    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    7 chia sẻ một số hành vi đặc biệt với toán tử so sánh
    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    6. Xem mô tả của
    mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
            -> 1, 1, 0
    mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;
            -> 1, NULL, NULL
    6.

    ________ 240, ________ 147, ...)

    • Với hai hoặc nhiều đối số, trả về đối số nhỏ nhất (có giá trị tối thiểu). Các đối số được so sánh bằng cách sử dụng các quy tắc sau:

    • Nếu bất kỳ đối số là

      (a <=> x) AND (b <=> y)
      8, kết quả là
      (a <=> x) AND (b <=> y)
      8. Không cần so sánh.

    • Nếu tất cả các đối số được định giá nguyên, chúng được so sánh như số nguyên.

    • Nếu ít nhất một đối số là độ chính xác gấp đôi, chúng được so sánh là các giá trị chính xác kép. Mặt khác, nếu ít nhất một đối số là giá trị

      =  >  <  >=  <=  <>  !=
      44, chúng được so sánh là giá trị
      =  >  <  >=  <=  <>  !=
      44.

    • Nếu các đối số bao gồm hỗn hợp các số và chuỗi, chúng được so sánh là chuỗi.

    • Nếu bất kỳ đối số nào là một chuỗi không phải là (ký tự), các đối số được so sánh là các chuỗi không phải là chuỗi.

    Trong tất cả các trường hợp khác, các đối số được so sánh là chuỗi nhị phân.

    mysql> SELECT 1 = 0;
            -> 0
    mysql> SELECT '0' = 0;
            -> 1
    mysql> SELECT '0.0' = 0;
            -> 1
    mysql> SELECT '0.01' = 0;
            -> 0
    mysql> SELECT '.01' = 0.01;
            -> 1
    3