更新查询两个表

时间:2014-12-05 16:00:14

标签: php mysql sql

我正在尝试使用和更新并加入一个表来更新另一个表。

我想使用类别表格category字段更新图书id字段(最新插入) - 我在哪里出错了?

UPDATE book 
    JOIN category 
    SET book.category = category.id
    WHERE id = $query->insert_id

目前,数据分别发送到两个表,没有任何更新。我只需更新一行,我之前犯了这个错误并更新了每一行!

我对pho / mysql很新,所以欢迎任何帮助和指导。

更新

感谢来自@Benni的建议,我能够更新该行,但是它不是使用最新的插入更新,而是使用我的数据库中的第一行。见下文

我的类别表

id   cat_name
2    Childrens 
3    Science
1    Maths
23   Comedy

我的书桌

id   category    title
1    2           a title here
2    2           a title here
3    1           a title here
4    Comedy      a title here

ID字段都是主键。

当我运行更新时,我的书籍表更新为2 =儿童,而不是23 =喜欢它的喜剧。

我的上次INSERT

$query = $conn->prepare("INSERT INTO `book` (title,category,author,isbn,subtitle) VALUES (?,?,?,?,?)");
$query->bind_param('sssis',       
        $title,
        $category,
        $author,
        $isbn,
        $subtitle
        );
$query->execute();

2 个答案:

答案 0 :(得分:1)

您的UPDATE声明应如下所示。首先,您缺少JOIN ON条件,其次,将额外条件从WHERE移至JOIN ON条件。

UPDATE book b 
    JOIN category c ON b.some_common_column = c.some_common_column 
    AND c.id = $query->insert_id
    SET b.category = c.id

答案 1 :(得分:-1)

您在ON部分加入时出错了。试试这个:

UPDATE book, category 
SET book.category = category.id
WHERE book.id = $query->insert_id

或(使用JOIN语法):

UPDATE book 
JOIN category 
ON book.id = $query->insert_id
SET book.category = category.id