Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带like子句的内部连接_Mysql_Sql - Fatal编程技术网

Mysql 带like子句的内部连接

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

我在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 '%' + 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_专辑有关系。你现在高兴吗?嗨,这很可能解决问题。。。但是,如果你能提供一些关于它如何工作以及为什么工作的解释,那就太好了:)别忘了——堆栈溢出上有很多新手,他们可以从你的专业知识中学到一两件事——对你来说显而易见的事对他们来说可能不是这样。