这个问题以前有人问过,但从来没有真正回答过(至少我想这样做)。我的数据库中有三个表,threads
、responses
和 votes
。我只需要他们共享 id
字段。所以我可以做类似的事情
SELECT * FROM threads AS t JOIN responses AS r JOIN votes AS v
WHERE id = 15
并且只会检索线程响应或(不包括)id = 15 的投票记录。
有没有一种方法可以在不创建额外表的情况下做到这一点?我不是问这是否是个好主意(可能不是),而是问是否可能以及如何去做。
最佳答案
如果我理解正确,你想获取线程、响应或使用 id = 5 进行投票。在 MySQL 中没有机会跨表提供 id 字段唯一性(即防止创建响应和使用相同的 id 值进行投票) ,但您可以在您的应用中执行此操作。
您可以通过这种方式获取所需的行:
SELECT id, name, 'thread' AS `type` FROM threads WHERE id=5
UNION
SELECT id, name, 'response' AS `type` FROM responses WHERE id=5
UNION
SELECT id, name, 'vote' AS `type` FROM votes WHERE id=5
关于mysql - MySQL中如何让多个表共享id列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8474022/