【问题标题】:JS - Query MySQL WHERE col IN arrayJS - 查询 MySQL WHERE col IN 数组
【发布时间】:2019-04-08 20:16:11
【问题描述】:

我的查询如下所示:

SELECT MAX(x.id) as id,
x.name, x.timestamp, x.balance
FROM sheet x
JOIN
    (SELECT p.name,MAX(id) AS max_id, p.rate
    FROM sheet p GROUP BY p.name) y
ON y.max_id = x.id
GROUP BY x.name

查询仅 IN(动态)的名称的最佳做法是什么:

array= ['flake', 'shane', 'klar']

我用不同的 join() 状态尝试了这样的事情,但徒劳无功:

WHERE x.name IN (' + array.join() + ')

【问题讨论】:

  • 这个查询可能会被优化。您能否提供样本数据和预期结果?另外,您使用的是哪个版本的 MySQL?
  • 在选择字段列表中没有用处,字段不存在于 group by 子句中。 MySql 无法识别此错误(获取组的第一行),但在其他情况下(DBMS)您的查询是错误的。
  • @JoeTaras。您能否更具体地告诉我主要查询(在 where 语句之前)有什么问题?我是初学者,查询似乎可以满足需求,但需要添加数组的WHERE语句。
  • @mediaroot:请添加示例数据和您想要的结果集(正如 GMB 在他的评论中建议的那样),以便我们为您提供帮助

标签: javascript mysql node.js


【解决方案1】:

试试这个:

SELECT MAX(x.id) as id,x.name,x.timestamp,x.balance FROM sheet x JOIN (SELECT p.name,MAX(id) AS max_id,p.rate FROM sheet p GROUP BY p.name) y ON y.max_id = x.id WHERE x.name IN ('flake', 'shane', 'klar') GROUP BY x.name

【讨论】:

  • 您可以这样做,但最好使用准备好的语句。
猜你喜欢
  • 2015-09-17
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
相关资源
最近更新 更多