Mysql 从subselect返回行

Mysql 从subselect返回行,mysql,select,subquery,Mysql,Select,Subquery,我有一个MySQL数据库方案: users (id, login) coins (userid, value, curr) 我需要写选择将返回结果:登录和最大硬币,他有这个硬币和货币 我试过这样的方法: SELECT login, ( SELECT value, curr FROM coins WHERE coins.userid = users.id ORDER BY value DESC LIMIT 1 ) AS ROW(value, curr) FROM user

我有一个MySQL数据库方案:

users (id, login)
coins (userid, value, curr)
我需要写选择将返回结果:登录和最大硬币,他有这个硬币和货币

我试过这样的方法:

SELECT login, 
(
  SELECT value, curr
  FROM coins 
  WHERE coins.userid = users.id
  ORDER BY value DESC
  LIMIT 1
) AS ROW(value, curr)
FROM users
它不起作用。。。我将收到一个错误,即“操作数应包含1列”。 我期待它,但我不知道怎么做,怎么做

所以我想:有没有办法将多列单行(行)从子查询返回到父查询

(是的,我可以使用两个子查询,但它无效。)

谢谢你抽出时间

SELECT u.login, g.MaxVal, c.curr
FROM users u JOIN coins c ON u.id = c.userid 
  JOIN (
    SELECT userid, MAX(`Value`) MaxVal
    FROM coins
    GROUP BY userid
  ) g ON c.userid = g.userid AND c.Value = g.MaxVal 
在平局的情况下,上述查询将返回所有具有最高值的硬币,如果您只想选择其中一个硬币,您可以在外部查询中添加一个
groupby

SELECT u.login, g.MaxVal, c.curr
FROM users u JOIN coins c ON u.id = c.userid 
  JOIN (
    SELECT userid, MAX(`Value`) MaxVal
    FROM coins
    GROUP BY userid
  ) g ON c.userid = g.userid AND c.Value = g.MaxVal 
GROUP BY c.userid

如果有领带(一个用户有两个相同价值的硬币)怎么办?谢谢你的回答。它帮助了我。我是说没有领带的箱子。