标签: subquery

只选择有文章的作者?

我有两个SQL Server表作者,以及作者主键(AuthorID)是articles表中的外键以表示authors和articles表之间简单的一对多关系的文章.现在问题是,我需要根据名字,姓氏和传记列在authors表上发出全文搜索.全文搜索工作真棒和排名等等.现在我需要在搜索中添加一个标准,我需要从搜索中忽略所有非文章贡献者.为了实现这一点,我选择创建一个视图,其中所有贡献者都有文章并搜索此视图.所以我用这种方式创建了视图:

    Create View vw_Contributors_With_Articles
AS 
Select * from Authors
Where Authors.ContributorID 
IN ( Select Distinct (Articles.ContributorId) From Articles)
Run Code Online (Sandbox Code Playgroud)

它工作但我真的不喜欢子查询的东西.连接获取了所有冗余的authorID,尝试了不同但不适用于传记列,因为它的类型是ntext.Group by不会为我做,因为我需要所有列而不是它们的任何聚合.

你们觉得怎么样?我怎样才能改善这个?

sql sql-server full-text-search subquery distinct

0
推荐指数
1
解决办法
126
查看次数

Hibernate子查询上的ClassCastException

我遇到了以下代码的问题.类id为Long,B类id是嵌入式id,其中一个字段为A类.

DetachedCriteria dc = DetachedCriteria.forClass(A.class,"a").setProjection(Property.forName("a.id"));      
Criteria cr= this.sessionFactory.getCurrentSession().createCriteria(B.class,"b").add(Subqueries.in("b.id.a.id", dc));           
List<B> bb = cr.list();
Run Code Online (Sandbox Code Playgroud)

这给出了例外:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
Run Code Online (Sandbox Code Playgroud)

但是这个:

List<Long> dd =  this.sessionFactory.getCurrentSession().createCriteria(A.class,"a").setProjection(Property.forName("a.id")).list();
Criteria cr= this.sessionFactory.getCurrentSession().createCriteria(B.class,"b").add(Restrictions.in("b.id.a.id", dd));


List<B> bb = cr.list();
Run Code Online (Sandbox Code Playgroud)

作品.我究竟做错了什么?

hibernate subquery classcastexception

0
推荐指数
1
解决办法
1913
查看次数

CONCAT 子查询结果和固定字符串

我想创建一个虚拟列。
它由一列、一个子查询和固定字符串组成。

当前代码使用子查询作为字符串并且它没有被执行。

SELECT X.vname, X.id, CONCAT(X.vname, '..' ,SELECT T.id FROM T WHERE T.x_id=X.id LIMIT 1, '..', 'some_text') FROM xtable AS X
Run Code Online (Sandbox Code Playgroud)

结果如下: vname_value..SELECT T.id FROM T WHERE T.x_id=X.id LIMIT 1..some_text

mysql concat subquery

0
推荐指数
1
解决办法
8171
查看次数

如何比较两个表是否具有相同的数据?

如果我有 2 个表并想查找它们是否具有相同的数据,那么最直接的方法是什么MySQL
我已经阅读了有关执行相关子查询的信息,UNION ALL但是该查询大约有 2 页(!),并且无法真正遵循它正在执行的操作。必须有更简单的方法。
即使是例如MySQL将表数据复制到文件并执行vimdiff(我不确定这是否可能 - 是吗? - 只是大声思考)。

更新
我只对表数据感兴趣,对结构不感兴趣。这是为了澄清由于我发表的一个模棱两可的评论

mysql sql linux subquery

0
推荐指数
1
解决办法
7087
查看次数

使用 EXISTS 获取给定列中具有最大值的行

使用以下查询,

SELECT * 
FROM   product 
WHERE  sale_price IN(SELECT max(sale_price)
                     FROM   product)
Run Code Online (Sandbox Code Playgroud)

返回指定 tablesale_price中 type 列中具有最大值的行。DECIMAL(35,2)product


是否可以使用EXISTS()可以返回相同结果的方式重写此查询-product表中的一行在列中具有最大值sale_price

SELECT * 
FROM   product p 
WHERE  EXISTS(SELECT max(pp.sale_price) 
              FROM   product pp 
              WHERE  p.prod_id = pp.prod_id) 
Run Code Online (Sandbox Code Playgroud)

像这样重写查询是不正确的,并根据与该表中每一行匹配的条件返回给定表中的所有行。

mysql sql exists subquery

0
推荐指数
1
解决办法
1927
查看次数

单行子查询返回多于一行。查询不适用于主查询

