我是SQL新手并尝试使用join获取数据。不知道我做错了什么。我有两张桌子。
表record
recordID|activityName|userID
1 | sale | 5
2 | call | 5
3 | contact | 5
表activity
activityID|activityData|userID
1 | 50 | 5
2 | 70 | 5
3 | xyz | 5
结果应为
recordID|activityName|activityData|userID
1 | sale | 50 | 5
2 | call | 70 | 5
3 | contact | xyz | 5
但它返回
recordID|activityName|activityData|userID
1 | sale | 50 | 5
2 | call | 70 | 5
3 | contact | xyz | 5
1 | sale | 50 | 5
2 | call | 70 | 5
3 | contact | xyz | 5
1 | sale | 50 | 5
2 | call | 70 | 5
3 | contact | xyz | 5
SELECT * FROM tblrecord tr, tblactivity ta WHERE tr.userID = ta.userID AND tr.userID = '5'
为什么重复结果。
PS。 userID是唯一的公共字段,activityID和recordID可以不同。
答案 0 :(得分:3)
首先,遵循一个简单的规则:从不在FROM
子句中使用逗号。 始终使用明确的JOIN
语法。
其次,您似乎希望加入recordId
和activityId
:
SELECT *
FROM tblrecord tr JOIN
tblactivity ta
ON tr.userID = ta.userID AND
tr.recordId = ta.activityId
WHERE tr.userID = 5;
另外,如果值实际上是一个数字,请不要使用单引号。
答案 1 :(得分:1)
添加
GROUP BY userID,activityID
查询。