小编Ric*_*mes的帖子

preg_replace中的正则表达式

你好,我是PHP的正规表达新手

我正在尝试解决一个问题,我可以向MySQL插入数据,该字段是"timestamp"

$string1 = "7/1/2015, 19:42:52"; 
$string2 = "12/12/2015, 1:08:17"; 
$string1 = preg_replace("/\//",'-',$string); 
$string2 = preg_replace("/\//",'-',$string);
Run Code Online (Sandbox Code Playgroud)

这一步将是:

7-1-2015, 19:42:52
12-12-2015, 1:08:17
Run Code Online (Sandbox Code Playgroud)

如果我整理出来(包括ZEROFILL)就像:

string1 = 2015-07-01 19:42:52
string2 = 2015-12-12 01:08:17
Run Code Online (Sandbox Code Playgroud)

我能做什么..?

php regex

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

MySQL - 具有一个变量变化的SAME查询需要更长时间的10倍

我有MySQL DB,我总是问同样的"问题",我改变的只是查询中的VIN变量.

更具体地说,我向你展示了2个查询:第一个有VIN:(U5YFF24128L064909需要0.0002秒)

SELECT  c.vin, c.case_id, c.claimnumber, c.platenumber, c.axrmrs_id,
        c.insurer_memberid, c.country, c.date_created, c.totalloss,
        c.lastcalc_manufacturer_code, c.lastcalc_model_code, c.lastcalc_submodel_code,
        c.audavin_triggered, c.accident_date, c.registration_date,
        c.manufacturing_year, cl.spareparts, cl.totalcosts, cl.laborhours,
        cl.laborcosts, cl.calculationdate, cl.paintlabor, cl.paintmaterial,
        cl.currency, car.manufacturer, car.model, car.submodel,
        IFNULL(org.name, 0) as orgName, GROUP_CONCAT(DISTINCT IF(po.repairmethod LIKE 'L%',
                       po.text,NULL)
            ORDER BY  1) AS textL, GROUP_CONCAT(DISTINCT IF(po.repairmethod = 'E',
                       po.text,NULL
                          )
            ORDER BY  1) AS textE , GROUP_CONCAT(DISTINCT IF(po.repairmethod != 'E'
                      OR  (po.repairmethod = 'E'
                              AND  po.guidenumber = 'N/A'
                          )
                      AND  po.repairmethod NOT LIKE 'L%',po.text, NULL
                          )
            ORDER …
Run Code Online (Sandbox Code Playgroud)

mysql optimization caching

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

检查与您的MariaDB服务器版本相对应的手册以获取正确的语法

我正在尝试通过在SQL选项卡中键入以下内容并Go单击按钮来更改具有10.1.13-MariaDB的PhPMyAdmin的根密码:

ALTER USER
  'root'@'localhost' IDENTIFIED BY 'mypass'
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error
SQL query:


ALTER USER
  'root'@'localhost' IDENTIFIED BY 'mypass'
MySQL said: Documentation
Run Code Online (Sandbox Code Playgroud)

1064-您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的'USER'root'@'localhost'IDENTIFIED BY'mypass'附近使用

我在MySQL网站上遵循了本教程

创建一个包含一行密码分配语句的文本文件。用您要使用的密码替换密码。

MySQL 5.7.6及更高版本:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

MySQL 5.7.5及更早版本:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

以下是一些屏幕截图: 在此处输入图片说明

在此处输入图片说明

mysql sql phpmyadmin mariadb

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

MySQL仅在条件为真时插入

我有几个插入语句,我只想在它们为真时执行。

这是我的例子:

START TRANSACTION;

INSERT INTO fields (field_name, control_type_id, needs_approval)
VALUES 
('Array Photos', 3, 0);

INSERT INTO field_to_job_type (field_id, job_type_id, sequence_number, parent_id)
VALUES
(last_insert_id(), (SELECT job_type_id FROM job_types WHERE job_type_name = 'Cash'), 1, (SELECT field_id FROM fields where field_name = 'Photo Pack'));

COMMIT;
Run Code Online (Sandbox Code Playgroud)

现在,如果此查询只有 1 个结果,我真的只想运行第二个查询:

SELECT job_type_id FROM job_types WHERE job_type_name = 'Cash'.

如果该查询返回 2 个结果,我想放弃交易。

那可能吗?我试过的东西:

START TRANSACTION;
INSERT ...;
INSERT ...;
IF(SELECT count(job_type_name) FROM job_types WHERE job_type_name = 'Cash') = 1, 'COMMIT', 'ROLLBACK');
Run Code Online (Sandbox Code Playgroud)

哪个,显然没有用。

mysql transactions

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

