MySQL - почему запрос с 'IN' не выполняется?

0

Эти запросы возвращают правильные результаты:

SHOW FULL COLUMNS FROM `users`
SHOW FULL COLUMNS FROM `teachers`

Но это порождает ошибку

SHOW FULL COLUMNS IN  ('users', 'teachers')

Я пробовал одинарную цитату, двойную кавычку, обратную цитату и никакую цитату, и все не удается. Что я делаю неправильно?

Ошибка:

#1064 - You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right 
syntax to use near '('users', 'teachers')' at line 1
  • 0
    Это действительно правильный синтаксис для запроса SHOW FULL COLUMNS ? Это не может быть.
  • 0
    Это из руководства: SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern']
Теги:
error-handling

2 ответа

5
Лучший ответ

Возможно, это дает вам то, что вам нужно?

SELECT *
  FROM information_schema.columns
 WHERE table_name IN ('users', 'teachers')
  • 2
    Ох, появился мастер SQL :) +1 за пропуск пропущенного вопроса к тому, который действительно имеет значение
2

В соответствии с документами MySQL (раздел 12.4.5.5), вы можете использовать ключевое слово IN вместо FROM, но оно не имеет того же значения, что и в предложении WHERE; это просто синоним FROM в этом контексте.

SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern']

{FROM | IN} означает, что они взаимозаменяемы. Тот факт, что он не говорит что-то вроде {FROM tbl_name | IN (tbl_name1, tbl_name2, ...)}, означает, что между ними нет никакой разницы.

Я не уверен, что показывать более одного столбца таблицы можно в одном простом запросе. Может быть, подзапросы будут делать трюк? (Не мастер SQL, но есть некоторые здесь.)

  • 0
    @ Matchu - Спасибо. Задокументировано ли где-нибудь, что значение IN здесь отличается от его обычного значения? (если так, я не вижу, какое это может быть использование)
  • 1
    @ Маджид - я думаю, что это просто эстетика. В MySQL есть ряд мест, где определенные ключевые слова эквивалентны, просто потому, что у некоторых людей разные вкусы. SHOW COLUMNS IN users определенно читают лучше как английское предложение, но FROM чаще используется в MySQL. Мех. Компромиссы.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню