【发布时间】:2015-07-10 18:17:29
【问题描述】:
我需要一个包含 4 列订单号的表 A:Order1、Order2、Order3、Order4(我知道,这很糟糕,但这是给定的)。
我必须找到表 B 中的记录,其中匹配是表 A 中任何顺序列中的任何值都可以在 B 列中以任何顺序:
A.Order1 = B.Order1 OR
A.Order1 = B.Order2 OR
A.Order1 = B.Order3 OR
A.Order1 = B.Order4 OR
A.Order2 = B.Order1 etc
有没有更好的方法来写这个? 我害怕他们告诉我他们想要使用 5 或 6 列的那一刻。
对原始问题的编辑
- 这适用于 SQL Server 2008 R2
- 表 B 也有 4 个带有订单号的订单列
- 我正在查找表 A 中任何订单列中的任何订单号,以匹配表 B 中任何订单列中的任何订单号。
- 没有预期的最有可能的发现
【问题讨论】:
-
多个列可以同时包含值吗?还是总是只有一列被填满?
-
不,你被多个子句困住了。也就是说,您可以使用动态 SQL 方法根据可用列自动生成 SQL。如何执行此选项将取决于您使用的数据库,您没有指定(标记)。
-
那么,
Table B也有 4 个Order列?顺便说一句,您的WHERE正在使用表 A 中的每一列 -
什么数据库:MySQL、MS-SQL、Oracle 等等?
-
是A中的4个订单必须匹配B中的4个订单,或者A中的至少一个订单匹配B中的至少一个订单的想法?
标签: sql sql-server sql-server-2008-r2