标签: cross-join

mysql交叉连接,但没有重复对?

假设我的表中有以下行

表行

id
63
64
65
66
67
68

如果我运行以下查询,我会得到30行.

SELECT r1.id, r2,id 
  FROM rows AS r1 
    CROSS JOIN rows AS r2 
  WHERE r1.id!=r2.id
Run Code Online (Sandbox Code Playgroud)

结果:

63  64
65  64
66  64
67  64
68  64
64  63
65  63
66  63
67  63
68  63
63  65
64  65
66  65
67  65
68  65
63  66
64  66
65  66
67  66
68  66
63  67
64  67
65  67
66  67
68  67
63  68
64  68
65 …

mysql cross-join

6
推荐指数
1
解决办法
7344
查看次数

在为QueryDSL构建谓词时交叉连接

我正在使用带有Spring Data Jpa的Query DSL QueryDslPredicateExecutor

我有以下实体;

@Table(name="a_table")
@Entity
public class A {

     @OneToOne
     @JoinColumn(name = "b_id")
     private B b;
}

@Table(name="b_table")
@Entity
public class B {

     @Column(...)
     private String name;
}
Run Code Online (Sandbox Code Playgroud)

当我构建Predicate传递到我的存储库时,我做了类似的事情.

QA qa = QA.a;
BooleanBuilder booleanBuilder = new BooleanBuilder();       
for(String name : strings) {
    BooleanExpression b_name_eq= qa.b.name.eq(name);
    BooleanExpression some_other_expression = ...;
    booleanBuilder.or(ExpressionUtils.and(b_name_eq, some_other_expression));
}
return booleanBuilder.getValue();
Run Code Online (Sandbox Code Playgroud)

这会产生如下查询

select ... , ... , ...
from a_table at
cross join b_table bt  
where at.b_id=bt.id 
and (bt.name=? and some_other_expression …
Run Code Online (Sandbox Code Playgroud)

cross-join querydsl spring-data-jpa

6
推荐指数
0
解决办法
649
查看次数

优化Spark作业,必须为每个条目相似度计算每个条目,并为每个条目输出前N个相似项目

我有一个需要计算基于电影内容的相似性的Spark工作.有46k电影.每部电影由一组SparseVectors表示(每个矢量是电影场之一的特征向量,例如Title,Plot,Genres,Actors等).例如,对于Actors和Genres,向量显示给定的actor是否在电影中存在(1)或不存在(0).

任务是为每部电影找到前10个类似的电影.我设法在Scala中编写一个脚本来执行所有这些计算并完成工作.它适用于较小的电影集,如1000部电影,但不适用于整个数据集(内存不足等).

我进行此计算的方法是在电影数据集上使用交叉连接.然后通过仅获取movie1_id <movie2_id的行来减少问题.此时数据集仍然包含46000 ^ 2/2行,即1058000000.每行都有大量数据.

然后我计算每一行的相似度得分.在计算相似度之后,我将movie1_id相同的结果分组,并按照相似性得分的降序对它们进行排序,使用前N个项目的Window函数(类似于此处描述的方式:Spark获得每个项目的前N个最高得分结果(item1,item2) ,得分)).

问题是 - 它可以在Spark中更有效地完成吗?例如,无需执行crossJoin?

还有一个问题--Spark如何处理如此庞大的数据帧(1058000000行由多个SparseVectors组成)?是否必须一次将所有这些保留在内存中?或者它是否以某种方式逐个处理这样的数据帧?


我正在使用以下函数来计算电影矢量之间的相似性:

