mysql - 查询SQL在一个字段中选择双id
问题描述
早上好,我想显示与以逗号分隔的 id 字段关联的所有名称。
我想complaint_type.name
在投诉表中填写所有内容complaint.id_type_complaint
:
My expectation select result is :
SELECT complaint.id, complaint.notes, complaint_type.name
FROM complaint
LEFT JOIN complaint_type ON complaint_type.id = complaint.id_complaint_type
result :
+-------------------------------
|1 | Wet and broke | Broke, Wet
|2 | Lost Goods | Lost
+-------------------------------
(complaint_type table)
+---+--------+
|id | name |
+---+--------+
|1 | Broke |
|2 | Lost |
|3 | Wet |
+---+--------+
(complaint table)
+---------------------------------------+
| id | notes | id_type_complain |
+---------------------------------------+
|1 | Wet and Broke | 1,3 |
|2 | Lost Goods | 2 |
解决方案
你几乎得到了答案。您可以使用FIND_IN_SET()
andGROUP_CONCAT()
来解决您的问题:
SELECT c.id, c.notes, GROUP_CONCAT(t.name) AS complaint_names
FROM complaint AS c LEFT JOIN complaint_type AS t
ON FIND_IN_SET(t.id, c.id_type_complain)
GROUP BY c.notes
ORDER BY c.id
这将导致:
+----------------------------------+
|id| notes |complaint_names|
+----------------------------------+
|1 | Wet and broke | Broke, Wet |
|2 | Lost Goods | Lost |
+----------------------------------+
推荐阅读
- javascript - jQuery选择器忽略一个元素?
- jquery - 使用两个日期选择器时,jquery ui datepicker day highlight 不起作用
- python - 编写带有可选参数的 REST 包装函数的 Pythonic 方法
- java - Dagger2 出现“没有@Provides-annotated 方法就无法提供”的问题。
- opencv - 红细胞计数
- php - Apache 2.4 SetEnv 不工作
- ios - 当我在 UIviewController 上转到 tableview 时无法访问 scrollToRowAtIndexpath
- mysql - 在sql中检索具有多个条件的同一列
- python - 传递空值时列表索引超出范围
- c# - 通过 Windows 服务发送邮件时 LinkedResource 的访问被拒绝错误