mysql - 使用 Join 更新 Coldfusion ORM

标签 mysql orm coldfusion hql

我正在寻求有关 HQL 语句的帮助,我想在其中使用 JOIN 进行更新。我尝试了以下语句,它在 MySQL-Workbench 中运行良好:

UPDATE table1 t1 
SET    t1.status='Running' 
JOIN   t1.table2 t2  
WHERE  t1.status='Open' AND t2.destination ='mydestination' "

但它给出了错误:

expecting "set", found 'JOIN' near line 1, column 16

最佳答案

在我看来,因为这是一个批量更新操作,所以您应该对此使用 SQL 而不是 HQL。 ORM 并不是真正为这种类型的更新而设计的。您始终可以运行 SQL 语句,然后在需要时加载对象图(您的 ORM 实体)。

至于 SQL,您需要使用 cfquery(或等效的 cfscript)来运行它,从您的 HQL 示例来看,它看起来像这样作为 SQL(假设您提到的 MySQL 是 MySQL工作台)

<cfquery>
    UPDATE table1 t1 
    INNER JOIN table2 t2 ON t1.col = t2.col
    SET status='Running' 
    WHERE status='Open' 
        AND t2.destination='mydestination'
</cfquery>

如果你想用 HQL 来做,那么你通常需要使用子查询。像这样:

update table1 t1 
set t1.status = 'Running' 
where t1.state = 'Open' 
and t1 in (
    select t2.table1
    from table2 t2
    where t2.destination='mydestination'
)

关于mysql - 使用 Join 更新 Coldfusion ORM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36112496/

相关文章:

mysql - 使用 Django 将查询集中的查询分组为一个查询

MySQL Workbench EER 图更改表格颜色

php - SQL CSV 文件 - 跳过特定列号之后的所有列

java - 使用流进行迭代时,ForeignCollection 会抛出 SQLException

xml - jaxb 或 Coldfusion 的等价物

javascript - 在 GET 中发送 & 号

javascript - 将输入值与数据库 Coldfusion 中的值进行比较

python - 评论帖子时如何通过postid获取帖子的用户id?

php - 序列化复选框数组,也得到有关闭值的复选框

c# - Entity Framework 对于小型企业应用程序来说会不会太过分了?