小编And*_*mar的帖子

MSSQL JOIN ON GROUP BY太慢了

我在MSSQL中有以下查询

SELECT TOP 50 CustomerID FROM Ratings
WHERE CustomerID != 915
AND MovieID IN (SELECT DISTINCT MovieID FROM Ratings WHERE CustomerID = 915)
GROUP BY CustomerID
ORDER BY count(*) DESC
Run Code Online (Sandbox Code Playgroud)

它超级快.当我尝试在这样的子查询中使用它时.

SELECT * FROM Ratings
WHERE MovieID = 1 AND
CustomerID IN (SELECT TOP 50 CustomerID FROM Ratings
    WHERE CustomerID != 915
    AND MovieID IN (SELECT DISTINCT MovieID FROM Ratings WHERE CustomerID = 915)
    GROUP BY CustomerID
    ORDER BY count(*) DESC)
Run Code Online (Sandbox Code Playgroud)

关于为什么这么慢以及如何加快速度的想法?我的主键是(MovieID-CustomerID),我在CustomerID上添加了一个索引

database sql-server optimization join subquery

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

Sql Server中的夏令时

我们使用的是一个以C/Unix格式存储日期的旧应用程序.C时间基本上是自1970年1月1日以来的秒数.日期在SQL Server数据库中存储为整数.我正在为使用这些日期的报告撰写视图.

到目前为止,我正在从UNIX时间转换为本机日期时间:

DateAdd(s,3600+unix_time,'1/1/1970')
Run Code Online (Sandbox Code Playgroud)

3600将从UTC转换为我们当地的GMT + 1时区.这在冬天是准确的,但在夏天,由于夏令时,它是一小时.

在SQL Server中是否有内置的从UTC转换为本地时间的方法?

sql sql-server time

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

SQL查询通过int变量返回1

在SQL Server中,如果我有一个int变量,如何编写一个通过int变量的值返回值1的查询?

所以给出:

declare @cnt int
set @cnt = 5
Run Code Online (Sandbox Code Playgroud)

什么查询将返回1 - 5?这可能吗?

sql sql-server

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

Transact-SQL:插入xyz(从abc中选择*)

我想在MS SQL中实现一个在Oracles PL/SQL中看起来像这样的构造:

declare
asdf number;
begin
for r in (select * from  xyz) loop
   insert into abc (column1, column2, column3) 
   values (r.asdf, r.vcxvc, r.dffgdfg) returning id into asdf;

    update xyz set column10 = asdf where ID = r.ID;
end loop;
end;
Run Code Online (Sandbox Code Playgroud)

任何想法如何实现这将是有帮助的.

提前致谢

sql t-sql sql-server for-loop

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

Sql查询保持"计数"已删除的行

我有一个机密网站...我正在尝试制作一个SQL查询,用于计算用户在过去7天内发布的广告数量,但我有一个问题...

我试图在用户个人资料中显示例如:[用户名]在过去7天内发布了30个广告

这是我的SQL查询 - >

SELECT COUNT(*) 
FROM table_name 
WHERE user_id = '[user_id]' AND created_date > NOW() - INTERVAL 7 DAY
Run Code Online (Sandbox Code Playgroud)

所以在我的情况下,"table_name"包含来自所有用户的所有广告,并且" user_id='[user_id]'"我向用户显示他的广告数量,向用户B显示他的广告数量等...

所以这个查询工作,它从"[用户名]正确计算广告的数量,但是,例如,如果用户在网站的进入和删除的1,2或任何他的广告的号码,这个号码会被"minused"已发布30过去7天内的广告"

  1. 例如,假设用户在过去5天内发布了20个广告 - 正确的结果是[用户名]在过去7天内发布了20个广告
  2. 现在用户进入网站并删除了4个广告 - 现在结果是[用户名]在过去7天内发布了16个广告

有人可以帮助我,我可以添加什么来查询,以便计数仍然显示正确的广告数量(在我的情况下是20个广告),即使广告被删除..

谢谢干杯

mysql sql database

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

在MySQL中使用JOINS

我有这个查询完美的工作:

SELECT *
FROM Customer
WHERE SacCode IN
(
    SELECT SacCode
    FROM SacCode
    WHERE ResellerCorporateID = 392
    ORDER BY SacCode
)
AND CustomerID IN
(
    SELECT CxID
    FROM CustAppointments
    WHERE AppRoomID IN
    (
        SELECT AppRoomID
        FROM ClinicRooms
        WHERE ClinID IN
        (
                SELECT ClinID
                FROM AppClinics
                WHERE ClinDate >='20090101'
                AND ClinDate <='20091119'
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

但是,我需要看到ClinDate的值(在最后一个嵌套查询中),所以我被告知我需要使用JOINS重新编写查询.

我不知道怎么样,有人可以帮忙吗?

谢谢.

mysql sql join

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

在冬天将夏季日期转换为utc?

该函数mktime采用struct tmas参数.其中一个成员struct tmtm_isdst.您可以将此设置为1表示冬季,0表示夏令时,如果您不知道,则设置为-1.

但是,如果在冬天,你尝试转换2009-09-01 00:00,mktime虽然目前是冬天,但是没有看到,你转换的日期是夏季.结果就是一个小时的休息时间.对我来说(GMT + 1)2009-08-31 22:00它应该是23:00.

有没有办法确定某个特定日期是在夏季还是冬季?是否有可能在冬季将夏季日期转换为utc?

(我试图回答这个问题时遇到了这个问题)

c time utc dst

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

尝试使用1个查询初始化2个变量中的2个值,是否可以执行此操作.

SET @Password = (
    SELECT UserPassword,IsLocked 
    FROM [Authentication].[tblLogin] 
    WHERE UserName=@UserName)
Run Code Online (Sandbox Code Playgroud)

我试图获得两个值userpassword和islocked两个变量,以便在下一个查询中的同一个SP中使用.是否有可能或者我必须为此编写两个查询.在sql server中是否存在数组的概念

sql sql-server sql-server-2005

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

操作数类型冲突:datetime2与int(Between)不兼容

我试图在两个日期之间获取记录,但是当我运行SQL时,我收到以下错误:

操作数类型冲突:datetime2与int不兼容

SELECT M.Id, M.MTimeInt, M.Date, CAST(D.Name AS TEXT) as Name 
FROM C 
JOIN N ON C.N_Id=N.Id 
JOIN M ON M.N_Id=N.Id 
JOIN MDish ON MDish.M_Id=M.Id 
JOIN D ON D.Id=MDish.D_Id 
WHERE C.Id=110 AND M.Date BETWEEN 2012-05-28 AND 2012-06-08
Run Code Online (Sandbox Code Playgroud)

SQL看起来是正确的,但我似乎无法弄清楚它为什么抱怨,任何想法?

谢谢

php sql sql-server codeigniter

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

ASC的SQL查询订单日期,但过去的条目结束了吗?

我目前正在制作一个包含演出议程的艺术家网站.我希望它能够在开始时列出第一个即将到来的演出(asc),并在即将到来的演出之后列出过去的演出.我目前的解决方案是两个不同的查询,一个调用即将发生的事件和一个过去的事件,但我认为找出合并它们的方法更为简洁.有人知道这是否可行,怎么样?

这就是我的开始;

SELECT * 
FROM agenda 
INNER JOIN organizer ON agenda.agenda_organizer=organizer.organizer_id
Run Code Online (Sandbox Code Playgroud)

mysql sql

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