[英]SQL MYSQL Select records excluding rows where any duplicates exist
我有以下数据
id | bill_of_lading | shipping_rate |
____|__________________|________________|
1| 8012| 90|
2| 6045| 90|
3| 6045| 0|
4| 2423| 0|
5| 5342| 90|
6| 5643| 90|
7| 5643| 0|
8| 7545| 0|
9| 9034| 0|
我想返回仅出现1次bill_of_lading数字的行,并使用结果更新运费率为零的记录中的shipping_rate。
例如,我想在ids {4,8,9}上将运费设置为220,但不在ids {3,7}上设置
我完全不确定要用于这样的场景的语法。
SELECT bill_of_lading, COUNT(*)
FROM t
GROUP BY bill_of_lading
HAVING COUNT(*) = 1
请参阅操作: http : //sqlfiddle.com/#!2/842d0/2
要使用结果更新相应的行,只需加入它:
UPDATE t
JOIN (
SELECT bill_of_lading, COUNT(*)
FROM t
GROUP BY bill_of_lading
HAVING COUNT(*) = 1
) AS selection USING (bill_of_lading)
SET shipping_rate = 220
看到一个在行动: http : //sqlfiddle.com/#!2/87b61/1
尝试这个:
UPDATE tablename
SET shipping_rate = 220
WHERE shipping_rate = 0 AND
id IN (SELECT id FROM (SELECT id FROM tablename
GROUP BY bill_of_lading HAVING COUNT(id) = 1) as A)
尝试这个尺寸,其他人可能会有更优雅的东西
SELECT *, COUNT(*) AS total FROM table_name GROUP BY bill_of_lading HAVING total = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.