Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql db:按id查找表名_Mysql_Sql_Database_Postgresql_Indexing - Fatal编程技术网

Mysql db:按id查找表名

Mysql db:按id查找表名,mysql,sql,database,postgresql,indexing,Mysql,Sql,Database,Postgresql,Indexing,是否可以通过id查找表名? 我有多个扩展另一个表的表,当我在“super”表中找到id时,我想知道该id在哪个子表中。 有一种索引方法可以做到这一点,还是另一种方法? 谢谢标签上写着mysql和postgresql。由于不清楚您想要哪一个,下面是针对mysql的解决方案 显然,只有在表中设置了外键时,才能执行此操作。例如,如果您有一个包含两个表的数据库dogs\u和\u people: dogs ------ id owner_id -- foreign key on people.id nam

是否可以通过id查找表名? 我有多个扩展另一个表的表,当我在“super”表中找到id时,我想知道该id在哪个子表中。 有一种索引方法可以做到这一点,还是另一种方法?
谢谢

标签上写着
mysql
postgresql
。由于不清楚您想要哪一个,下面是针对
mysql
的解决方案

显然,只有在表中设置了外键时,才能执行此操作。例如,如果您有一个包含两个表的数据库
dogs\u和\u people

dogs
------
id
owner_id -- foreign key on people.id
name

people
------
id
name
surname
如果您想知道
dogs.owner\u id
保留了哪些表和字段,您可以在
信息\u 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'

你的例子确实不清楚,但是

物品(物品、身份证) 新闻(id参考文章(id),更多内容) 课程(id参考文章(id),EvermoreStuff)

那么您正在使用文章中的id链接到新闻或课程,是否希望避免从新闻和课程中选择联合

1) 您当前的查询不包含此信息

2) 有几种方法可以做到这一点:

a) 您将数据模型更改为更通用的(文章、r_文章、新闻、r_文章、课程),并在此基础上确定

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;

除非您是动态创建这些表,否则我不认为选择任何类型的索引只是为了标识一个表有什么意义,您可以通过表名轻松地标识表。否则,如果我没有正确理解您的问题,您可能看起来像这样:从pg_stat_all_表中选择relid,relname,其中schemaname='YourSchema';为了解释这个问题,我可以写一个例子:我有一个名为article的表和两个名为news和courses的表。文章包含新闻和课程的常见信息以及id。文章id 1指id为1的新闻或课程。为了避免在两个表上都进行选择以查找id 1,我想知道直接在该表上进行查询的表名。