标签: select

如何从具有多行 DISTINCT 约束的 SELECT 创建 Sql 表?

我想从基于多行 DISTINCT 的 SELECT 语句创建一个表,但 PostgreSQL 不允许我这样做。

我需要创建一个表格,其中的元素之前是从另一个表格中选择的,并且它们都是唯一的。

这是我的尝试:

CREATE TABLE new_name AS (

   SELECT DISTINCT(table.field1, table.field2), table.field1, table.field2, 
   FROM ...
   WHERE ...

);
Run Code Online (Sandbox Code Playgroud)

如果我运行这个语句,PostgreSQL 会说:

错误:列“行”具有伪类型记录

我怎么能解决这个问题?

postgresql prepared-statement select

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

选择查询以检索具有空值的行

即使其中一个字段具有空值,我也需要从表中检索数据。下面是一个例子:

Select name, SUM(credit) as credit
From expenses
Where name like 'vendor0%'
and date like '2013%'
Group by name
Order by name asc
Run Code Online (Sandbox Code Playgroud)

此示例检索nameSUM(credit)只有当credit具有价值。name即使credit根本没有任何价值,我也需要从中检索所有内容。

这可能吗?

postgresql null aggregate select

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

如何对动态表列表执行查询?

我有一个名为( conntrack )的数据库,其中包含未知数量的表。我有一个静态表“tabidx”,其中有一列“日期”。

下表是静态的,其名称为 tabidx,提供对其他表的引用:

 tabidx (table):
 +------------+
 |    date    |
 +------------+
 | 2015-04-25 |
 | 2015-04-26 |
 | 2015-04-27 |
 | 2015-04-28 |
 | 2015-04-29 |
 +------------+
Run Code Online (Sandbox Code Playgroud)

以下是“tabidx”“date”中引用的表的示例:

2015-04-25 (table):                             
+---------------------------------------------+    
| time      | username | srcip      | scport  |    
+---------------------------------------------+    
| 19:20:00  | L001000  | 10.10.10.1 |  1304   |   
| 19:20:00  | L001001  | 10.10.10.2 |  1640   |    
| 19:20:01  | L001002  | 10.10.10.3 |  2001   |    
+---------------------------------------------+ 

2015-04-26 (table):                             
+---------------------------------------------+    
| time      | username | srcip      | …
Run Code Online (Sandbox Code Playgroud)

mysql php select

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

从 T 中选择行,使得 sum(T.quantity) 大于参数

TLDR:我需要一种方法来限制我的选择,以便只返回填充新订单所需的行。

嘿,我正在寻找一种更好的方法来查询下面的简化玩具表。现在我做了一个简单的选择,然后在 Python 中做一些额外的逻辑来处理完全或部分可填充的行。

id |name   | category |  price  | quantity
---+-------+----------+---------+---------
1  |Robby  | buy      | 45      | 4
2  |Blane  | buy      | 48      | 5
3  |Shawn  | buy      | 43      | 10
4  |Valva  | sell     | 62      | 9
5  |Chris  | buy      | 42      | 15
Run Code Online (Sandbox Code Playgroud)

如果我以 40 美元的价格插入一个新的卖单,数量 = 12

SELECT id, name, price, category
FROM my_table
WHERE price > 40 AND category = 'buy' 
ORDER BY price DESC;
Run Code Online (Sandbox Code Playgroud)

然后在 Python 中,我的逻辑看起来像这样: …

postgresql select

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

如何使用单个查询从不同服务器中选择数据?

我有挑战!我需要从 4 个不同服务器的 4 个不同表中进行选择。

例子:

Select * from server1.tableS1.sys.view
Select * from server2.tableS2.sys.view
Select * from server3.tableS3.sys.view
Select * from server4.tableS4.sys.view
Run Code Online (Sandbox Code Playgroud)

如何在同一个查询中进行选择?

sql-server select

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

postgresql 中的 ceil() 函数行为

