php - 7 个带有内连接的查询到 1 个查询,mysql

标签 php mysql sql

我有一个问题,如何将总共 7 个查询变成 1 个查询?减少数据库查询?我有 1 个表包含所有内容,但 suggest 是一个“分隔符”,每个建议我必须加载 33 行并按日期线排序,我考虑过使用任何内部联接...等,但我认为这不是一个办法吗?如我错了请纠正我。感谢您的帮助!谢谢!!

这是mysql查询1

$query = DB::query("SELECT t.*, d.did AS dingid, d.id AS dingpid, f.id AS bookmark, f.uid AS buid 
        FROM ".DB::table('comeing_tao')." AS t 
        LEFT JOIN ".DB::table('comeing_tao_ding')." AS d ON t.id = d.id AND d.uid = ".$_G['uid']." 
        LEFT JOIN ".DB::table('comeing_tao_fans')." AS f ON t.id = f.id AND f.uid = ".$_G['uid']." 
        WHERE t.suggest = 0 AND t.state = 1 ORDER BY dateline DESC LIMIT 33");

这是mysql查询2

$query = DB::query("SELECT t.*, d.did AS dingid, d.id AS dingpid, f.id AS bookmark, f.uid AS buid 
            FROM ".DB::table('comeing_tao')." AS t 
            LEFT JOIN ".DB::table('comeing_tao_ding')." AS d ON t.id = d.id AND d.uid = ".$_G['uid']." 
            LEFT JOIN ".DB::table('comeing_tao_fans')." AS f ON t.id = f.id AND f.uid = ".$_G['uid']." 
            WHERE t.suggest = 1 AND t.state = 1 ORDER BY dateline DESC LIMIT 33");

这是mysql查询3

$query = DB::query("SELECT t.*, d.did AS dingid, d.id AS dingpid, f.id AS bookmark, f.uid AS buid 
        FROM ".DB::table('comeing_tao')." AS t 
        LEFT JOIN ".DB::table('comeing_tao_ding')." AS d ON t.id = d.id AND d.uid = ".$_G['uid']." 
        LEFT JOIN ".DB::table('comeing_tao_fans')." AS f ON t.id = f.id AND f.uid = ".$_G['uid']." 
        WHERE t.suggest = 2 AND t.state = 1 ORDER BY dateline DESC LIMIT 33");

这是mysql查询3

$query = DB::query("SELECT t.*, d.did AS dingid, d.id AS dingpid, f.id AS bookmark, f.uid AS buid 
        FROM ".DB::table('comeing_tao')." AS t 
        LEFT JOIN ".DB::table('comeing_tao_ding')." AS d ON t.id = d.id AND d.uid = ".$_G['uid']." 
        LEFT JOIN ".DB::table('comeing_tao_fans')." AS f ON t.id = f.id AND f.uid = ".$_G['uid']." 
        WHERE t.suggest = 3 AND t.state = 1 ORDER BY dateline DESC LIMIT 33");

这是mysql查询4

$query = DB::query("SELECT t.*, d.did AS dingid, d.id AS dingpid, f.id AS bookmark, f.uid AS buid 
        FROM ".DB::table('comeing_tao')." AS t 
        LEFT JOIN ".DB::table('comeing_tao_ding')." AS d ON t.id = d.id AND d.uid = ".$_G['uid']." 
        LEFT JOIN ".DB::table('comeing_tao_fans')." AS f ON t.id = f.id AND f.uid = ".$_G['uid']." 
        WHERE t.suggest = 4 AND t.state = 1 ORDER BY dateline DESC LIMIT 33");

依此类推...我跳过以下3个查询,因为除了t.suggest = 5、t.suggest = 6、t.suggest = 7之外,其他都是完全相同的

目标是将所有查询集中在一起,然后使用数组。

最佳答案

您可以使用OR

(t.suggest=3 OR t.suggest=4 OR ...) AND ...

如果您希望每个建议最多包含 33 条记录,请尝试 UNION

(SELECT ...) UNION (SELECT ...) UNION (SELECT ...) ...

关于php - 7 个带有内连接的查询到 1 个查询,mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20237235/

相关文章:

php - PHP @property 数据类型中的 MySQL TIMESTAMP 是什么?

mysql - 从mysql中的xml中提取值

SQL Server 字符串比较

sql - 在 SQL 查询中查找未使用的连接

php - mysql 查询中重复更新的 where 子句

php - 在 PHP 中引用多字节字符串的最简单方法是什么?

php - 符号问题

mysql - 如何使用 MySQL JSON_SET 到带有数字键的文档?

更新多行时MySQL重复条目

sql - 如何获得最年长的人?