0

我的查询:

select  b.*,a.`USA`as fd_lat,b.`UK` as fd_lot  
from fdusa a 
join incident_uk b 
   on a.`FBI`=b.`FBI` 
   and b.STATE='MD' 
limit 0,5  

我有一个列名INC_KEY

当限制为 0,5 时。单个结果显示 5 次。显示相同的事件键。

如何将查询更改为剩余值的不同事件键。

4

2 回答 2

1

我怀疑那里的 JOIN 操作会产生多个类似的结果。如果你加入 2 张桌子

A   B
------
1   10
2   25
3   40


A   C 
------
1   x 
1   x
2   z

你会得到

A B C 
-------
1 10 x
1 10 x
2 25 z

一个快速的解决方法是在你的 SELECT 子句中使用 DISTINCT,即

SELECT DISTINCT b.*,a.`USA`as fd_lat,b.`UK` as fd_lot

如果这不适合您,您可以随时 GROUP BY 事件键并从那里获取它。

于 2013-01-22T13:20:46.450 回答
0

简单的答案是按其他键或可能随机对结果进行排序。将order by子句放在limit:

order by rand()

将它们按随机顺序排列。但是,不能保证它们会有所不同。

第二种方法是使用group by为不同的事件键获取不同的值。以下情况在 MySQL 中大部分时间都有效,但不能保证:

select  b.*,a.`USA`as fd_lat,b.`UK` as fd_lot  
from fdusa a 
join incident_uk b 
   on a.`FBI`=b.`FBI` 
   and b.STATE='MD'
group by inc_key
limit 0,5  

这将返回每个 inc_key 一行(因为group by)。其余列是从具有相同 inc_key 值的行中任意选择的。在实践中,似乎来自第一行,尽管文档明确指出这不能保证。也不能保证它们来自同一行。

于 2013-01-22T14:27:36.933 回答