【问题标题】:MySQL FULL OUTER JOINMySQL 完全外连接
【发布时间】:2013-03-11 03:11:29
【问题描述】:

在过去的几个小时里,我遇到了一个 MySQL 连接问题。 我有 2 张桌子:

article : 
id(int) 
label(varchar) 
direct_url(varchar)

article_category: 
id(int) 
label(varchar)

我正在尝试使用标签进行搜索查询并加入两个表。我正在这样做:

SELECT label,direct_url FROM article FULL OUTER JOIN article_category ON article.label WHERE label LIKE %$q% ORDER BY label ASC

这显然是错误的,因为它不起作用。无论搜索键($q)如何,我每次都会得到 0 个结果。 如果有人能对我的问题有所了解,我将不胜感激。

编辑:my source is here.

【问题讨论】:

  • ON article.label "= article_category_label" ,我认为您需要在引号中添加部分
  • @johnyTee:感谢您的回复,我尝试过有无...没有成功..

标签: php mysql search join


【解决方案1】:

MySQL 不支持FULL OUTER JOIN。这实际上是将article 表别名为FULL。有两个语法错误:OUTER JOIN 本身和 LIKE 值周围缺少引号。 JOIN ON article.label 也很可能没有做你想做的事。必须是JOIN ON article.label = article_category.label

我很确定你不想要一个完整的外连接——从概念上讲,这将是每个表中不存在于另一个表中的值,但实际上你似乎希望能够搜索 两个标签字段。如果label 是标识类别的列,则最好使用article_category id 而不是当前的article.label 列。如果不是这种情况,那么无论如何您都没有可以加入表格的任何东西。

【讨论】:

  • 我已按照建议将其更改为 ID 并且有效。使用 JOIN 执行 2 个查询而不是 1 个查询时,我也得到了相同的结果。非常感谢您指出它,它对我帮助很大!
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 2017-06-09
  • 2011-12-26
  • 1970-01-01
  • 2011-12-20
  • 2016-09-13
  • 2014-08-08
  • 2012-01-06
相关资源
最近更新 更多