2016-10-08 23 views
0

我试图运行这段代码,但我得到错误。 任何想法为什么?加入两个具有LIKE条件的mysql表。

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' 
+0

就得where子句..的毗连有和/或 –

回答

1

因为只可以有你可以使用一个内一个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%' 
0

应该有单个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条件之间。

你也可以考虑使用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'; 
0

你有两个WHERE条款,但单SELECT只允许一个。

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语法但是,这将容易来,如果你使用正确的,明确的JOIN语法固定。 从不FROM条款中使用逗号。
  • 表别名使查询更容易编写和读取。
  • 我很确定您的WHERE条件缺少括号,为您的预期逻辑。
  • 如果user_id是任何类型的数字,那么不要在“7”周围使用单引号。这会混淆编译器和人员。
+1

[进一步理由](HTTP的条件://stackoverflow.com/questions/1599050/ansi-vs-non-ansi-sql-join-syntax)显式'join'。 –