Mysql 带like子句的内部连接
我在like子句中使用内部连接 我的sql是Mysql 带like子句的内部连接,mysql,sql,Mysql,Sql,我在like子句中使用内部连接 我的sql是 SELECT tbl_songs.id AS sid, tbl_songs.name AS sname, tbl_albums.id AS aid, tbl_albums.name AS aname FROM tbl_songs INNER JOIN tbl_albums ON tbl_songs.albums LIKE '%' + tb
SELECT tbl_songs.id AS sid,
tbl_songs.name AS sname,
tbl_albums.id AS aid,
tbl_albums.name AS aname
FROM tbl_songs
INNER JOIN tbl_albums
ON tbl_songs.albums LIKE '%' + tbl_albums.name + '%';
它向我显示语法错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+ tbl_albums.name + '%'' at line 2
请详细说明语法错误的原因。您必须使用concat
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+ tbl_albums.name + '%'' at line 2
...LIKE CONCAT('%',tbl_albums.name, '%');
mysql中没有这样的+
操作符mysql的一个示例:
You can use below format in oracle sql:
SELECT tbl_songs.id AS sid,
tbl_songs.name AS sname,
tbl_albums.id AS aid,
tbl_albums.name AS aname
FROM tbl_songs
INNER JOIN tbl_albums
ON tbl_songs.albums LIKE ('%'||tbl_albums.name||'%');
SELECT tbl_songs.bus_name FROM tbl_songs , tbl_albums
WHERE tbl_songs.albums LIKE CONCAT('%',tbl_albums.name, '%');
请注意,使用带前导通配符的类似,对性能有害。将其与联接一起使用对性能极为不利。建议您尝试提出另一种解决方案。orace中的CONCAT只接受两个参数:CONCAT(CONCAT(“%”,tbl_albums.name),“%”);这是正确的,在这种情况下,可以使用两个concat函数(正如我最初的答案所示)。然而,后来我发现问题是针对mysql specificall的,所以我用mysql调整了itCONCAT,并接受了几个参数。鉴于这个问题是如何被标记为MySQL的,应该这样回答<代码>CONCAT(str1,str2,…)尼斯兄弟。效验如神救了我的命,什么?您的答案使用的是完全不同的表格,您不知道这有助于回答问题。(老实说,底部附加的“CheckThis out”文本让它看起来像是从其他地方粘贴的拙劣副本)什么??为什么我们不能使用完全不同的表,我们有两个表(bus,chm_master cm),cm是chm_master的别名。看,这对我来说是正确的。我不明白你到底想透露什么。cm.bus_json是json值,我试图在其中查找bus_名称。这有什么不对。坦白地说,你应该在这里澄清你的概念。这个问题使用
tbl_专辑
和tbl_歌曲
作为表格。您的答案是使用bus
和chm\u master
。这就是我说你使用不同的桌子的意思。如果您解释了它是如何回答问题的,这可能会起作用,但实际上,这只是一段没有上下文的代码。现在您可以看到tbl_歌曲的专辑与tbl_专辑有关系。你现在高兴吗?嗨,这很可能解决问题。。。但是,如果你能提供一些关于它如何工作以及为什么工作的解释,那就太好了:)别忘了——堆栈溢出上有很多新手,他们可以从你的专业知识中学到一两件事——对你来说显而易见的事对他们来说可能不是这样。