最初に挿入された行だけ取得したい
このジャンルでお願いします。
次のようなテーブルで
CREATE TABLE IF NOT EXISTS user (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(32) NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO user (name) VALUES ('user1');
INSERT INTO user (name) VALUES ('user2');
INSERT INTO user (name) VALUES ('user3');
CREATE TABLE IF NOT EXISTS item (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(32) NOT NULL,
PRIMARY KEY(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO item (name) VALUES ('item1');
INSERT INTO item (name) VALUES ('item2');
INSERT INTO item (name) VALUES ('item3');
CREATE TABLE IF NOT EXISTS user_item (
id int(11) NOT NULL AUTO_INCREMENT,
user_id INT,
item_id INT,
PRIMARY KEY(id),
FOREIGN KEY (item_id) REFERENCES user(id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (user_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO user_item (user_id, item_id) VALUES (1, 1);
INSERT INTO user_item (user_id, item_id) VALUES (2, 1);
INSERT INTO user_item (user_id, item_id) VALUES (3, 2);
INSERT INTO user_item (user_id, item_id) VALUES (1, 2);
INSERT INTO user_item (user_id, item_id) VALUES (1, 3);
INSERT INTO user_item (user_id, item_id) VALUES (3, 3);
user_itemテーブルでのselectで、
user_idが1で一番最初に挿入された行だけ
を取得したいのですが、どのようなSQL文にすれば良いのでしょうか?
この例なら
INSERT INTO user_item (user_id, item_id) VALUES (1, 1);←取得
INSERT INTO user_item (user_id, item_id) VALUES (2, 1);
INSERT INTO user_item (user_id, item_id) VALUES (3, 2);
INSERT INTO user_item (user_id, item_id) VALUES (1, 2);←user_id=3が最初に挿入されているので取得しない
INSERT INTO user_item (user_id, item_id) VALUES (1, 3);←取得
INSERT INTO user_item (user_id, item_id) VALUES (3, 3);
お礼
回答ありがとうございます。 int8で設定した項目に、値がない場合は、 insertしないということですね。 有難うございました。