Mysql 我们可以使用或关键字进行sql连接吗?
我的桌子如下所示;(我从excel中填充了它) 我想从另一个表中提取一些数据,以便使用sql联接。因为我的列包含逗号分隔的值,所以我尝试将join与Or一起使用,但没有成功。这样做对吗? 我寻找这个逗号分隔列的快速解决方案 例如:Mysql 我们可以使用或关键字进行sql连接吗?,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我的桌子如下所示;(我从excel中填充了它) 我想从另一个表中提取一些数据,以便使用sql联接。因为我的列包含逗号分隔的值,所以我尝试将join与Or一起使用,但没有成功。这样做对吗? 我寻找这个逗号分隔列的快速解决方案 例如: 你有一个可怕的数据模型。您可能无法大大加快查询速度。但您至少可以简化代码 SELECT * FROM test.types t JOIN test.matric ma ON FIND_IN_SET(t.category, REPLACE(ma.`
你有一个可怕的数据模型。您可能无法大大加快查询速度。但您至少可以简化代码
SELECT *
FROM test.types t JOIN
test.matric ma
ON FIND_IN_SET(t.category, REPLACE(ma.`Function Code AA`, ', ', ',')) > 0 OR
t.type = ma.`function Code NN`
WHERE ma.`Priority` = 'T1';
但是,您应该修复您的数据模型。以下是一些问题:
- 数据库的字符串处理能力非常差
- 应使用正确的类型存储值
- 外键应正确声明
- 这种结构防止数据库使用索引、分区和最佳优化方法
SQL有一种很好的存储列表的方法。它不是字符串。它被称为表格。您应该认真地远离这种表格设计。即使是
FIND_IN_SET
在这里也不一定有效,因为3
不等于03
,当两者作为文本进行比较时。@TimBiegeleisen这不是表格设计。我在那里导入一个excel文件。我从客户端获取的Excel文件。所以我想从现有表中提取数据,这就是为什么尝试使用Excel填充的表进行连接。您能用Find_uu;In set给出答案吗?我修正了03/3,在MySQL内部连接中可以使用或关键字。在您的代码中,在内部连接测试中matric
之后缺少一个反勾号。`matric
SELECT *
FROM test.types t JOIN
test.matric ma
ON FIND_IN_SET(t.category, REPLACE(ma.`Function Code AA`, ', ', ',')) > 0 OR
t.type = ma.`function Code NN`
WHERE ma.`Priority` = 'T1';