Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL";在;加上=&引用;在WHERE子句中_Mysql_Sql - Fatal编程技术网

Mysql SQL";在;加上=&引用;在WHERE子句中

Mysql SQL";在;加上=&引用;在WHERE子句中,mysql,sql,Mysql,Sql,我正在与别人的代码作斗争。WHERE子句在下面的(MySQL)语句中可以做什么 SELECT * FROM t1, t2 WHERE t1.id = t2.id IN (1,2,3) 在我的案例中,它并没有提供期望的结果,但我正在试图弄清楚原作者的意图。 任何人都可以提供这样的WHERE子句的使用示例吗?此条件从右侧开始,计算(1,2,3)中的t2.id,获取结果(0或1),并将其用于与t1.id联接。列表中的t2中具有id的所有行都连接到t1中具有一个id的行;t2的所有其他行与t1

我正在与别人的代码作斗争。WHERE子句在下面的(MySQL)语句中可以做什么

    SELECT * FROM t1, t2 WHERE t1.id = t2.id IN (1,2,3)
在我的案例中,它并没有提供期望的结果,但我正在试图弄清楚原作者的意图。
任何人都可以提供这样的WHERE子句的使用示例吗?

此条件从右侧开始,计算(1,2,3)中的
t2.id,获取结果(0或1),并将其用于与
t1.id
联接。
列表中
t2
中具有
id
的所有行都连接到
t1
中具有一个
id
的行;
t2
的所有其他行与
t1
中id为零的行连接。下面是一个关于的小演示:

然而,很难想象这是作者的意图:我认为更可能的检查是两个项目都在列表中,并且彼此相等。相互之间的平等性很重要,因为作者似乎想要连接这两个表

一种更现代的连接方式是使用ANSI SQL语法。以下是您在ANSI SQL中查询的等效项:

SELECT * FROM t1 JOIN t2 ON t1.id = t2.id IN (1,2,3)

此条件从右侧开始,计算(1,2,3)
中的
t2.id,获取结果(0或1),并将其用于与
t1.id
联接。
列表中
t2
中具有
id
的所有行都连接到
t1
中具有一个
id
的行;
t2
的所有其他行与
t1
中id为零的行连接。下面是一个关于的小演示:

然而,很难想象这是作者的意图:我认为更可能的检查是两个项目都在列表中,并且彼此相等。相互之间的平等性很重要,因为作者似乎想要连接这两个表

一种更现代的连接方式是使用ANSI SQL语法。以下是您在ANSI SQL中查询的等效项:

SELECT * FROM t1 JOIN t2 ON t1.id = t2.id IN (1,2,3)

您使用的数据库是什么,如果我没有错的话,SQL Server 2000支持这种语法,但不久之后我会说,如果这种语法被允许,那就是一个错误。您使用的数据库是什么,如果我没有错的话,SQL Server 2000支持这种语法,但不是后来我会说如果这种语法真的被允许这是一个错误。有趣的是,在一个通讯页面上甚至没有一个关于关联性的单词(+1来自我)我认为这是另一种方式。。。首先计算IN,然后使用其结果进行联接。请看@AndreKR,我认为你是对的-看起来
中的
=
具有更高的优先级。我不知道为什么我认为它是从左向右的。考虑到这一点,我重写了答案。非常感谢你!也许您应该澄清结果可以是
0
1
NULL
<当条件(
t2.id在(1,2,3)
中)计算为
FALSE
时,code>0
1
TRUE
时,以及
NULL
未知时。有趣的是,在对应页面上甚至没有一个关于关联性的单词(+1来自我),我认为这是另一种方式。。。首先计算IN,然后使用其结果进行联接。请看@AndreKR,我认为你是对的-看起来中的
=
具有更高的优先级。我不知道为什么我认为它是从左向右的。考虑到这一点,我重写了答案。非常感谢你!也许您应该澄清结果可以是
0
1
NULL
<当条件(
t2.id IN(1,2,3)
)的计算结果为
FALSE
时,code>0
1
为TRUE时,以及
为NULL
未知时,code>。