Mysql 在select和from子句中使用子查询时发生sql错误

Mysql 在select和from子句中使用子查询时发生sql错误,mysql,sql,Mysql,Sql,在select和from子句中使用子查询时出错 错误: 以下是我迄今为止所做的: SELECT m.id, m.title_name, m.release_date, m.plot, m.poster, (SELECT count(*) FROM users_ratings WHERE type_id = m.id AND type_name = 'movies' LIMIT 1) count_user_rating FROM (SELECT u.* FROM users u

在select和from子句中使用子查询时出错
错误:

以下是我迄今为止所做的:

SELECT m.id, m.title_name, m.release_date, m.plot, m.poster, 
  (SELECT count(*) FROM users_ratings WHERE type_id = m.id AND type_name = 'movies' LIMIT 1) count_user_rating 
FROM (SELECT u.* FROM users u
      LEFT JOIN users_ratings ur ON ur.user_id = u.id
      WHERE ur.type_id = 2
      AND ur.type_name = 'movies') u
LEFT JOIN users_ratings ur ON ur.user_id = u.id
LEFT JOIN movies m ON m.id = ur.type_id
WHERE ur.type_name = 'movies'

UNION

SELECT s.id, s.title_name, s.first_air_date release_date, s.plot, s.poster, 
  (SELECT count(*) FROM users_ratings WHERE type_id = s.id AND type_name = 'series' LIMIT 1) count_user_rating 
FROM (SELECT u.* FROM users u
      LEFT JOIN users_ratings ur ON ur.user_id = u.id
      WHERE ur.type_id = 2
      AND ur.type_name = 'movies') u
LEFT JOIN users_ratings ur ON ur.user_id = u.id
LEFT JOIN series s ON s.id = ur.type_id
WHERE ur.type_name = 'series'

我不确定你的问题出了什么问题,我觉得没问题。但这是实现这一目标的另一种方式。试试这个

SELECT m.id,
       m.title_name,
       m.release_date,
       m.plot,
       m.poster,
       t.count_user_rating
FROM   (SELECT u.*
        FROM   users u
               LEFT JOIN users_ratings ur
                      ON ur.user_id = u.id
        WHERE  ur.type_id = 2
               AND ur.type_name = 'movies') u
       LEFT JOIN users_ratings ur
              ON ur.user_id = u.id
       LEFT JOIN movies m
              ON m.id = ur.type_id
       LEFT JOIN (SELECT type_id,
                         Count(*) AS count_user_rating
                  FROM   users_ratings
                  WHERE  NAME = 'movies'
                  GROUP  BY type_id) t
              ON t.type_id = m.id
WHERE  ur.type_name = 'movies'
UNION
SELECT s.id,
       s.title_name,
       s.first_air_date release_date,
       s.plot,
       s.poster,
       t.count_user_rating
FROM   (SELECT u.*
        FROM   users u
               LEFT JOIN users_ratings ur
                      ON ur.user_id = u.id
        WHERE  ur.type_id = 2
               AND ur.type_name = 'movies') u
       LEFT JOIN users_ratings ur
              ON ur.user_id = u.id
       LEFT JOIN series s
              ON s.id = ur.type_id
       LEFT JOIN (SELECT type_id,
                         Count(*) AS count_user_rating
                  FROM   users_ratings
                  WHERE  NAME = 'series'
                  GROUP  BY type_id) t
              ON t.type_id = s.id
WHERE  ur.type_name = 'series' 

这是因为子查询
count\u user\u rating
与语法不匹配。它将作为一个表进行计算,而您似乎希望将其用作一个列。那么如何解决这个问题呢?因为它将作为
COUNT(*)
函数中的一个值进行计算,尽管它是以单行表的形式计算的,您是否试图在所有行中使用相同的值填充该列?@Vashi yescorrect@Vashi-并非所有记录的计数都相同。检查where子句中是否有条件。每个
id
的计数都是相同的,这就是我的想法。应该没问题。@Pரதீப் 我试过你的解决方案,效果很好