内连接返回重复结果

Mar*_*rio 4 mysql

我需要根据 1 个归档 UID 从 2 个表中选择数据并显示两个表中的一些数据。

第一个表“a.symbol, a.order_type, a.price_open, a.time_open, a.size”中的数据,以及第二个表“b.bid, b.point”中的数据。

当我使用 INNER JOIN 从两个表中获取数据时,我得到了很多结果,但只有 5 个结果我有数据,当我在没有连接的情况下使用它时,如您在第一张图片中看到的那样。

好的,这是一个我有问题的查询:

SELECT a.symbol, a.order_type, a.price_open, a.time_open, a.size, b.bid, b.point
FROM trade_log a
INNER JOIN currency_rates b ON a.uid = b.uid
WHERE a.uid = '23' AND a.status = 'Open' AND a.order_type IN ('0', '1')
ORDER BY a.time_open ASC
Run Code Online (Sandbox Code Playgroud)

所以这是我使用没有内部联接的查询时从trade_log 表中获得的数据

在此处输入图片说明

这个 ia 数据我现在通过内部连接得到了什么,但我只需要像上图一样在表格中添加“出价”和“点”,但我不知道他为什么要乘以结果。

在此处输入图片说明

这是来自“currency_rates”的数据,其中 UID 为 23

在此处输入图片说明

McN*_*ets 6

只要你不给我们更多的信息,我就打赌。

仅使用uid连接两个表,您将获得 20 条记录 (5 x 4)。我想你应该添加symbol.

SELECT     a.symbol, 
           a.order_type, 
           a.price_open, 
           a.time_open, 
           a.size, 
           b.bid, 
           b.point
FROM       trade_log a
INNER JOIN currency_rates b 
ON         a.uid = b.uid
AND        left(a.symbol, 6) = b.symbol
WHERE      a.uid = '23' 
AND        a.status = 'Open' 
AND        a.order_type IN ('0', '1')
ORDER BY   a.time_open ASC;
Run Code Online (Sandbox Code Playgroud)