繁体   English   中英

加入两个LIKE条件的mysql表。

[英]Join two mysql tables with LIKE condition.

我正在尝试运行此代码,但出现错误。 有什么想法吗?

SELECT notes.project_id, notes.title, notes.description 
FROM notes, project_members 
WHERE notes.title LIKE '%second%' OR notes.description LIKE  '%second%'
WHERE notes.project_id = project_members.project_id AND project_members.user_id = '7'

由于只能有一个WHERE子句,因此可以使用内部联接,如下所示:

SELECT notes.project_id, notes.title, notes.description 
  FROM project_members pm
INNER JOIN notes ON notes.project_id = pm.project_id AND pm.user_id = 7
  WHERE notes.title LIKE '%second%' OR notes.description LIKE '%second%'

应该只有一个WHERE子句。

SELECT notes.project_id, notes.title, notes.description 
FROM notes, project_members 
WHERE 
(notes.title LIKE '%second%' OR notes.description LIKE  '%second%')
AND notes.project_id = project_members.project_id AND project_members.user_id = '7';

在您的LIKE条件之间,查询看起来比AND要重要。

您也可以考虑使用JOIN ,就像这样。

SELECT notes.project_id, notes.title, notes.description 
FROM notes
JOIN project_members
ON notes.project_id=project_members.project_id
WHERE 
    (notes.title LIKE '%second%' OR notes.description LIKE  '%second%')
AND project_members.user_id = '7';

您有两个WHERE子句,但是单个SELECT只允许一个。 但是,如果使用正确的显式JOIN语法,则可以轻松解决此问题:

SELECT n.project_id, n.title, n.description 
FROM notes n JOIN
     project_members  p
     ON n.project_id = p.project_id
WHERE (n.title LIKE '%second%' OR n.description LIKE '%second%') AND
      p.user_id = '7';

注意:

  • 始终使用正确的显式JOIN语法。 请勿FROM子句中使用逗号。
  • 表别名使查询更易于编写和阅读。
  • 对于您要使用的逻辑,我很确定您的WHERE条件缺少括号。
  • 如果user_id是任何类型的数字,则不要在“ 7”附近使用单引号。 这会混淆编译器和人员。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM