我的php脚本中有一个奇怪的问题。
我有一个包含数千行的表,它们都与下面的查询匹配,所以我(想)使用 LIMIT 1 只更新其中一个。
当我在我的脚本中和通过phpMyAdmin运行这些查询时:
查询 1 返回"受影响的 1 行":
UPDATE licenses SET license_refunded = 'no'
WHERE license_status = 'available'
ORDER BY license_id ASC
LIMIT 1;
查询 2 返回"0 行受到影响":
UPDATE licenses SET license_refunded = 'no'
WHERE license_status = 'available'
AND license_years='1'
ORDER BY license_id ASC
LIMIT 1;
查询 3 返回"受影响的 2 行":
UPDATE licenses SET license_refunded = 'no'
WHERE license_status = 'available'
AND license_years='1'
ORDER BY license_id ASC
LIMIT 2;
如您所见,查询 1 和查询 2 之间的唯一区别是"AND license_years='1'",查询 2 和查询 3 之间的唯一区别是限制 1 和限制 2。
任何人都可以对此有所了解,为什么查询 2 不影响 1 行?
查询 2 在通过 mysql 客户端(Linux 终端)运行时会更新 1 行(应该更新)。
这是一个php/mysql错误吗?
这对我来说是如何工作的,就像你期望的那样
http://sqlfiddle.com/#!2/c69f0/1/0