带有CASE的MySQL INSERT INTO SELECT语句

大通W.

我目前正在尝试使用一条INSERT语句将多行(三)数据插入数据库

INSERT INTO dvd_price
( SELECT
, (SELECT max(dvd_price_id) + 1 FROM dvd_price) --dvd_price_id
, d.dvd_id                                      --dvd_id
, 2                                             --rental amount
, '1-day'                                       --time rented for
FROM dvd d);

上面会插入一次1-day; 我希望有一条相同的语句也插入和的数据,2-day3-day使用相应的值(2对于随后的插入次数增加一次)。

迈克尔·伯考斯基(Michael Berkowski)

首先,您应该尝试通过调用检索下一个插入ID MAX(dvd_price_id) + 1这不免受到比赛条件的影响,并且由于不可靠而可能引起问题。如果尚未AUTO_INCREMENT打开dvd_price_id,建议您添加一个,然后让RDBMS为您处理增量。

ALTER TABLE dvd_price MODIFY dvd_price_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;

现在,您完全不必担心dvd_price_id中的INSERT为了获得所有这三个值,1-day, 2-day, 3-day可以通过结合这些静态值的列表来创建笛卡尔积。这将导致该表中当前每一行的每一天都有一天的值。

INSERT INTO dvd_price (dvd_id, rental_amount, time_rented_for)
  SELECT
    dvd_id,
    2 AS rental_amount,
    rental_period
  FROM
    dvd
    /* join a subquery which creates a list of 'N-day' strings using
       SELECT 'value' UNION SELECT 'value'.....
       With no ON clause, it will do this for every row in `dvd`
     */
    CROSS JOIN (
      SELECT '1-day' AS rental_period 
      UNION SELECT '2-day' AS rental_period
      UNION SELECT '3-day' AS rental_period
  ) rental_periods

首先仅使用SELECT查询一部分而不使用进行测试INSERT

这是其工作方式的演示:http : //sqlfiddle.com/#!2/a0862/1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CASE中的MySQL SELECT语句

来自分类Dev

您可以同时使用select语句和带有insert语句的手动输入吗?

来自分类Dev

MySQL优化嵌套的SELECT和INSERT语句

来自分类Dev

C中的mysql INSERT语句

来自分类Dev

PHP,MYSQL-> SELECT *直接在INSERT INTO语句之后

来自分类Dev

带有INNER JOIN SELECT SUM的INSERT语句

来自分类Dev

带有左连接条件的MySQL Case语句

来自分类Dev

此INSERT INTO SELECT语句有什么问题?

来自分类Dev

带有嵌套选择的sql insert语句

来自分类Dev

如何在INSERT INTO SELECT语句中自引用MySQL中的记录

来自分类Dev

删除INSERT SELECT语句中的dupilcates查询

来自分类Dev

带有SELECT语句的MySQL INSERT什么都不做

来自分类Dev

正在进行INSERT INTO或UPDATE查询时,MySQL将保留SELECT语句

来自分类Dev

MySQL:从SELECT语句到INSERT语句

来自分类Dev

CASE中的MySQL SELECT语句

来自分类Dev

Select在Sqlite数据库中有效,但Insert和Update语句不起作用

来自分类Dev

SELECT语句和case语句

来自分类Dev

带有IF条件的SELECT语句MySQL

来自分类Dev

C中的mysql INSERT语句

来自分类Dev

带有数字值的MySQL Case语句

来自分类Dev

将INSERT与带有自定义值的SELECT语句组合

来自分类Dev

此INSERT INTO SELECT语句有什么问题?

来自分类Dev

SELECT中带有OR的MySQL PDO语句

来自分类Dev

带有直方图子查询的 MySQL CASE 语句

来自分类Dev

带有变量的 INSERT SELECT SQL 查询

来自分类Dev

使用带有变量的 SELECT 语句的 SQL INSERT INTO VALUE 语句

来自分类Dev

MySQL UPDATE、IF、INSERT INTO 语句

来自分类Dev

带有 TIME 数据类型的 MySQL INSERT 语句中的语法错误

来自分类Dev

带有 Union All 的 View 中的 MySQL Case 语句

Related 相关文章

热门标签

归档