MySQL JOIN行问题

时间:2017-09-20 20:04:16

标签: mysql

我在连接两个表的查询中遇到了一些问题。它通过桌子的次数远远超过我的预期,我似乎无法找到它为什么会这样做。

我的查询是:SELECT * FROM indexAddress LEFT JOIN indexTx ON indexTx.address_id = indexAddress.id WHERE indexAddress.walletId = '2'

IndexTx包含具有事务的行和具有地址ID(address_id)的字段

IndexAddress包含ID为主键的地址数据。

id | select_type | table        | partitions | type       | possible_keys | key           | key_len | ref             | rows | filtered | Extra 
1  | SIMPLE      | indexAddress | NULL       | ref        | Wallet ID     | Wallet ID     | 4       | const           | 121  | 100.00
1  | SIMPLE      | indexTx      | NULL       | ref        | Address ID    | Address ID    | 4       | indexAddress.id | 23   | 100.00

我的问题是:为什么表运行indexTx 23次而不仅仅是1. 121行是预期的,因为它是预期电子钱包ID的行数,但是23让我感到困惑。

1 个答案:

答案 0 :(得分:0)

如果其中一个表有一条带有walletId == 2的记录,则该记录将被复制。

您需要过滤更多数据或使用DISTINCT。