如何只加入一栏?

问题描述 投票:0回答:4
SELECT * FROM table1
LEFT JOIN table2
ON table1.id = table2.table1_id
WHERE table1.id = 1

我只需要连接表 2 中的一列,例如名字。 我怎样才能做到这一点?

mysql join
4个回答
107
投票

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

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

6
投票

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

假设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 执行相同的查询,则会出现语法错误:

表“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

5
投票

使用您的原始代码并将 * 替换为 table1.*, table2.YourChosenColumn

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

1
投票

您的意思是除了您已经提出的查询之外:

SELECT * FROM table1
LEFT JOIN table2
ON table1.id = table2.table1_id
WHERE table1.id = 1 and table1.first_name = table2.first_name
© www.soinside.com 2019 - 2024. All rights reserved.