【解析mysql的查询、子查询及连接查询教程】教程文章相关的互联网学习教程文章

php – MySQL查询和子查询【代码】

我有这样的查询:SELECT SUM(price) AS GINTO, ((SELECT COUNT(price)*9.99 FROM sms_logs WHERE price = '200000')+(SELECT COUNT(price)*3.99 FROM sms_logs WHERE price = '60000')+(SELECT COUNT(price)*1.99 FROM sms_logs WHERE price = '24000')+(SELECT COUNT(price)*0.99 FROM sms_logs WHERE price = '11000') ) AS USD, DATE_FORMAT(DATE,'%Y-%m-%d') AS DATE FROM sms_logs WHERE DATE >='2015-03-20' AND DATE <= '2...

mysql – 奇怪的SQL代码:为什么他们使用子查询而不是join?【代码】

我遇到了以下MySQL代码:SELECT ServiceFee FROM Shows WHERE ID = (SELECT ShowID FROM Orders WHERE ID = ?)这让我很奇怪,因为编写此代码的人通常使用SQL连接.我会改写它SELECT ServiceFee FROM Shows INNER JOIN Orders ON Shows.ID = Orders.ShowID WHERE Orders.ID = ?我的问题:有没有理由为什么这个代码是用子查询编写的,是否完全安全(在所有情况下产生相同的结果)用连接重写它? 有什么警告吗?解决方法:不,没有任何警告.事...

PHP – 好主意/坏主意?在一小组子查询结果之外使用MySQL RAND()?

所以在MySQL中,我已经读到了对于包含大量行的大型表,使用ORDER BY RAND()是一个坏主意(即使有~500行表,据说).缓慢而低效.很多行扫描. 这个(下面)如何替代? SELECT * FROM(…通常返回一组少于20行的子查询…)ORDER BY RAND()LIMIT 8 我没有在大量数据上使用RAND(),而是选择一个小子集,然后才对这些返回的行应用RAND().在99.9%的情况下,上面看到的子查询应该选择少于20行(事实上,它通常少于8行). 很想听听人们的想法. (仅供参考,我...

mysql – 将LEFT JOIN子查询限制为1个结果【代码】

下面的查询似乎在LEFT JOINed时限制所有结果,因此子查询中的总数只有1.我如何使它成为LIMIT,以便在项目行和project_hours_archive中存储的最后日期之间得到1:1的匹配它存储了每周一次在cron作业上收集的projects.projected_hours记录? projected_hours_archive包含列:id,project_id,hours和datetime.SELECTGROUP_CONCAT( projected_hours_last.date, '|', projected_hours_last.number ) AS 'projected_last_info' FROM project...

MySQL Group不在子查询中工作【代码】

我有这个查询,效果很好.我使用MIN(home_price)显示作为起始价格,我使用此查询为api和WHERE子句添加到它,所以如果我按价格搜索MIN(home_price)更改.SELECT MIN(home_price) as min_home_price,id,name,community,maplocation,locationLabel,logo FROM ourCommunity INNER JOIN readyBuilt ON community = home_community INNER JOIN rb_locations ON readyBuilt.home_location = rb_locations.locationId WHERE id IN ( SELECT ...

Mysql – 当且仅当第一个子查询返回空时,才使用辅助子查询【代码】

给定两个子查询表t1和t2,当且仅当t1返回空行时,如何返回t2? 编辑:添加了示例 T1SELECT * FROM common_table WHERE language_id = 1T2SELECT * FROM common_table WHERE language_id = 2基本上我正在做的是,如果T1返回空行,我希望它执行T2并返回这些行.现在,我完全知道我可以在PHP中执行此操作,但查询是一个子查询,我宁愿让SQL(而不是PHP)代码处理它.解决方法:在MSSQL中我可以做类似的事情If EXISTS (SELECT * FROM common_table ...

mysql – 对FROM子句中有子查询的视图进行不明确的修改?【代码】

The SELECT statement cannot contain a subquery in the FROM clause.如果修改包含此类子查询的视图,为什么它所依赖的基本关系的修改是不明确的? 编辑:我已经接近寻找解决方案了.如果您有一个包含学生ID和名称的表,并且您想创建一个包含所有非唯一名称的视图,如下所示:create view NonUnique as select * from Student S1 where exists (select * from Student S2where S1.sID <> S2.sIDand S2.name = S1.name)然后从NonUnique...

Mysql – 无法将变量传递给子查询【代码】

这是我的查询:SELECT user.*, @UserID:=user.uid,(SELECT count(c1) FROM (SELECT COUNT(*) AS c1 FROM user_groupWHERE user_group.uid=@UserIDGROUP BY user_group.uid ) x1) AS x2FROM user 问题是@UserID没有传递给子查询解决方法:如何使用JOIN?我认为结果和你想要的一样.而且我猜你想得到用户拥有的群组总数.对?SELECT a.*, COALESCE(b.totalCount, 0) totalCount,COALESCE(b.totalType, 0) totalType FROM user aLEFT...

无子查询的条件左连接MySQL【代码】

我有两个表,X和Y:mysql> select * from X; +------+------+ | id | colX | +------+------+ | 2001 | 0 | | 2002 | 0 | | 2003 | 0 | | 2004 | 0 | | 2005 | 0 | | 2006 | 10 | | 2007 | 10 | +------+------+mysql> SELECT * FROM Y; +------+------+-------+ | id | colY | score | +------+------+-------+ | 2001 | 10 | 3 | | 2004 | 0 | 12 | | 2005 | 0 | 15 | | 2007 | 0 | ...

无法得到mysql子查询【代码】

我无法在Mysql中查询子查询.相当简单的是好的,我发现的大多数教程很少超出典型:SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);我想从我的数据库中取出的是以下内容(我会尽力解释这个没有我们数据库的任何背景): 检索属于特定代表的客户列表和上个月(在一列中)花费的总金额以及在其他列中的当月支出金额. 结果,这看起来大致如下:ID | NAME | PREV MONTH | CUR MONTH 1 | foobar | £2300 | £1200 2 | ba...

用MySQL中的连接替换子查询【代码】

我有以下查询:SELECT PKID, QuestionText, Type FROM Questions WHERE PKID IN (SELECT FirstQuestion FROM Batch WHERE BatchNumber IN (SELECT BatchNumber FROM User WHERE RandomString = '$key') )我听说子查询效率低,而且连接是首选.但是,我无法找到解释如何将3层子查询转换为连接表示法的任何内容,并且无法理解它. 任何人都可以解释如何做到这一点?解决方法: SELECT DISTINCT a.* FROM Questions aINNER JOIN Batch...

MySQL左连接子查询失败【代码】

以下查询在MySQL 5.x中运行良好SELECTm_area.id, m_area.cn_areaName, m_area.de_areaName,m_area.en_areaName,m_area.jp_areaName,t_shop.count FROMm_area left join ( select t_shop.areaID, count(areaID) AS count from t_shop group by t_shop.areaID ) t_shop on m_area.id = t_shop.areaID但是,当我必须在具有相同数据库结构和数据的4.0.23 MySQL数据库中运行它时,它只返回以下消息:1064 – You have an error in your...

如何从MySQL中的FROM字段中删除子查询【代码】

我是MySQL和数据库的新手,我在许多地方都看到,在MySQL的SELECT字段中使用子查询并不是一个好的编程习惯,如下所示:select userid, avg(num_pages) from (select userid , pageid , regid , count(regid) as num_pages from reg_pag where ativa = 1 group by userid, pageid) as from_query group by userid;它计算用户每页的平均寄存器数. reg_page表如下所示: 问题: >如何更改查询,以便它不使用FROM字段中的子查询?>是否有一...

MySql – 使用连接的子查询插入多行?【代码】

此查询将返回表示论坛帖子的项目ID列表:SELECT id FROM `proj_objects` WHERE type='fthread';此查询将订阅用户(其users表中的ID为’37’)到ID为’122’的论坛帖子:INSERT INTO `subscrips` VALUES ( 37, 122 ) ;我想插入多行,将用户37订阅到类型为fthread的所有项目对象.我可以在一个查询中执行此操作吗?最佳答案:使用:INSERT INTO `subscrips` SELECT 37, id FROM `proj_objects` WHERE type = 'fthread'

如何返回mysql子查询的行数【代码】

我有以下SQL查询:SELECT games.id, games.GameTitle FROM games WHERE EXISTS (SELECT filename FROM banners WHERE banners.keyvalue = games.id AND banners.filename LIKE '%front%')这对我的使用来说不太正确 我想要的是:SELECT games.id, games.GameTitle FROM games WHERE EXISTS (COUNT(SELECT filename FROM banners WHERE banners.keyvalue = games.id AND banners.filename LIKE '%front%') > 1)即,仅在子查询检索多...