在 postgresql 中使用 ceil() 时,我发现它有一些奇怪的行为,请参阅 SQL :

Select  
     *,
     ceil( (550*0.5)/100 ),
     ceil( (58*5)/100 ),
FROM
   XYZ
Run Code Online (Sandbox Code Playgroud)

如果我专注于 ceil 函数的输出,那就很奇怪了:

  • ceil( (550*0.5)/100 ) 返回 3 (将 2.75 转换为 3 )
  • ceil((58*5)/100 ) 返回 2 (将 2.9 转换为 2 )

如果第二条语句接近更大的整数 3 ,为什么它返回 2 ?

postgresql aggregate select

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

是否有充分的理由将列别名为完全相同的名称/大小写?

我继承了一些这样的代码:

SELECT
  Col_1,
  Col_2 Col_2,
  Col_3
...
Run Code Online (Sandbox Code Playgroud)

别名Col_2实际上有什么作用,还是完全没有必要?

select alias

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

Postgres 中有没有更简洁的方法来提取字符串的一部分?

我正在使用 Postgres 9.5。我有一个表,其中有一列记录 URL。有时 URL 具有查询字符串,有时则没有。我想提取 URL,减去任何查询字符串,所以我想出了:

select substring(url, 0, case position('?' in url) when 0 then length(url)+1 else position('?' in url) end) 
from article;
Run Code Online (Sandbox Code Playgroud)

这看起来有点罗嗦,我想知道是否有更简洁的方法来做到这一点。我的表列是类型TEXT

postgresql select string substring

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

如何获得每组第二高的值?

从表中获取第二高值已经解决了很多次,但我正在寻找每组中的第二高值。

鉴于此表:

+----+-----+
| A  |  10 |
| A  |  20 |
| A  |  35 |  <-- This record
| A  |  42 |
| B  |  12 |
| B  |  21 |  <-- This record
| B  |  33 |
| C  |  14 |
| C  |  23 |
| C  |  38 |
| C  |  41 |  <-- This record
| C  |  55 |
+----+-----+
Run Code Online (Sandbox Code Playgroud)

我想获得标记的行。
伪代码:

select col_a, penultimate(col_b) …
Run Code Online (Sandbox Code Playgroud)

postgresql select greatest-n-per-group max postgresql-9.6

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

按列 UNION,或以不同的顺序对 SELECT/JOIN 查询的两列进行排序

我有一个表 ,employee其中一列是last_name,它存储字符串。

使用 SELECT 查询,我试图获取last_name按字母顺序排序的列,作为一列,然后再次获取另一列,last_name这次按相反的字母顺序排序。

期望的结果看起来像

+-----------------+----------------+
| last name       | last name      |
+-----------------+----------------+
|  Apple          | Xylophone      |
+-----------------+----------------+
Run Code Online (Sandbox Code Playgroud)

我努力了

SELECT a.last_name, b.last_name
FROM employee A
LEFT JOIN employee B
ON a.last_name = b.last_name
ORDER BY a.last_name, b.last_name DESC;
Run Code Online (Sandbox Code Playgroud)

当然,这是行不通的,因为它按last_name按字母顺序对两列进行排序,甚至没有达到其他顺序条件,因为语法指定n仅当某些行在条件下相等时才使用条件n-1

在我的脑海里,我认为这就像

SELECT last_name 
FROM employee 
ORDER BY last_name;
Run Code Online (Sandbox Code Playgroud)

SELECT last_name 
FROM employee 
ORDER BY last_name DESC;
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将两者结合起来。当我联合这两个查询时,我得到了正确的数据,但它是以两列连接成一列的形式,当我需要两列保持不同时。

我在这里尝试使用 JOIN,这完全是在黑暗中进行的,因为我从未见过这样的语法:

(SELECT a.last_name 
FROM employee a 
ORDER …
Run Code Online (Sandbox Code Playgroud)

mysql order-by select

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