小编Sha*_*dow的帖子

选择分组中的字段

我的内容中包含以下数据DataTable:

   id   vrn   seenDate
   ---  ----  --------

    1   ABC   2017-01-01 20:00:05
    2   ABC   2017-01-01 18:00:09
    3   CCC   2016-05-05 00:00:00
Run Code Online (Sandbox Code Playgroud)

我试图修改数据只显示vrn最近日期的值.这是我到目前为止所做的:

myDataTable.AsEnumerable().GroupBy(x => x.Field<string>("vrn")).Select(x => new { vrn = x.Key, seenDate = x.Max(y => y.Field<DateTime>("seenDate")) });
Run Code Online (Sandbox Code Playgroud)

我需要修改上面的内容以选择id字段(即我不想在这个字段上分组,但我希望将它包含在结果数据集中).

我不能放入x.Field<int>("id")Select()部分,因为Field子句不存在.

.net c# linq

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

SQL JOIN在同一列上两次

假设我有一个表[public].[ids],其中包含客户ID的映射

public.ids

old_id | new_id
===============
   100 |   1000
   101 |   1001
   102 |   1002
Run Code Online (Sandbox Code Playgroud)

我还有一个推荐表,当客户引用另一行时,我会记录一行:

public.referrals

referring_id | referred_id
==========================
         100 |         101
         101 |         102
Run Code Online (Sandbox Code Playgroud)

我想知道使用新的id这个表是什么样的.这意味着我必须两次加入推荐表.一次用于refer_id,一次用于referenced_id.最终,我想要一个看起来像这样的表:

结果

referring_new_id | referred_new_id
==================================
            1000 |            1001
            1001 |            1002
Run Code Online (Sandbox Code Playgroud)

如何通过自定义命名这些新列来实现此目的?我正在使用postgresql,但任何SQL风格都会有所帮助.

sql postgresql

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

带有数组的 MariaDB JSON 函数

我将 JSON 数组作为字符串存储在 MariaDB 表中。当数组中的任何位置存在某些键值时,我想返回行。

我进行了以下测试....

set @json='[{"name":"Albert","state":"IL"},{"name":"John","state":"CA"}]'
Run Code Online (Sandbox Code Playgroud)

执行以下查询...

select json_value(@json,'$[0].name')='Albert'
Run Code Online (Sandbox Code Playgroud)

它让我得到了想要的结果,那就是......

1
Run Code Online (Sandbox Code Playgroud)

甚至下面的查询也给了我相同的结果(可能是 '*' 被视为第一个元素)...

select json_value(@json,'$[*].name')='Albert'
Run Code Online (Sandbox Code Playgroud)

但是当我在条件中提供第二个名字(“约翰”)时,我没有得到任何结果......

select json_value(@json,'$[*].name')='John'
Run Code Online (Sandbox Code Playgroud)

结果...

0
Run Code Online (Sandbox Code Playgroud)

所以我的观察是,当我们提供数组索引时,“json_value”函数能够返回所需的结果。

有没有办法可以避免指定数组索引并搜索所需的键值?

sql json mariadb

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

更新VIRTUAL GENERATED列

UPDATE reservation SET NB_RESTE=1 WHERE IDRESERVATION='28'
Run Code Online (Sandbox Code Playgroud)

我想更新NB_RESTE值,但是即使我尝试更新另一列也无法正常工作,但知道NB_RESTE是虚拟生成的

错误信息 :

#3105-不允许在表“保留”中为生成的列“ NB_RESTE”指定值。

mysql

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

我怎样才能加入两个表并动态地进行Pivot

我有两张桌子,A和B.

A(id,name)
B(a_id,key,value)

带有一些值的表

**A table**

-----------------------------
   id        |      name
-----------------------------
    1        |      sorabh
    2        |      john
-----------------------------

**B table**

-------------------------------------------------
     a_id    |     key     |     value
-------------------------------------------------
      1      |    looks    |    handsome
      1      |    lazy     |    yes
      1      |    car      |    honda
      2      |    phone    |    948373221
      1      |    email    |    some@ccid.com
-------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

现在我想要实现的是一个跟随,单个查询,内部联接,交叉联接等.

SELECT * FROM A
CROSS JOIN B WHERE A.id=1
Run Code Online (Sandbox Code Playgroud)

结果必须是这样的

--------------------------------------------------------------------
  id   |   name   |    looks   |   lazy  |    car   |   email
--------------------------------------------------------------------
   1   |  sorabh …
Run Code Online (Sandbox Code Playgroud)

mysql sql pivot-table

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

使用PHP安全地加密MySQL数据库中静止的客户详细信息

我正在使用PHP开发一个应用程序,该程序将一些客户详细信息存储在MySQL数据库中。(姓名,电子邮件地址,电话号码,邮寄地址)我没有存储任何“敏感”信息,例如银行/信用卡详细信息,SSN / SIN,DOB等。仅是基本的客户详细信息。

但是,尽管显然会采取安全预防措施,但如果黑客获得了数据库的副本,我希望有一种体面且相对简单的方法来使此数据非常难以使用(通过对其进行加密)。

我已经读到,在MySQL查询中执行加密的安全性较低,因为加密密钥将缓存在数据库的查询日志中。

因此,建议这样:

UPDATE customers SET email = AES_ENCRYPT('me@gmail.com', SHA2('encryption key here', 512));
Run Code Online (Sandbox Code Playgroud)

