#mysql #sql
#mysql #sql
Вопрос:
Допустим, мы извлекаем данные таблицы из кода php.
1 — Без удаления и восстановления определенных строк из таблицы и,
2- Без наличия столбца « hidden
» (значения 0 или 1) и с использованием запроса SELECT ..... WHERE....AND hidden=0
Возможно ли временно «скрыть» некоторые строки?
Или каков наилучший способ сделать это?
Ответ №1:
Альтернативой было бы создать a VIEW
, который не включает ненужные строки; это может быть лучше, если требование имеет (полупостоянный) характер. Подробнее см. Здесь.
Комментарии:
1. в любом случае у меня должно быть другое имя для представления (не совпадающее с именем таблицы), верно? Затем нам нужно изменить запрос. Но, похоже, в любом случае мне нужно изменить запрос. Это может быть самым простым решением, поскольку нам нужно изменить только
SELECT FROM xxxxx
часть.
Ответ №2:
Как вы узнаете, какие строки вы хотите удалить? Например, если вы знаете идентификатор для каждой из строк, вы можете добавить исключение к своим запросам
AND id NOT IN (4,9,28)
Ответ №3:
Вы можете использовать WHERE id NOT IN
SELECT * FROM talName WHERE id NOT IN (1, 3)
---- --------- -----
| id | name | age |
---- --------- -----
| 2 | John | 23 |
| 4 | Mary | 21 |
| 5 | Michael | 26 |
---- --------- -----
Ответ №4:
Невозможно скрыть без удаления, поскольку метка для hidden уже выполнена (hidden = 1).
Хотя правильный способ — изменить первый запрос, поскольку вы не будете извлекать ненужные данные, вы можете:
- Запрос по запросу, добавление части ‘where hidden = 0’
- Фильтруйте данные внутри скрипта, который обрабатывает таблицу
- Добавьте представление в базу данных с предварительной фильтрацией (где hidden = 0)
- Отфильтруйте данные на клиенте (начните с того, что все скрыто, и с помощью jquery покажите, что вы хотите (хотя не рекомендуется в качестве решения)
Комментарии:
1. Я думаю, что спрашивающий говорит, что они не хотят использовать «скрытый» столбец, а не то, что он у них есть.
2. Я думал, что он не может изменить исходный запрос!
3. «… Без наличия столбца «скрытый» …» — таким образом, скрытого столбца нет.