[英]Is there a way to select the ColName when the field = 1?
我一直在玩一些SQL查詢,試圖在行中的字段等於1
時獲取列名。
我的表看起來像這樣:
user | col 1 | col 2 | col 3 | col 4 |
user1 | 1 | 1 | 0 | 1 |
user2 | 0 | 1 | 1 | 1 |
user3 | 1 | 0 | 0 | 1 |
我試圖在每個值等於1
時顯示每個列名稱。
SELECT ColNames
FROM table
WHERE user1 = 1
規范化您的數據庫!
user | n | value
user1 | 1 | 1
user1 | 2 | 1
user1 | 3 | 0
user1 | 4 | 1
user2 | 1 | 0
user2 | 2 | 1
user2 | 3 | 1
user2 | 4 | 1
user3 | 1 | 1
user3 | 2 | 0
user3 | 3 | 0
user3 | 4 | 1
現在很容易!
SELECT n
FROM users
WHERE user = 'user1' AND value = 1
如上所述,您需要三個表。 一個用於用戶,一個用於項目,一個用於連接兩者。 這是我用於類似功能的結構和查詢,維護用戶定義的郵件列表:
CREATE TABLE `tbl_listmembers` (
`listmem_id` int(11) NOT NULL AUTO_INCREMENT,
`list_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
CREATE TABLE `tbl_lists` (
`list_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`list_name` varchar(45) DEFAULT NULL,
`list_description` varchar(250) DEFAULT NULL,
CREATE TABLE `tbl_user_accounts` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_first_name` varchar(45) NOT NULL,
`user_last_name` varchar(45) NOT NULL,
從特定列表中提取成員的查詢:
SELECT lm.list_id, lm.user_id, ua.user_first_name, ua.user_last_name, ua.user_id
FROM test.tbl_listmembers AS lm
LEFT JOIN test.tbl_user_accounts AS ua ON (ua.user_id = lm.user_id)
WHERE (lm.list_id = combo_box_selected_listnumber)
希望有所幫助。
你可以做
select case when col1=1 then 'Col 1' else '' end +
case when col2=1 then 'Col 2' else '' end +
case when col3=1 then 'Col 3' else '' end +
case when col4=1 then 'Col 4' else '' end
from users
where user = 'user1'
編輯:oops,這是針對事務SQL,不確定mysql是否具有相同的case
構造,如果沒有,我的壞
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.