Mysql 使用联接操作在查询中显示重复行
我正在写这个问题Mysql 使用联接操作在查询中显示重复行,mysql,sql,select,join,inner-join,Mysql,Sql,Select,Join,Inner Join,我正在写这个问题 SELECT aw_offers_v3.id,aw_offers_v3.name FROM aw_offers_v3,aw_countries_v3,aw_categories_v3 WHERE aw_offers_v3.id = aw_countries_v3.id AND aw_offers_v3.id = aw_categories_v3.id AND ( aw_offers_v3.api_key = 'a2a9e134bcb7935ecb6a1d98911065
SELECT aw_offers_v3.id,aw_offers_v3.name
FROM aw_offers_v3,aw_countries_v3,aw_categories_v3
WHERE aw_offers_v3.id = aw_countries_v3.id
AND aw_offers_v3.id = aw_categories_v3.id
AND ( aw_offers_v3.api_key = 'a2a9e134bcb7935ecb6a1d989110650c016c91f17835d733aebd113255b4abb1' )
AND ( aw_offers_v3.network_id = 'http://api.hasoffers.com/v3/Affiliate_Offer.json' )
AND ( aw_countries_v3.country = 'Albania' OR aw_countries_v3.country = 'Armenia' )
AND ( aw_categories_v3.category = 'Casual' )
我得到了这个结果
|--------------------------------------|
| id | name |
|--------------------------------------|
| 11105 | APP 3 |
|----------------|---------------------|
| 11107 | APP 4 |
|----------------|---------------------|
| 11105 | APP 3 |
|--------------------------------------|
| 11107 | APP 4 |
|----------------|---------------------|
我不知道为什么我会得到这个重复的结果。实际表中没有重复数据
这是我的AWU报价
|----------------------------------------------------------|
| id | name | Desc |
|----------------------------------------------------------|
| 391 | APP 1 | A |
|----------------|---------------------|-------------------|
| 234 | APP 2 | B |
|----------------|---------------------|-------------------|
| 11105 | APP 3 | bb |
|----------------------------------------------------------|
| 11107 | APP 4 | thut |
|----------------|---------------------|-------------------|
这是我的aw_国家
|----------------------------------------------------------|
| internal_id | country | id |
|----------------------------------------------------------|
| 1 | Albania | 11105 |
|----------------|---------------------|-------------------|
| 2 | Armenia | 11105 |
|----------------|---------------------|-------------------|
| 3 | Argentina | 11105 |
|----------------------------------------------------------|
| 4 | Albania | 11107 |
|----------------|---------------------|-------------------|
| 5 | Armenia | 11107 |
|----------------|---------------------|-------------------|
| 6 | Andola | 11107 |
|----------------------------------------------------------|
这是我的aw_分类
|----------------------------------------------------------|
| internal_id | category | id |
|----------------------------------------------------------|
| 1 | Android | 11105 |
|----------------|---------------------|-------------------|
| 2 | Casual | 11105 |
|----------------|---------------------|-------------------|
| 3 | Sports | 11105 |
|----------------------------------------------------------|
| 4 | Gamimg | 11107 |
|----------------|---------------------|-------------------|
| 5 | Casual | 11107 |
|----------------|---------------------|-------------------|
| 6 | Sports | 11107 |
|----------------------------------------------------------|
试试这个:
SELECT DISTINCT a.id, a.name
FROM aw_offers_v3 a
INNER JOIN aw_countries_v3 b ON a.id = b.id
INNER JOIN aw_categories_v3 c ON a.id = c.id
WHERE a.api_key = 'a2a9e134bcb7935ecb6a1d989110650c016c91f17835d733aebd113255b4abb1' AND
a.network_id = 'http://api.hasoffers.com/v3/Affiliate_Offer.json' AND
b.country IN ('Albania', 'Armenia') AND c.category = 'Casual'
有一件事我想告诉你,如果你没有在你的查询中使用Distinct,那么它会给出与我之前得到的相同的重复行。。。。如果我在查询中输入Distinct,那么就不会得到重复的行。。。。那么使用内部连接有什么意义呢?好的,实际上我通常不使用连接关键字。。。无论如何,谢谢。。。顺便问一下,你能解释一下,如果我们不使用DISTINCT@Saswat原始查询具有内部联接。它只是使用了较旧的隐式语法,即列出
FROM
子句中的所有表。性能是一样的,这只是现在的首选语法。@Saswat您会得到重复的语法,因为您有多个国家具有相同的id
。每一个都会在结果中生成一行。您尝试过这个吗<代码>按aw分组提供v3.namenope。我没有使用分组方式……我认为分组方式可以解决你的问题