检查一个表的ID是否用作另一个表的外键

时间:2013-09-09 22:40:42

标签: php mysql sql

我有一个有两个表的mysql数据库:

  

游戏(身份证,姓名)

     

TICKET(ID,GameID,Section ...)

Game.ID是GAME中的主键,GameID在TICKET表中用作外键,以了解它所属的游戏。

我有sql语句:

  

SELECT * FROM GAME ORDER BY Date

它返回GAME表中的所有游戏记录。我想要一个只返回游戏记录的sql语句,如果至少有1条记录在TICKET表中使用它作为外键,那么只给我一些有票的游戏。

我已经尝试将这些表连接起来并以这种方式进行检查,但我的sql还没有。

提前感谢您提供的任何帮助。

4 个答案:

答案 0 :(得分:2)

SELECT * FROM GAME
JOIN TICKET ON GAME.ID = TICKET.GameID
GROUP BY Game.ID
ORDER BY Date

答案 1 :(得分:2)

select * from game g inner join ticket t on g.id = t.game_id

每张票将返回一行(一张游戏的5张票将在此处变为5行)...使用“内部联接”作为过滤器。

我怀疑你正在寻找更像

的东西
Select * from game where id in (select game_id from ticket group by game_id)

无论门票数量多少,每场比赛都会有一行。

答案 2 :(得分:2)

让我们变得花哨

SELECT * FROM GAME G
WHERE EXISTS
    (
    SELECT 1
    FROM TICKET T
    WHERE G.ID = T.GameID
    )

答案 3 :(得分:0)

SELECT * FROM GAME ,TICKET   where TICKET.GameID  = GAME.ID ORDER BY Date