Есть ли способ проверить, есть ли таблица с именами полей, которые я хочу в MySQL? - PullRequest
0 голосов
/ 04 декабря 2018
  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 голосов
/ 05 декабря 2018

Это не прямой ответ на ваш вопрос, но это было слишком долго для комментария.

Обычно проблема такого рода решается с помощью отдельных таблиц, одна из которых ссылается на свойства, которые вы хотите сохранить, идругой, который сохраняет значения.Таким образом, вы можете динамически добавлять и удалять свойства в списке.Конечно, наличие 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 условий.

Другое решение, которое находится между двумя, состоит в том, чтобы ссылаться на все ваши таблицы в другой таблице, как во втором моем примере, с полемкоторый хранит конкатенацию в алфавитном порядке всех ваших столбцов, что-то вроде column1;column2;column3.Таким образом, вы можете протестировать в одном коротком запросе, если есть таблица, в которой есть все ваши поля для сравнения.

Возможны и другие комбинации с этой концепцией, которые лучше подходят для ваших целей, вы можете адаптировать ее, еслиВы понимаете общий метод.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...