【发布时间】:2011-11-05 17:14:40
【问题描述】:
我想要一个查询从特定用户添加了行的 2 个不同表中获取结果。所以我的 2 个表如下所示:
地址
- 身份证
- 地址
- user_id
电子邮件
- 身份证
- 电子邮件
- user_id
所以,我想从 user_id 行等于 1 的两个表中提取内容。对于上下文,假设每个用户可以向站点添加多个地址和电子邮件,我想将它们全部抓取并显示在他们的个人资料页面上。
所以我尝试了这个:
SELECT *
FROM addresses
JOIN emails USING (user_id)
WHERE user_id = '1'
但这不起作用 - 它要么从第一个表中返回每行的 2 个,要么什么都不返回。 我也试过这个:
SELECT *
FROM addresses,
emails
WHERE user_id = '1'
但这也不会返回任何内容。
【问题讨论】:
-
应该是关于不明确的列引用的错误,因为
user_id存在于两个表中。第二个查询是笛卡尔积,而不是 JOIN...user_id的数据类型是什么? -
抱歉,这不是 INNER JOINS 的重点吗?让两个表中都存在行?如果两个表中都不存在,我怎么能在一个列上加入 2 个表?
-
user_id 的数据类型也是 INT。
-
笛卡尔积!= 加入 - 请参阅:codinghorror.com/blog/2007/10/…
-
感谢您的链接。不过还是有点迷茫。可以使用内部联接完成我想做的事情吗?我觉得第一个查询是合乎逻辑的。似乎从 2 个表中抓取一列等于特定内容的表应该不会非常困难。