标签: insert-update

INSERT INTO..SELECT..ON DUPLICATE KEYS模糊ID

我有下表:

mysql> SELECT *  FROM  `bright_promotion_earnings`;
+----+----------+------------+----------+-------+
| id | promoter | generation | turnover | payed |
+----+----------+------------+----------+-------+
|  1 |        4 |          1 |       10 |     0 | 
|  3 |        4 |          5 |      100 |     0 | 
|  4 |        4 |          3 |    10000 |     1 | 
|  5 |        4 |          3 |      200 |     0 | 
+----+----------+------------+----------+-------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

有一个独特的密钥(发起人,代,付费):

+---------------------------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table                     | Non_unique | Key_name   | Seq_in_index …
Run Code Online (Sandbox Code Playgroud)

mysql sql insert-update mysql-error-1052

2
推荐指数
1
解决办法
3050
查看次数

SQL 2008 R2:尝试在存储过程中使用T-SQL MERGE语句

我已经查看了SQL Merge语句的各种示例..所有这些都看起来很棒,虽然由于某些原因我似乎无法从我的Merge测试中获得正确/预期的结果.

快速概述: 我有一个包含一些设计数据的简单表格.阅读MERGE似乎指向一种更有效的方法来进行 'upsert'(即:根据记录是否存在,插入或更新).

所以SQL 2008代码就是这样的(对不起,如果它还没有完全完成,因为我正在处理它!):

这将是一个存储过程,所以@values显然是传递的参数..

merge designs as ds
using ( select designname, designcode from designs) as dsi
on (@passedDesignName = dsi.designname and @passedDesignCode = dsi.designcode)
when matched then
    update set ds.designname = @passedDesignName, ds.designcode = @passedDesignCode
when not matched then
    insert (designname, designcode)
    values (@passedDesignName, @passedDesignCode)
Run Code Online (Sandbox Code Playgroud)

这个问题似乎超出了我正在测试的7条记录中,所有这些记录似乎都在更新,显然我只能看到一条与更新相匹配的记录..而奇怪的是,如果我传递一些新数据(designname)和设计代码),我似乎得到一个重复插入...从我上次的测试看起来似乎有7个新的插入,我猜不只是一个侥幸..

希望我已经正确解释了这一点.攻击新事物的一部分主要是让上下文正确吗?

提前感谢您的任何反馈.

PS:对不起,合并声明结尾有一个分号!完成解析检查/语法.

sql t-sql insert-update sql-server-2008

2
推荐指数
1
解决办法
720
查看次数

php mysql 更新限制

我想更新 mysql 数据库, where directory = 0,然后将5 of records哪个值更新0art.

解释:

id    |   directory
1     |   fashion
2     |   0    //update here into 'art'
3     |   travel
4     |   fashion
5     |   0    //update here into 'art'
6     |   0    //update here into 'art'
7     |   travel
8     |   0    //update here into 'art'
9     |   0    //update here into 'art'
10    |   0    //this is 6th record, do not update, leave the value …
Run Code Online (Sandbox Code Playgroud)

php insert-update

2
推荐指数
1
解决办法
6243
查看次数

如何生成php mysql驱动数据库的下一个id号

我有一张表格employees,其中包含公司员工的详细信息.

每个人都分配了一个唯一的序列号.每当我们添加新员工时,它应该在添加表单时显示序列号,该序列号比最后输入的员工的序列号大一个数字.

例如,该数据库包含12名员工.最后一个条目的序列号是12.当我尝试添加新员工时,它应自动分配序列号13.所以我不需要输入序列号.我怎样才能做到这一点?

php mysql select insert-update

2
推荐指数
1
解决办法
2772
查看次数

mysql插入重复键更新知道是否发生了

在我正在构建的应用程序中,我在重复键更新时使用了大量插入.我的问题是,在我的应用程序中,我需要知道它是插入还是更新,以便我的代码可以做出适当的决定.有谁知道我怎么测试这个?

我正在使用perl的DBI模块,如果有人知道特定的方式.谢谢!

mysql perl dbi insert-update on-duplicate-key

2
推荐指数
1
解决办法
1003
查看次数

如果记录相同则更新SQL行

在MySQL中,我有一个这样的tblProjects -

Project_ID Field_ID     Record_ID Label
556895     1            1         Office desk 1
556895     1            2         Office desk 2
556895     2            1         This is a desk 1
556895     2            2         This is a desk 2
472246     1            1         Hello 1
472246     1            2         Hello 2
472246     2            1         This is a wooden desk 1
472246     2            2         This is a wooden desk 2

我使用sql查询(用PHP编写),它将插入一个这样的值 -

$sql_query = "INSERT INTO Items (Project_ID, Field_ID, Record_ID, Label) VALUES ('232323', '3', '3', 'New Label')";
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是如果所有三个'Project_ID','Field_ID'和'Record_ID'相同,我需要更新'Label',如果任何一个不同,我需要插入新记录. …

php mysql insert-update

2
推荐指数
1
解决办法
53
查看次数

用前一行更新记录

我有一种情况,我需要用前一行值更新记录。

来源:

