MySql - 获取Value为1的列名

时间:2014-04-18 13:20:08

标签: mysql sql join show

My MySql Table如下所示:

| id | picID      | name_Gina | name_Tom | name_Liz |
|----|------------|-----------|----------|----------|
| 1  | DSC057.jpg | 1         | 0        | 0        |
| 2  | DSC622.jpg | 1         | 0        | 1        |
| 3  | DSC624.jpg | 0         | 1        | 0        |
| .. | ..         | ..        | ..       | ..       |

等等。 name_prefixes是我与某个pic相关联的人员。现在我想显示照片,例如。 DSC622.jpg并回应Gina和Liz在这张照片上的标记。所以我需要列名(name_Gina& name_Liz),其中picID = 1?

喜欢这样:

SHOW COLUMNS FROM $table LIKE 'name_%' WHERE id = $id

任何人都可以给我一个提示吗? 也许我应该使用两个表,一个使用Names,另一个使用picID并将它们连接在一起?

1 个答案:

答案 0 :(得分:2)

您应该真正将数据库设计更改为此类

pictures table
--------------
id
name


users table
-----------
id
name
birth_date


user_pictures table
-------------------
picture_id
user_id

user_pictures表将包含每个用户图片关系的记录。

示例数据

pictures
id   name
1    dsc_01.jpg
2    dsc_04.jpg

users
id  name
1   tom
2   jane

user_pictures
picture_id user_id
1          1
1          2
2          2

然后,您可以选择与此相关的特定用户的所有照片

select p.name
from pictures p
join user_pictures up on up.picture_id = p.id
join users u on up.user_id = u.id
where u.name = 'tom'