我正在尝试使用和更新并加入一个表来更新另一个表。
我想使用类别表格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();
答案 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