【问题标题】:sql query with create command [duplicate]带有创建命令的sql查询[重复]
【发布时间】:2013-05-21 11:43:23
【问题描述】:

我在从另一个表创建表时遇到问题。 我正在使用查询:

CREATE TABLE new_table as ( SELECT Distinct * FROM old-table)

它给出了错误

Incorrect syntax near the keyword 'as'.

【问题讨论】:

    标签: sql sql-server-2008


    【解决方案1】:

    SELECT Distinct * INTO new_table 
    FROM old-table 
    GROUP BY whatever you want to group by

    编辑:您可以将行转换为具有可比性的 Varchar,或者您可以按您想要区分的列值进行分组。

    【讨论】:

    • 它给出的错误是:文本数据类型不能选择为 DISTINCT,因为它不可比较。
    • 而不是全部,对您的列 CAST(TEXT_COL AS VARCHAR(MAX)) 执行此操作
    • 如果您想保留所有数据,请在表格中进入“设计模式”,选择可比较的类型,例如 INT 或 VARCHAR 而不是 text 和 Group by列。
    【解决方案2】:

    你可以使用select ... into:

    select  distinct * 
    into    new_table
    from    old_table
    

    【讨论】:

    • 它给出的错误是:文本数据类型不能选择为 DISTINCT,因为它不可比较。
    • 但我需要不同的行
    • @smriti:您使用的是哪个版本的 SQL Server?可以添加old_table的列列表吗?
    【解决方案3】:

    要么

    SELECT ROW_NUMBER() OVER (yourcolumn) as Row,  * 
    INTO new_table 
    FROM old-table 
    
    DELETE FROM new_table where Row > 1
    

    SELECT ROW_NUMBER() OVER (yourcolumn) as Row,  * 
    INTO new_table 
    FROM old-table 
    WHERE Row = 1
    

    不能在 ntext 上区分。否则,首先使用 varchar 创建表,并添加一个唯一索引,忽略重复项并在插入时强制转换。如果超过您的列,您可能会丢失数据,但请注意。

    可以将 xml 转换为另一个表,然后根据需要进行过滤和操作,但我可能会推荐前两个。

    【讨论】:

    • 它在 (yourcolumn) 周围给出错误:')' 附近的语法不正确。
    • 你还能建议什么吗?
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2021-03-10
    相关资源
    最近更新 更多