标签: sql

如何使用SQLAlchemy获取与3元组条件列表匹配的行

有一个3元组的列表:

[(a, b, c), (d, e, f)]
Run Code Online (Sandbox Code Playgroud)

我想从一个表中检索所有行,其中3列与元组匹配.对于这个例子,查询WHERE子句可能是这样的:

   (column_X = a AND column_Y = b AND column_Z = c)
OR (column_X = d AND column_Y = e AND column_Z = f)
Run Code Online (Sandbox Code Playgroud)

如何使用SQLAlchemy创建这样的请求?在我的例子中,3元组列表将包含数百个元素,我正在寻找最好的可扩展解决方案.

谢谢你的帮助,

python sql sqlalchemy

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

单个查询中的多个SQL Update语句

我处于这样一种情况,即我必须在我的数据库中更新大约12,000个项目.每行都需要镜像我之前创建的excel文件.我创建了创建每行SQL语句的文件,但我不确定是否可以在单个查询中运行每一行.

这是我想要做的一个例子.

UPDATE [STORESQL].[dbo].[RPT_ITM_D] SET F1301='1.29' WHERE F01='0000000000001'
UPDATE [STORESQL].[dbo].[RPT_ITM_D] SET F1301='1.39' WHERE F01='0000000000002'
Run Code Online (Sandbox Code Playgroud)

这会起作用,还是有更好的选择来实现我想要实现的目标?

每个项目都有一个唯一值,要更改的列也将具有唯一值.我不知道如何用循环或我到目前为止找到的任何其他方法来完成这项工作.我意识到这可能需要很长时间才能完成,但时间不是问题.

先感谢您

sql sql-update

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

Rails - 一个模型上的两个外键都指向相同的模型

我是ActiveRecord协会的新手.我正在草拟一个应用程序,该应用程序可以跟踪在一组用户中欠谁的钱.一个Expense模型和User模型似乎是自然的选择,我只是不知道如何界定两者之间的关系.例如,我想跟踪债权人("所有者")和每笔费用的债务人,但这实际上只是两个返回用户的外键.此外,每个用户可以有多种费用(作为债权人和债务人)我迄今为止对协会的最佳猜测是:

class Expense
    # belongs_to or has_one here?
    # Not sure about class => User syntax:
    # need to alias to foreign keys that reference the same model
    belongs_to :creditor, :class => User 
    belongs_to :debtor, :class => User

class User
    # has_many expenses defines a creditor relationship (user owns expense)
    # how to define debtor relationship? (belongs_to...?)
    has_and_belongs_to_many :expenses
Run Code Online (Sandbox Code Playgroud)

我已经阅读了关于关联的Rails指南,但我仍然在外键和连接表上相当丢失.任何输入都非常感谢!

sql activerecord ruby-on-rails

11
推荐指数
2
解决办法
8772
查看次数

过滤all_views上的"文本"列

有什么办法可以过滤oracle的all_views表上的文本列吗?

例如:

SELECT * 
  FROM ALL_VIEWS 
  WHERE UPPER(TEXT) LIKE '%FOO%';
Run Code Online (Sandbox Code Playgroud)

例外:

ORA-00932: inconsistent datatypes: expected NUMBER got LONG
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
Run Code Online (Sandbox Code Playgroud)

编辑:

DESC ALL_VIEWS
Name             Null     Type           
---------------- -------- -------------- 
OWNER            NOT NULL VARCHAR2(30)   
VIEW_NAME        NOT NULL VARCHAR2(30)   
TEXT_LENGTH               NUMBER         
TEXT                      LONG()         
TYPE_TEXT_LENGTH          NUMBER         
TYPE_TEXT                 VARCHAR2(4000) 
OID_TEXT_LENGTH           NUMBER         
OID_TEXT                  VARCHAR2(4000) 
VIEW_TYPE_OWNER           VARCHAR2(30)   
VIEW_TYPE                 VARCHAR2(30)   
SUPERVIEW_NAME            VARCHAR2(30)   
Run Code Online (Sandbox Code Playgroud)

sql oracle views oracle9i ora-00932

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

用于SQL Server中电子邮件地址的NVARCHAR(?)

对于电子邮件地址,我应该为SQL Server中的列提供多少空间.

我在维基百科上找到了这个定义:

http://en.wikipedia.org/wiki/Email_address

电子邮件地址的格式是local-part @ domain,其中local-part长度最多为64个字符,域名最多可以包含253个字符 - 但前向或反向路径的最大256个字符长度限制了整个电子邮件地址不超过254个字符

还有这个:

http://askville.amazon.com/maximum-length-allowed-email-address/AnswerViewer.do?requestId=1166932

因此,目前,电子邮件地址允许的总字符数为64(本地部分)+ 1("@"符号)+ 255(域部分)= 320

将来他们可能会将本地部分限制增加到128个字符.这将使总共384个字符.

有什么想法吗?

sql sql-server email nvarchar sql-server-2008-r2

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

如何使用默认值修改列的数据类型

我正在尝试将SQL Server中列的数据类型从tinyint更改为smallint.

但是我的列上有一个默认值,我不知道约束的名称.

有一个简单的方法吗?

由于默认约束,这不起作用:

ALTER TABLE mytable
Alter Column myColumn smallint NOT NULL default 1
Run Code Online (Sandbox Code Playgroud)

sql sql-server default-value alter

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

在Select中组合两个表(SQL Server 2008)

我知道这可能是非常基本的,但我必须在他们在学校教这个时睡觉:)

如果我有两个表,例如:

表1(产品)

id
name
price
agentid
Run Code Online (Sandbox Code Playgroud)

表2(代理人)

userid
name
email
Run Code Online (Sandbox Code Playgroud)

如何从包含代理名称和电子邮件的产品中获取结果集,这意味着 products.agentid = agent.userid

谢谢你的快速答案,但我忘记了SELECT WHERE price < 100.我如何加入例如products.agentid = agent.userid

sql sql-server select

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

使用XML PATH时的额外字符

我有一个名为Map_Data的表,数据如下:

 ID    SoCol                                                              Descol  
 125   case Per_rating when 5 then 'Good' when 4 then 'Ok' else null end  D_Code
Run Code Online (Sandbox Code Playgroud)

我在这个特定的行上写了一个查询,查询是:

SELECT  Params = ( SELECT   DesCol + ' = ''' + SoCol + ''''
                   FROM     dbo.Map_Data  t1
                   WHERE   ID = 125
                   FOR
                   XML PATH('')
                 )
Run Code Online (Sandbox Code Playgroud)

我得到的输出为:

D_Code = 'case per_rating&#x0D; when 5 then 'Good'&#x0D; when 4&#x0D; then 'Ok'&#x0D; end'
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么我得到'&#x0D;'它,我怎么能纠正它?

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

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

oracle数据库中的解码函数

任何人都可以从Oracle DB中解释以下SQL语句:

select decode(TRIM(to_char(SYSDATE,'Day')),'Monday','3','1') from dual
Run Code Online (Sandbox Code Playgroud)

sql oracle

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

NHibernate不一致的sql列别名

当从NHibernate查看我们的查询时,很明显列别名不一致,当sql server执行计划由于列别名不一致而看到与不同查询相同的查询时性能问题.

一个例子可能是这样的:

SELECT this_.Id as Id44_0_ FROM dbo.[Foos] this_

SELECT this_.Id as Id43_0_ FROM dbo.[Foos] this_
Run Code Online (Sandbox Code Playgroud)

我们有什么办法可以制作一致的列别名吗?

我们正在使用Fluent NHibernate和Auto mapping

sql nhibernate fluent-nhibernate

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