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