我想知道是否同时 UPDATE .... LIMIT N 不会与查询数据库的多个客户端重叠。
在 UPDATE ... LIMIT N 之后,客户端将使用分配的一些 client_id 进行 SELECT。我不希望客户端重叠结果,因此每次更新后使用 SELECT 查询数据库时,每个客户端都会有不同的记录。
这取决于表引擎?
更新锁定表/记录?(我确定这取决于引擎)。
我认为 UPDATE LIMIT 不应重叠结果,dbs 具有 ACID 属性......我想确认这一点。
我使用带有特殊字符的语言(例如:e -> é)。我有一个带有 a 的查询,LIKE但是当我搜索一个带有特殊字符的单词并且我的查询没有特殊字符时,我没有得到我期望的结果:
select * from a where name like '%e%'
Run Code Online (Sandbox Code Playgroud)
当数据库包含“dés”时,上述内容不返回任何结果。有没有办法让这个查询返回所需的结果。
我有以下表格:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`last_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`account_data` text COLLATE utf8_unicode_ci,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`twitter_username` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`crypted_password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password_salt` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`persistence_token` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`single_access_token` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`perishable_token` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`login_count` int(11) NOT NULL …Run Code Online (Sandbox Code Playgroud) 我已经使用 Postgres 和 pgAdmin III 好几年了,但是今天早上我遇到了一个非常大的问题。我在 Windows Xp 操作系统上使用 pgAdmin III 9.0,在我的笔记本电脑 Dell Latitude E4300 上。
从今天早上开始,查询生成器(“SQL 编辑器”)选项停止工作。当我打开 pgAdmin 时,一切都很好并且可以正常工作,直到我单击 Sql Query Builder 按钮。当我这样做时,什么都没有出现并且 pgAdmin 崩溃而不提供任何信息。
我再次尝试卸载并安装 PgAdmin III 9.1,但 Sql Query Builder 一直无法正常工作。
我能做什么?
我的问题与这个问题类似,但(我认为)有足够大的差异。我有一个基本范围,我想在一个表中找到所有其他范围与它和彼此冲突。或者更确切地说是形成范围的项目,但它并没有真正产生影响。
带星号的那一行是起始范围。范围 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) --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) 我们的 SQL Server 的排序规则设置为SQL_Latin1_General_CP1_CI_AS
我有一个要求,即我们在不同的情况下具有相同的值,但 SQL Server 会以相同的方式对待它们,因为我们的排序规则在服务器级别设置为不区分大小写。我的要求是,我需要根据一个特定查询的大小写敏感性将每个值视为不同的。我COLLATE SQL_Latin1_General_CP1_CS_AS在WHERE子句中使用来强制区分大小写。我的问题是:此排序规则是否仅应用于此查询,还是最终会在列或表级别为使用此列的所有查询更改此设置?
Create Table #tmpTest
(
id int primary key identity(1,1),
name varchar(100)
)
Insert Into #tmpTest values ('TestQuery'),('TESTQUERY'),('TEstquerY')
Select * from #tmpTest
Where name = 'TestQuery'
Select * from #tmpTest
Where name = 'TestQuery'
Collate SQL_Latin1_General_CP1_CS_AS
Run Code Online (Sandbox Code Playgroud) 如果数据像这样每 3 个字节分割,是否可以将其适应更新查询,该更新查询必须寻找 3 个字节或 (0x000000) 的空闲序列,并用新序列替换它?问题是强制转换/替换无法处理未定义的数据(即 0x00)。varbinary 数据每 3 个字节划分 -> data(3bytes 长)data(3bytes 长)。
DECLARE @YourTable table
(
Id INT PRIMARY KEY,
Val VARBINARY(50)
)
INSERT @YourTable
VALUES (1, 0x0329000414000B14000C14000D0F00177800224600467800473C00550F00000000000000000000000000),
(2, 0x0329002637000B14000C14000D0F00177800224600467800473C00550F00000000000000000000000000);
SELECT Id, Triplet
FROM @YourTable T
JOIN (VALUES (1),(4),(7),(10),(13),(16),(19),(22),(25),(28),(31),(34),(37),(40),(43),(46),(49)) Nums(Num) ON Num <= DATALENGTH(T.Val)
CROSS APPLY (VALUES (SUBSTRING(T.Val, Num, 3))) V(Triplet)
WHERE Triplet = 0x000000 and DATALENGTH(Triplet) = 3
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
UPDATE x
set x.column = CAST(REPLACE(x.column, 0x000000, 0xFFFFFF) AS VARBINARY)
from Table as x
Run Code Online (Sandbox Code Playgroud)
仅当列不包含数据时才有效。
UPDATE x …Run Code Online (Sandbox Code Playgroud) query ×10
sql-server ×4
mysql ×3
collation ×1
concurrency ×1
index ×1
interval ×1
ms-access ×1
mysql-5.1 ×1
order-by ×1
performance ×1
pgadmin ×1
postgresql ×1
t-sql ×1
varbinary ×1