我敢肯定有一个简单的方法可以解决这个问题,但是在弄清楚这个问题时我有些脑筋。
我有一个具有以下架构的表(节略,因为实际上数据是通过多个表的联接创建的):
Order | Item | Shipped
1 1 N
1 2 N
2 1 N
2 5 N
5 6 N
5 2 N
...
关于模式的注释:
我需要一种方法来设置Shipped
列'Y'
如果订单+项目对不以+项目对列表存在。
换句话说,我将在其他地方生成一个PHP脚本,生成类似(为了便于阅读而进行编辑):
array(
'Order1' => array(1),
'Order5' => array(2, 6)
);
运行查询时,我应该获得以下表结构:
Order | Item | Shipped
1 1 N
1 2 Y
2 1 Y
2 5 Y
5 6 N
5 2 N
...
“直觉”的解决方案
UPDATE MyTable
SET Shipped='Y'
WHERE
Order NOT IN (1, 5)
AND Item NOT IN (1, 2, 6);
显然行不通(因为它不标记,例如,第1项的订单#2出厂设置)。
应该是这个
UPDATE MyTable
SET Shipped='Y'
WHERE (order, item) not in((1,2), (2,1)... )
((1,2 ,,(2,1)...)==您的列表..可能是正确选择或正确字符串的结果
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句