由于多步WHERE,PSQL查询语法错误

时间:2017-08-06 16:03:42

标签: sql postgresql syntax-error psql

我正在运行一个简单的更新查询,它会遇到各种语法错误,我无法弄清楚原因。

此选择运行良好:

SELECT quote, author
FROM inspiration
WHERE length(quote)<250
AND used IS NULL
OR used > now()::date - 365
OFFSET floor(random()*10)
LIMIT 1;

虽然这会出现语法错误:

UPDATE inspiration SET used=now()
WHERE length(quote)<250
AND used IS NULL
OR used > now()::date - 365
OFFSET floor(random()*10)
LIMIT 1;

删除OFFSET floor(random()*10) LIMIT 1解决了这个问题。但我需要更新一个随机行。

运行EXPLAIN没有帮助,因为它是语法错误。将括号中的两个WHERE语句包装起来并没有帮助。

1 个答案:

答案 0 :(得分:0)

  

但我需要更新一个随机行。

如果我理解正确你想要的东西:

<p></p>

我也相信:

UPDATE inspiration
SET used = now()
WHERE id = (SELECT id          -- PK of inspiration table
            FROM inspiration
            WHERE length(quote)<250
              AND used IS NULL
                  OR used > now()::date - 365
            ORDER BY random() LIMIT 1);