这是我数据库中的表:
table1 table2
---------|-------- --------|
UserID |Type UserID |
---------|-------- --------|
user1 |Busy user1 |
user2 |Free user2 |
user3 |Free user3 |
user4 |Busy user4 |
我想从Table1中选择所有用户ID,其中Type = Free。从一个表到另一个表的唯一关联是两个表中的用户ID相同。
到目前为止,我有:
SELECT UserID
FROM Data.Users
INNER JOIN Data.UserType
ON Data.Users.UserID=Data.UserType.UserID
这只给我所有的userID,其中表1中的UserID =表2中的UserID。
我希望能够同时检查用户类型。
SELECT Username FROM Data.Users WHERE TABLE2.UserID = TABLE1.UserID AND
TABLE2.UserType = "free"
我是SQL的新手,所以我也不认为我在搜索正确的事情
答案 0 :(得分:2)
因此您的查询正在运行,您只需要对其进行过滤:
SELECT Data.Users.Name
FROM Data.Users
INNER JOIN Data.UserType
ON Data.Users.UserID=Data.UserType.UserID
WHERE Data.UserType.Type = 'Free'
答案 1 :(得分:1)
您必须确保首先选择所需的数据,在这种情况下为“类型”。因此,这就是我们选择信息时需要考虑的所有问题。但是,出于说明目的(以及一般的良好礼节),我们还选择了userID,但我们将从表1中获取它。
因此,我们要从表2中选择类型,并从表1中选择用户ID,但是两个表上的用户ID相同。
要执行以下操作,请执行以下操作:
SELECT two.Type, one.UserID FROM table2 two INNER JOIN table1 one ON two.UserID = one.UserID
这将从表2中选择信息,我们将其指定为参考2。然后,我们加入table1并分配引用之一。然后,我们可以使用分配给我们的引用在选择中获取所需的信息,同时确保在两个表具有相同值的地方连接数据。
上面的示例将选择与userID匹配的所有值,并用于说明目的。然后,要缩小范围,您要做的就是在此之上指定WHERE值。所以:
SELECT two.Type, one.UserID FROM table2 two INNER JOIN table1 one ON two.UserID = one.UserID WHERE two.Type = "Free"