tabel2.id中table1.table2id上的MYSQL连接
表1tabel2.id中table1.table2id上的MYSQL连接,mysql,Mysql,表1 +----+------------+ | id | table2_ids | +----+------------+ | 1 | 1,2,3 | +----+------------+ +----+------------+ | id | some_col | +----+------------+ | 1 | some_col | | 2 | some_col | | 3 | some_col | +----+------------+ 表2 +-
+----+------------+
| id | table2_ids |
+----+------------+
| 1 | 1,2,3 |
+----+------------+
+----+------------+
| id | some_col |
+----+------------+
| 1 | some_col |
| 2 | some_col |
| 3 | some_col |
+----+------------+
表2
+----+------------+
| id | table2_ids |
+----+------------+
| 1 | 1,2,3 |
+----+------------+
+----+------------+
| id | some_col |
+----+------------+
| 1 | some_col |
| 2 | some_col |
| 3 | some_col |
+----+------------+
我想用table2
获取table1
,其中table2的id位于table1的table2\u id中
就像一篇有三张图片的帖子,帖子只有图片的id,我需要返回图片的url
我认为会是:
select * from table1 join table2 ON table2.id IN table1.table2_ids
但这是错误的
非常感谢对于这种类型的数据,您可以使用
FIND_IN_SET()
函数
select * from table1 a, tabl2 b where a.id=b.id
select * from Table1 t1 JOIN Table2 t2 WHERE FIND_IN_SET(t2.id,t1.tbl2_id)
更多信息:在您的情况下更正确的是
select *
from table1
join table2 ON
POSITION(
CONCAT(",", table2.id, ",") IN
CONCAT(",", table1.table2_ids, ",")
) > 0
但这样的数据库结构不好,应该将其分为3个表
表1、表2和中间表3将它们连接起来
表3将包含字段table1Id,table2Id不以csv格式存储外键。规范化您的表如果有匹配或全部匹配,您想返回结果吗?@Jens我知道这是一个丑陋的结构,但它一直存在于大量数据中,我无法更改。请调整您的问题,以便以更具可读性和形式正确的方式呈现表的数据。另外,请更具体地说明您正在处理的数据类型。更具体的标题也可能对在其他人中发现您的问题的人有所帮助。表A有逗号分隔的值,表b有一个值。您的加入比较有效吗?虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。