假设我有两个名为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) 这是一个大约需要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.也许多个查询?
我最近决定对我的密码使用更安全的密码。调用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) 我在 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 会话全局变量(即 SQL_mode、max_allowed_packet 等)。我有两个用户 sam@localhost 和 joe@localhost 我需要为这两个用户设置不同的 MySQL 会话变量值,或者需要在用户登录时更新变量值,这可能吗?
在过去的 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 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 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) 模式
\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\n\xe2\x80\x9cCS-001\xe2\x80\x9d,标题为\xe2\x80\x9c每周研讨会\xe2\x80\x9d,0学分
\n
插入查询
\nINSERT INTO `course`(`course_id`, `title`, `credits`) VALUES (\'CS-001\',\'Weekly Seminar\',\'0\');\n
Run Code Online (Sandbox Code Playgroud)\n\n有没有其他方法可以在不改变表结构的情况下插入相同的数据?
\n所以我有 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)
这有意义吗?谁能帮我找出我的问题?