Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询的问题_Mysql_Sql - Fatal编程技术网

mysql查询的问题

mysql查询的问题,mysql,sql,Mysql,Sql,我有以下疑问 SELECT `c`.`id` AS `confession_id`, `c`.`account_id` AS `confession_author_id`, `c`.`confession_text`, `c`.`anonymous`, `c`.`total_likes`, `c`.`total_comments`, `c`.`creation_date`, `a`.`username`, `col`.`name` AS `college`,

我有以下疑问

SELECT 
  `c`.`id` AS `confession_id`,
  `c`.`account_id` AS `confession_author_id`,
  `c`.`confession_text`,
  `c`.`anonymous`,
  `c`.`total_likes`,
  `c`.`total_comments`,
  `c`.`creation_date`,
  `a`.`username`,
  `col`.`name` AS `college`,
  `col`.`avatar_url`,
  `cll`.`deleted` AS `tacc_exists` 
FROM
  `confessions` AS `c` 
  LEFT JOIN `accounts` AS `a` 
    ON `a`.`id` = `c`.`account_id` 
  LEFT JOIN `colleges` AS `col` 
    ON `col`.`id` = `c`.`college_id` 
  LEFT JOIN `confession_likes_log` AS `cll` 
    ON `cll`.`confession_id` = `c`.`id` 
    AND `cll`.`account_id` = :taccd_user 
    AND `c`.`college_id` IN ('9') 
ORDER BY `c`.`id` DESC 
LIMIT 10 
假设它根据提供的学院id从指定学院中选择条目


尽管出于某种原因,即使学院id不是指定的id,它也会选择条目。我在计算如何使用左连接执行and子句时遇到了问题,因此我可能没有正确设置查询的格式。

这是您的
where
子句:

              FROM `confessions` AS `c` LEFT JOIN
                   `colleges` AS `col`
                    ON `col`.`id` = `c`.`college_id` LEFT JOIN
                   `confession_likes_log` AS `cll`
                    ON `cll`.`confession_id` = `c`.`id` AND
                       `cll`.`account_id` = :taccd_user AND
                        `c`.`college_id` in ('9')
left join
的工作方式是:在
on
子句中运行测试。如果第一个表中的给定行不匹配,则包含右表中具有
NULL
值的行。猜猜看。这甚至适用于第一个表中的条件

因此,('9')中的过滤器
c.college\u id没有按照您的想法进行操作。您需要将其移动到
where`子句:

              FROM `confessions` AS `c` LEFT JOIN
                   `colleges` AS `col`
                    ON `col`.`id` = `c`.`college_id` LEFT JOIN
                   `confession_likes_log` AS `cll`
                    ON `cll`.`confession_id` = `c`.`id` AND
                       `cll`.`account_id` = :taccd_user
              WHERE `c`.`college_id` in ('9')
              FROM `confessions` AS `c` LEFT JOIN
                   `colleges` AS `col`
                    ON `col`.`id` = `c`.`college_id` LEFT JOIN
                   `confession_likes_log` AS `cll`
                    ON `cll`.`confession_id` = `c`.`id` AND
                       `cll`.`account_id` = :taccd_user
              WHERE `c`.`college_id` in ('9')