[英]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.