不要這樣做。使用標準化數據模型。在數據庫字段中使用逗號分隔列表通常是一個非常糟糕的主意。你沒有辦法正確使用這些值,因爲你總是需要麻煩的字符串操作來處理這些事情。
如果您需要錄製註冊到程序的用戶,創建單獨的用戶,程序和關係表表對他們倆的:
_________ ______________ _________
| program | | user2program | | program |
+---------+ +------------ + +---------+
| id | <--> | user_id | | name |
| name | | program_id | <--> | id |
--------- -------------- ---------
它需要多一點的編程工作,保持這些表格的正確填充,但是您會發現它以這種方式更好地工作。
沒有一個單一的SQL語句可以做你正在尋找的問題。如果你有一個合適的數據模型,你需要先插入你的程序,那麼你的用戶,並在後面加上兩者之間的releation:
INSERT INTO program (id, name) VALUES (1, "My Program");
INSERT INTO user (id, name) VALUES (1, "John Doe");
INSERT INTO user2program (user_id, program_id) VALUES (1, 1);
爲了得到已註冊的程序的所有用戶,然後您可以使用帶有JOIN的SELECT語句:
SELECT p.name AS program_name, u.name AS user_name
FROM program AS p
JOIN user2program AS u2p ON p.id = u2p.program_id
JOIN user AS u ON u.id = u2p.user_id
WHERE p.id = 1 -- ID of the program
顯示兩個表的結構 – Mihai 2015-02-06 10:22:51
添加完整的錯誤消息。 – Jens 2015-02-06 10:24:03
您在_programs_表的申請中是否有** WHERE **? – 2015-02-06 10:26:54