AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[condition](dba)

Martin Hope
Nuala Carvill
Asked: 2021-02-15 09:09:38 +0800 CST

根据条件语句设置列值

  • 1

我想根据以下条件向新列添加值:如果 board_stage 小于 alight_stage 则 service_direction 等于 1,表示入站;如果不是,则 service_direction 等于 0,表示 Outbound。

我尝试过的代码如下。主要问题是它在 CASE 语句之前不断返回语法错误。我也玩过 WHERE 和 IF 语句。但是,这会在相同位置返回相同的语法错误,即就在条件语句之前。

有小费吗?非常感谢

ALTER TABLE smartcardtable
ADD service_direction boolean;

UPDATE smartcardtable
SET service_direction
CASE board_stage < alight_stage THEN service_direction = '1'
ELSE '0' END;
postgresql condition
  • 2 个回答
  • 828 Views
Martin Hope
TheLovelySausage
Asked: 2020-11-12 08:01:00 +0800 CST

发生后出现结果的 Where 子句

  • 2

我想知道是否有可能找到仅在第一次出现 where 子句之后出现的记录。我目前在此示例中使用 PostgreSQL,但首选不是 PostgreSQL 特定的东西。

例如,如果我有这样的表

drop table if exists dummy;
create table dummy (
   col_a   varchar(10),
   col_b   varchar(10),
   col_c   varchar(10),
   test    integer
);

insert into dummy values
('A', 'B', 'C', 1),
('B', 'C', 'A', 2),
('C', 'A', 'B', 3),
('D', 'E', 'F', 4);

如果我运行以下查询,我可以按新顺序获取数据

select * from dummy
order by col_b;

返回

C | A | B | 3
A | B | C | 1
B | C | A | 2
D | E | F | 4

是否可以做一些事情,以便我只能返回在某个 where 子句之后发生的行,例如

select * from dummy
/* where row appears after results 'A', 'B', 'C', 1 */
order by col_b;

要得到

B | C | A | 2
D | E | F | 4

更新

我不使用的原因where col_b > ?是因为它不适合重复值

在我需要匹配这样的附加列之前,它会起作用

select * from dummy
where col_b > 'B'
and col_c > 'C'
order by col_b;

在这种情况下,它将返回最后一行,因为这两个值都高于截止值,但在第一次出现指定行后它没有截止。

我试图有一个 where 子句可以识别特定行是行

A | B | C | 1

在这种情况下

where condition
  • 2 个回答
  • 57 Views
Martin Hope
Matias
Asked: 2020-07-09 05:55:24 +0800 CST

一句话返回满足条件的字段名和行数

  • 0

我在 postgres 中有一个包含 10 个字段的表,需要检查其中 3 个字段中的某些值,然后返回满足条件的字段名称和每个字段中的行数。

所以它是这样的:

select count(*)
from table
where field1 ilike '%E+%'
OR field2 ilike '%E+%'
OR field3 ilike '%E+%'

然后返回满足条件的字段和行数(我不知道该怎么做)

postgresql condition
  • 1 个回答
  • 28 Views
Martin Hope
learning
Asked: 2019-12-11 10:57:01 +0800 CST

在查询中使用 OR AND 的多个语句条件

  • -3

我有这个调查表,我正在尝试收集回答的用户 ID 的信息非常同意我正在尝试观察我的体重的问题,或者我喜欢喝黑咖啡,并且必须回答同意 或中立或强烈不同意 这些问题当最后期限临近时 ,我会茁壮成长,我只想尝试新事物。

UserId                QUESTION                               Answer
 1010            I am trying to watch my weight           Strongly Agree
 1120            I thrive when a deadline is close        Strongly Agree
 1120           I'm all about trying something new        Neutral
 2025            I'm all about trying something new       Agree
 3024            I love drinking Coffee Black             Strongly Disagree
 3024            I'm all about trying something new       Agree

我尝试编写的查询不断返回我没有编写的问题。这可能不是编写此类查询的最佳方式,但我正在学习如何正确编写这些查询。任何帮助,将不胜感激。

 SELECT userid_
  ,QUESTION 
  ,answer
   FROM [Survey_2019]]