text或blob字段是否会减慢对表的访问速度

我有表包含文本和blob字段和其他一些,我想知道如果使用这些类型的数据会减慢对表的访问速度

CREATE TABLE post 
(
    id INT(11),
    person_id INT(11) ,
    title VARCHAR(120) ,
    date DATETIME , 
    content TEXT,
    image BLOB ,
);
Run Code Online (Sandbox Code Playgroud)

假设我有超过100,000个帖子,我想做一些查询

SELECT * FROM post WHERE post.date >= ? AND post.person_id = ?
Run Code Online (Sandbox Code Playgroud)

如果表不包含TEXT和BLOB字段,查询会更快

mysql indexing database-design query-optimization

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

如何将php数组索引设置为数组值...?

我从查询中得到了这个数组。

Array
(
    [0] => Array
        (
            [user_id] => 5
            [first_name] => Diyaa
            [profile_pic] => profile/user5.png
        )

    [1] => Array
        (
            [user_id] => 8
            [first_name] => Raj
            [profile_pic] => profile/user8.jpg
        )

    [2] => Array
        (
            [user_id] => 10
            [first_name] => Vanathi
            [profile_pic] => profile/user10.jpg
        )
)
Run Code Online (Sandbox Code Playgroud)

我需要将数组索引设置为如下所示的数组值( user_id):

