Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
Mysql sql:如何使用联接查询逐个获取值?_Mysql_Sql - Fatal编程技术网

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值的行中任意选择的。在实践中,虽然文档明确指出这是不保证的,但这似乎来自第一行。也不能保证它们来自同一行。

您是否在寻找
随机
键?