相关疑难解决方法(0)

SQL选择全部并更改一列的格式

我在想.如果我有一个包含20个(或更多)列名的表,并且我想选择所有这些列,但是这20列中的一列是日期列,并且您想要更改该列的格式,您将如何进行那?这显然不起作用(创建重复的列)

Select *, CONVERT(varchar(100),courseStartDate,111) from EthicsManagement
Run Code Online (Sandbox Code Playgroud)

这是为了避免编写一个select语句,单独选择所有20列并使用该语句转换其中一列

  Select xxxx,xxx,xxx,xxx,xx,xx,xxx,xxx,xx,xx,xxx,xxx,xx, CONVERT(varchar(100),courseStartDate,111) from xxx
Run Code Online (Sandbox Code Playgroud)

sql select casting

6
推荐指数
1
解决办法
8373
查看次数

根据列删除配置单元中的DUPLICATE行

我有一个包含10列的HIVE表,其中前9列将具有重复行,而第10列不会像CREATE_DATE那样具有创建日期.

例:

如果我今天在表中插入10行,它将把CREATE_DATE作为今天的日期..如果我明天再次插入相同的10行,它将有一个不同的CREATE_DATE,这会产生我使用DISTINCT的问题.

有没有办法根据9列删除重复记录而忽略第10列.

示例:让我们考虑表中有5列.这是由DAYID和MARKETID划分的外部HIVE表.每当除CREATEDATE之外的列(由第1行和第2行引用)相同或者如果行是重复的(如第3行和第4行所引用),它应该保留这些行中的任何一行.它保留哪个并不重要.

COL1 COL2 CREATEDATE   DAYID    MARKETID  
A     1    20131206   20131207 1234  
A     1    20131207   20131207 1234  
A     1    20131206   20131207 1234  
B     1    20131206   20131207 1234  
B     1    20131206   20131207 1234  
C     2    20131206   20131207 1234  
C     2    20131207   20131207 5678 
Run Code Online (Sandbox Code Playgroud)

输出---

COL1 COL2 CREATEDATE   DAYID    MARKETID
A     1    20131206   20131207   1234
B     1    20131206   20131207   1234
C     2    20131206   20131207   1234
C     2    20131207   20131207   5678
Run Code Online (Sandbox Code Playgroud)

谢谢Nates

hive

6
推荐指数
1
解决办法
3万
查看次数

在SELECT*中只使用一次连接列

假设:

WITH t12 AS (SELECT * FROM t1 INNER JOIN t2 ON (t1.id = t2.id))
SELECT * FROM t12
Run Code Online (Sandbox Code Playgroud)

这将失败:

The column 'id' was specified multiple times for 't12'.
Run Code Online (Sandbox Code Playgroud)

现在这是一个大型查询,t1并且t2有很多(+200)列.我不是要列出所有内容:我明确要使用*.

通常我会用这个USING (id)子句解决这个问题,但是SQL Server似乎不支持这个.有任何想法吗?

其他选项是在没有WITH子句的情况下工作- 这有效但使代码的可读性降低.

SO上有很多答案可以列出所有字段.在WITH子句和纯SQL中,这是一个明确的问题.这里此处的 "排除字段" 和视图之一的相关问题要求非ANSI SQL功能.这个问题是针对纯SQL的,如果SQL Server支持ANSI SQL-92语法,则可能(据我所知).

sql sql-server

6
推荐指数
1
解决办法
142
查看次数

table.*<> table.* - 有没有办法做这样的事情?

我有一张桌子,设计非常糟糕(不是我感谢),它以类似于以下的方式存储数据:

[key],[lease_id],[building_name],~20多列数据

对于中心和总部,可以并且将存在lease_id.我被要求找到所有实例,其中建筑物中的租赁数据与总部的数据不匹配相同的租约.

我可以通过自我加入很容易地做到这一点.这里的挑战是有大约20列可供比较,虽然我可以手动输入每一列我想知道是否有更好的方法来做到这一点(这也意味着查询可以在将来使用,考虑到任何表更改).

在语法上荒谬的伪代码 - 我想做一些类似于下面的工作:

select  lp.*
from    lease_proposal lp
        inner join
        (
            select  *
            from    lease_proposal lp2
            where   building_id = '001' -- assume 001 is head office for sake of example
        ) lp2
            on lp2.lease_id = lp.lease_id
where   lp.* <> lp2.*
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008

5
推荐指数
1
解决办法
696
查看次数

SQL SELECT*FROM tbl(隐藏1列)

我正在尝试这样做SELECT * FROM tbl,但是在20列中,我不希望选择1个特定列.有没有动态的方法呢?只是讨厌在查询中指定19列!

mysql sql sql-server select

4
推荐指数
1
解决办法
3万
查看次数

如何从结果中排除一列?

我有一个带有列的表格

a,b,c,d,e,f,g,...,z
Run Code Online (Sandbox Code Playgroud)

是否可以编写一个简单的查询来提供所有列,除非a手动指定所有其他列?

相当于:

Select b,c,d,e,f,g,h,...z
from TableG
Run Code Online (Sandbox Code Playgroud)

sql postgresql

3
推荐指数
1
解决办法
2万
查看次数

BigQuery select*除了两列

我想从公共BigQuery github_repos数据集中选择一切,除了两个记录:author.name difference.old_mode.根据我提出的类似问题,我想我想运行类似的查询

#standardSQL
SELECT * REPLACE ((SELECT AS STRUCT author.* EXCEPT (name)) AS author), 
REPLACE ((SELECT AS STRUCT difference.* EXCEPT (old_mode)) AS difference)
FROM `bigquery-public-data.github_repos.commits`
LIMIT 1000;
Run Code Online (Sandbox Code Playgroud)

如果我运行作者排除,它运作良好:

#standardSQL
SELECT * REPLACE ((SELECT AS STRUCT author.* EXCEPT (name)) AS author)
FROM `bigquery-public-data.github_repos.commits`
LIMIT 1000;
Run Code Online (Sandbox Code Playgroud)

但是,差异排除有一个错误:

#standardSQL
SELECT * REPLACE ((SELECT AS STRUCT difference.* EXCEPT (old_mode)) AS difference)
FROM `bigquery-public-data.github_repos.commits`
LIMIT 1000;
Run Code Online (Sandbox Code Playgroud)

错误:

Dot-star is not supported for type ARRAY<STRUCT<old_mode INT64, new_mode INT64, old_path STRING, ...>> at [2:41]
Run Code Online (Sandbox Code Playgroud)

谢谢. …

sql google-bigquery

2
推荐指数
1
解决办法
2308
查看次数

是否可以使用查询来选择除少数列之外的所有coumns?

可能重复:
SQL使用SELECT*[除了columnA] FROM tableA排除列?

大家好

我正在使用Mysql.

我正在寻找,是否可以使用查询来选择除少数列之外的所有coumns?

mysql sql database select

1
推荐指数
1
解决办法
4328
查看次数

如果表的列数超过100,如何从表中选择某些特定列

我需要从我的表中的107列中选择90列.

是否可以编写select * except( column1,column2,..) from table或以任何其他方式获取特定列,或者我需要在select语句中写入所有90列?

sql t-sql sql-server sql-server-2005 sql-server-2008

1
推荐指数
1
解决办法
2万
查看次数

从SQL Server中的结果中排除特定列

可能重复:
SQL使用SELECT*[除了columnA] FROM tableA排除列?

我有以下查询,我想RowNum从结果中排除列,我该怎么办?

SELECT  *
FROM    
   (SELECT    
       ROW_NUMBER() OVER ( ORDER BY [Report].[dbo].[Reflow].ReflowID ) AS RowNum, *
    FROM      
       [Report].[dbo].[Reflow]
    WHERE     
       [Report].[dbo].[Reflow].ReflowProcessID = 2) AS RowConstrainedResult
WHERE   
   RowNum >= 100 AND RowNum < 120
ORDER BY 
   RowNum
Run Code Online (Sandbox Code Playgroud)

谢谢.

sql sql-server

1
推荐指数
1
解决办法
2327
查看次数