【发布时间】:2016-02-19 03:50:00
【问题描述】:
我有以下疑问:
SELECT count(*)
FROM User u
INNER JOIN NAME n
ON u.UserId = n.UserId
AND n.last = 'Joe';
--returns 1943
SELECT count(*)
FROM User u
WHERE u.UserId IN (
SELECT n.UserId
FROM NAME n
WHERE n.last = 'Joe'
);
--returns 1875
UserId 是 User 表的主键,Name 表的外键(不唯一)。
为什么连接查询返回的行数比嵌套选择查询多?他们不应该一样吗?
谢谢。
【问题讨论】:
-
您的 UserId 有多个名称
-
试试:
select count(*), u.UserId from User u join Name n on u.UserId = n.UserId and n.last = 'Joe' group by u.UserId having count(*) > 1;看看谁被复制了 -
我明白了。现在说得通了。谢谢!
标签: sql select join sybase sybase-ase15