更新非键列查询 Pheonix JDBC

Posted

技术标签:

【中文标题】更新非键列查询 Pheonix JDBC【英文标题】:Update Non key columns Query Pheonix JDBC 【发布时间】:2016-12-19 19:34:32 【问题描述】:

我在更新 apache phoenix 中的值时遇到问题。以下查询引发 JDBC 异常。我是 Pheonix JDBC 的新手,对更新非主键字段值的 upsert 查询用法感到困惑。

String sql = UPSERT INTO mytable (serverName,SationName, product) SELECT serverName,stationName ‘sampleProduct’ FROM mytable WHERE product = ‘sampleProduct’;   

“myTable”的主键是“serverName”和“StationName”的组合。我想将产品列的值从“sampleProduct”更新为“TestProduct”。

【问题讨论】:

【参考方案1】:

使用以下行更新 sql 查询。希望它会有所帮助。

String sql = "REPLACE INTO mytable (serverName,SationName, product)
         SELECT serverName,stationName , 'sampleProduct'
            FROM mytable WHERE product = 'sampleProduct'";   

【讨论】:

UPSERT真的不是INSERT ... ON DUPLICATE KEY UPDATE...吗? UPSERT 不在 mysql【参考方案2】:

““myTable”的主键是“serverName”和“StationName”的组合。我想将产品列的值从“sampleProduct”更新为“TestProduct”。”

您没有说“如果该行不存在则插入,所以我认为UPSERT 不合适。MySQL 代码是

UPDATE myTable
    SET product = 'sampleProduct'
    WHERE serverName = '...'
      AND sampleProduct = '...';

(我不知道 '...' 需要什么值。)

【讨论】:

以上是关于更新非键列查询 Pheonix JDBC的主要内容,如果未能解决你的问题,请参考以下文章

创建带包含列的索引 sqlserver

Create Index语句的Include作用

如何在 Laravel 中获取非键列字段的不同值?

具有多个非键列的继承连接策略

Entity Framework 4.1 - 非键列之间的关系

Fluent nHibernate - 如何在联结表上映射非键列?