Questions tagged «join»

JOIN是关系代数中的一般运算,用于在关系数据库系统中对两个或多个关系进行组合运算。JOIN也是用于执行此操作的SQL语言的关键字。

4
在MySQL查询中使用IF条件进行计数
我有两个表,一个表用于新闻,另一个表用于评论,我想获取其状态已设置为批准的评论数。 SELECT ccc_news . *, count(if(ccc_news_comments.id = 'approved', ccc_news_comments.id, 0)) AS comments FROM ccc_news LEFT JOIN ccc_news_comments ON ccc_news_comments.news_id = ccc_news.news_id WHERE `ccc_news`.`category` = 'news_layer2' AND `ccc_news`.`status` = 'Active' GROUP BY ccc_news.news_id ORDER BY ccc_news.set_order ASC LIMIT 20 但是此查询的问题在于,无论是否存在与该新闻相对应的评论,为评论列获取的最小值为1。 任何帮助都是非常可观的。

8
JPA渴望获取未加入
JPA的提取策略究竟控制什么?我无法发现渴望与懒惰之间的任何区别。在这两种情况下,JPA / Hibernate都不会自动加入多对一关系。 示例:人员有一个地址。一个地址可以属于许多人。JPA注释的实体类如下所示: @Entity public class Person { @Id public Integer id; public String name; @ManyToOne(fetch=FetchType.LAZY or EAGER) public Address address; } @Entity public class Address { @Id public Integer id; public String name; } 如果我使用JPA查询: select p from Person p where ... JPA / Hibernate生成一个SQL查询以从Person表中选择,然后为每个人进行不同的地址查询: select ... from …
112 java  hibernate  jpa  join 

8
SQL连接与SQL子查询(性能)?
我想知道我是否有类似这样的联接查询- Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id 和一个类似这样的子查询 - Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept) 当我考虑性能时,两个查询中的哪个查询会更快,为什么? 还有一段时间我应该优先选择另一个吗? 抱歉,这太琐碎了,之前问过,但是我对此感到困惑。另外,如果你们能建议我一些我可以用来衡量两个查询性能的工具,那将是很棒的。非常感谢!

5
在同一张桌子上两次联接的最佳方法是什么?
这有点复杂,但是我有2个表。假设结构是这样的: *Table1* ID PhoneNumber1 PhoneNumber2 *Table2* PhoneNumber SomeOtherField 可以基于Table1.PhoneNumber1-> Table2.PhoneNumber或Table1.PhoneNumber2-> Table2.PhoneNumber联接表。 现在,我想获得一个包含PhoneNumber1,与PhoneNumber1,PhoneNumber2对应的SomeOtherField和与PhoneNumber2对应的SomeOtherField的结果集。 我想到了两种方法来执行此操作-通过在表上联接两次或通过在ON子句中使用OR联接一次。 方法1: SELECT t1.PhoneNumber1, t1.PhoneNumber2, t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2 FROM Table1 t1 INNER JOIN Table2 t2 ON t2.PhoneNumber = t1.PhoneNumber1 INNER JOIN Table2 t3 ON t3.PhoneNumber = t1.PhoneNumber2 这似乎有效。 方法2: 某种程度上看起来像这样的查询- SELECT ... FROM Table1 INNER JOIN Table2 ON Table1.PhoneNumber1 …
108 sql  join 


16
为什么没有比ANSI-89更好地采用SQL ANSI-92标准?
在我工作的每家公司中,我发现人们仍在按照ANSI-89标准编写其SQL查询: select a.id, b.id, b.address_1 from person a, address b where a.id = b.id 而不是ANSI-92标准: select a.id, b.id, b.address_1 from person a inner join address b on a.id = b.id 对于这样的极其简单的查询,可读性没有太大差异,但是对于大型查询,我发现将联接条件归为一组并列出该表可以更轻松地查看联接中可能存在问题的位置,并且让我将所有过滤保留在WHERE子句中。更不用说我觉得外部联接比Oracle中的(+)语法直观得多。 当我尝试向人们传播ANSI-92时,使用ANSI-92而不是ANSI-89有什么具体的性能优势?我会自己尝试,但是我们在这里使用的Oracle设置不允许我们使用EXPLAIN PLAN-不想让人们尝试优化他们的代码,是吗?
107 sql  join  ansi-sql  ansi-92 


