0
id address retailer
1   A        11
2   A         11
3   A         11
4   A         12
5   A         13
6   B         12
7   B         12
8   B         13

My output should be

id address retailer
1   A        11
4   A         12
5   A         13
6   B         12
8   B         13

i.e my query should return id's which have same address but not same retailer.

How toget this?

5 Answers 5

2

Try to use group by clause as below:

select min(id), address, retailer
from tab
group by address, retailer
Sign up to request clarification or add additional context in comments.

Comments

2

Assuming you're joining on columns with no duplicates, which is by far the most common case:

  • An inner join of A and B gives the result of A intersect B, i.e. the inner part of a venn diagram intersection.

  • An outer join of A and B gives the results of A union B, i.e. the outer parts of a venn diagram union.


Examples:

Suppose you have two Tables, with a single column each, and data as follows:

A    B
-    -
1    3
2    4
3    5
4    6

Note that (1,2) are unique to A, (3,4) are common, and (5,6) are unique to B.

Inner join:

An inner join using either of the equivalent queries gives the intersection of the two tables, i.e. the two rows they have in common.

select * 
from a 
INNER JOIN b on a.a = b.b;

select a.*,b.*  
from a,b 
where a.a = b.b;

a | b
--+--
3 | 3
4 | 4

Left outer join:

A left outer join will give all rows in A, plus any common rows in B.

select * 
from a 
LEFT OUTER JOIN b on a.a = b.b;
select a.*,b.*  
from a,b 
where a.a = b.b(+);

a |  b  
--+-----
1 | null
2 | null
3 |    3
4 |    4

Full outer join:

A full outer join will give you the union of A and B, i.e. All the rows in A and all the rows in B. If something in A doesn't have a corresponding datum in B, then the B portion is null, and vice versa.

select * 
from a 
FULL OUTER JOIN b on a.a = b.b;

 a   |  b  
-----+-----
   1 | null
   2 | null
   3 |    3
   4 |    4
null |    6
null |    5

Comments

0
select min(id) as id,address, retailer 
from table1 
group by address, retailer
order by id

Comments

0

The query you need is:

SELECT min(id), address, retailer
FROM table1 AS t1
group by address, retailer
order by address

Here's the source

2 Comments

my output should contain rows which have same address but not the same retailer
Hope you've checked the link I have given you in my answer. It gives you the exact output as you've mentioned in your question.
0

Use This: It's working:

 SELECT * FROM `sampletable` GROUP BY address, retailer

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.