根据MySQL

时间:2017-04-28 07:57:59

标签: mysql sql

我对SQL和数据库都很陌生。

我正在尝试制作用户的偏好表。 字段为user_idpref_noprg_code

现在,如果我创建了制作pref_no auto_increment的表格,那么无论user_id如何,它都会自动增加。

所以,我的问题是 - 有没有办法定义表格,以便auto_incremented考虑user_id或我必须明确找到最后pref_no为用户发生了什么,然后在插入之前将其递增1?

感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

根据建议的MjhFahmina,我们可以为插入创建一个过程。

DELIMITER //
CREATE PROCEDURE test(IN u_id INT(7), p_code INT(5))
    BEGIN
        SELECT @pno:= MAX(pref_no) FROM temp_choice WHERE user_id = u_id; 
        IF @pno IS NULL THEN
            SET @pno = 1;
        ELSE
            SET @pno = @pno + 1;
        END IF;
        INSERT INTO temp_choice VALUES (u_id, @pno, p_code);
     END //
DELIMITER ;

现在我们可以使用

轻松插入数据
CALL test(1234567, 10101); 

答案 1 :(得分:0)

要管理用户的偏好设置,您不需要在此表格中自动添加user_id,但pref_no必须是。{/ p>

user_id将只是你的用户表的refence(或sql中的外键)(其中user_id应该是auto_incremented)。

要请求给定用户的偏好,您的请求将是:

SELECT * FROM [user table] INNER JOIN [pref table] ON ([user table].user_id = [pref table].user_id) WHERE [user table].user_id = ?

(用你想要的user_id替换'?')