2014-09-02 109 views
0

我需要在表中插入一些值。插入並在一行中選擇sql

我可以很容易地使用查詢(從PHP)做到這一點:

mysql_query('INSERT INTO `TABLE1`(`user_id`,`value1`,`date`) VALUES("'.$user_id.'",".$value1.",".time().")'); 

但是這一次,我沒有變量$ user_id的。我只有用戶名。所以我需要再對USERS數據庫進行一次查詢,以獲得user_idusername等於我的變量。

是否有可能不做2個查詢?我在一個查詢中插入和選擇?

P.S.我知道mysql_query函數已折舊。我在這裏使用它是正確的。

+0

看看'ON DUPLICATE KEY' – Daan 2014-09-02 07:38:56

+0

定義一個用戶ID,以防事件發生並且存在 – Jester 2014-09-02 07:40:50

回答

2

嘗試嵌套子查詢:

INSERT INTO `TABLE1` 
    (`user_id`,`value1`,`date`) 
VALUES 
    (
     (
      SELECT 
       `user_id` 
      FROM 
       `user` 
      WHERE 
       `username` = 'your-user-name' // should be unique in order to work 
     ), 
     'value1', 
     NOW() 
    ); 
+0

你真的更快,我在發佈之前看到你的答案。 – 2014-09-02 07:41:16

+0

@RamSharma我只是刷新太頻繁。 '(:' – BlitZ 2014-09-02 07:42:04

+0

正是我想要的!謝謝!:) – 2014-09-02 07:46:36

1

下面的查詢可能是你在找什麼,但它可能是最好先拿到USER_ID,然後進行插入:

INSERT INTO TABLE1 (user_id, value1, date) 
SELECT MAX(user_id) + 1 -- If the user_id is an numeric value... 
    ,'user-name-here' 
    ,NOW() 
FROM TABLE1 

隨着這個查詢我從表中獲取最後一個user_id,並且我將它增加1以便將新用戶插入到表中。

希望這會幫助你。

+0

非常感謝yoou! :)這是有用的方法! – 2014-09-02 07:47:30

+1

此方法比子查詢更快 – faster2b 2014-09-02 09:16:42