我有一个数据库驱动的常见问题解答,它被组织成各个部分,我试图只获得那些与他们有问题/答案的部分的部分数据.
这是架构:
|---------------------| |----------------------|
| Section | | Quest-Ans |
|---------------------| |----------------------|
| PK | id(int) |<--| | PK | id(int) |
| | title(varchar) | |--| FK | Sec_id(int) |
| | desc(text) | | | body(text) |
|---------------------| |----------------------|
Run Code Online (Sandbox Code Playgroud)
当我尝试这个查询时:
SELECT DISTINCT s.id, s.title, s.desc
FROM Section as s INNER JOIN Quest-Ans as q ON s.id = q.Sec_id
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,说DISCRETE无法应用于文本字段.我怎样才能获得我想要的数据?
如果重要,这是一个SQL2000数据库.
编辑:
好的,所以似乎有两种方法可以解决这个问题.使用EXISTS和where子句中的子查询,或者使用内部联接中的子查询.哪个更快?
我需要从SQL Server数据库(SQL Server 2000)获取日期,日期存储如下:
2009-09-30 00:00:00.000
Run Code Online (Sandbox Code Playgroud)
我想将此日期传递给Classic ASP函数,以便在其他地方的数据库中使用此日期,但是当我得到日期时,它会将我的ASP代码转换为依赖于语言环境的版本,例如:
30/09/2009
Run Code Online (Sandbox Code Playgroud)
我只是希望日期原样格式化日期,所以它再次正确似乎是不必要的,虽然如果这是唯一的方法那么好 - 是否有任何方式将其视为字符串数据所以它保持这样,所以它可以插入以相同的日期返回数据库,无需转换?
是否有更多推荐的方法来确定触发器中的命令类型然后测试DELETED和INSERTED表?
目前我的方法是:
(EXISTS (select 1 from INSERTED) AND NOT EXISTS (select 1 from DELETED)) = INSERT
(EXISTS (select 1 from INSERTED) AND EXISTS (select 1 from DELETED)) = UPDATE
(NOT EXISTS (select 1 from INSERTED) AND EXISTS (select 1 from DELETED)) = DELETE
Run Code Online (Sandbox Code Playgroud) 我以为我弄明白了,但事实证明我只是删除了第一张唱片.以下内容返回重复的行.所有都有2.我只想删除每个重复记录的第一个.
select scorestudentid, scoreadvisor, scorecorrect, count(*)
from scores
where scoretestid = 3284
group by scorestudentid, scoreadvisor, scorecorrect
having count(scorestudentid) > 1
Run Code Online (Sandbox Code Playgroud)
哪个回报:
scorestudentid scoreadvisor scorecorrect no column name
13033719 28059 3.0 2
13033777 28086 3.0 2
13033826 28147 3.0 2
13033960 28023 3.0 2
Run Code Online (Sandbox Code Playgroud)
所以我把它放在一起认为它会起作用:
set rowcount 1
delete
from scores
where scoretestid = 3284
and scorestudentid in (
select scorestudentid
from scores
where scoretestid = 3284
group by scorestudentid
having count(scorestudentid) > 1)
Run Code Online (Sandbox Code Playgroud)
它看起来应该是一个简单的概念,但我没有得到它.
基于托马斯脚本我更新了查询以适应但它仍然无法正常工作.
Delete Scores
Where Exists …Run Code Online (Sandbox Code Playgroud) 我有以下SQL查询:
select AuditStatusId
from dbo.ABC_AuditStatus
where coalesce(AuditFrequency, 0) <> 0
Run Code Online (Sandbox Code Playgroud)
我正在努力理解它.它看起来很简单,我知道coalesce运算符的作用(或多或少),但似乎没有得到意义.
除了上面的查询之外,如果不知道任何其他信息,您认为这意味着什么?
我正在尝试执行以下CFML:
<cfquery name="koppelData" datasource="#request.DataSource#">
INSERT INTO t_user_profile
(Username, ProfileID, AanvraagID)
VALUES
(<cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.username#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#laatste#">),
<cfqueryparam value="#FORM.vragenlijst#" cfsqltype="cf_sql_integer" >)
</cfquery>
Run Code Online (Sandbox Code Playgroud)
这会引发以下错误(我的SQL服务器版本是荷兰语):
[Macromedia] [SQLServer JDBC驱动程序] [SQLServer] de VALERT-instructie bevat meer kolommen dan er waarden zijn opgegeven in de VALUES-component.Het aantal waarden in de VALUES-component moet overeenkomen在de INSERT-instructie遇到了het aantal kolommen.
这基本上翻译如下:INSERT指令包含更多列,因为VALUES语句中指定了值.VALUES语句中的字段数必须等于INSERT语句中的字段数.
我做错了什么?
单引号没有帮助,如:
Error Executing Database Query.
[Macromedia][SQLServer JDBC Driver]Invalid parameter binding(s).
The error occurred in C:\Users\Adm1n\Adobe ColdFusion Builder workspace\PASS\jsexec\maak_lid.cfm: line 52
50 : '<cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.username#">',
51 : …Run Code Online (Sandbox Code Playgroud) 我在将两个表连接在一起时遇到一些困难,涉及一个SUM,它不包含在第二个表中.
即我有两张桌子:
ID|FirstName|LastName
1 |Billy |Blogs
2 |Bobby |Biggs
3 |Hill |Bill
4 |Super |Man
Run Code Online (Sandbox Code Playgroud)
PurchaseID|ID|Amount
123123 |1 |26.00
43254 |2 |22.00
546275 |3 |15.00
463565 |3 |15.00
343252 |1 |56.00
Run Code Online (Sandbox Code Playgroud)
我想要做的是将这两个表连接在一起,以便得到以下输出:
ID|FirstName|LastName| SUM(Amount)
1 |Billy |Blogs | 82.00
2 |Bobby |Biggs | 22.00
3 |Hill |Bill | 30.00
4 |Super |Man | 0
Run Code Online (Sandbox Code Playgroud)
我希望Super Man被包含在输出中,总和为零,因为他没有购买任何东西.我该怎么做呢?
编辑:tblComplete表中的主键.
我想删除此select查询返回的任何内容:
SELECT u.*
FROM (
SELECT userName, groupId, MAX(userId) AS maxId
FROM userTable
where userName <> '' and userName is not null
GROUP BY
userName, groupId
HAVING COUNT(*) > 1
) q
JOIN userTable u
ON u.userName = q.userName
AND u.groupId= q.groupId
AND u.userId <> q.maxId)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
对不起来的标题很抱歉.
我有一个SQL查询
SELECT SaleDate, Location, SUM(DollarSales)
FROM [TableName]
WHERE (SaleDate= '2012-11-19' OR SaleDate= '2012-11-12')
GROUP BY SaleDate, Location
ORDER BY Location, SaleDate
Run Code Online (Sandbox Code Playgroud)
我得到如下结果
SaleDate Location (No column name)
2012-11-12 00:00:00.000 002 21500.38
2012-11-19 00:00:00.000 002 24166.81
2012-11-12 00:00:00.000 016 14723.26
2012-11-19 00:00:00.000 016 12801.00
Run Code Online (Sandbox Code Playgroud)
我希望结果看起来像
Location (Sale on 11/12) (Sale on 11/19)
002 21500.38 24166.81
016 14723.26 12801.00
Run Code Online (Sandbox Code Playgroud)
我不想使用内部选择.有什么方法可以做到这一点.这是我们使用SQL Server 2000的遗留系统之一.先谢谢你.
我正在尝试将多个文本列合并为一个连接的文本列.每个字段以前都用于各种描述,但根据新的要求,我需要将所有这些字段合并为一个.
我尝试先将它们转换为varchar(max)然后连接,但有些行在这些列中的值比最大值长,并且在结果中被截断.
有没有办法在SQL Server 2000中组合多个文本字段?
sql-server-2000 ×10
sql ×7
sql-server ×7
t-sql ×3
asp-classic ×1
coalesce ×1
coldfusion ×1
coldfusion-9 ×1
date ×1
select ×1
sql-delete ×1
triggers ×1