小编Bil*_*win的帖子

为什么Ansi_nulls不起作用?

假设我有两个名为aTable1,aTable2的表

aTable1将userID设置为identity并包含以下数据:

userID  email          FirstName    LastName
1       NULL               C            CC
2       NULL               D            DD
3       a@yahoo.com        A            AA
4       b@yahoo.com        B            BB
5       e@yahoo.com        E            EE
6       f@yahoo.com        NULL         NULL
7       g@yahoo.com        NULL         NULL
Run Code Online (Sandbox Code Playgroud)

aTable2包含以下数据:

userID  email          FirstName    LastName    Title
3       a@yahoo.com      A            AA       student
4       b@yahoo.com      B            BB       student
5       e@yahoo.com      E            EE       student
NULL    NULL             C            CC       dean
NULL    NULL             D            DD       advisor
NULL    f@yahoo.com NULL    NULL               student2
NULL    g@yahoo.com NULL    NULL               student3
Run Code Online (Sandbox Code Playgroud)

我想基于aTable1更新aTable2.userID,但知道2个表中有空值,所以我喜欢这样:

set ANSI_NULLS off
update …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

加速使用WHERE id IN的查询

这是一个大约需要5-6秒的查询.内部部件仅需约50毫秒.

SELECT id,messages.to,messages.from,message,datetime,messages.read
FROM messages WHERE id IN(   //inside brackets grabs a list of IDs

    SELECT max(messages.id) FROM
        (SELECT id,messages.from FROM messages
        WHERE messages.to = 'username' AND messages.from != 'username'
        UNION
        SELECT id,messages.to FROM messages WHERE
        messages.from = 'username' AND messages.to != 'username')
    AS x
    LEFT JOIN messages ON messages.id = x.id
    GROUP BY x.from)

ORDER BY id DESC
LIMIT 15
Run Code Online (Sandbox Code Playgroud)

这是一个查询,它会提取最近有人发送消息的用户列表,以及两者之间的最后一条消息.我怎样才能更改它以便更快?也许没有id IN.也许多个查询?

mysql sql database greatest-n-per-group

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

无法解密密码

我最近决定对我的密码使用更安全的密码。调用mc_encrypt($encrypt)方法返回加密的密码后,我对密码进行加密没有问题 。

通过调用进行解密时mc_decrypt($decrypt),该方法返回false。如您在mc_decrypt($decrypt)方法中所见,底部附近有一个if语句。我无法通过if语句。有谁知道我可以改变以获得$calcmac!==$mac真实的回报?谢谢

