我正在使用MySQL中的一个表,该表使用“邻接列表”方法定义树层次结构,就我的目的而言,该方法应该很好。
我需要使用(fast)查询计算所有子程序上某些值的最大值。
SELECT MAX(N.someValue) AS rate
FROM `nodes` N
WHERE N.parent = <some node id>;
有时我不那么幸运,不得不和孩子的后代一起工作(它定义了,并且总是引用那棵树的分支中的某个叶节点)。
SELECT MAX(N.someValue) AS rate
FROM `nodes` N
WHERE N.id IN (SELECT N2.descendan
我写了一个例子来描述我的问题在一个更复杂的数据库中。我将MySQL 5.7与Delphi XE8结合使用。
我有两张桌子:
CREATE TABLE customers
(ID INT NOT NULL AUTO_INCREMENT ,
Name VARCHAR(30) NOT NULL ,
PRIMARY KEY (ID)
) ENGINE = InnoDB;
CREATE TABLE orders
(IDorders INT NOT NULL AUTO_INCREMENT ,
customerID INT NOT
因此,我们有一个系统,它使用两列作为唯一的ID、userid和a date。我们必须保存与某一特定主题相关的所有记录,这样就不会有删除的记录。所以一个实验对象可以有50张唱片。数据库设计器创建视图以获取主题的最新行。就记录数量而言,数据库并没有那么大,我们大约有750000条记录。
视图为每个表编写,非常类似于:
Select Username,
UserID
From users
where USerID = 000
and UserUpdatedDate = (
Select MAX(UserUpdatedDate)
FROM
users a
我目前正在处理这个项目,该项目有一些mysql查询。项目中的所有mysql查询都是由另一个开发人员完成的。总之,我有点混淆了他在下面所做的查询:
SELECT MIN(s_date) AS s_date,
client_id
FROM tb1
WHERE flag = 1
AND client_id NOT IN (
SELECT DISTINCT client_id
FROM tb1
WHERE flag = 0
)
GROUP BY client_id;
查询的第一部分是检查是否标志=1,第二部分是检
我试图弄清楚为什么查询需要这么长时间,这样我就可以优化它了。
我试过解释一下:
EXPLAIN SELECT * FROM (
SELECT p.*, ol. prod_id olpid
FROM products p LEFT JOIN orderlines ol
ON p. prod_id = ol. prod_id ) pol
WHERE pol. olpid IS NULL
ORDER BY category , prod_id;
当我在我的工作台上运行这个程序时,我会得到连接在10分钟(600秒)后丢失的错误代码。在我用Index设置Prod_ID之后,查询在大约一秒(完美)内回答,
对于这样的一张桌子(配料):
+-----+-----+
|id |fruit|
+-----+-----+
| 1 | or |
| 1 | ban |
| 2 | or |
| 2 | or |
+-----+-----+
我希望有一个查询,该查询应该产生如下结果:
id 1与两种水果有关。
我不在乎多行是否有相同的数据,只关心具有相同id的行是否有不同的结果。
例如id 2只与两行中的一种水果相关联,我不在乎!
我有我想要实现的伪代码,但没有任何mysql。
Select all id's
From the ingredients table
Gr
我有一个简单的查询-它只查看一个表,并有两个用于索引的列可供选择,一个ErrorTypeId (指向大约20个唯一值的查找表)和DateOccurred (一个可以包含任何日期的datetime列)。
在大多数情况下,这是可以的,但在某些情况下,查询会超时。查看一下,选择的索引(ErrorTypeId)在其计划中的行数比其他索引(DateOccurred)少得多,但是由于某些原因,运行所需的时间比我手动强制它使用另一个索引要长得多。
/* This execution plan has fewer rows than the second one - and as a result this
几乎每个人都遇到了以下子查询错误:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery
在这种情况下,每个答案都建议我们用left outer join替换子查询。
支持使用in操作的限制子查询是一个很好的特性,因为许多子查询都与in操作符一起使用,但是为什么MySQL开发组决定不将其引入MySQL,是否有任何原因使这些操作符在子查询中受到限制?
2016年11月30日,MySQL8.0最新的测试版文档草稿,Mysql仍然不支持这种子查询。
我有两个表-- tblDividendData和tblStockPrice --我一直试图构造一个查询,从tblDividendData中提取字段,以及最近tblStockPrice的收盘价。我不是SQL专家,所以我在这里分享了我的尝试,但我花了几个小时,似乎什么都试过了,但我无法让它返回正确的结果。我的查询如下:
SELECT tblDividendData.divOrganization,
tblDividendData.divExDividendDate,
(SELECT Close
FROM tblStockPrice s
WHERE Dat
我知道我可以使用AddRange()插入多个实体,而且它只能访问数据库一次。在我的例子中,我插入了一个实体,例如,有15个子实体。在本例中,Mini Profiler说我正在执行15次重复查询,afaik意味着它需要15次数据库旅行,而不是插入子实体。
问题是-如何一次批量插入N个子实体?实体中的数据量非常小(只有几行文本)。
编辑:适用于任何有类似问题的人!看来在EF中没有办法做到这一点。最后我使用了SqlBulkCopy,除了您必须手动添加相关(子)实体之外,它运行得非常好。谢谢你们!
//data u want to add to db
var data = someData.ToLis
我正在尝试将MS Access查询转换为MySQL,问题是将MS Access top转换为MySQL limit以获得相同的结果。当我将查询更改为limit时,会发现此版本的MySQL在子查询中不支持limit。
这是MS Access查询:
SELECT a.FK_CONTRIBUTOR_ID
FROM tPUBLISHERS
INNER JOIN (tCONTRIBUTORS AS b
INNER JOIN tCLIPS AS a ON b.CONTRIBUTOR_ID = a.FK_CONTRIBUTOR_ID)
ON tPUBLISHERS.PUBLISHER
使用memcache会不会有这样的问题呢?
1. GET LIST OF KEYS
2. FOR EACH KEY IN LIST OF KEYS
- GET DATA
我希望密钥列表大约有1000个长度。
如果这很糟糕,我想知道是否有更好的方法来做这件事?我认为memcache可能足够快,而这样的O(n)查询可能不是那么重要。例如,我永远不会在MySQL中这样做。
谢谢。
更新
我发现这个问题阻碍了我的剧本。很明显这和解密无关,但是我的重定向。当我移除这段代码时,脚本就开始快速执行。还不清楚这是什么原因造成了这个问题?
// Make sure we have an Order ID
if( ! isset($_GET['id']) && ! isset($_POST['id']) ) {
header("Location: https://www.website.com/orders/");
exit;
}
原始问题:
我一直在使用这里找到的加密类:。我使用VARCHAR二进制数据
我正在寻找一种可能更快的方法来完成此检查:
NOT LIKE '%[^0-9]%'
此检查以确保所有字符都是数字(请参阅)
在(T)中是否有更快的方法来做到这一点?
完整的上下文是一个CASE/WHEN语句的一部分,它位于vary大型查询的select部分:
Select DATEADD(dd, CAST(CASE WHEN a.dateDuration NOT LIKE '%[^0-9]%' THEN a.Duration ELSE 1 END AS INT), a.StartDate) AS 'ourEndDate'
在上面,a是一个表
通过与php/Mysql中的另一个表进行比较,我不得不更新表的一列。我试图通过索引表列、优化查询等方法来加快进程,但无法加快进程。
在我的基于php的应用程序中,有两个表(表A和表B),我想通过与表B(带有两个列名& sku)的比较来更新表A的一列。
以前,以上过程已采取最多15薄荷更新28k产品。但是现在两个表(表A和表B)都有60k行。现在要花两个多小时。我使用了下面的查询
mysql_query("UPDATE tableA a
JOIN tableB b ON a.product_code_sku = b.sku
SE
考虑到MySQL中的这个SQL查询:
SELECT * FROM tableA WHERE tableA.id IN (SELECT id FROM tableB);
MySQL对tableA中的每一行执行子查询SELECT id FROM tableB多次吗?
有没有一种方法可以使sql在不使用变量或存储过程的情况下运行得更快?
为什么这通常比使用LEFT JOIN慢
嘿伙计们。这是这个的后续。
在获得了正确的数据并根据企业的要求进行了一些调整后,我现在已经掌握了这只迷你野兽。此查询应返回新求职者注册的总数和新上传的简历数量:
SELECT COUNT(j.jobseeker_id) as new_registrations,
(
SELECT
COUNT(c.cv_id)
FROM
tb_cv as c, tb_jobseeker, tb_industry
WHERE
UNIX_TIMESTAMP(c.created_at) >= '1241125200'
AND
我有一个mysql视图,它在FROM子句中有子查询。此视图可更新。我试着更新单张表,它运行得很好。但我无法插入到那张桌子上。上面写着:
错误代码: 1471。插入的目标表action_view不可插入。
我的视野:
CREATE OR REPLACE
VIEW `action_view` AS
SELECT
`ca`.`id` AS `id`,
`cah`.`title` AS `title`,
`ca`.`idCareActionHead` AS `idCareActionHead`,
`ca`.`id
我想执行一个从table1获取链接的MySQL查询,并检查这个链接在table2和table3中是否存在。
现在我正在做2个查询,但我想将2个查询合并为1,并保证返回10个结果?(第一次之后,目前mysql_num_rows($rez)>0,返回结果小于10)
谢谢。
$result = mysql_query("SELECT id,link FROM table1 WHERE Order By id DESC LIMIT 0,10");
while ($row = mysql_fetch_array($result)){
$rez = mysql_query(
我有一个mysql查询,如下所示:
SELECT users*100 as totalusers, totalusers*90 AS totalsalerys FROM table
正如您所看到的,我希望在计算totalsalerys时重用totalusers,这样我就不必再次编写相同的代码。这在mysql中似乎不起作用,有没有其他简单的方法可以做到这一点?
我的查询只是一个示例,将*100和*90更改为某个非常长的公式,您可能会明白我的意思。
我正在MySQL 4.0.30上运行一个非常基本的子查询。
我的目标是为任何在特定数据库上拥有授权的用户从mysql.user表中获得用户权限,如mysql.db表中所述。该查询如下所示:
mysql> select * from mysql.user where User IN
(select User from mysql.db where Db='db_name')\G
正如您所看到的,它非常基本,并且遵循。但是,当我执行该操作时,它会出现以下响应错误:
ERROR 1064: You have an error in your SQL syntax. C