mysql查询只返回我的数据库中的一个结果

时间:2013-07-25 16:52:02

标签: mysql

我的数据库中有2个表。表用户和表格配置文件。

users(user_id, surname, email)
profile(profile_id, country, user_id)
表格配置文件中的

user_id是FK(来自users表)。我有以下查询,以便从我的数据库中选择所有姓氏“smith”,这些姓氏来自国家“USA”。这是我的问题:

SELECT u.name, 
u.surname, 
u.email, 
u.user_id,
p.user_id
FROM users u 
INNER JOIN profile p ON p.country = 'USA'
WHERE u.surname = 'smith' AND u.user_id = p.user_id

这个查询工作正常,但问题是只返回1个结果,而不是所有结果来自我的数据库(姓氏史密斯来自美国的人)。知道它可能出错的地方以及如何纠正它?

2 个答案:

答案 0 :(得分:1)

您应该将u.user_id = p.user_id条件设置为ON condition,因为您想在'user_id'字段上应用JOIN。 where clause应该有剩余的条件。

SELECT u.name, 
       u.surname, 
       u.email, 
       u.user_id,
       p.user_id
FROM users u 
INNER JOIN profile p ON u.user_id = p.user_id
WHERE u.surname = 'smith' And p.country = 'USA'

您可以阅读INNER JOINS

答案 1 :(得分:0)

仅使用join on条件中与加入相关的列。将2个表链接在一起的列。并将其余部分放在where条款中。这应该有效:

SELECT u.name, 
       u.surname, 
       u.email, 
       u.user_id,
       p.user_id
FROM users u 
INNER JOIN profile p ON u.user_id = p.user_id
WHERE p.country = 'USA'
AND u.surname = 'smith' 

这对可读性来说也更好。你可以这样读:

  

从表用户中选择这些列。在这2列上加入表格配置文件。之后过滤数据并仅返回满足这些条件的记录。