3
Rails使用has_many嵌套表格:通过,如何编辑联接模型的属性?
使用accepts_nested_attributes_for时如何编辑联接模型的属性? 我有3个模型:链接器加入的主题和文章 class Topic < ActiveRecord::Base has_many :linkers has_many :articles, :through => :linkers, :foreign_key => :article_id accepts_nested_attributes_for :articles end class Article < ActiveRecord::Base has_many :linkers has_many :topics, :through => :linkers, :foreign_key => :topic_id end class Linker < ActiveRecord::Base #this is the join model, has extra attributes like "relevance" belongs_to :topic …

3
MySQL如何在两个字段上联接表
我有两个与date和id字段的表。我想同时参加这两个领域。我试过了 JOIN t2 ON CONCAT(t1.id, t1.date)=CONCAT(t2.id, t2.date) 可以,但是非常慢。有一个更好的方法吗?
102 mysql  join 

8
MySQL JOIN最近的行而已?
我有一个表客户,存储有customer_id,电子邮件和参考。还有一个附加表customer_data,用于存储对客户所做的更改的历史记录,即,当发生更改时,将插入新行。 为了在一个表中显示客户信息,需要将两个表连接起来,但是只有customer_data中的最新行才应该连接到客户表中。 由于查询是分页的,因此变得有些复杂,因此有一个限制和一个偏移量。 我该如何使用MySQL?我想我想在某个地方放一个DISTINCT ... 此刻的查询是这样的- SELECT *, CONCAT(title,' ',forename,' ',surname) AS name FROM customer c INNER JOIN customer_data d on c.customer_id=d.customer_id WHERE name LIKE '%Smith%' LIMIT 10, 20 另外,我认为我可以通过这种方式将CONCAT与LIKE一起使用吗? (我很欣赏INNER JOIN可能是错误的JOIN类型。我实际上不知道不同的JOIN之间有什么区别。我现在要研究一下!)
102 mysql  sql  join 


3
SQLite-如何连接来自不同数据库的表?
我有一个使用SQLite数据库的应用程序,并且一切正常运行。我现在正在添加需要第二个SQLite数据库的新功能,但是我很难确定如何从不同的数据库联接表。 如果有人可以帮助我解决这个问题,我将不胜感激! 编辑:请参见此问题的示例案例,当您按照已接受的答案所述连接数据库时,可以适应您的语言。
100 sql  database  sqlite  join 

3
为什么LINQ JOIN比链接到WHERE这么快?
我最近升级到了VS 2010,并且正在使用LINQ到Dataset。我在ASP.NET WebApplication的HttpCache中有一个用于授权的强类型数据集。 所以我想知道检查用户是否有权做某事的最快方法是什么。如果有人感兴趣,这是我的数据模型和其他一些信息。 我检查了3种方法: 直接数据库 LINQ查询,其中条件为“加入”-语法 带Join的 LINQ查询-语法 这些是每个函数进行1000次调用后的结果: 1.迭代 4,2841519秒 115,7796925秒 2,024749秒 2.迭代 3,1954857秒 84,97047秒 1,5783397秒 3,迭代 2,7922143秒 97,8713267秒。 1,8432163秒 平均: 数据库:3,4239506333秒 其中:99,5404964秒。 加入:1,815435秒。 为什么Join版本比where语法快得多,这使得它变得毫无用处,尽管作为LINQ新手,它似乎最清晰。还是我错过了查询中的内容? 这是LINQ查询,我跳过数据库: 哪里: Public Function hasAccessDS_Where(ByVal accessRule As String) As Boolean Dim userID As Guid = DirectCast(Membership.GetUser.ProviderUserKey, Guid) Dim query = From accRule In …


5
在R中合并/联接data.frames最快的方法是什么?
例如(不确定最有代表性的例子): N <- 1e6 d1 <- data.frame(x=sample(N,N), y1=rnorm(N)) d2 <- data.frame(x=sample(N,N), y2=rnorm(N)) 到目前为止,这是我得到的: d <- merge(d1,d2) # 7.6 sec library(plyr) d <- join(d1,d2) # 2.9 sec library(data.table) dt1 <- data.table(d1, key="x") dt2 <- data.table(d2, key="x") d <- data.frame( dt1[dt2,list(x,y1,y2=dt2$y2)] ) # 4.9 sec library(sqldf) sqldf() sqldf("create index ix1 on d1(x)") …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.