MySQL 内连接失败

标签 mysql sql join inner-join

我得到了这个简单的连接语句,并且我很确定语法是正确的。我看了一些教程,没有发现我的代码和示例之间有任何区别。 声明如下:

SELECT n.id nId, n.news_date, n.news_type,
       p.id pId, p.title pTitle, p.file_path pPath,
       s.id sId, s.title sTitle, s.content sContent,
       v.id vId, v.title vTitle, v.url vUrl
FROM photo_news p, standard_news s, video_news v
INNER JOIN news n
ON p.news_id = n.id OR s.news_id = n.id OR v.news_id = n.id
ORDER BY n.news_date DESC

我收到以下错误:

Unknown column 's.news_id' in 'on clause'

我真的不知道为什么会出现这个错误,因为列“news_id”存在于它必须存在的每个表中。 如果我更改 ON 子句中的顺序(即我以 p.news_id = n.news_id 开始),我会得到相同的错误(unknwonw 列 p.news_id)。所以我认为别名有问题,但我真的不知道。 感谢您的帮助;)

最佳答案

您可能正在寻找类似的东西来返回照片新闻中的记录数据,并至少在另一个表中包含数据。

在这种情况下,您需要在 JOIN 条件中使用 LEFT JOIN 而不是 OR。

         SELECT n.id nId, n.news_date, n.news_type,
                p.id pId, p.title pTitle, p.file_path pPath,
                s.id sId, s.title sTitle, s.content sContent,
                v.id vId, v.title vTitle, v.url vUrl
           FROM news n
LEFT OUTER JOIN photo_news p
             ON n.id = p.news_id 
LEFT OUTER JOIN standard_news s
             ON n.id = s.news_id
LEFT OUTER JOIN video_news v
             ON n.id = v.news_id 
WHERE p.news_id IS NOT NULL
   OR s.news_id IS NOT NULL
   OR v.news_id IS NOT NULL

   ORDER BY n.news_date DESC

关于MySQL 内连接失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955129/

相关文章:

php - PDOStatement::execute() 返回 true 但数据未更新

php - 在 LIKE 条件下转义通配符

php - 转换 mysql_result 困难

sql - 重置或更新数据库表中的行位置整数

mysql - 一种从一个表中选择字段并将其插入到另一个表中的方法?

mysql - 如何解决 -Error- Column 'RefName' in field list is ambiguous?

sql - 为什么我不能将唯一标识符/GUID 传递给存储过程

mysql - 加入时不是唯一的表/别名

mysql - 连接表以从唯一行中获取最新行

php - Mysql 2 select all 语句无法正常工作