我对SQL有点新,并且在构造select语句时遇到了麻烦。我有两张桌子:
Table users
int id
varchar name
Table properties
int userID
int property
我希望所有具有特定属性的用户记录。有没有办法在一个SQL调用中获取它们,还是我需要首先从属性表中获取所有用户ID,然后单独选择每个用户?
答案 0 :(得分:9)
使用JOIN
:
SELECT U.id, U.name, P.property FROM users U
INNER JOIN properties P ON P.userID = U.id
WHERE property = 3
答案 1 :(得分:8)
如果您想要选择每个用户只有一个属性行,我认为这就是您想要的:
select
users.*
from
users,
properties
where
users.id = properties.userID
and properties.property = (whatnot);
如果您有多个匹配“whatnot”的属性行,并且您只需要一个属性行,则根据您的数据库系统,您要么需要左连接,要么需要一个distinct子句。
答案 2 :(得分:3)
查看JOIN命令。您可以编写如下查询:
SELECT
name
FROM
users u
INNER JOIN properties p
ON u.id = p.userID
WHERE
p.property = <some value>
答案 3 :(得分:3)
SELECT [Name] FROM Users u
JOIN Properties p on p.UserID=u.ID
WHERE p.Property=1
显然,这取决于您使用的RDBMS和SQL的风格。
答案 4 :(得分:3)
您正在寻找JOIN
个表格。
假设id和userID列具有相同的含义,它就像这样:
select u.name
from users u inner join properties p
on u.id = p.userID
where p.property = :ValueToFind