1. 程式人生 > 實用技巧 >資料庫多表查詢

資料庫多表查詢

  1. 匯入檔案後,新增白龍馬,小龍女,白骨精等遊戲角色

  2. 查詢出每個人打怪最多的一天,並顯示名字,時間,打怪數量。
    SELECT a.user_name,b.timestr,kills
    FROM player a
    JOIN player_kills b ON a.id = b.player_id
    WHERE (b.player_id,b.kills) IN (SELECT player_id,MAX(kills) FROM player_kills GROUP BY player_id);

  3. 查詢出同時具有變化和唸經這兩項技能的人。
    SELECT a.user_name,b.skill,c.skill

    FROM player a
    JOIN player_skills b ON a.id = b.player_id
    JOIN player_skills c ON c.player_id = b.player_id
    WHERE b.skill=‘唸經’ AND c.skill=‘變化’ AND b.skill_level >0 AND c.skill_level>0;

  4. 顯示有同時具有"唸經,變化,騰雲"技能的人。
    SELECT a.user_name,b.skill,c.skill,d.skill
    FROM player a
    JOIN player_skills b ON a.id = b.player_id

    JOIN player_skills c ON c.player_id = b.player_id
    JOIN player_skills d ON d.player_id = b.player_id
    WHERE b.skill=‘唸經’ AND c.skill=‘變化’ AND d.skill=‘騰雲’ AND b.skill_level >0 AND c.skill_level>0 AND d.skill_level>0;

  5. 具有4項技能裡的兩項以上的人。(唸經, 變化, 騰雲, 必殺技)
    SELECT a.user_name,b.skill,c.skill,d.skill,e.skill

    FROM player a
    LEFT JOIN player_skills b ON a.id = b.player_id AND b.skill=‘唸經’ AND b.skill_level >0
    LEFT JOIN player_skills c ON a.id = c.player_id AND c.skill=‘變化’ AND c.skill_level >0
    LEFT JOIN player_skills d ON a.id = d.player_id AND c.skill=‘騰雲’ AND d.skill_level >0
    LEFT JOIN player_skills e ON a.id = e.player_id AND e.skill=‘浮水’ AND e.skill_level >0
    WHERE (CASE WHEN b.skill IS NOT NULL THEN 1 ELSE 0 END)
    +(CASE WHEN c.skill IS NOT NULL THEN 1 ELSE 0 END)
    +(CASE WHEN d.skill IS NOT NULL THEN 1 ELSE 0 END)
    +(CASE WHEN e.skill IS NOT NULL THEN 1 ELSE 0 END) >= 2;

  6. 查詢出每個人3級以上的技能(分組查詢)。(人名、技能名、技能等級)
    SELECT a.user_name
    FROM player a
    JOIN player_skills b on a.id = b.player_id
    WHERE b.skill in (‘唸經’,‘變化’,‘騰雲’,‘浮水’) and b.skill_level>0
    GROUP BY a.user_name HAVING COUNT(*)>=2;

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述