Mysql sql:如何使用联接查询逐个获取值?
我的问题是:Mysql sql:如何使用联接查询逐个获取值?,mysql,sql,Mysql,Sql,我的问题是: 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\u KEY 当限制为0,5时。单个结果显示5次。显示相同的事件密钥 如何将查询更改为剩余值的不同事件键。我怀疑那里的联接操作产生了多个类似的结果。如果你加入两个表 A B ------
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\u KEY
当限制为0,5时。单个结果显示5次。显示相同的事件密钥
如何将查询更改为剩余值的不同事件键。我怀疑那里的联接操作产生了多个类似的结果。如果你加入两个表
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
如果这不适合您,您可以始终按事件密钥分组并从中获取 简单的答案是按其他键或随机键对结果进行排序。将
order by
子句置于限制之前:
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_键返回一行(因为group by
)。其余的列是从具有相同inc_key值的行中任意选择的。在实践中,虽然文档明确指出这是不保证的,但这似乎来自第一行。也不能保证它们来自同一行。您是否在寻找随机
键?