![]() |
1
2
如果列表较短,可以只进行自联接,并为每个联接的表引用详细说明条件:
如果没有这样的序列,则返回一个空集。当然,它假设id号是连续的(在您的示例中是连续的,但一般来说,这是一个危险的假设)。 如果你的单子太长了,这就行不通了。MySQL在一个查询中支持63个表引用,这是一个硬限制。
这里有另一个解决方案,它适用于任何大小的列表,但只有在
t1行是潜在匹配行序列的开始,因此它必须匹配列表中的第一个值。 然后连接到t2行,这是可能匹配的行的完整集合。 t2行的集合也被限制为不超过N行的集合,这取决于您正在搜索的N个值列表的大小。但是SQL无法根据行数创建组,我们只能根据行中的某个值进行限制。因此,如果可以假设id值是连续的,那么这就是为什么它可以工作的原因。 |
![]() |
2
1
通过这种方式,您可以对整个集合执行此操作:
它是为MS SQL编写的,但您也可以轻松地重写它以适应mysql。 我使用>IMEPAC上的400000行不是任何索引的一部分,它运行(第一次也是唯一一次)6秒。 以下是Mysql版本:
|
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 2 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 2 年前 |
|
Kugelfisch · 用php为数据库加密数据 2 年前 |