def intersectionCosine(movie1Vec: SparseVector, movie2Vec: SparseVector): Double = {
val a: BSV[Double] = toBreeze(movie1Vec)
val b: BSV[Double] = toBreeze(movie2Vec)

var dot: Double = 0
var offset: Int = 0
while( offset < a.activeSize) {
  val index: Int = a.indexAt(offset)
  val value: Double = a.valueAt(offset)

  dot += value * b(index)
  offset += 1
}

val bReduced: BSV[Double] = new BSV(a.index, a.index.map(i => b(i)), a.index.length)
val maga: Double …
Run Code Online (Sandbox Code Playgroud)

scala cross-join apache-spark

6
推荐指数
1
解决办法
1735
查看次数

PostgreSQL LEFT OUTER JOIN查询语法

可以说我有一个table1:

  id      name
-------------
  1       "one"
  2       "two"
  3       "three"
Run Code Online (Sandbox Code Playgroud)

和第一个table2外键:

id    tbl1_fk    option   value
-------------------------------
 1      1         1        1
 2      2         1        1
 3      1         2        1
 4      3         2        1
Run Code Online (Sandbox Code Playgroud)

现在我想作为查询结果:

table1.id | table1.name | option | value
-------------------------------------
      1       "one"        1       1
      2       "two"        1       1
      3       "three"    
      1       "one"        2       1
      2       "two"    
      3       "three"      2       1
Run Code Online (Sandbox Code Playgroud)

我如何实现这一目标?

我已经尝试过:

SELECT
  table1.id,
  table1.name,
  table2.option,
  table2.value
FROM table1 AS table1
LEFT outer JOIN table2 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql left-join cross-join

5
推荐指数
1
解决办法
3万
查看次数

如何在Mysql中组合两个不相关的表

有两个表彼此无关(无外键).如何在MySQL中一起显示它们?

表格1

在此输入图像描述

TABLE2

在此输入图像描述

结果

在此输入图像描述

mysql select cartesian-product cross-join

5
推荐指数
2
解决办法
5806
查看次数

select子句中多个set-returns函数的预期行为是什么?

我试图通过两个set-returns函数得到一个"交叉连接",但在某些情况下我没有得到"交叉连接",请参阅示例

行为1:当设置的长度相同时,它会逐个匹配每个集合中的项目

postgres=# SELECT generate_series(1,3), generate_series(5,7) order by 1,2;
 generate_series | generate_series 
-----------------+-----------------
               1 |               5
               2 |               6
               3 |               7
(3 rows)

行为2:当设置的长度不同时,它会"交叉连接"这些集合

postgres=# SELECT generate_series(1,2), generate_series(5,7) order by 1,2;
 generate_series | generate_series 
-----------------+-----------------
               1 |               5
               1 |               6
               1 |               7
               2 |               5
               2 |               6
               2 |               7
(6 rows)

我想我在这里不了解一些事情,有人可以解释一下这种行为吗?

编辑:另一个例子,比以前更奇怪

postgres=# SELECT generate_series(1,2) x, generate_series(1,4) y order by x,y;
 x | y 
---+---
 1 | 1
 1 | 3 …

sql postgresql cross-join set-returning-functions

5
推荐指数
1
解决办法
951
查看次数

使用linq交叉连接未知数量的字符串数组

是否可以使用 linq 进行交叉连接,其中连接数事先未知?

我有这个:

var arrays = new List<string[]>();
Run Code Online (Sandbox Code Playgroud)

如果我知道我可以做三个列表:

var oQuery = from x in arrays[0]
    from y in arrays[1]
    from z in arrays[2]
    select new {x, y, z};
Run Code Online (Sandbox Code Playgroud)

是否可以n使用 linq连接字符串数组?

c# linq cross-join

5
推荐指数
1
解决办法
726
查看次数

Google 表格 - 来自两个单独列的交叉连接/笛卡尔连接

希望有人可以帮助我在 Google 表格中使用笛卡尔积。我的数据位于两个单独的列中,并希望在单独的选项卡中创建两列的所有可能组合。第一列是 ID(文本),第二列是日期格式。输出应该是两个单独的列。该公式应该是动态的,即当新的 ID 或日期添加到输入列表时列表应该更新。

我在网上寻找解决方案,但尚未找到有效的解决方案。我精通 Excel,但不太精通 Google Sheet :)

这是一个示例表:https://docs.google.com/spreadsheets/d/150uIg3XH1hxZa8vSxDhcVZVOcSEOp175OPYL4Rc-wWI/edit ?usp=sharing

cartesian-product cross-join google-sheets google-sheets-formula

5
推荐指数
1
解决办法
9125
查看次数

如何从mysql连接间隔年月设置默认值

我的查询有问题。我有两个表,我想加入它们以根据第一个表上的主键获取结果,但我缺少第一个表中的 1 个数据。

这是我的小提琴

正如你所看到的,我从第一个月开始就缺少“xx3”

在此输入图像描述

我尝试更改左连接和右连接,但结果仍然相同。正如你所看到的,coalesce(sum(b.sd_qty),0) as total,如果没有qty,我必须设置0为默认值。

mysql date left-join cross-join mariadb

5
推荐指数
1
解决办法
247
查看次数

PySpark 生成缺失的日期并用以前的值填充数据

在这种情况下,我需要帮助来用新行填充缺失值:

这只是一个例子,但我有很多行具有不同的IDs.

输入数据框

ID 旗帜 日期
123 1 01/01/2021
123 0 2021年1月2日
123 1 2021年1月3日
123 0 2021年1月6日
123 0 2021年1月8日
第777章 0 01/01/2021
第777章 1 2021年1月3日

所以我有一组有限的dates,我想直到每个的最后一个ID(在示例中,对于ID = 123:01/01/2021、01/02/2021、01/03/2021...直到01/08/2021 )。所以基本上我可以与日历进行交叉联接,但我不知道在交叉联接之​​后如何使用规则或过滤器填充缺失值。

预期输出:(以粗体显示生成的缺失值)

ID 旗帜 日期
123 1 01/01/2021
123 0 2021年1月2日
123 1 2021年1月3日
123 1 01/04/2021
123 1 01/05/2021
123 0 2021年1月6日
123 0 2021年1月7日
123 0 2021年1月8日
第777章 0 01/01/2021
第777章 0 2021年1月2日
第777章 1 2021年1月3日

cross-join dataframe apache-spark apache-spark-sql pyspark

5
推荐指数
2
解决办法
1万
查看次数