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也可以,我没有试过。有兴趣大家可以试试。

				
时间: 2024-09-26 10:35:42

sql 如何应对子查询返回数据有多条 我就是要返回数据有多条的相关文章

数据-怎样用sql语句,使查询速度更快

问题描述 怎样用sql语句,使查询速度更快 在使用数据库的过程中,经常会有10W条甚至100W条级以上的数据记录,使用常规的sql语句在这种级别的数据库中查询,反馈的速度非常慢,时有几分钟才能得到查询反馈的数据结果:本人曾经看过一个sql语句,能在100W级的数据记录中,只用几秒的时间就得到查询结果,但是现在却不曾记得那条语句是如何写的了,不知哪位大神有类似或者这种技能,能否指点小弟一下 解决方案 1.建立索引 2.优化SQL语句 3.条件精确,使用索引 4.最好使用内部过程 5.只取需要的数据

sql基础--怎样让查询出来的数据只返回多少行

sql基础--怎样让查询出来的数据只返回多少行 limit 关键字,可以限制检索出来的数据,只返回多少行,也是这个意思,就是告诉数据库,返回给我的结果不要超过2行数据. mysql> select name from products limit 2; +-------------------+ | name              | +-------------------+ | Bird bean bag toy | | qunkanlu          | +------------

Sql Server 存储过程中查询数据无法使用 Union(All)

原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询.     1.先看一段正常的SQL语句,使用了Union(All)查询:      SELECT ci.CustId --客户编号 , ci.CustNam --客户名称 , ci.ContactBy --联系人 , ci.Conacts --联系电话 , ci.Addr -- 联系地址 , ci.Notes --

SQL数据库如何加快查询速度?

  1.升级硬件 2.根据查询条件,建立索引,优化索引.优化访问方式,限制结果集的数据量. 3.扩大服务器的内存 4.增加服务器CPU个数 5.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能 6.在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能.如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重. 7.查询时不要返回不需要的行.列 8.用select top 100 / 10

如何使用SQL Server嵌套子查询

很多SQL Server程序员对子查询(subqueries)的使用感到困惑,尤其对于嵌套子查询(即子查询中包含一个子查询).现在,就让我们追本溯源地探究这个问题. 有两种子查询类型:标准和相关.标准子查询执行一次,结果反馈给父查询.相关子查询每行执行一次,由父查询找回.在本文中,我将重点讨论嵌套子查询(nested subqueries)(我将在以后介绍相关子查询). 试想这个问题:你想生成一个卖平垫圈的销售人员列表.你需要的数据分散在四个表格中:人员.联系方式(Person.Contact)

ACCESS中使用SQL语句应注意的地方及几点技巧

access|技巧|语句 ACCESS中使用SQL语句应注意的地方及几点技巧引用:Fred 以下SQL语句在ACCESS XP的查询中测试通过 建表:    Create Table Tab1 (        ID Counter,        Name string,        Age integer,        [Date] DateTime); 技巧:    自增字段用 Counter 声明.    字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行. 建立索引:  

sql日记(相关子查询,动态交叉表篇)

动态 最近重新又翻看了一下关于sqlserver的书籍,主要查看了一下关于sql中的相关子查询和交叉表方面的知识.相关子查询和普通子查询区别在于:相关子查询引用了外部查询的列.这种引用外部查询的能力意味着相关子查询不能自己独立运行,其中对于外部查询引用会使会使其无法正常执行.因此相关子查询的执行顺序如下:1.首先执行一遍外部查询2.对于外部查询的每一行分别执行一遍子查询,而且每次执行子查询时候都会引用外部的当前行的值.使用子查询的结果来确定外部查询的结果集.举个例子:SELECT t1.type

SQL编程之高级查询及注意事项

  1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查 询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命令的 WHERE子句中.子查询是一个 SELECT 语句,它嵌套在一个 SELECT.SELECT...INTO 语句.INSERT...INTO 语句.DELETE 语句.或 UPDATE 语句或嵌套在另一子查询中. 语法:select ....from 表1 where 列1 > (子查询) 外面的查询成为父查询,圆括号嵌入的查询成为称

sql-询问一个SQL如何实现判断查询的问题

问题描述 询问一个SQL如何实现判断查询的问题 这是我现在的语句 strSql2.Append("SELECT a.SystemContractID, a.Income, a.TotalMargin, a.UserCode,a.StrategyID, b.StrategyName FROM OrderProfit_History as a INNER JOIN Strategy as b ON a.StrategyID = b.StrategyID"); OrderProfit_His