MYSQL WHERE 子句 技术教程文章

MySQL:WHERE子句中带有NOT IN的从属子查询非常慢【代码】

我正在使用open Id登录来审核我的应用程序中的用户详细信息.如果用户第一次登录我们认为是注册的OPEN ID.我正在使用此详细信息生成审计登录报告.样本表数据.+---------+----------+-----------+---------------+ | USER_ID | PROVIDER | OPERATION | TIMESTAMP | +---------+----------+-----------+---------------+ | 120 | Google | SIGN_UP | 1347296347000 | | 120 | Google | SIGN_IN | 1347296347000 |...

mysql – 给定X的3个可能值,是否更快做WHERE(X = B或X = C),或做WHERE X!= A?【代码】

给定X(A,B,C)的3个可能值,它是否更快: > WHERE(X =’B’或X =’C’),或>在哪里X!=’A’ 还是依赖于它?如果是这样,那么它依赖于什么?解决方法:>选项1:WHERE (X = 'B' OR X = 'C')和WHERE X IN ('B', 'C')是等价的,可以使用(X)上的索引.>选项2:WHERE X != 'A'不会在(X)上使用索引.请参阅HenrikGrubbstrm在MySQL docs,How MySQL Optimizes WHERE Clauses页面上发表的评论:Indexes are ignored for the <> operator:因此,如果使...

mysql – 如果不为null,请使用“where”【代码】

目标 仅当参数不为null时才使用子句“where”. 问题 我不知道语法. 是)我有的 以下语法不起作用.CREATE DEFINER=`root`@`localhost` PROCEDURE `getProductsListForHome` (IN `inOffer` INT, IN `categoryId` INT) BEGINSELECT (MIN(`map`.`Product_Price`)) as `minProductPrice`,(MAX(`map`.`Product_Price`)) as `maxProductPrice`,`pr`.`Product_Name` as `productName`,`ca`.`Category_Name` as `categoryName`FROM `bm_marke...

MySQL在子句“WHERE IN(SELECT …)”中手动添加id【代码】

我有这个问题:SELECT * from t1 WHERE child_id IN (SELECT child_id from t2 WHERE parent_id='1234') OR parent_id='1234'有可能做这样的事情:SELECT * from t1 WHERE child_id IN ((SELECT child_id from t2 WHERE parent_id='1234')UNION '5678' )UNION关键字给出了一条错误消息,我尝试在谷歌搜索但是当你搜索“Mysql concat IN”时很难找到一些东西 我希望我的问题很明确解决方法:是的,像这样:SELECT * from t1 WHERE chil...

mysql – 查询优化 – WHERE子句中的表达式顺序【代码】

可以说我有一个名为数字的表:userID ColA ColB ------------------ 25 10 11 25 10 16 28 10 11 28 10 16 29 12 14 29 10 16我想找到所有具有userID 28和colA = 10以及colB = 16的行 我的问题是查询结构.如果我首先查找userID,然后查找colA和colB值,例如select * from numbers where userID=28 AND (colA=10 AND colB=16)这比首先寻找值更快,例如select * from number...

mysql – 在三个不同的列上使用MAX,WHERE和GROUP BY提高SQL查询的速度【代码】

我试图加快一个查询,大约需要60秒才能完成约2000万行的表. 对于此示例,该表有三列(id,dateAdded,name).id是主键.我添加到表中的索引是:(dateAdded) (name) (id, name) (id, name, dateAdded)我试图运行的查询是:SELECT MAX(id) as id, name FROM exampletable WHERE dateAdded <= '2014-01-20 12:00:00' GROUP BY name ORDER BY NULL;日期在查询之间是可变的. 这样做的目的是在添加日期或之前获取每个名称的最新条目. 当我在...

mysql – Laravel Left join将where子句添加到右表【代码】

如果我向左连接添加一个where子句,那么这个where子句在右表上工作,我只得到那些可以匹配右表的结果.$notifications = \DB::table('notifications')->select(\DB::raw("notifications.uuid ,images.local_path as title_image" ))->leftJoin('images','images.owner_uuid', '=' ,'notifications.uuid') where('images.relation','=','notification_title') ;如何将此where子句添加到左连接,这不会产生此问题?where('images.relatio...

mysql – Laravel |唯一验证where子句【代码】

我正在尝试验证存在的电子邮件地址的输入,但仅当company_id与随请求传递的company_id相同时. 我收到这个错误……SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘1’ in ‘where clause’ (SQL: select count(*) as aggregate from company_users where email_address = myemail.com and 1 <> company_id)我已经在线阅读,并且这样做的方法是将表和列内部关联验证,这就是我正在做的事情. 这是我目前的代码……required|e...

mysql – 是否存在“NOT HAVING”语法,如“WHERE XXX NOT IN”?【代码】

>我有一些查询获取将来要删除的行的ID号.>行号放入一个字符串并放在下面的查询中(你看到“2”).>我希望结果忽略行(就好像它们已被删除).SELECT MAX(T1.id) AS MAXid FROM transactions AS T1 WHERE id NOT IN ( 2 ) GROUP BY T1.position ORDER BY T1.position我的猜测是我需要用“HAVING”替换“WHERE”行,但我找不到“NOT HAVING”语法. 当前写入此查询的方式,如果WHERE子句中列出了该位置的最大ID,则不会返回T1.position行. ...

mysql – 使用WHERE子句在距经度和纬度的距​​离范围内查找POI【代码】

我正在使用以下sql代码找出最接近设定坐标的’ALL’poi,但我想找出特定的poi而不是所有的poi.当我尝试使用where子句时,我得到一个错误,它不起作用,这是我目前卡住的地方,因为我只使用一个表用于所有poi的所有坐标.SET @orig_lat=55.4058; SET @orig_lon=13.7907; SET @dist=10; SELECT *, 3956 * 2 * ASIN(SQRT(POWER(SIN((@orig_lat -abs(latitude)) * pi()/180 / 2), 2) + COS(@orig_lat * pi()/180 ) * COS(abs(latitude) * ...

mysql – 在where子句中使用select【代码】

我有一个名为message的表.我只是在person_send_id和person_receive_id不同时尝试从表中选择消息.我可以正确选择person_send_id和person_receive_id.但是,我不知道如何选择邮件.我正在考虑在Select中使用Select,但我不知道如何实现它或者它是否正确的方法.SELECT DISTINCT person_send_id, person_receive_id FROM `message` WHERE person_send_id = 21 OR person_receive_id = 21 //AND SELECT message FROM `message` when the...

mysql – 在where子句中使用select语句中的用户定义变量【代码】

我有这个选择语句正常工作:SELECT pre, dict.char, post, score, (SELECT @res := MatchPre(pre, 'test') AS var) AS mpre FROM dict;它会正确返回所有数据,其中MatchPre的结果位于标有“mpre”的列中.但是,我想只获得mpre>的结果.从逻辑上讲,我试过这个:SELECT pre, dict.char, post, score, (SELECT @res := MatchPre(pre, 'test') AS var) AS mpre FROM dict WHERE mpre > 0;但无济于事.我尝试用“WHERE @res> 0”,“WHERE...

Mysql where子句语法【代码】

我正在运行我们的一些代码工作,并遇到了这个结构的SQL查询,并确定它是我们PHP的变量的错字,我运行它,它的工作原理.Select column from table where value = column;我认识的任何人总是被教导正确的语法是:Select column from table where column = value;是否有任何理由这是合法的,除了SQL只是检查是一个等式彼此相等的两侧?我更喜欢发布这个,因为我发现它真的很有趣,就像一个“你知道得越多”的东西.解决方法:等于运算符(=)是对...

在mysql WHERE子句中使用GROUP_CONCAT和FIND_IN_SET【代码】

我有这个查询,并希望使用学生电子邮件从表中获取预约数据,但它得到此错误’where子句’中的未知列’stu’select a.*, GROUP_CONCAT(e.value) as stu FROM wp_ea_appointments a join wp_ea_fields e on a.id = e.app_id WHERE a.date > DATE('2019-02-14') AND FIND_IN_SET('jan@gmail.com' , stu ) GROUP BY a.id任何想法将不胜感激解决方法:FIND_IN_SET条件应包含在HAVING语句而不是WHERE语句中,因为您希望在分组后过滤数据SELEC...

在MySQL中,如何加入两个非常大的表,它们都在WHERE条件中有列?【代码】

我正在尝试确定查询连接两个具有大量数据的表的最佳通用方法,其中每个表在where子句中都有一列.想象一下带有两个表的简单模式:postsid (int)blog_id (int)published_date (datetime)title (varchar)body (text)posts_tags post_id (int)tag_id (int)使用以下索引:posts: [blog_id, published_date] tags: [tag_id, post_id]我们想要选择标记为“foo”的给定博客上的10个最新帖子.为了便于讨论,假设博客有1000万个帖子,其中100万个...

如何使用WHERE IN mysql存储过程【代码】

如何传递数组并在存储过程中使用WHERE IN? 我需要连接输入字符串或什么? 让我们说DELIMITER $$ DROP PROCEDURE IF EXISTS `abc`.`table1`$$ CREATE PROCEDURE `abc`.`test` (IN somestring VARCHAR(255)) BEGINSELECT * FROM abc.table1 WHERE flight_type IN somestring END $$ DELIMITER ;解决方法:您可以使用字符串连接和PREPARE语句来运行动态构建的查询. somestring必须以有效的SQL格式构造,如’1′,’2′,’3′DELIMITER ...

MySQL – 在where子句中引用聚合列【代码】

这看起来很简单,但我似乎无法在不进行子查询的情况下弄清楚(这似乎会显着减慢查询速度 – 需要大约10秒而不是<1).假设我有一个已发送文档的表格,我想选择自上次发送以来已更新的文档,以及从未发送过的文档. SELECT d.document_id, max(sd.document_sent_date) as last_sent_date FROM documents d LEFT JOIN sent_documents sd ON d.document_id=sd.document_id WHERE last_sent_date is NULL OR last_sent_date<d.last_updated GR...

MySQL – LONGTEXT字段导致SELECT-WHERE语句中的挂起【代码】

由于LONGTEXT字段,我遇到了问题.一切正常,但是当执行SELECT查询并且其中包含任何WHERE子句时,mysql将进入休眠状态并且永远不会返回.只有80k记录和显式WHERE比较工作正常. (有些记录超过1M,很少有约700K,但其余的只有60到100KB). 例如:[HANGs] SELECT * FROM item_info WHERE added_on > '2013-02-14 19:40:05' AND added_on < '2013-02-15 19:40:05' ;which is like 2 rows only[FINE] SELECT * from item_info WHERE item_i...

MySQL Query中的HAVING和WHERE有什么区别?【代码】

我有一个基于某些表的连接的视图(viewX): 当我使用WHERE时,查询被延迟,处理器使用率达到50%,最后我需要关闭mysqld.exe服务并重新启动以尝试再次解决问题. 当我使用HAVING时,查询会完美而快速地执行,我得到结果并且一切准备就绪. 该查询与此类似:SELECT * FROM viewX WHERE column_of_view = 'foo'SELECT * FROM viewX HAVING column_of_view = 'foo'怎么了? 我找到的解决方案是做这样的事情:SELECT * FROM (SELECT * FROM vie...

MySQL:如何从一个表中选择和显示所有行,并计算另一个表中where子句的总和?【代码】

我正在尝试显示一个表中的所有行,并将结果SUM / AVG放在一列中,这是where子句的结果.这可能没什么意义,所以让我解释一下. 我需要显示所有员工的报告……SELECT Employees.Name, Employees.Extension FROM Employees;-------------- | Name | Ext | -------------- | Joe | 123 | | Jane | 124 | | John | 125 | --------------…并加入来自PhoneCalls表的一些信息……---------------------------------------------------------...