1
fox 2014-04-22 23:01:18 +08:00
XRP这个功能不错……悬赏任务。。
|
2
explon 2014-04-22 23:45:08 +08:00 via iPhone
目前价值三块
|
3
aqqwiyth 2014-04-23 00:11:33 +08:00
-- 数据不大的情况,直接用or查询解决问题 or不走索引
SELECT bs.* from 比赛记录 bs INNER join ( -- 根据玩家获取团队id去重 SELECT DISTINCT(t.id) id from 团队 t INNER join ( -- 找出玩家与玩家好友的玩家id SELECT DISTINCT (a.id) id from 玩家 a left join 好友 b on a.`微博ID` = b.`好友微博ID` where b.玩家id = 1 or a.id =1 ) wj on t.玩家id = wj.id ) t on bs.赢家ID = t.id or bs.输家ID= t.id ORDER BY bs.id desc; -- ———————————— 使用 UNION合并来 优化 or 查询———————————————————— SELECT * from ( -- 获取赢了的比赛 SELECT bs.* from 比赛记录 bs INNER join ( -- 根据玩家获取团队id去重 SELECT DISTINCT(t.id) id from 团队 t INNER join ( -- 获取所有好友的id,UNION上这个玩家的id SELECT a.id from 玩家 a where exists(select 1 from 好友 b where b.玩家id= 1 and a.`微博ID` = b.`好友微博ID`) UNION select 1 ) wj on t.玩家id = wj.id ) t on bs.赢家ID = t.id UNION -- 输了的比赛 SELECT bs.* from 比赛记录 bs INNER join ( -- 根据玩家获取团队id去重 SELECT DISTINCT(t.id) id from 团队 t INNER join ( -- 获取所有好友的id,UNION上这个玩家的id SELECT a.id from 玩家 a where exists(select 1 from 好友 b where b.玩家id= 1 and a.`微博ID` = b.`好友微博ID`) UNION select 1 ) wj on t.玩家id = wj.id ) t on bs.输家ID = t.id ) 比赛记录 order by id desc 不弄了碎觉去了。。。 |
4
aqqwiyth 2014-04-23 00:13:34 +08:00
b.玩家id= 1 与
UNION select 1 1为玩家的ID 如果只查询好友的比赛 注释掉UNION select 1 即可 |