有什么方法可以检查是否有一个表具有我想要的mysql字段名?

时间:2018-12-04 12:46:58

标签: mysql sql

  1. 我大约有200个单词用作字段名称。
  2. 如果找到具有这些单词作为字段名称的表,则不必创建新表。
  3. 但是,如果找不到具有这些单词作为字段名称的表,我就必须创建一个新表。

请帮助我找到一种方法来检查是否存在以这些单词作为字段名称的表。

我在这里找到下面的代码

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME 
IN ('lNum','rNum', 'tTime') AND TABLE_SCHEMA='summary';

但是此代码对我没有帮助,因为它与列表中的其中一个匹配。

谢谢

1 个答案:

答案 0 :(得分:0)

这不是您问题的直接答案,但评论太久了。

通常,可以通过使用单独的表来解决此类问题,一个表引用要保存的属性,另一个表保存值。这样,您可以在列表中动态添加和删除属性。当然,拥有200个可能导致庞大的表,但是您仍然可以将它们分成不同的表,这些表可以在第三个表中引用。

一个例子:

引用属性的表(id对应于第二个表中的类型)

----------------------------
| id | name  | description |
----------------------------
| 0  | prop0 | bla         |
| 1  | prop1 | blabla      |
| 2  | prop2 | blablabla   |
----------------------------

存储值的表:

---------------------------------------------------
| id | type | test | value                        |
---------------------------------------------------
| 0  | 1    | 0    | one prop1 val for test 0     |
| 1  | 2    | 0    | one prop2 val for test 0     |
| 2  | 2    | 1    | another prop2 val for test 1 |
---------------------------------------------------

另一个将不同表中的集合分开的示例

引用其他表的表:

-----------------------------------------------
| id | name   | propertiesTable | description |
-----------------------------------------------
| 0  | table0 | prop0           | bla         |
| 1  | table1 | prop1           | blabla      |
| 2  | table2 | prop2           | blablabla   |
-----------------------------------------------

对应于第一行的表:

prop0:                          table0
----------------------------    ---------------------------------
| id | name  | description |    | id | type | value             |
----------------------------    ---------------------------------
| 0  | prop0 | bla         |    | 0  | 1    | one prop1 val     |
| 1  | prop1 | blabla      |    | 1  | 2    | one prop2 val     |
| 2  | prop2 | blablabla   |    | 2  | 2    | another prop2 val |
----------------------------    ---------------------------------

当然,如果您已经用表编写了很多未引用的代码,则可以使用Raymond Nijland的注释解决方案,但这会通过添加200个条件而导致大量请求。

介于2之间的另一种解决方案是像在我的第二个示例中一样,引用另一个表中的所有表,并使用一个字段,该字段按字母顺序存储所有列,例如column1;column2;column3。这样,您可以在一个简短的请求中测试是否有一个表,其中包含您所有具有完全比较的字段。

可能还会出现其他具有此概念的组合,这些组合可以更好地满足您的目的,如果您了解一般方法,则可以对其进行调整。

祝你好运!