Array
(
    [5] => Array
        (
            [user_id] => 5
            [first_name] => Diyaa
            [profile_pic] => profile/user5.png
        )

    [8] => Array
        (
            [user_id] => 8
            [first_name] => Raj
            [profile_pic] …
Run Code Online (Sandbox Code Playgroud)

php arrays indexing multidimensional-array

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

node.js / MySQL:当我尝试插入数据库时​​,某些字符串编码(表情符号)抛出错误

我正在运行一个node.js脚本,该脚本将数据从公共“数据库”(这是一个“区块链”)中拉出,然后对其执行一些操作,然后将其插入到MySQL数据库中。我有使用UTF8_general_ci编码的MySQL数据库。绝大多数数据解析都很好,但是每隔很多次它就会遇到无法插入的内容。我收到此错误:

code: 'ER_TRUNCATED_WRONG_VALUE_FOR_FIELD',
  errno: 1366,
  sqlMessage: 'Incorrect string value: \'\\xF0\\x9F\\x8D\\x95 N...\' for column \'body\' at row 1',
  sqlState: 'HY000',
  index: 0,
Run Code Online (Sandbox Code Playgroud)

它显示了似乎引起错误的字符串位,并且始终具有以下独特的问号字符:

This looks like Paradise for me! ????\

我猜这是编码问题?有没有一种方法可以在引发错误之前将其转换?我不确定该区块链使用什么编码,甚至不确定如何找到。

编辑:这是此区块链的网络界面上显示的另一个示例(错误):

并非常欢迎您!

另一个编辑:我应该指出,我正在使用mysql.format(sql, inserts)这些数据来处理无意的sql问题-https: //github.com/mysqljs/mysql#preparing-queries

javascript mysql character-encoding node.js

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

从同一个表中加入多个Sql语句

我已经阅读了很多关于这个主题的帖子,但我还不满意.

我有一个名为ticket以下列的表

TicketID | AirlineID | PassengerID | TicketPrice | TicketVolume | DestinationCountry | ExitCountry | TicketDate`
Run Code Online (Sandbox Code Playgroud)

我有多个查询,如

SELECT AVG(TicketPrice) 
FROM ticket 
WHERE TicketPrice between 552 and 1302
AND AirlineID=1 
AND TicketDate between '2016-01-01' and '2016-12-31' 
GROUP BY TicketDate

SELECT AVG(TicketPrice) 
FROM ticket 
WHERE TicketPrice between 552 and 1302 
AND AirlineID=1 
AND TicketDate between '2017-01-01' and '2017-12-31' 
GROUP BY TicketDate
Run Code Online (Sandbox Code Playgroud)

请问如何将两个查询同时加入并形成另一个表格

+--------------------------------++-----------
| AirlineID || Average Ticket Price 2016/2017|
+--------------------------------++-----------
Run Code Online (Sandbox Code Playgroud)

他们实际上是更多的疑问.

mysql sql database-design pivot relational-database

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

插入重复键 - 跳过自动递增 ID

我目前有一个 SQL 执行脚本,它更新重复键上的行,如下所示。

    $stmt = $dbCon->prepare("INSERT INTO videos_rating (videos_rating_video_fk, "
            . " videos_rating_user_fk, "
            . " videos_rating_rating) "
            . " VALUES (:video_id, "
            . " :user_id, "
            . " :video_rating) "
            . " ON DUPLICATE KEY UPDATE videos_rating_rating = :video_rating");
Run Code Online (Sandbox Code Playgroud)

该脚本工作正常,但有没有办法防止自动增量列不同步?

假设我们从一个空表开始,然后我对一个视频进行评分,然后创建一个 id 为 1 的行,然后用户通过对同一视频评分较低或较高来再次执行 SQL,并且该行将被更新因为它现在是重复的密钥,所以肯定没问题。

问题是这样的。

下次另一个用户对新视频进行评分时,该行将从 id 3 而不是 2 开始?

表格将如下所示

id | videos_rating_user_fk | videos_rating_rating
1  | 1                     | 4
3  | 2                     | 5
Run Code Online (Sandbox Code Playgroud)

我无法找到类似的问题,即使我发现其他人不太可能对此感到困扰,如果是这样,请让我参考那篇文章。

我知道 ids 不应该“看起来不错”,但是 ids 从 30 - 51 - …

mysql sql database innodb

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

MySQL 8.0 Group by Performance

为了比较MySQL 5.7和8.0,我使用sysbench创建了一个表.我试过了这个测试.服务器的性能完全相同因此,oltp_point_select显示出几乎相似的性能.

但是,当通过下面的测试进行组时,MySQL 8.0的性能提高了10倍.但我不知道为什么它很快.

我不知道是否可以找到MySQL 8.0发行说明.在8.0,谁会告诉我为什么分组更快?


0.表架构

CREATE TABLE `sbtest2` (

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `k` int(11) NOT NULL DEFAULT '0',
  `c` char(120) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `pad` char(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `k_2` (`k`),
  KEY `idx1` (`k`,`pad`)
) ENGINE=InnoDB AUTO_INCREMENT=1099289 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
Run Code Online (Sandbox Code Playgroud)

1. MySQL 5.7 服务器版本:5.7.17-log源代码分发

5.7结果

    testdb 17:24:38 > select count(0),pad from sbtest2 where k between 400000 and 600000 group by pad limit 1;
        +----------+-------------------------------------------------------------+
        | count(0) | …
Run Code Online (Sandbox Code Playgroud)

mysql performance mysql-8.0

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

在MySQL数据库中添加约束以保证唯一性

我的SQL表具有以下DDL

CREATE TABLE `new_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `family_id` int(11) NOT NULL,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY (`id`)
  ) 
Run Code Online (Sandbox Code Playgroud)

我想在这个简单的表格中保留姓氏.为了做到这一点,我有一个微服务,调用者通过JSON发送家庭细节:

{
  "family_id" : 1,
  "names": ["name1", "name2"]
}
Run Code Online (Sandbox Code Playgroud)

id是通过MySQL的自动增量生成的.

所以上面的JSON最终会触发两个insert语句:

  • insert(family_id,name)values(1,name1)
  • insert(family_id,name)values(1,name2)

当新请求附带表中存在的family_id时,就会出现问题.这不应该被允许,我正在进行查询以搜索family_id是否存在.如果存在则引发异常.如何避免此查询?如果需要,可以更改表模式.如果可以添加类似"请求ID"或guid来建立每个请求的唯一性,那会没关系吗?

所有数据应该在同一个表中.

下面是一些带有一些数据的表的例子

在此输入图像描述

(来自评论)我无法创建第二个表.Eveything应保存在一张桌子上.

mysql sql database

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

MySql表可能*非常*很多列

一个是软件工程师招聘人员的朋友要我为他创建一个应用程序。

他希望能够根据技能搜索候选人的简历。

您可以想象,可能有数百种甚至数千种技能。

在表格中代表候选人的最佳方法是什么?我想skill_1skill_2skill_n等,但在外面有没有用得比较多的候选人n的技能。

另外,将来可能会向数据库中添加更多技能。

那么,代表候选人技能的最佳方法是什么?


@zohar的[更新],这是在架构上的第一步。任何意见?

在此处输入图片说明

mysql database-design entity-attribute-value

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

如何根据两个字段的最大值选择记录?

鉴于以下简单表:

+-----+-------------+---------+----+
| id_ | match_op_id | version | p1 |
+-----+-------------+---------+----+
|   1 |           1 |       1 |  1 |
|   2 |           1 |       1 |  5 |
|   3 |           1 |       2 |  3 |
|   4 |           1 |       2 |  4 |
|   5 |           2 |       1 |  1 |
|   6 |           2 |       1 |  5 |
|   7 |           2 |       2 |  3 |
|   8 |           2 | …
Run Code Online (Sandbox Code Playgroud)

mysql groupwise-maximum

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