【问题标题】:MySQL - Why query with 'IN' fails?MySQL - 为什么使用“IN”查询失败?
【发布时间】:2010-10-08 19:57:06
【问题描述】:

这些查询返回正确的结果:

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

【问题讨论】:

  • SHOW FULL COLUMNS 查询的语法实际上是有效的吗?可能不是。
  • 这是来自手册:SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern']

标签: mysql error-handling


【解决方案1】:

也许这会给你你所追求的?

SELECT *
  FROM information_schema.columns
 WHERE table_name IN ('users', 'teachers')

【讨论】:

  • 哦,出现了一个 SQL 向导 :) +1 用于跳过提出的问题到真正重要的问题
【解决方案2】:

根据 MySQL 文档 (section 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 向导,但这里有一些。)

【讨论】:

  • @ Matchu - 谢谢。它是否记录在某处,IN 的含义与它通常的含义不同? (如果是这样,我看不出它有什么用处)
  • @Majid — 我认为这只是美学。 MySQL 中有很多地方某些关键字是等价的,只是因为有些人有不同的品味。 SHOW COLUMNS IN users 作为英文句子读起来肯定更好,但FROM 在 MySQL 中更常用。嗯。权衡取舍。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 2011-09-01
  • 2011-08-08
  • 2011-05-24
相关资源
最近更新 更多