php - SQL 不同内连接

标签 php mysql sql

我不知道这个sql,sql可以做到这一点

我有 table

表:tree_hie

cluster | id 
1       | X | Y
2       | X | Y | Z
3       | A | B

表:值

id | value 
x  | 3
y  | 3
z  | 3
a  | 0
b  | 0

我想像这样显示

cluster | value | id 
1       | 3     | x,y
2       | 3     | x,y,z
3       | 0     |a,b

你知道如何进行这样的查询吗..我不知道..非常感谢你..

最佳答案

您还可以使用replace首先用逗号替换空格和|管道,然后您可以使用find_in_set

select t.cluster,
min(v.`value`) as value,
group_concat(v.id order by v.id) as id
from tree_hie t
join `value` v on (
find_in_set(
  v.id,replace(replace(t.id,'|',','),' ','') 
  ) > 0
) 
group by t.cluster

但是拥有这样的结构真的很糟糕,你应该关心有一个 normalized数据结构优先

DEMO

关于php - SQL 不同内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29725345/

相关文章:

javascript - 如何使整个跨度可点击?

php - 如何将php变量插入到oracle表中?

mysql - 数据库设计,使一个表指向多个和某种递归指针

php - 如何在 CodeIgniter 表单验证中使用 Bootstrap 错误样式?

javascript - 启用禁用选择/下拉单选

mysql - 如何将当前行的值传递到 SQL 中的子查询中?

mysql - 修改db中的str

php - 该语句总是返回 false

mysql - SQL 查询从表中选择计数

sql - 在不破坏脚本和存储过程的情况下重命名列