sql:如何使用连接查询逐个获取值?

时间:2013-01-22 11:42:13

标签: 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_KEY

当限制为0.5时。单个结果显示5次。同样的事件关键是显示出来的。

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

2 个答案:

答案 0 :(得分: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事件密钥并从那里获取。

答案 1 :(得分: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值的行中任意选择的。在实践中,似乎来自第一行,尽管文档明确指出这不能保证。也不保证它们来自同一行。