Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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 - Fatal编程技术网

从SQL表中返回两个值不同的行

从SQL表中返回两个值不同的行,sql,Sql,我试图从表中返回两行值有差异的行,但我不是一个SQL智者,我被卡住了。如果您能提供任何帮助,我将不胜感激:-) 结果,应该是两个数据值不同的随机行 NAME DATA Oscar HOME1 Jeremy HOME2 有人吗?如果问题真的这么简单,您可以使用聚合,例如MAX()或MIN()为每个不同的数据获取一行: SELECT MAX(NAME), DATA FROM TABLE_A GROUP BY DATA 当然,如果在需求中引入了任何其他变量,这可能不再有效。如果问

我试图从表中返回两行值有差异的行,但我不是一个SQL智者,我被卡住了。如果您能提供任何帮助,我将不胜感激:-)

结果,应该是两个数据值不同的随机行

NAME   DATA
Oscar  HOME1
Jeremy HOME2

有人吗?

如果问题真的这么简单,您可以使用聚合,例如
MAX()
MIN()
为每个不同的
数据获取一行:

SELECT   MAX(NAME), DATA
FROM     TABLE_A
GROUP BY DATA

当然,如果在需求中引入了任何其他变量,这可能不再有效。

如果问题真的这么简单,您可以使用聚合,例如
MAX()
MIN()
,为每个不同的
数据获取一行:

SELECT   MAX(NAME), DATA
FROM     TABLE_A
GROUP BY DATA
当然,如果在需求中引入任何其他变量,这可能不再有效。

可能是您需要的

select * from my_table a
inner join my_table b on a.data !=b.data
where a.data in ( SELECT data FROM my_table ORDER BY RAND() LIMIT 1);
为您的代码

SELECT * 
FROM [dbo].[ComputerState] as a
INNER JOIN [dbo].[ComputerState] as b ON a.ServiceName != b.ServiceName 
WHERE a.ServiceName IN ( 
     SELECT  top 1  [ServiceName] FROM [dbo].[ComputerState] 
);
你需要什么

select * from my_table a
inner join my_table b on a.data !=b.data
where a.data in ( SELECT data FROM my_table ORDER BY RAND() LIMIT 1);
为您的代码

SELECT * 
FROM [dbo].[ComputerState] as a
INNER JOIN [dbo].[ComputerState] as b ON a.ServiceName != b.ServiceName 
WHERE a.ServiceName IN ( 
     SELECT  top 1  [ServiceName] FROM [dbo].[ComputerState] 
);

获得随机数据的简单方法

;with tblA as (
select name,data,
row_number() over(partition by data order by newid()) rn
from A
)
select name,data
from tblA
where rn = 1

获得随机数据的简单方法

;with tblA as (
select name,data,
row_number() over(partition by data order by newid()) rn
from A
)
select name,data
from tblA
where rn = 1
他所拥有的唯一问题是,
rn=1
的行数将取决于
计数(不同数据)
,因此可能会产生两个以上的结果。要修复此问题,可以添加一个
selecttop2
子句,但此时的结果可能不是完全随机的,因为它将取决于SQL如何优化查询的顺序结果,这可能是一致的。要获得真正的随机数,请添加第二个随机行号,并将结果限制在其中的前2个



他所拥有的唯一问题是,
rn=1
的行数将取决于
计数(不同数据)
,因此可能会产生两个以上的结果。要修复此问题,可以添加一个
selecttop2
子句,但此时的结果可能不是完全随机的,因为它将取决于SQL如何优化查询的顺序结果,这可能是一致的。要获得真正的随机性,请添加第二个随机行号,并将结果限制在其中的前2个。

这是如何随机的?@develEnhante好的一点,我阅读了顶部部分,重点是简单地使用不同的
数据
值。如果必须是真正随机的,则此操作将不起作用。列“DATA”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。你知道这是什么吗?@dahund
数据
就在:
按数据分组
这是如何随机的?@develocate好的一点,我读了上面的部分,重点是简单地拥有不同的
数据
值。如果必须是真正随机的,则此操作将不起作用。列“DATA”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。你知道这是什么吗?@dahund
DATA
就在:
groupby DATA
中,如果代码不需要像HOME1 home2这样的静态条目,那就更好了你的rdbms是什么?Sql Server、Postgres、Oracle?这个问题应该属于代码高尔夫吗?如果代码不需要像HOME1 Home2这样的静态条目,那就更好了您的rdbms是什么?Sql Server、Postgres、Oracle?这个问题应该属于代码高尔夫吗?这是如何返回2个随机行的?@develinnate正确。。我已经用随机数据更新了答案。这将返回一行,其中包含两组值。这个问题要求两行中的值。这里的“内部联接表b”是指“内部联接表a”,因为它是同一个表=这里的“内部联接表b”是指与同一个表的内部联接。。确切地在sql中,表是表。。表是相同的还是不同的。。您可以像在条件中显式使用一样使用它们。。这如何返回2个随机行?@develinnate correct。。我已经用随机数据更新了答案。这将返回一行,其中包含两组值。这个问题要求两行中的值。这里的“内部联接表b”是指“内部联接表a”,因为它是同一个表=这里的“内部联接表b”是指与同一个表的内部联接。。确切地在sql中,表是表。。表是相同的还是不同的。。你可以像在条件中一样显式地使用它们。
这里不是rn@Igor No.请参阅
分区依据
假设OP有Sql Server。太棒了,谢谢@JuanCarlosOropeza-在我看来,由于OP提供的信息很少,所以你必须假设一些东西。如果OP想要一个特定于服务器的解决方案,他们应该在他们的问题中包含它。@Igor如果你认为你可能错了,我可能会用另一种方式来思考。所以不要浪费时间问错误的问题。最好询问细节。很明显OP是新用户,所以请教他如何提出更好的问题。这不是
rn@Igor No的位置。请参阅
分区依据
此假设OP有Sql Server。太棒了,谢谢@JuanCarlosOropeza-在我看来,由于OP提供的信息很少,所以你必须假设一些东西。如果OP想要一个特定于服务器的解决方案,他们应该在他们的问题中包含它。@Igor如果你认为你可能错了,我可能会用另一种方式来思考。所以不要浪费时间问错误的问题。最好询问细节。显然OP是新用户,所以教他如何提出更好的问题。