我需要优化以下查询:
SELECT /* [things omitted] */ articles.blogpost_id, articles.id AS articleid
FROM blogposts
JOIN articles ON articles.blogpost_id = blogposts.id
WHERE blogposts.deleted = 0
AND blogposts.title LIKE '%{de}%'
AND blogposts.visible = 1
AND blogposts.date_published <= NOW()
ORDER BY blogposts.date_created DESC
LIMIT 0 , 50
Run Code Online (Sandbox Code Playgroud)
EXPLAIN SELECT 给我以下结果:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE articles ALL blogpost_id NULL NULL NULL 6915 Using temporary; Using filesort
1 SIMPLE blogposts eq_ref PRIMARY PRIMARY 4 articles.blogpost_id 1 Using where
Run Code Online (Sandbox Code Playgroud)
为什么它先是文章,然后是博客文章?是因为博客文章有更多条目吗?以及如何改进查询以便文章帖子可以使用索引? …
首先:我的头衔很烂,所以帮我找出一个新的?
我不能在这里发布所有的 SQL(超过 30k 个字符),所以我把它贴在了pastebin.com
问题:
我得到一个 XML 文件,我从中抓取了一些记录,我需要从记录中提取一些数据并建立另一个表。这些记录是关于一个事件的发生和发生,我已经在 pastebin 中包含了示例数据以进行重新创建。没有看到数据,很难解释。我已经提供了从我的示例导入中获得的所有数据,这些数据应该足以构建应用程序,但我没有得到比数据中显示的更多的信息。
我会给你一点时间看一眼数据,所以这是有道理的。
所以我需要做的是:对于每个“关闭”事件,我需要将它与下一个“开启”事件相匹配,最后我需要有两张桌子,一张桌子用于“历史事件”,一张桌子为“时事”。但是,如果我能正确构建“历史事件”,我就可以弄清楚如何从中获取“当前事件”。
商业规则:
如果在“on”事件之前收集了两个或更多“off”事件,请保留最旧的“off”事件。如果在“关闭”事件之前收集了两个或更多“开启”事件,则保留最新的“开启”事件。如果有一个完整的对,把它们放在历史表中。如果有一个“关闭”事件而不是一个“开启”事件,把它放在当前表中(所以如果我想继续从这个表中插入/删除,那也很好)。如果当前表中已经存在“关闭”事件,我可以将其移动到历史表中以读取“开启”事件(这将需要稍后实施,但如果我可以匹配配对最初我现在可以继续前进。
我认为这就是逻辑。我的想法是弄清楚如何在 SQL 中执行此操作,或者将其推送到用 C# 编写的应用程序,并使用 C# 中的一些临时列表来执行此操作,并构建我需要用于...下一个逻辑的内容。这在 C# 中可能要容易得多,但我感觉 SQL 可以像 C# 一样轻松地完成这项工作,所以我需要 dba 大师的一些帮助。
我的查询已经不起作用,但这就是我在周五回家之前开始的地方,从那时起我一直在考虑它,并构建一个我可以在网上发布的示例问题(以及整个生活你也知道)。数据是实时数据且准确无误,除了 ID 被匿名化并且文本字段更改为易于使用的内容。
这是一个电子表格,大致显示了我希望数据在最后的样子以及现在的样子。有当前数据(为了清晰起见,每个ID之间有一个间隔行),历史表中的数据(与原始数据的ID对齐以便理解)和当前表(再次对齐)。我希望这可以帮助澄清业务规则。 https://spreadsheets.google.com/ccc?key=0AuvCdeHuVU5ddHRCNkpuWHBUREpRajlmLU5VX2xsWnc&hl=en&authkey=COq7y50H
所以完整的 SQL 包括 tabledefs 和当前(非常不正确的)查询在 pastebin http://pastebin.com/k2f2CLnQ
我有这样的表:

因此语言表中的数据:

因此文本表中的数据:

我必须返回请求语言的文本(如果存在)和默认语言的文本(如果它不存在)。是否可以在一个查询中做到这一点(不while,拜托)?
代码:
DECLARE @CommentId bigint = 1
--DECLARE @LanguageCode nvarchar(2) = 'en' -- "english text" returns
DECLARE @LanguageCode nvarchar(2) = 'ua' -- nothing at this moment
SELECT
t.CommentId
,t.TextId
,t.[Text]
,t.LanguageId
,RequestedLanguageId = @LanguageCode
FROM dbo.common_Text t
INNER JOIN dbo.common_LanguageType l
ON t.LanguageId = l.LanguageId
WHERE l.Code = @LanguageCode
AND t.CommentId = @CommentId
Run Code Online (Sandbox Code Playgroud)
谢谢你。
添加:
如果代码请求“ua”(乌克兰语)文本,而这不是该语言的任何文本,那么它将搜索俄语文本。如果找到 - 好的,如果没有,它将寻找英文文本。语言列表可能会有所不同。
ms sql server 中是否有任何选项为我的数据库使用 N 前缀。我的应用程序中有很多查询,其中没有一个对 nvarchar 字段使用 N 前缀,现在我必须为所有这些查询设置 N,这需要很长时间。我的校对是 Persian_100,它需要 unicode(N 前缀)所以任何建议表示赞赏
select * from table1 where field1=N'????' ;
Run Code Online (Sandbox Code Playgroud)
我想在我的查询中跳过 N 前缀,但它充当所有类型查询的 unicode:
我很感激我正在努力实现的一些帮助。
我公司制造的零件是由子组件和子组件的子组件构建的。这看起来像:
1
/ \ \
/ | \
2 3 7
/ \ / \
4 5 4 6
Run Code Online (Sandbox Code Playgroud)
4 和 5 组合成 2,4 和 6 组成 3,然后组件 2、3 和 7 组成 1。
我的桌子看起来像这样;
+------+-----+-------+----------+----------------+
| ROOT | SUB | LEVEL | LEADTIME | TOP LEVEL PART |
+------+-----+-------+----------+----------------+
| 1 | 1 | 0 | 4 | 1 |
| 1 | 2 | 1 | 2 | 1 |
| 1 | 3 | 1 | 5 …Run Code Online (Sandbox Code Playgroud) 我的问题与这个问题类似,但(我认为)有足够大的差异。我有一个基本范围,我想在一个表中找到所有其他范围与它和彼此冲突。或者更确切地说是形成范围的项目,但它并没有真正产生影响。
带星号的那一行是起始范围。范围 1,2 和 3 是应该扩展它的范围。结果范围应该是 X。
1 |
3 | ===1==== ====
5 | ==2== ====*==== ====
6 | ====3==== =====
--+-------------------------------------
| |<--------X-------->|
Run Code Online (Sandbox Code Playgroud)
我写过这个:
WITH cte
AS (
SELECT DATA1.ID, DATA1.STARTDATE, DATA1.ENDDATE
FROM DATA1
WHERE
DATA1.ID = @PARID AND
DATA1.STARTDATE > @STARTDATE AND
DATA1.ENDDATE < @ENDDATE
UNION ALL
SELECT DATA1.ID, DATA1.STARTDATE, DATA1.ENDDATE
FROM cte
INNER JOIN DATA1 ON (DATA1.ID = cte.ID)
WHERE
DATA1.ID = @PARID AND
(cte.STARTDATE < DATA1.ENDDATE AND cte.ENDDATE > DATA1.ENDDATE)
) …Run Code Online (Sandbox Code Playgroud) 您可以通过手动编辑文件或调用命令来为 Postgres设置各种配置参数。这是编写设置的两种途径,但是阅读呢?postgresql.confALTER SYSTEM
? 有没有办法查询所有当前设置?
我知道客户端身份验证配置文件中的设置pg_hba.conf可以通过读取pg_hba_file_rules来看,是这样的:table pg_hba_file_rules ;。有类似的东西postgresql.conf吗?
--DROP TABLE Taco_Val;
CREATE TABLE Taco_Val
(
ID INT IDENTITY(1,1),
AuditID VARCHAR(5),
CreditID VARCHAR(10),
TS DATETIME,
Val BIT
);
INSERT INTO Taco_Val
VALUES
('a1', 1, '2018-08-09 19:24:39.823', 1),--> Started
('ac', 1, '2018-08-09 20:53:07.273', 0),
('as', 1, '2018-08-09 21:04:40.670', 0),
('a9', 1, '2018-08-09 21:14:17.660', 1),--> Another Seq
('av', 1, '2018-08-09 21:38:56.910', 1),
('ad', 1, '2018-08-09 21:48:46.180', 1),
('an', 1, '2018-08-09 22:00:15.650', 0),
('a4', 1, '2018-08-09 22:08:26.517', 1),-->Another Seq
('a8', 1, '2018-08-09 22:16:16.253', 0),
('a3', 1, '2018-08-09 22:16:24.247', 1),-->Another Seq
('ai', 1, …Run Code Online (Sandbox Code Playgroud) http://sqlfiddle.com/#!9/c82c87b/1
首先,这是我的表:
CREATE TABLE `stackoverflow` (
`id` VARBINARY( 36 ) NOT NULL COMMENT 'GUID generated by PHP',
`time` TIME NOT NULL COMMENT 'Current time(stamp)',
`type` VARCHAR( 10 ) NOT NULL COMMENT 'start/stop',
`reference` VARBINARY( 36 ) NOT NULL COMMENT 'multiple starts/stops to one reference',
PRIMARY KEY ( `id` )
) ENGINE = MYISAM
Run Code Online (Sandbox Code Playgroud)
这是一些示例数据:
INSERT INTO `stackoverflow` (
`id` ,
`time` ,
`type` ,
`reference`
)
VALUES
('03bd8e91-b9aa-4d18-be47-9e9cce903cfd', '11:00:00', 'start', '76afe924-08aa-431b-904a-66290c50da6a'),
('ef10860a-7666-4ca0-95b6-79ef2d5b3f75', '11:01:00', 'start', 'fd064ef5-462f-489c-ae14-3cb766eb80c4'),
('9bc72e24-a0d4-43a3-86ab-973c331e2958', '11:02:00', …Run Code Online (Sandbox Code Playgroud) 我有一张宽桌子,看起来像这样:
Table Windspeed
Timestamp A-004 A-005a A-006a ... (column 161) E-009
09-Apr-19 00:00:00 13.09 13.95 10.16 11.71
09-Apr-19 00:05:00 12.17 11.98 12.54 10.66
Run Code Online (Sandbox Code Playgroud)
我需要以相同的格式生成一个新表,但替换查找表中的列值,如下所示:
Table Powercurve
WindSpeedBin Power_WdSpd Turb_Num
...
9.5 1216.9 1
10 1362.9 1
10.5 1476.3 1
11 1597 1
11.5 1701.5 1
12 1798.3 1
12.5 1828.5 1
13 1840 1
13.5 1846.1 1
...
9.5 1211.9 2
10 1342.9 2
10.5 1436.3 2
11 1517 2
11.5 1691.5 2
12 1713.3 2
12.5 1801.5 2
13 …Run Code Online (Sandbox Code Playgroud) query ×10
sql-server ×5
mysql ×2
c# ×1
cte ×1
index ×1
interval ×1
mysql-5.1 ×1
optimization ×1
order-by ×1
performance ×1
postgresql ×1
recursive ×1
t-sql ×1