gpt4 book ai didi

mysql - 续集 JOIN 和 WHERE

转载 作者:行者123 更新时间:2023-11-28 23:09:46 26 4
gpt4 key购买 nike

我有以下 MySQL 语句:

SELECT
a.id,
b.category,
b.message,
b.is_valid
FROM
"NODE" a,
"SYSTEM_STATUS" b
WHERE
("LAST_HEARTBEAT" > TIMESTAMP '2017-09-18 15:10:04.471826') AND
a.id = b.node_id

我想把上面的转换成Sequel

我有这个方法,它是上述 MySQL 语句的简化版本:

0> self.class.live_nodes

SELECT "ID" FROM "NODE" WHERE ("LAST_HEARTBEAT" > TIMESTAMP '2017-09-18 15:11:12.906017')

=> [#<MyApp::Model::Node @values={:id=>348}>]

现在,使用此方法的结果,我想对名为 system_status 的表进行join,其中 node.id = system_status 的结果.node_id

接下来,我想将 live_nodes 的结果加入到 system_status 中,结果等于 system_status.node_id,并且我不确定该怎么做。

我尝试了以下方法:

0> MyApp::Model::Node.where { last_heartbeat > Time.now - HEARTBEAT_TIMEOUT.seconds }.join(:system_status, :node_id, :id)

但是收到这个错误

=> no implicit conversion of Symbol into Integer

不确定如何修复它。我也不认为我正在正确地执行别名

最佳答案

你非常接近 join 但我相信它应该是

# basically table_name, left_side, right_side
join(:system_status, node_id: :id)

对于更明确的连接,以下也应该有效

# Sequel > 4.38.0
join(:system_status, node_id: Sequel[:nodes][:id])
# Sequel < 4.39.0
join(:system_status, node_id: Sequel.expr(:nodes__id))

这应该生成

INNER JOIN system_status ON system_status.node_id = nodes.id

关于mysql - 续集 JOIN 和 WHERE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46289015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com