Where QUESTION  = 'I'm trying to watch my weight'  AND
    Answer =  'Strongly agree'
  OR
      QUESTION    = 'I love drinking Coffee Black
  AND 
 Answer =  'Strongly agree'

AND 

 QUESTION= 'I thrive when a deadline is close'
  AND ANSWER= 'Agree' 
OR 'Neutral' OR 'Strongly Disagree'
sql-server condition
  • 2 个回答
  • 68 Views
Martin Hope
theprogrammer
Asked: 2018-12-18 07:50:14 +0800 CST

如何在 sql server 中使用 IN 子句,以便在没有为其列表参数提供任何内容的情况下选择所有内容?

  • 3

假设我有这样的 sql 查询

SELECT * FROM TABLE where country in ('USA', 'UK')

此查询按预期工作,它会选择 country 列为'USA'或的所有行'UK'。但是现在,如果我运行这个查询

SELECT * FROM TABLE where country IN ()

它是一个语法错误。所以我把它改成这样运行

SELECT * FROM TABLE where country IN ('')

我的目标是使用jdbcTemplate来Spring framework动态运行此 sql 查询。但是我不确定我的输入是什么。所以我希望能够通过'USA'or之类的国家,'UK'并且只获得与那些OR什么都不通过和 get相关的行ALL rows。那么我如何获得ALL rowsifnothing被传入IN clause?

sql-server condition
  • 3 个回答
  • 220 Views
Martin Hope
Alireza
Asked: 2017-05-25 01:47:25 +0800 CST

是否可以根据 mySQL 中的输入切换查询?

  • 1

有没有办法根据值切换查询?假设我有以下查询:

select pdate as 'Payment Date', ROUND(@sum_amount := @sum_amount + `amount`) AS 'Total Amount' from
(
select @sum_amount := 0, date(issue_date) pdate, sum(amount) amount from payments group by YEAR(date(issue_date))
) inner_tbl

我想根据用户输入更改查询间隔(每年、每月、每天)。像下面这样的东西:

SELECT CASE input WHEN 1 THEN **RUN YEARLY QUERY**
     WHEN 2 THEN **RUN MONTHLY QUERY** ELSE **RUN DAILY QUERY** END;
mysql condition
  • 1 个回答
  • 166 Views
Martin Hope
Michal N.
Asked: 2017-03-21 07:59:41 +0800 CST

如果记录不存在,则设置一个值

  • 2

我正在努力处理我在 PostgreSQL 中的声明。我有 3 个表:

tbl - flags (labeled as a)
a.email

tbl - accounts (labeled as b)
b.id
b.email

tbl - foo (labeled as c)
c.account_id
c.total

我的 sql 语句如下所示:

select a.email, sum(c.total)
from flags a, accounts b, foo c
where a.email = b.email and b.id = c.account_id

此声明有效,但可能有些帐户没有帐户或总金额。嗯,这个说法没有意义,因为里面有好几个a.emails,flags a没有任何c.total记录。还有几个b.emails在accounts b,他们在 没有任何记录c.total。

我想要的输出:email - sum(i.total)

foo@foo.com      5666
kjkj@kjaksd.com  882
hello@world.com  23122
mac@toast.com    0 -- mac@toast.com doesn’t have account or any total

那么是否可以检查帐户中是否存在与标志相比的记录?如果是,让我们提示 total amount 如果不是,让我们提示0。

postgresql condition
  • 2 个回答
  • 309 Views
Martin Hope
Slyx
Asked: 2014-07-05 06:11:17 +0800 CST

MYSQL 测试字符串字段包含另一个更改的字符串字段

  • 2

我有这张桌子:

mysql> desc mytab;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| id         | int(11)     | NO   | PRI | NULL    | auto_increment |
| value      | varchar(50) | YES  |     | NULL    |                |
| template   | varchar(50) | YES  |     | NULL    |                |
| difference | tinyint(1)  | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+

