如何只加入一列?

时间:2011-08-28 06:24:30

标签: mysql join

SELECT * FROM table1
LEFT JOIN table2
ON table1.id = table2.table1_id
WHERE table1.id = 1

我需要只连接表2中的一列,比如first_name。 我怎么能这样做?

4 个答案:

答案 0 :(得分:55)

假设您的意思是“从表2中选择一列”:

   SELECT table1.*, table2.first_name
     FROM table1
LEFT JOIN table2
...

答案 1 :(得分:3)

采用原始代码,并将*替换为table1。*,table2.YourChosenColumn

 SELECT table1.*, table2.YourChosenColumn
 FROM table1 LEFT JOIN table2 
 ON table1.id = table2.table1_id 
 WHERE table1.id = 1  

答案 2 :(得分:2)

接受的答案是正确答案,但当表格位于两个不同的数据库时,我遇到了一个奇怪的错误:

假设table1在database1中,table2在database2中。 最初我试过这个:

SELECT *, database2.table2.first_name FROM table1
LEFT JOIN database2.table2
ON database1.table1.id = database2.table2.table1_id
WHERE table1.id = 1

奇怪的是,如果我从PHP PDO尝试此查询时没有错误,但结果包含来自database2.table2的所有列(预期只有first_name列)。

但如果我从phpmyadmin尝试了相同的查询,则会出现一个sintax错误:

表'database2.table1'不存在

所以,为了解决这个问题,那么所有数据库都需要像这样隐式指定

SELECT database1.table1.*, database2.table2.first_name FROM database1.table1
LEFT JOIN database2.table2
ON database1.table1.id = database2.table2.table1_id
WHERE database1.table1.id = 1

答案 3 :(得分:1)

除了您已经陈述的查询之外,您的意思是:

SELECT * FROM table1
LEFT JOIN table2
ON table1.id = table2.table1_id
WHERE table1.id = 1 and table1.first_name = table2.first_name