我有这两张桌子:
ASSOCIATION_TABLE:[id,key,name,manager,office,bank,customer]
和
OFFICE_TABLE:[身份证,姓名,地址,电话]
我目前正在运行此查询以获取我需要的数据集:
SELECT `name`, `key`, `office`, `manager`, `id`
FROM `database`.`ASSOCIATION_TABLE`
WHERE `association`.`customer`=4;
如何修改此查询以显示OFFICE_TABLE中的NAME,而不是ID?我认为表连接是我的解决方案,但我很确定它是什么类型,或者如何使用它。
提前致谢。
答案 0 :(得分:2)
SELECT `name`, `key`, ot.name AS OFFICE_NAME, `manager`, `id`
FROM `ASSOCIATION_TABLE` at
LEFT OUTER JOIN OFFICE_TABLE ot
ON ot.id = at.office
WHERE `association`.`customer`=4;
这是OFFICE_TABLE的外部联接。您的结果集将包含ASSOCIATION_TABLE中没有OFFICE_TABLE记录的任何记录。
如果您只想返回OFFICE_TABLE中记录的结果,您将需要内部联接,例如:
SELECT `name`, `key`, ot.name AS OFFICE_NAME, `manager`, `id`
FROM `ASSOCIATION_TABLE` at
INNER JOIN OFFICE_TABLE ot
ON ot.id = at.office
WHERE `association`.`customer`=4;
答案 1 :(得分:0)
除了@Adam所说的,您还可以查看官方MySQL documentation
我还建议你在谷歌上寻找一个好的SQL教程。
答案 2 :(得分:0)
这是一个很棒的网站,可以举例说明不同类型的连接。很可能你会想要使用左外连接。
答案 3 :(得分:0)
SELECT o.`name`, `key`, `office`, `manager`, `id`
FROM `database`.`ASSOCIATION_TABLE`
JOIN `database`.`OFFICE_TABLE` o
USING (id)
WHERE `association`.`customer`=4;