gpt4 book ai didi

mysql 行构造函数语法

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:39 24 4
gpt4 key购买 nike

很抱歉这个菜鸟问题,但我在文档中找不到任何线索。以下两个查询是等价的:

SELECT * FROM t1 WHERE (column1,column2) = (1,1);
SELECT * FROM t1 WHERE column1 = 1 AND column2 = 1;

那么这是否意味着下面的两个查询是等价的?

SELECT (1,2) = (1,2); #returns 1
SELECT 1 = 1 AND 2 = 2; #returns 1

太棒了,如果我使用“>”而不是“=”会发生什么?

SELECT (3,0) > (2,2); # returns 1, whaaaaaat?
SELECT 3 > 2 AND 0 > 2; # returns 0, like expected

那里发生了什么?为什么他们不一样?!?!我测试了其他查询...

SELECT (3,0) > (2,2); # 1
SELECT (0,3) > (2,2); # 0
SELECT (3,4) > (3,2);# 1
SELECT (3,0) > (3,2);# 0
SELECT (3,2,1) > (3,2,0); # 1
SELECT (3,2,0) > (3,2,0); # 0

看起来 mysql 将他的所有参数都视为一个大数!我在文档中搜索了 ROW CONSTRUCTOR SYNTAX,但我找不到任何关于此的线索!我在这里错过了什么?

最佳答案

关于 comparison operators 的文档说:

For row comparisons, (a, b) > (x, y) is equivalent to:

  (a > x) OR ((a = x) AND (b > y))

所以 (3, 0) > (2, 2) 为真,因为 3 > 2

这种工作方式类似于使用 ORDER BY col1, col2 时对行进行排序的方式。它基本上告诉您 col1 = a, col2 = b 的行是否会排在 col1 = x, col2 = y 之后。

关于mysql 行构造函数语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com