2014-02-11 54 views
0

我有两个mysql表:table_1和table_2。MySQL查询从第二个表中删除重复项

TABLE_1:

| c_id | name | email | 
| 1 | tom | [email protected] | 

TABLE_2:

| a_id | c_id | address | street | 
| 1 | 1 | 67 | home | 
| 2 | 1 | 68 | main | 

如何创建MySQL的查询,将选择table_1.name,table_1.email,table_2.address和table_2.street只返回一个记录像:

| name | email | address | street | 
| tom | [email protected] | 67  | home | 

感谢您的任何建议。 问候,T

+1

什么意思是“只有一个记录”。如何确定哪些应该退回? – Flixer

回答

1

试试这个:

SELECT table_1.name, table_1.email, table_2.address, table_2.street 
FROM table_1 
JOIN table_2 
ON table_1.c_id = table_2.c_id 
GROUP BY table_1.c_id 

SQLfiddle demo

The GROUP BY将决定您想使用哪个列来对结果进行分组。 B.T.W.如果您喜欢更改列头,您可以添加AS,后跟列头名称(table_1.name AS "First name")。

表结构和样本数据:

CREATE TABLE table_1 
    (`c_id` int, `name` varchar(3), `email` varchar(7)) 
; 

INSERT INTO table_1 
    (`c_id`, `name`, `email`) 
VALUES 
    (1, 'tom', '[email protected]') 
; 

CREATE TABLE table_2 
    (`a_id` int, `c_id` int, `address` int, `street` varchar(4)) 
; 

INSERT INTO table_2 
    (`a_id`, `c_id`, `address`, `street`) 
VALUES 
    (1, 1, 67, 'home'), 
    (2, 1, 68, 'main') 
; 

如果你喜欢SQL查询限制在特定的人说,汤姆WHERE table_1.name LIKE 'Tom'。像这样:

SELECT table_1.name, table_1.email, table_2.address, table_2.street 
FROM table_1 
JOIN table_2 
ON table_1.c_id = table_2.c_id 
WHERE table_1.name LIKE 'Tom' 
GROUP BY table_1.c_id; 

您还可以使用=但喜欢,你可以使用通配符像T%

+0

GROUP BY是我的问题的答案。谢谢! – user3299199

0

你应该使用SQL语句LEFT JOIN,例如

SELECT name, email, address, street 
FROM table1 
LEFT JOIN table2 
ON table1.c_id=table2.c_id; 

与可能的选项,其中name = '汤姆'

0
select table_1.name as name, table_1.email as email, table_2.address as address, table_2.street as street 
from table_1 
left join table_2 on table_1.c_id = table_2.c_id