我有以下Select语句,但想要将其更改为使用iner连接,因为我相信它们更有效,但不太确定从哪里开始.
DECLARE @myNameID int
DECLARE @myAddressID int
DECLARE @myFirstName nvarchar(256)
SET @myNameID = 1
SET @myAddressID =1
SET @myFirstName='Nathan'
SELECT @myNameID = myNameID
FROM
NameTable Name,
AddressTable Address,
CountryTable Country
WHERE
Name.[FirstName] = @ myFirstName and
Address. AddressID = @ myAddressID and
Address.CountryID = Country.CountryID and
Name.SecondID = Country.SecondID
Run Code Online (Sandbox Code Playgroud) 我只是想知道为什么SQL IsNumeric()返回int而不是bit?好像它应该返回一点.
我有下表:
memberid
2
2
3
4
3
Run Code Online (Sandbox Code Playgroud)
......我希望得到以下结果:
memberid count
2 2
3 1 ---Edit by gbn: do you mean 2?
4 1
Run Code Online (Sandbox Code Playgroud)
我试图使用:
SELECT MemberID,
COUNT(MemberID)
FROM YourTable
GROUP BY MemberID
Run Code Online (Sandbox Code Playgroud)
...但现在我想找到哪个记录有最大数量.IE:
memberid count
2 2
Run Code Online (Sandbox Code Playgroud) 我有这个问题:
SELECT COUNT (DISTINCT CUSTOMER_ACCOUNT.ID) AS NUMBER_OF_ACCOUNTS
FROM CUSTOMER_ACCOUNT
INNER JOIN ACCOUNT ON CUSTOMER_ACCOUNT.ACCOUNT_ID=ACCOUNT.ID
INNER JOIN CUSTOMER_ACCOUNT ON LOAD_ACCOUNT_DETAIL_0.ID = CUSTOMER_ACCOUNT.ID
WHERE Convert(datetime, convert(char(10), [CUSTOMER_ACCOUNT].CREATED_ON, 101)) BETWEEN '2009-01-01' AND '2009-05-1'
AND CUSTOMER_ACCOUNT.DELETED!='1'
AND ACCOUNT.DELETED !='1'and LOAD_ACCOUNT_DETAIL_0.ACCOUNT_STATUS='1'
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
消息1013,级别16,状态1,行1 FROM子句中的对象"CUSTOMER_ACCOUNT"和"CUSTOMER_ACCOUNT"具有相同的公开名称.使用相关名称来区分它们.
不确定如何解决 - 任何想法?
我有一个表来记录站点访问,它有超过100,000条记录.似乎没有任何性能问题,但是大型日志类型表是否应定期将记录移动到存档表并清除当前表?
当我这样做:
select col1,case when [pivot1]=1 then '-' else '' end [pivot1],
case when [pivot2]=1 then '-' else '' end [pivot2]
from
(select col1,col2,col3 from tbl) as c
pivot
(sum(col3) for col2 in
([pivot1],[pivot2]))as pvt
Run Code Online (Sandbox Code Playgroud)
一切正常.
当我这样做:
select col1,[pivot1],[pivot2]
from
(select col1,col2,col3 from tbl) as c
pivot
(sum(case col3 when '-' then 1 else 0 end) for col2 in
([pivot1],[pivot2]))as pvt
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"Msg 156, Level 15, State 1, Line 31
Incorrect syntax near the keyword 'case'."
Run Code Online (Sandbox Code Playgroud)
我的目的是为这个转换编写一个case语句而不是多个case语句.
我究竟做错了什么?
我有3个数据库表.一个是图像,另外两个是人物和地方.由于每个人可以拥有许多图像,并且每个地方都可以拥有许多图像,因此我希望人与图像以及地点和图像之间存在一对多的关系.
外键是否必须与主键名称相同?或者我可以在images表中调用一些通用的外键,例如"PKTableID".这样我只需要一个图像表.
非常感谢.
问候,
想要只有一个图像表的原因是因为每个图像只引用一个其他表.除此之外,我在这里使用了两个表的示例,我将使用的实际数据库将有20个表,所以我想知道是否仍然可以使用单个图像表来实现20个一对多的关系?
使用SQL Server 2005
我想过滤列值不等于数字的列
表格1
Status
010203
Absent
231415
Ramesh
Suresh
...,
Run Code Online (Sandbox Code Playgroud)
我想只从状态列中获取名称
尝试查询
Select Status from table1 where status <> 'absent' and status <> numecivalue
Run Code Online (Sandbox Code Playgroud)
如何提及状态<> numericvalue
预期产出
Table
Status
Ramesh
Suresh
...,
Run Code Online (Sandbox Code Playgroud)
需要查询帮助.
我有一张桌子如下图所示
Q_ID DeptID EmployeeName City
100 100 testest abcd
100 101 tata cdd
Run Code Online (Sandbox Code Playgroud)
有100K记录.我需要一个查询,它应该获取具有相同Q_ID但不同DEPTID的所有记录.
请帮忙.
谢谢
我有一个carale项目.它完全适用于localhost.我有一个"AddCar.aspx"页面,可以插入带有汽车功能的汽车记录.通过复选框选择汽车功能.如果我没有选中任何复选框,则没有问题.但如果我选中其中一个功能复选框,我的页面会出现如下错误:
"在此上下文中不允许使用子查询.只允许使用标量表达式."
我的代码是这样的:
foreach (DataListItem item in Security1.Items) {
CheckBox CheckBox1 = (CheckBox)item.FindControl("CheckBox1");
if (CheckBox1.Checked) {
HiddenField h = (HiddenField)item.FindControl("FeaID");
string add = "Insert into Carfeature (RecID,FeatureID) values ((select Max(RecID) from record),@FeatureID)";
cmd[k] = new SqlCommand();
cmd[k].CommandType = CommandType.Text;
cmd[k].Parameters.Add("@FeatureID", SqlDbType.Int).Value = h.Value;
cmd[k].CommandText = add;
k++;
}
}
Run Code Online (Sandbox Code Playgroud)
有什么解决方案吗?