Mysql INSERT INTO使用SELECT和INNER JOIN WITH CASE

时间:2014-02-22 17:46:12

标签: mysql

以下代码为:

--Code Created by Michael Berkowski
create table dvd (
   dvd_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
  );
INSERT INTO dvd VALUES (1),(2),(3),(4);

CREATE TABLE dvd_price (
   dvd_price_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   dvd_id INT NOT NULL,
   rental_amount INT,
   time_rented_for VARCHAR(10) 
);

INSERT INTO dvd_price (dvd_id, rental_amount, time_rented_for)
  SELECT
    dvd_id,
    2 AS rental_amount,
    rental_period
  FROM
    dvd
    CROSS JOIN (

      -- This is where I'm having issues
      SELECT (CASE dvd.dvd_id
                WHEN dvd.dvd_id = 1
                THEN '1-Day'
                ELSE '3-Day'
              END) AS rental_period
  ) rental_periods

为什么我不能在CROSS JOIN之后做一个CASE语句,我该如何解决这个问题呢? 我在字段列表中收到错误“未知表'dvd':”,有什么更好的方式来写这个?

1 个答案:

答案 0 :(得分:1)

尝试这种方式:

INSERT INTO dvd_price (dvd_id, rental_amount, time_rented_for)
  SELECT
    dvd_id,
    2 AS rental_amount,
    CASE dvd.dvd_id
                WHEN dvd.dvd_id = 1
                THEN '1-Day'
                ELSE '3-Day'
              END
  FROM
    dvd