我已经看过关于堆栈溢出的许多问题以及其他资源。但是,许多建议至少有5年的历史了,现在PHP 7.2(及更高版本)可能会有更简单的最佳实践。

我研究过Defuse,但是我倾向于避免在我不是绝对需要它们的地方使用第三方库。(我更喜欢理解代码并将其最小化,以满足我的需求。)

在查看PHP文档(https://www.php.net/manual/zh/function.openssl-encrypt.php)时,我发现该用户提供了建议,该建议看起来很容易实现:

--- Create Two Random Keys And Save Them In Your Configuration File ---
<?php
    // Create The First Key
    echo base64_encode(openssl_random_pseudo_bytes(32));

    // Create The Second Key
    echo base64_encode(openssl_random_pseudo_bytes(64));
?>
--------------------------------------------------------
<?php
    // Save The Keys In Your Configuration File
    define('FIRSTKEY', 'Lk5Uz3slx3BrAghS1aaW5AYgWZRV0tIX5eI0yPchFz4=');
    define('SECONDKEY', 'EZ44mFi3TlAey1b2w4Y7lVDuqO+SRxGXsa7nctnr/JmMrA2vN6EJhrvdVZbxaQs5jpSe34X3ejFK/o9+Y5c83w==');
?>
--------------------------------------------------------
<?php
    function secured_encrypt($data)
    {
        $first_key = base64_decode(FIRSTKEY);
        $second_key = …
Run Code Online (Sandbox Code Playgroud)

php encryption

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

将 SQL ALL 函数与 HAVING COUNT(*) &gt;= 混淆

感谢您帮助理解使用 ALL 函数的查询结果的概念。提前致谢!

包含数据的示例表 = 下载员工表脚本 & 这是查询。

select salary, count(*)
from employees
group by salary
having count(*) >= ALL(SELECT count(*) from employees group by salary)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么结果只返回 6 行,计数为 2。

这不应该having count(*) >= ALL(SELECT count(*) from employees group by salary) 匹配 select sub 和 return 行数 994 之间的每一行吗?

为什么会>=返回 6 行,而=or>返回 0 行?

如果能详细解释其背后的逻辑,我们将不胜感激。谢谢你!

mysql sql

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

如何设置主键 | SAS工作室

我正在尝试在 SAS 上设置主键,但我不断收到下面提到的错误。任何帮助都会很棒!

第一个片段是代码,接下来是错误。

/*Primary Key*/ /*Defines the unique key*/

Proc datasets lib=work;
modify WORK.FinAdvMaster;
ic create primary key(FinAdvID);
PROC PRINT DATA=WORK.FinAdvMaster; RUN;**strong text**
Run Code Online (Sandbox Code Playgroud)

我得到的错误 -

 96         /*Primary Key*/ /*Defines the unique key*/
 97         
 98         Proc datasets lib=work;
 99         modify WORK.FinAdvMaster;
                   _________________
                   22
                   201
 ERROR 22-322: Expecting a name.
 ERROR 201-322: The option is not recognized and will be ignored.
 100        ic create primary key(FinAdvID);
 NOTE: Enter RUN; to continue or QUIT; to end the procedure.

Run Code Online (Sandbox Code Playgroud)

sas

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

如何在Python中获取列名SQL

我想用 Python 获取 pandas df 的数据库。我使用以下代码:

self.cursor = self.connection.cursor()
query = """
        SELECT * FROM `an_visit` AS `visit`                 
        JOIN `an_ip` AS `ip`  ON  (`visit`.`ip_id` = `ip`.`ip_id`)
        JOIN `an_useragent` AS `useragent` ON (`visit`.`useragent_id` = `useragent`.`useragent_id`)                 
        JOIN `an_pageview` AS `pageview`  ON (`visit`.`visit_id` = `pageview`.`visit_id`)       
        WHERE `visit`.`visit_id` BETWEEN  %s AND %s
        """
self.cursor.execute(query, (start_id, end_id))

df = pd.DataFrame(self.cursor.fetchall())
Run Code Online (Sandbox Code Playgroud)

该代码有效,但我也想获取列名。我尝试了这个问题MySQL: Get column name or alias from query

但这不起作用:

fields = map(lambda x: x[0], self.cursor.description)
result = [dict(zip(fields, row)) for row in self.cursor.fetchall()]
Run Code Online (Sandbox Code Playgroud)

如何将 …

python mysql

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

PyMysql 错误:数据包序列号错误 - 预期为 1 为 0

我在 stackoverflow 和另一个编码示例网站中看到了该主题讨论的内容。但我找不到任何成熟的解决方案,有人修复这个错误吗?

错误信息:

ERROR:root:Can't connect to to MySQL server with error: (pymysql.err.InternalError) Packet sequence number wrong - got 1 expected 0
ERROR:root:Can't connect to to MySQL server with error: (pymysql.err.InternalError) Packet sequence number wrong - got 1 expected 0
ERROR:root:Can't connect to to MySQL server with error: (pymysql.err.InternalError) Packet sequence number wrong - got 1 expected 0
ERROR:root:Can't connect to to MySQL server with error: (pymysql.err.InternalError) Packet sequence number wrong - got 1 expected 0
ERROR:root:Can't connect to to …
Run Code Online (Sandbox Code Playgroud)

python mysql error-handling pymysql

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

标签 统计

mysql ×5

sql ×4

python ×2

.net ×1

c# ×1

encryption ×1

error-handling ×1

json ×1

linq ×1

mariadb ×1

php ×1

pivot-table ×1

postgresql ×1

pymysql ×1

sas ×1