Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL中返回具有重复非唯一查询值的多行?_Sql_Postgresql - Fatal编程技术网

如何在SQL中返回具有重复非唯一查询值的多行?

如何在SQL中返回具有重复非唯一查询值的多行?,sql,postgresql,Sql,Postgresql,我有一个表'mat',其中x,y,data列,其中x,y是多列主键,因此该表包含矩阵形式的数据。问题是当我有一个密钥对向量并且可能存在重复对时,如何选择多行: SELECT x,y,data FROM mat WHERE (x,y) IN ((0,0),(0,0),(1,1)); 很明显,他回来了 x | y | data --+---+----- 0 | 0 | 5 1 | 1 | 7 鉴于我需要: x | y | data --+---+----- 0 | 0 | 5 0 | 0 | 5

我有一个表'mat',其中x,y,data列,其中x,y是多列主键,因此该表包含矩阵形式的数据。问题是当我有一个密钥对向量并且可能存在重复对时,如何选择多行:

SELECT x,y,data FROM mat WHERE (x,y) IN ((0,0),(0,0),(1,1));
很明显,他回来了

x | y | data
--+---+-----
0 | 0 | 5
1 | 1 | 7
鉴于我需要:

x | y | data
--+---+-----
0 | 0 | 5
0 | 0 | 5
1 | 1 | 7
我可以在c++/任何代码中从外部循环密钥对以获得正确的数据,但存在严重的性能下降,这非常关键。有什么建议吗?可能吗?谢谢你的帮助

我想你需要加入

对于每一行,IN的计算结果仅为true/false/unknown,它不能将您的数据相乘。

我认为您需要一个连接


对于每一行,IN只是计算为真/假/未知,它不能将数据相乘。

Radim的想法是正确的。我更喜欢这种语法:

SELECT m.*
FROM mat m JOIN 
     (VALUES (0, 0), (0, 0), (1, 1)) v(x, y)
     ON m.x = v.x and m.y = v.y;

拉迪姆的想法是正确的。我更喜欢这种语法:

SELECT m.*
FROM mat m JOIN 
     (VALUES (0, 0), (0, 0), (1, 1)) v(x, y)
     ON m.x = v.x and m.y = v.y;

主键是唯一的,不能包含重复项。您的{x,y}对包含重复项,不能是PK。请将主题中的主键更改为smth else,例如更改为values,或从中删除non unique-否则听起来有误主键本身在表中是唯一的,但我有一个值x0,y0…xn的数据向量,yn如果存在重复项,则主键是唯一的,不能包含重复项。您的{x,y}对包含重复项,不能是PK。请将主题中的主键更改为smth else,例如更改为values,或从中删除non unique-否则听起来有误主键本身在表中是唯一的,但我有一个值为x0,y0…xn,yn的数据向量,其中可以使用matx,y,数据作为values0,0,'a',1,1,'b',0,0,'c'选择x,y,数据来自矩阵,其中x,y位于0,0,0,0,1,1;-不加入或加入是我的问题believe@VaoTsunmat表不能包含具有相同x,y值的两行,因为x和y是主键。你似乎比我更理解这个问题。我想:我假设没有PK-OP,只称为这个way@VaoTsun我稍微澄清了一下这个问题。更重要的是解决了,谢谢你们!尝试使用matx,y,数据作为值0,0,'a',1,1,'b',0,0,'c'从mat中选择x,y,数据,其中x,y在0,0,0,0,1,1中;-不加入或加入是我的问题believe@VaoTsunmat表不能包含具有相同x,y值的两行,因为x和y是主键。你似乎比我更理解这个问题。我想:我假设没有PK-OP,只称为这个way@VaoTsun我稍微澄清了一下这个问题。更重要的是解决了,谢谢你们!明亮的谢谢,太棒了!谢谢