sql 如何应对子查询返回数据有多条 我就是要返回数据有多条

SELECT
	*
FROM
	SUSE_DEV.PROJECT_LISTING
INNER JOIN SUSE_DEV.PROJECT_AUCTION ON SUSE_DEV.PROJECT_LISTING.PROJECT_CODE on (
	SELECT
		*
	FROM
		SUSE_DEV.PROJECT_AUCTION
	WHERE
		SUSE_DEV.PROJECT_AUCTION.GMT_START > SYSDATE
)




这段SQL里的子查询是肯定会返回多条的。一般来说,用ON是根本不能解决这样的问题,有些人说,可以用 

and rownum = 1
SELECT
	*
FROM
	SUSE_DEV.PROJECT_LISTING
INNER JOIN SUSE_DEV.PROJECT_AUCTION ON SUSE_DEV.PROJECT_LISTING.PROJECT_CODE on (
	SELECT
		*
	FROM
		SUSE_DEV.PROJECT_AUCTION
	WHERE
		SUSE_DEV.PROJECT_AUCTION.GMT_START > SYSDATE and rownum = 1

)

这样只能处理返回的值的的确确只有一条的情况,那如果我要返回的有多条呢?答案就是用in
SELECT
	*
FROM
	SUSE_DEV.PROJECT_LISTING
INNER JOIN SUSE_DEV.PROJECT_AUCTION ON SUSE_DEV.PROJECT_LISTING.PROJECT_CODE IN (
	SELECT
		*
	FROM
		SUSE_DEV.PROJECT_AUCTI
IN
	WHERE
		SUSE_DEV.PROJECT_AUCTION.GMT_START > SYSDATE
)
这样就可以了。有人说用exists也可以,我没有试过。有兴趣大家可以试试。

posted on   王大王  阅读(3278)  评论(0编辑  收藏  举报

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示