|MatId | BaseId |Flag|Pkg1| CS1
--------------------------------
|3001  | 3001   | 1  | 20 | 2 |
|3002  | 3001   | 0  | 15 | 3 |
|3003  | 3001   | 0  | 10 | 4 |
Run Code Online (Sandbox Code Playgroud)

这里 3001( MatID) 和 3001( BaseID) 是相同的所以FLAG =1,只有在下一条记录中BASEID是相同的。输出应PKG1是使用当前行值更新的字段。

目标或输出:

|MatId | BaseId|Flag|Pkg1|CS1
------------------------------
|3001  | 3001  | 1  | 20 | 2|
|3002  | 3001  | 0  | 20 | 3|
|3003  | 3001 …
Run Code Online (Sandbox Code Playgroud)

sql-server insert-update

2
推荐指数
1
解决办法
1万
查看次数

在 Sqlite 3.34 中执行 UPSERT 时出错 - 错误:靠近“DO”:语法错误

我正在尝试将每日 CSV 加载文件加载到main表中,以便插入所有新记录并更新所有现有记录。我正在使用UPSERTSqlite 的功能来实现此目的。

这是我的 shell 脚本。


LOAD_FILE="/tmp/main.csv"
LOAD_TABLE="tbl_tmp_main"
MAIN_TABLE="tbl_main"
COLUMNS="t_id, t_col1, t_col2"


CREATE_TABLE_QUERY="DROP TABLE IF EXISTS $LOAD_TABLE; CREATE TABLE $LOAD_TABLE AS SELECT $COLUMNS FROM $MAIN_TABLE WHERE false"
LOAD_TABLE_QUERY=".separator ','\n.import '$LOAD_FILE' $LOAD_TABLE"
UPSERT_TABLE_QUERY="
    INSERT INTO $MAIN_TABLE($COLUMNS) SELECT $COLUMNS FROM $LOAD_TABLE
    ON CONFLICT(t_id) DO UPDATE
    SET
        t_col1 = excluded.t_col1,
        t_col2 = excluded.t_col2
    ;
"

echo ""
echo "$CREATE_TABLE_QUERY" | sqlite3 mydatabase.sqlite3            # <-- This works
echo "[INFO] Temporary Table Created."

echo "$LOAD_TABLE_QUERY" | sqlite3 mydatabase.sqlite3              # <-- …
Run Code Online (Sandbox Code Playgroud)

sqlite upsert insert-update

2
推荐指数
1
解决办法
952
查看次数

使用INSERT INTO时的Mysql主键... ON DUPLICATE KEY UPDATE

我的表结构是:

CREATE TABLE IF NOT EXISTS `users_settings_temp` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `userid` int(10) unsigned DEFAULT NULL,
  `type` enum('type1','type2')
  `data` text,
  `date_created` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)

我想要做的是:

假设我想插入一个新条目,但我不希望它重复,谷歌周围,我发现这种格式:

INSERT INTO users_settings_temp(...)
ON DUPLICATE KEY UPDATE data = '{$data}'
Run Code Online (Sandbox Code Playgroud)

我猜问题出现在我的表中,主键=> id.如何更改表格,以便我可以使用:

INSERT INTO ... ON DUPLICATE KEY UPDATE
Run Code Online (Sandbox Code Playgroud)

我可以使用user_id + type作为主键吗?如果是的话,请你告诉我该怎么做?

mysql primary-key insert-update database-table

1
推荐指数
1
解决办法
2万
查看次数

如何使用Android sqlite数据库更新一行中的多列?

我有一个存储位置数据的android应用程序。SQLite数据库中有三组纬度和经度。我想获取一个位置的数据3次并将其存储到数据库中。在我的第一步中,存储位置,位置地址,纬度和经度。第二步,不改变位置和地点的纬度和经度,它将第一数据存储到下一列。

http://i.stack.imgur.com/YRaTL.jpg

您可以在上述图片网址中看到3组纬度和经度。在获得第一个纬度和经度之后,我要在“ latitudey”和“ longitudey”列中添加第二个纬度和经度,然后在“ latitudez”和“ longitudez”列中添加下一个值。我的编码几乎可以,但是在添加第二行时出现问题。第一纬度和经度没有任何错误地保存,但是在第二和第三纬度中复制了较高的值。您可以在以下给定的图中看到它。我该如何解决?我的数据库创建代码如下。我需要在这里做些什么改变?

   public static final String DATABASE_NAME = "locationdb.db";
   public static final String TABLE_NAME = "locations";
   public static final String CCOLUMN_ID = "id";
   public static final String COLUMN_LAT = "latitude";
   public static final String CCOLUMN_LON = "longitude";
   public static final String COLUMN_LAT2="latitudey";
   public static final String COLUMN_LON2="longitudey";
   public static final String COLUMN_LAT3="latitudez";
   public static final String COLUMN_LON3="longitudez";
   public static final String COLUMN_LOC = "location";
   public static final String COLUMN_PLACE="place";

   private HashMap hp;

   public SQLiteController(Context context) …
Run Code Online (Sandbox Code Playgroud)

java database sqlite android insert-update

1
推荐指数
1
解决办法
6371
查看次数