MySQL等同于SQLite INSERT或REPLACE INTO

时间:2015-07-03 09:52:57

标签: mysql sqlite

我正在将一些旧代码从SQLite移到我的网站,以便通过网站访问。我经常使用的一个查询是INSERT or REPLACE INTO查询,它检查表中是否存在一行(基于第一个值),如果确实存在,则它将替换该行中的数据VALUES中指定的行。但是如果找不到该行,它将INSERT行放入表中。

查询示例(已减少):

INSERT or REPLACE INTO player_currency (player_id, gold) VALUES (1, 500)

这会找到ID为1的玩家并将他的金币设置为500,无论他之前是否在桌子上。

我不确定它是否重要,但我正在使用XAMMP 5.6.8(我已经在标签中添加了PHP,考虑到用于连接数据库的内容,如果它没有,请随意将其删除属于)

  • Dabatase连接:(PHP)PDO库
  • MySQL版本:5.6.24
  • PhpMyAdmin版本:4.4.3

2 个答案:

答案 0 :(得分:2)

import pandas as pd

df = pd.DataFrame({'a' : [1,1,1,1,1,2,1,2,2,2,2]})
df['b'] = np.where(df.a == 1, 'A', 'B')

print(df)

Out[60]: 
    a  b
0   1  A
1   1  A
2   1  A
3   1  A
4   1  A
5   2  B
6   1  A
7   2  B
8   2  B
9   2  B
10  2  B

def get_mode_from_Series(series):
    return series.value_counts().index[0]

def my_rolling_apply_char(frame, window, func):
    index = frame.index[window-1:]
    values = [func(frame.iloc[i:i+window]) for i in range(len(frame)-window+1)]
    return pd.Series(data=values, index=index).reindex(frame.index)

my_rolling_apply_char(df.b, 3, get_mode_from_Series)

Out[61]: 
0     NaN
1     NaN
2       A
3       A
4       A
5       A
6       A
7       B
8       B
9       B
10      B
dtype: object

请记住将id作为主键。

答案 1 :(得分:0)

假设player_id是主键,您可以这样做:

INSERT INTO player_currency (player_id, gold) VALUES (1,500) ON DUPLICATE KEY UPDATE gold=500;
相关问题