【问题标题】:CREATE TABLE ... LIKE not workingCREATE TABLE ... LIKE 不工作
【发布时间】:2018-10-05 19:49:59
【问题描述】:

在尝试使用CREATE TABLE ... LIKE 创建表时需要帮助,代码如下,给出的错误是

关键字“LIKE”附近的语法不正确

CREATE TABLE jobserve_reports LIKE Jobserve

我尝试将LIKE 放在引号中,但没有成功,尝试使用花括号将其设为临时表,但没有任何效果。我束手无策。

【问题讨论】:

  • LIKE 和 Create Table 不能一起使用
  • 请指定您的数据库。
  • @apomene,你可以在mysql
  • 我认为 MySQL 和 Postgres(以及相关数据库)是唯一支持 create table . . . like 语法的数据库。
  • @HoneyBadger 有趣我不知道!!!

标签: sql create-table


【解决方案1】:

SQL Server,我们可以使用:

SELECT * 
INTO newtable 
FROM oldtable 
WHERE 1 = 0;

【讨论】:

  • 谢谢,这成功了。你知道为什么 LIKE 不起作用吗?
  • LIKE 运算符在 WHERE 子句中用于搜索列中的指定模式。你可以在这里找到更多细节 - docs.microsoft.com/en-us/sql/t-sql/language-elements/…
  • 此外,如果它解决了您的查询,您是否可以通过单击勾选按钮来接受此答案。谢谢。
【解决方案2】:

如果 LIKE 在您的数据库中不可用,您可以使用 create select

CREATE TABLE jobserve_reports AS 
select * from  Jobserve

或同等的

最终使用

CREATE TABLE jobserve_reports AS 
select * from  Jobserve
where 1 = 2 

没有结果

【讨论】:

  • @a_horse_with_no_name 正确.. 答案已更新。
【解决方案3】:

对于PostgresMS sql-serverOracle,请使用AS 关键字:

CREATE TABLE new_table
    AS SELECT * FROM old_table;

MySQL 中,您也可以使用AS 关键字,但它是可选的:

CREATE TABLE new_table
    AS SELECT * FROM old_table;

CREATE TABLE new_table
    SELECT * FROM old_table;

【讨论】:

  • 其实 Postgres 确实支持:create table foo (like bar)
  • @a_horse_with_no_name 嗯...你是对的,这也是支持的。直到一些新的东西。我一直用as
  • 它们有两种不同的用途。 create table as ... 根据查询结果创建表。 create table (like ..) 根据不同的表定义(包括约束和索引)创建表。加上create table as是标准SQL
  • 有意义的是,为不同的用例提供不同的选项
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多