我必须在一个单元格中显示多个单元格值。所以我使用这个查询:

select LISTAGG(fc.DESCRIPTION,  ';'||chr(10))WITHIN GROUP (ORDER BY fc.SWITCH_NAME) AS DESCRIP from "ORS".SWITCH_OPERATIONS fc
       group by fc.SWITCH_NAME
Run Code Online (Sandbox Code Playgroud)

它工作正常。但是当我将它与我的主(完整)查询合并时,我得到的错误是:错误代码 1427,SQL 状态 21000:ORA-01427:单行子查询返回多于一行

这是我的完整查询:

SELECT
     TRACK_EVENT.LOCATION,
     TRACK_EVENT.ELEMENT_NAME,
     (select COUNT(*) from ORS.TRACK_EVENT b where (b.ELEMENT_NAME = sw.SWITCH_NAME)AND (b.ELEMENT_TYPE = 'SWITCH')AND (b.EVENT_TYPE = 'I')AND (b.ELEMENT_STATE = 'NORMAL' OR b.ELEMENT_STATE = 'REVERSE'))as COUNTER,
     (select COUNT(*) from ORS.SWITCH_OPERATIONS fc where TRACK_EVENT.ELEMENT_NAME = fc.SWITCH_NAME and fc.NO_CORRESPONDENCE = 1 )as FAIL_COUNT,
     (select MAX(cw.COMMAND_TIME) from ORS.SWITCH_OPERATIONS cw where ((TRACK_EVENT.ELEMENT_NAME = cw.SWITCH_NAME) and (cw.NO_CORRESPONDENCE = 1)) group by cw.SWITCH_NAME ) as …
Run Code Online (Sandbox Code Playgroud)

sql subquery oracle-sqldeveloper

0
推荐指数
1
解决办法
6216
查看次数

SQL子查询 - 从两个表中选择数据

一个简单的SQL查询,但我无法让它工作.当我删除子查询时,该语句返回正确的数据,因此错误需要在子查询中.这是我到目前为止所得到的:

"SELECT s.*, (SELECT s.* FROM sites_photos WHERE sites_id = s.id)
 FROM sites
 AS s";
Run Code Online (Sandbox Code Playgroud)

提前致谢.

sql subquery

0
推荐指数
1
解决办法
112
查看次数

在同一个表上使用子查询的mysql

我有一个mysql表,至少有userId,wager.数据可以

userId = 1 wager = 10.00, userId = 2 wager = 5.00, userId = 3 wager = 1.00.
Run Code Online (Sandbox Code Playgroud)

我想运行一个带有userId param的select,它返回所有userId,它们是<=该用户的赌注所以如果userId = 2我以5.00或更低的投注返回所有其他用户.使用一个连接查询比这更多,但只需要一些帮助或最佳方法与上述

mysql sql select subquery

0
推荐指数
1
解决办法
42
查看次数

如何找到具有类似组件的产品?

我试图找到其中至少有75%+类似组件的物品,我们有数千种产品.我的表有2列,Item和Component.例:

+------+-----------+
| Item | Component |
+------+-----------+
| AAA  | screw     |
| AAA  | metal     |
| AAA  | bar       |
| AAA  | nut       |
| ABC  | screw     |
| ABC  | metal     |
| ABC  | bar       |
| CAA  | nut       |
| CAA  | cap       |
+------+-----------+
Run Code Online (Sandbox Code Playgroud)

最终的结果我想获得3列.项目,项目2和百分比相似.所以看起来像:

+------+-------+-------------------+
| Item | Item2 | PercentageSimilar |
+------+-------+-------------------+
| AAA  | ABC   | 75%               |
| AAA  | CAA   | 25%               |
| ABC …
Run Code Online (Sandbox Code Playgroud)

sql sql-server subquery

0
推荐指数
1
解决办法
48
查看次数

为什么我的查询返回不符合where子句条件的记录?

我编写了一个查询,返回日期实际上比上述日期早的记录.

Declare @DateFrom date
Set @DateFrom= '02/Oct/2019'

SELECT 1, Convert(varchar(11), AppliedDateTime, 106)
FROM [MC_Tenders].[dbo].[AppliedWorks]
Where 
Convert(varchar, AppliedDateTime,106) >= Convert(varchar, @DateFrom,106)
Run Code Online (Sandbox Code Playgroud)

应用日期作为日期时间保存在表格中 2017-04-25 15:51:25.257

sql t-sql sql-server stored-procedures subquery

0
推荐指数
1
解决办法
50
查看次数