包含此示例数据:

mysql> select * from mytab;
+----+-------+----------------+------------+
| id | value | template       | difference |
+----+-------+----------------+------------+
|  1 | 7     | |2|5|7|8|9|12| |       NULL |
|  2 | 0     | |5|            |       NULL |
|  3 | 5     | |2|5|7|8|9|12| |       NULL |
+----+-------+----------------+------------+
3 rows in set (0.00 sec)

如果包含“|value|” ,我想将difference字段设置为 FALSE template如果不是,则为 TRUE。

所以结果是:

mysql> select * from mytab;
+----+-------+----------------+------------+
| id | value | template       | difference |
+----+-------+----------------+------------+
|  1 | 7     | |2|5|7|8|9|12| |       0    |
|  2 | 0     | |5|            |       1    |
|  3 | 5     | |2|5|7|8|9|12| |       0    |
+----+-------+----------------+------------+
3 rows in set (0.00 sec)
mysql condition
  • 1 个回答
  • 272 Views
Martin Hope
Battle_Slug
Asked: 2014-06-30 23:47:15 +0800 CST

甲骨文条件语句

  • 0

我正在做一份报告,我正在尝试做以下事情:如果该字段的值为 NULL,则输出空字符串。换句话说,我不需要向用户输出“null”这个词,只需要空字符串。是否可以编写这样的 SQL 查询?如何?我什至不知道如何为这种情况制定谷歌搜索请求,所以我很抱歉提出愚蠢的问题。

oracle condition
  • 2 个回答
  • 82 Views
Martin Hope
Herbiek
Asked: 2014-02-19 07:48:44 +0800 CST

无法根据条件选择生成表

  • 1

我想实现一些可能以某种条件选择(MS SQL)结束的东西,但我不知道如何实现。

我试图将我的问题简化为以下描述:

我有 3 个表:第一个包含文章(Art_number、Art_description 和 Productgroup),第二个包含客户(Cust_number 和 Cust_name),第三个表包含折扣信息(Cust_number、Productgroup 和 Discount_percentage)

表:文章

001,fork,cutlery
002,knife,cutlery
003,plate,tableware
004,cup,tableware

表:客户

1234,smith
5678,jones

表:折扣

1234,cutlery,0.9
1234,tableware,0.8
5678,cutlery,0.75
5678,tableware,0.7

我的问题是关于与第 4 个表的关系,该表包含一些(不是全部!)替代(与客户相关)名为 Cross_Ref 的文章编号,它通过包含文章编号和客户编号(Art_number、Alt_Art_Nr 和 Customer_Nr)链接前两个表

表:Cross_Ref

002,1002,1234
002,92002,5678
004,1004,1234
004,92004,5678

我想生成一个表格,在第一列中显示文章编号,在第二列中显示文章描述。第三列中的备选商品编号(如果有,否则为空)和第四列中的客户名称

上面的信息看起来应该是这样的:

001,fork,,smith
001,fork,,jones
002,knife,1002,smith
002,knife,92002,jones
003,plate,,smith
003,plate,,jones
004,cup,1004,smith
004,cup,92004,jones

我的查询目前看起来像这样:

SELECT Art_number, Art_description, Alt_Art_Nr, Cust_name
FROM Articles,
Customer,
Cross_Ref
WHERE Articles.Art_number = Cross_Ref.Art_number 
and Customer.Cust_number = Cross_Ref.Customer_Nr
and Customer.Cust_number = Discounts.Cust_number
and Articles.Productgroup = Discounts.Productgroup

这只显示那些确实有替代文章编号的行,但不显示没有在 Cross_Ref 表中提到的参考的文章。

原则上它是 4 个表的组合,由 3 个表完全连接,但第 4 个表只包含一些文章(有一个替代编号),因此在查询结果中只产生那些文章编号,而我会如果没有结果,喜欢查看所有商品编号和空 (NULL) 字段。

谁能告诉我一个如何存档的例子?

select condition
  • 2 个回答
  • 91 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve