零基础建站培训介绍

当前位置:

PHP+MYSQL 子查询 交集(一个数据表查询结果供另一个 SQL查询调用)

什么是MYSQL 子查询

MYSQL 子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用。

查询语句如下:


$sql = "SELECT * FROM e_user WHERE id IN (SELECT uid FROM subject WHERE fun>80)";

等同于


SELECT * FROM e_user WHERE id IN(1,2)

一个例子,查询在指定分类ID下的包含了指定关键词的文章


<?php
$catsarr=array("做网站","建网站","网站制作","网站建设","自己做网站");
$showcatarr = "('53','98','211','100','95','102','99','103','267','216','104','212','1','1892','3130','140')";
for($i=0;$i<count($catsarr);$i++){?>
<div class="xwz-wzlist-item">
<div class="xwz-wzlist-title">
<h3><?php echo $catsarr[$i];?>知识</h3>
</div>
<div class="ask-list">
<?php
$vars = $wpdb -> get_results("SELECT * FROM `wp_posts` where post_status='publish' and post_type='post' and (post_title like '%".$catsarr[$i]."%') and ID IN (SELECT object_id FROM `wp_term_relationships` WHERE term_taxonomy_id IN ".$showcatarr.") ORDER BY ID DESC limit 0,8", ARRAY_A);

echo "<ul>";

foreach($vars as $var){
echo '<li><a href="'.get_permalink($var['ID']).'" target="_blank">'.$var['post_title'].'</a></li>';
};
echo "</ul>";
?>
</div>
</div>
<?php }?>

标量子查询


$sql = "SELECT * FROM e_user WHERE id=(SELECT min(uid) FROM subject)";

查询之后插入到另一个表


INSERT INTO other(id,sid,name,age,subject,total) SELECT null,s.id, s.name,s.age,j.subject,j.total from SUBJECT as j LEFT JOIN student as s on s.id=j.sid

除了子查询之外,还有内连接查询。

INNER JOIN(内连接)

取得两个表中存在连接匹配关系的记录


$sql="SELECT * FROM subject as a INNER JOIN e_user as b ON a.uid=b.id";

//也可以用以下方法


SELECT article.aid,article.title,user.username FROM article,user WHERE article.uid = user.uid

LEFT JOIN (左外连):会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录


$sql="SELECT * FROM subject as a LEFT JOIN e_user as b ON a.uid=b.id";

在上面的例子中,对于右表中没有对应匹配的数据记录,其所有的列都被置为 NULL,因此要查询这部分记录(如在上面例子中体现为查找 id=4 这类无对应用户的记录),可以附加 IS NULL 条件:


$sql="SELECT * FROM subject as a LEFT JOIN e_user as b ON a.uid=b.id WHERE b.id IS NULL";

RIGHT JOIN(右外连): 会取得右表(table2)全部记录,即使左表(table2)并无对应匹配记录


$sql="SELECT * FROM subject as a RIGHT JOIN e_user as b ON a.uid=b.id";

除了常用的两个表连接之外,SQL(MySQL) JOIN 语法还支持多表连接


SELECT article.aid,article.title,user.username,type.typename FROM article INNER JOIN user
ON article.uid=user.uid INNER JOIN type ON article.tid=type.tid

//LEFT JOIN
SELECT article.aid,article.title,user.username,type.typename FROM article LEFT JOIN user
ON article.uid=user.uid LEFT JOIN type ON article.tid=type.tid

//RIGHT JOIN
SELECT article.aid,article.title,user.username,type.typename FROM article RIGHT JOIN user
ON article.uid=user.uid RIGHT JOIN type ON article.tid=type.tid

WHERE 表达式中运算符说明:

参数说明:
运算符 说明
= 等于
!= 不等于,某些数据库系统也写作 <>
> 大于
< 小于
>= 大于或等于
<= 小于或等于
BETWEEN … AND … 介于某个范围之内,例:WHERE age BETWEEN 20 AND 30
NOT BETWEEN …AND … 不在某个范围之内
IN(项1,项2,…) 在指定项内,例:WHERE city IN('beijing','shanghai')
NOT IN(项1,项2,…) 不在指定项内
LIKE 搜索匹配,常与模式匹配符配合使用
NOT LIKE LIKE的反义
IS NULL 空值判断符
IS NOT NULL 非空判断符
NOT、AND、OR 逻辑运算符,分别表示否、并且、或,用于多个逻辑连接。
优先级:NOT > AND > OR
% 模式匹配符,表示任意字串,例:WHERE username LIKE '%user'
上一课: 下一课:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

相关教程

  • Z-Blog是由RainbowSoft Studio开发的一款小巧而强大的基于Asp平台的Blog程序,其创始人为朱煊(网名:zx.asd)。使用过程中如果您修改了数据库密码
  • PHP应该算是现在大中小非细致网站企业会优先使用的网站建设编程语言,相对于ASP和JSP来说,PHP在在很多方面更适合个人以及小型企业做开发,这主要是因
  • 什么是PHPPHP代表了"超文本处理器",这意味着你必须知道,它是一种服务器端的处理语言,且以HTML的形式出现。它特别常用的地方就是网页了,数据从客
  • Windows平台的本地php运行环境有很多,比如LAMP、APMServ、phpstudy、WampServer等,但Mac平台相对就少多了。虽然Mac自带PHP组件,但还有手工安装Mysq
  • PHP7.0怎么连接MYSQL (110803 次浏览)
    在前面的建站教程中,介绍了PHP怎么连接数据库,这种连接数据库方法只适用于PHP7.0以下的版本,对于PHP7.0是不能使用这个方法连接数据库的。下面
  • 什么是MYSQL 子查询MYSQL 子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用。查询语句如下:[cce_php]$sql = "SE
  • 网站备案查询怎么查询 图文教程 (13739 次浏览)
    如果使用国内空间建网站的话,就需要对网站进行网站备案。并且网站备案下来之后,可以在工信部网站上查询网站备案信息,下面介绍一下怎么进行网站备案
  • 常见的sql语句查询方法 图文教程 (12155 次浏览)
    sql语句在做网站时,可以大大提交执行效率,例如我们可以使用sql语句对网站数据库进行批量查询,批量替换等等。下面学做网站论坛介绍一下网站建设教程
  • 以前很多做网站使用的PHP版本都是PHP5以上的版本,现在很多空间都使用了PHP7以上的版本,这时,有些PHP代码就会失效报错。(代码见:PHP如何将数据写
  • 如果你的空间不理想或是需要升级服务器,这个时候很可能需要进行网站数据搬家,而数据搬家本身是一件很简单的事情。并且学建站网页专门有这样的课程教
  • 网站制作需要数据库吗 (14959 次浏览)
    网站制作需要数据库属于架构问题,架构的搭建主要根据你的需求来定,也就是说主要看你的网站规模和都有什么功能了。对于网站的需求分析是很复杂的,
  • 我们在自己建网站时,使用本地环境搭建网站练习。有时遇到忘记数据库密码了,这时特别好的解决方法就是修改本地环境数据库密码。(相关知识:什么是数
  • 使用PHP写数据到数据库时,往往一组数据里有很多字段,并且不同的字段是放在不同的数据表里,这时我们插入数据表时,就要将一组数据中的不同字段同时
  • 使用PHP开发网站过程中,可以使用for循环将数字赋值给一个数组。然后对这个数组进行调用,或者将数据应用到其它的循环中。下面介绍一下PHP将for循环结
  • 问题:我想去弄个自己网站,怎么弄简单又快速?其实我做的也比较简单,就想像下面这样的网站就行,自己怎么弄呢?答:耐思尼克-欣为您解
  • 客户李先生在我们网站咨询一个问题,自己的朋友开了家店,想弄个网站,可是他和他朋友对做网站一点不了解,想咨询一下自己做网站怎么在合肥怎么找到一
  • 以下内容是一位SEO前辈(站长区域的创始人Brett Tabke)写的,这篇文章在我特别初学习SEO时,深刻得影响了我,给我了足够的自信。希望对你也有所帮助
  • 在网页制作和网站开发过程中,网页上使用的字体往往由于浏览者电脑中没有相应的字体,达不到我们设计的效果。为了解决这个问题,我们可以直接使用我们
  • WordPress模板基本文件style.css 样式表文件index.php 主页文件single.php 日志单页文件page.php 页面文件archvie.php 分类和日期存档页文
  • 在之前的建站教程中,介绍了wordpress免插件显示文章浏览量次数,可以在文章页显示文章浏览量,但我们自己做网站时,有时需要在分类目录页显示当前分