MySQL选择共享该字段值的所有值

时间:2017-09-22 13:27:04

标签: javascript mysql

我是MySQL的新手,因此用语言描述问题很困难,寻找解决方案极具挑战性。

最好直观地解释这个问题:

我想选择(作为数组)exchange_pair_id,它们共享相同的pair_id。

localhost

所以在上面的数据中,我的MySQL查询会返回一个对象:

{ pair_id: 1, exchange_pair_id: [183, 1] }

我知道这是一个被诅咒的问题,但我不知道要搜索解决这个问题的话。

为了清晰/简洁而更新:

+------------------+-------------+---------+
| exchange_pair_id | exchange_id | pair_id |
+------------------+-------------+---------+
| 1                | 3           | 1       |
+------------------+-------------+---------+
| 183              | 1           | 1       |
+------------------+-------------+---------+
| 69               | 2           | 2       |
+------------------+-------------+---------+
| 12               | 4           | 2       |
+------------------+-------------+---------+
| 2                | 3           | 2       |
+------------------+-------------+---------+
| 3                | 3           | 3       |
+------------------+-------------+---------+

来自Javascript MySQL选择查询的所需输出:

[
 { pair_id: 1, exchange_pair_id: [1, 183] },
 { pair_id: 2, exchange_pair_id: [69, 12, 2] },
 { pair_id: 3, exchange_pair_id: [3] }
]

3 个答案:

答案 0 :(得分:2)

我正在考虑这样的查询,但我正在评论你的答案。 基本上,您使用GROUP BY在两个不同的列中获取每个pair_id的值:

SELECT pair_id, MIN(exhange_pair_id) AS id1, MAX(exchange_pair_id) AS id2
FROM yourtable
GROUP BY pair_id;

更新版本:您可以试试这些数据吗? 在这种情况下,MYSQL允许您使用分隔符(,)

连接字段
SELECT pair_id, GROUP_CONCAT(exhange_pair_id) AS exhange_pair_id 
FROM yourtable
GROUP BY pair_id

答案 1 :(得分:0)

尝试select exchange_pair_id from yourtable where pair_id=1然后它将返回数组[1,183]

答案 2 :(得分:0)

您正在寻找的SQL将是:

SELECT * WHERE pair_id == 1

在不知道您的具体代码是什么样的情况下,我只能猜测您是如何实现对数据库的调用的。我假设您正在对PHP控制器进行某种异步调用。所以不要使用' 1'在查询中,您需要使用从代码中提取的任何变量来了解您要查找的内容。