<?php

    class Encrypt {
    public $encryptionKey = 'xxxxxxx';

    public function __construct() {
    define('ENCRYPTION_KEY', $this->encryptionKey);
    }

    // Encrypt Function
    public function mc_encrypt($encrypt){
        $encrypt = serialize($encrypt);
        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
        $key = pack('H*', $this->encryptionKey);
        $mac = hash_hmac('sha256', $encrypt, substr(bin2hex($key), -32));
        $passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $encrypt.$mac, MCRYPT_MODE_CBC, $iv);
        $encoded = base64_encode($passcrypt).'|'.base64_encode($iv);
        return $encoded;
    }

    // Decrypt Function
    public function mc_decrypt($decrypt){
        $decrypt = explode('|', $decrypt);
        $decoded = base64_decode($decrypt[0]);
        $iv = base64_decode($decrypt[1]);
        $key …
Run Code Online (Sandbox Code Playgroud)

php encryption-symmetric

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

如何解决 SELECT 列表不在 GROUP BY 子句中且包含非聚合的问题?

我在 MYSQL 5.7 上收到此请求的错误。如何解决这个错误?

#1055 - SELECT 列表的表达式 #3 不在 GROUP BY 子句中,并且包含非聚合列“test.c.customers_group_id”,该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容

select  SQL_CALC_FOUND_ROWS  c.customers_firstname, 
                             c.customers_lastname, 
                             c.customers_group_id,
                             sum(op.products_quantity * op.final_price) as ordersum 
from customers c,
     orders_products op,
     orders o
where c.customers_id = o.customers_id 
and o.orders_id = op.orders_id 
group by c.customers_firstname, 
         c.customers_lastname 
order by ordersum DESC
Run Code Online (Sandbox Code Playgroud)

mysql mysql-error-1055

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

根据不同的用户帐户更新MySQL全局变量?

如何为不同的用户帐户更改 MySQL 会话全局变量(即 SQL_mode、max_allowed_pa​​cket 等)。我有两个用户 sam@localhost 和 joe@localhost 我需要为这两个用户设置不同的 MySQL 会话变量值,或者需要在用户登录时更新变量值,这可能吗?

mysql database database-administration

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

MYSQL - 按 DESC 顺序按 Id 排序,按 X 分组

在过去的 4 个小时里,我一直专注于这个问题,简而言之,我想按 id 以 DESC 顺序排序该表,按 ads_post_id 分组(基于 id 的 DESC 顺序),LIMIT 为 6行返回。

数据库样本,


id   | ads_post_id
---------------------------------------------------------------------------
22   | 983314845117571
23   | 983314845117571
24   | 983314845117571         
104  | 983314845117571
250  | 983314845117571
253  | 983314845117571 
767  | 983314845117571          
---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我目前的查询,

SELECT * FROM fb_ads GROUP BY ads_post_id ORDER BY id DESC LIMIT 6
Run Code Online (Sandbox Code Playgroud)

然而,这一切的回报是,


id   | ads_post_id
---------------------------------------------------------------------------
22   | 983314845117571   
---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

它应该返回,


id    | ads_post_id
---------------------------------------------------------------------------
767   | 983314845117571   
---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

很明显,它是按 ASC 顺序分组的,然后按 …

mysql greatest-n-per-group

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

错误“where 子句中的未知列” - 有什么问题?

我正在使用 MySQL Server 5.7,我有这个查询:

select 
    regDate,
    userID,
    t.teamID,
    login
from
    tbl_user u
inner join 
    tbl_team t on u.userID = t.userID
where
    regDate >= DATE_ADD(CURDATE(), INTERVAL -2 MONTH)
    AND 
    (
        select sum(transactions) from (
            SELECT count(*) as transactions FROM tbl_pp where (fromTeamID = t.teamID or forTeamID = t.teamID) and transactionDate >= u.regDate
            union all
            SELECT count(*) as transactions FROM tbl_psc where (fromTeamID = t.teamID or toTeamID = t.teamID) and transactionDate >= u.regDate
            union all
            SELECT count(*) as transactions FROM tbl_mp where …
Run Code Online (Sandbox Code Playgroud)

mysql sql correlated-subquery

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

MySQL 8.0.13:默认值作为 uuid 不起作用

我试图在 MySQL 8.0.13 版中将默认值设置为 UUID()。但成功执行后,默认值将重置为 NOT NULL。

MySQL版本:

“版本脚本”

这是我的 CREATE TABLE 脚本

CREATE TABLE `session` (
  `id` binary(16) NOT NULL DEFAULT (UUID_TO_BIN(UUID(), TRUE)),
  `start_timestamp` timestamp NOT NULL,
  `end_timestamp` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `status` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Run Code Online (Sandbox Code Playgroud)

表生成的日志输出, SQL script was successfully applied to the database.

执行后的 TABLE 定义:

CREATE TABLE `session` (
  `id` binary(16) NOT NULL,
  `start_timestamp` timestamp NOT …
Run Code Online (Sandbox Code Playgroud)

mysql macos mysql-workbench mysql-8.0

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

如何绕过sql中的检查约束

模式

\n
   create table course\n        (course_id  varchar(8), \n         title      varchar(50), \n         dept_name  varchar(20),\n         credits    numeric(2,0) check (credits > 0),\n         primary key (course_id),\n         foreign key (dept_name) references department (dept_name)\n            on delete set null\n        );\n
Run Code Online (Sandbox Code Playgroud)\n

我想将此数据添加到表中,但无法添加 0 学分。

\n
\n

\xe2\x80\x9cCS-001\xe2\x80\x9d,标题为\xe2\x80\x9c每周研讨会\xe2\x80\x9d,0学分

\n
\n

插入查询

\n
INSERT INTO `course`(`course_id`, `title`, `credits`) VALUES (\'CS-001\',\'Weekly Seminar\',\'0\');\n
Run Code Online (Sandbox Code Playgroud)\n

查询结果: \n这里

\n

有没有其他方法可以在不改变表结构的情况下插入相同的数据?

\n

mysql check-constraints

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

SQL 查询联接将结果限制为每个 ID 一个项目

所以我有 2 张桌子......产品和图片

Products 
---------
id
value1
value2
value3
etc..

Images
---------
id
productId
imageName
Run Code Online (Sandbox Code Playgroud)

图像表每个产品将有多个图像,因此当我运行此查询时:(!= 0 是因为某些图像没有 productId 所以我想排除它们,不确定是否有更好的方法处理那个,或者如果我什至需要包括那个)

select p.*, i.imageName 
from products p, images i 
where p.id = i.productId and i.productId != 0 
Run Code Online (Sandbox Code Playgroud)

我得到了结果,但它给了我多个条目,我只想要每个产品一个结果,我希望它提取第一个添加的图像(所以是最旧的)......

目前的结果是这样的---

id : 1
imagename: name1.jpg

id : 2
imagename: name5.jpg

id: 2
imagename: name6.jpg

id: 2
imagename: name7.jpg

id: 3
imagename:  name3.jpg

etc... etc... 
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像这样......

id: 1
imagename: name1.jpg

id: 2
imagename: name5.jpg

id: 3
imagename: name 3.jpg
Run Code Online (Sandbox Code Playgroud)

这有意义吗?谁能帮我找出我的问题?

mysql sql join greatest-n-per-group

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