1

我有 tbl A 和 tbl B 如下,我想得到他们的名字,用逗号分隔,但我没有得到我正在寻找的格式。

http://sqlfiddle.com/#!2/149093/10

User: 1,2,3 ;2 - 我也应该得到名字 A,B,C 然后是 B 但我只得到 A 和 B。我应该如何得到他们在列用户中的个人姓名并且也满足条件至少存在 2 个。在此先感谢。

预期输出为:

整行 A
整行 B
整行 C
整行 A

基本上是 4 行,因为他们的名字总共有 4 个用户。

|  USER | CATEGORY | USERNAME |
|-------|----------|----------|
| 1,2,3 |        1 |       A  |
| 1,2,3 |        1 |       B  |
| 1,2,3 |        1 |        C |
|     2 |        1 |        B |
4

2 回答 2

2

试试这个:

SELECT a.user, a.category, b.username 
FROM tblA a 
JOIN tblB b ON find_in_set(b.userid,a.user) 
WHERE FIND_IN_SET(2,a.user)
ORDER BY a.user;

检查SQL FIDDLE 演示

输出

|  USER | CATEGORY | USERNAME |
|-------|----------|----------|
| 1,2,3 |        1 |        A |
| 1,2,3 |        1 |        B |
| 1,2,3 |        1 |        C |
|     2 |        1 |        B |
于 2014-12-30T10:25:19.987 回答
0

你不应该使用

('1,2,3', '1'),
('1,4,5', '2'),
('1,3,5', '3'),

将多个用户添加到同一类别。相反,请使用您在下面已经使用的格式将用户添加到类别:

('1', '1'),
('2', '1');

所以,而不是:('1,4,5', '2'),

采用:('1', '2'), ('4', '5'), ('1', '2'),

于 2014-12-30T10:24:48.410 回答