我的查询:
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 次。显示相同的事件键。
如何将查询更改为剩余值的不同事件键。
我怀疑那里的 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 事件键并从那里获取它。
简单的答案是按其他键或可能随机对结果进行排序。将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 值的行中任意选择的。在实践中,似乎来自第一行,尽管文档明确指出这不能保证。也不能保证它们来自同一行。