可以通过ID查找表名吗? 我有多个表扩展另一个表,当我在“超级”表中找到id时,我想知道哪个子表是该id。 有一种方法可以使用索引来执行此操作或其他方式吗? 感谢
答案 0 :(得分:0)
标签说mysql
和postgresql
。由于不清楚您想要哪一个,这里是mysql
的解决方案。
显然,只有当你的表格设置了FOREIGN KEYS时才能这样做。例如,如果您有一个包含两个表的数据库dogs_and_peaople
:
dogs
------
id
owner_id -- foreign key on people.id
name
people
------
id
name
surname
如果您想了解dogs.owner_id
对哪个表和字段进行了重复,您可以查看information_schema
数据库,如下所示:
SELECT
REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM
information_schema.KEY_COLUMN_USAGE
WHERE
CONSTRAINT_SCHEMA = 'dogs_and_peaople' -- database name
AND TABLE_NAME = 'dogs'
AND COLUMN_NAME = 'owner_id'
答案 1 :(得分:0)
你的例子真的不清楚但是......
文章(东西,ID) 新闻(id引用文章(id),morestuff) 课程(id引用文章(id),evenmorestuff)
所以你使用文章中的id链接到新闻或课程,并希望避免从新闻和课程中选择联合?
1)您当前的查询不包含此信息
2)有几种方法可以做到这一点:
a)您将数据模型更改为更通用的内容(文章,r_article_news,新闻,r_article_courses,课程),并在此基础上确定
b)您在文章表中添加信息(添加一个名为type的列,您将在其中输入新闻或课程)
c)你使你的第一个查询稍微重一点,以自动确定SELECT a.*,b.type
FROM article a
INNER JOIN
(SELECT id,'news' AS type
FROM news
UNION
SELECT id,'courses' AS type
FROM courses) b
ON a.id=b.id;