mysql SQL -如何基于参数和连接表查询行

vhipe2zx  于 2023-03-11  发布在  Mysql
关注(0)|答案(1)|浏览(87)

我在Ruby项目中有以下GET端点:
/endpoint/:special_param
我有一个包含2个表的数据库,表1包含以下列:id, special_param_column, joinable_column
表2包含这些列:id, joinable_column, other_data
下面是我在数据库模型中用来处理请求的代码:

def self.some_function(special_param)
  data = find_by_sql(["SELECT ..."])

  return data
end

要选择表2中joinable_column值与表1中special_param_column值等于传入函数的special_param值的所有行,应该在find_by_sql中写入什么内容?
例如,假设表包含以下数据:

Table 1
id | special_param_column | joinable_column
===========================================
1    208                    Keanu Reeves
2    349                    Jack Black
...

Table 2
id | other_data | joinable_column
=================================
1    24           Keanu Reeves
2    68           Jack Black
3    11           Jack Black
4    0            Keanu Reeves
...

如果为special_param = 208,则返回表2中的第1行和第4行

ilmyapht

ilmyapht1#

def self.some_function(special_param)
  data = find_by_sql(["
    SELECT *
    FROM table2
    WHERE joinable_column IN (
      SELECT joinable_column
      FROM table1
      WHERE special_param_column = ?
    )", special_param])

  return data
end

相关问题