2014-12-07 2 views
0

Хорошо, я использую Java с MySQL, и мне было интересно, как я могу сделать SELECT userId, если он существует, или Вставить его в таблицу перед тем, как выбрать назначенный userId, который является AUTO_INCREMENT стоимость.выберите, если exsists else вставить и выберите

У меня есть этот код:

String query = "INSERT INTO `player_id`(`name`) VALUES('exInput')"; 
Statement statment = Statement.RETURN_GENERATED_KEYS; 
PreparedStatement pstmt = MySQLUtil.getConnection().prepareStatement(query, statment); 
ResultSet keys = pstmt.getGeneratedKeys(); 
keys.next(); 
int userId = keys.getInt(1); 

, который работает хорошо, когда вход не на столе, но мне нужно работать, даже если он уже на столе.

+0

Зачем вы хотите это сделать? – Strawberry

+0

'Потому что я должен убедиться, что игрок на столе и получить его ID, и я сделал это самым быстрым и надежным способом. –

+0

Но вы уверены, что вам нужно сначала проверить? Почему бы просто не запустить вставку или INSERT ... SELECT? Это было бы быстрее – Strawberry

ответ

0

Что-то вроде этого, возможно?

IF EXISTS (SELECT <id> FROM <table> WHERE <id>='some_id') 
    BEGIN 
     SELECT <id> FROM <table> WHERE <id>='' 
    END 
ELSE 
    BEGIN 
     INSERT INTO <table>(fieldval) VALUES('') 
    END 

Хотя, вероятно, у вас должно быть несколько индексов. В противном случае вы можете сделать это в итерациях, сделав выбор первым, и если он вернет null, тогда сделайте вставку. Если вы это сделаете, вы должны знать о параллельных запросах, если это может произойти.

+0

Получил эту ошибку: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с IF EXISTS (SELECT 'id' FROM' user_id' WHERE 'name' = 'someName') BEGIN SELECT 'в строке 1 –

Смежные вопросы