使用多个where子句检查两个表

时间:2019-04-07 21:53:56

标签: sql adminer

因此,我在php文件中有一条sql语句,该语句与从用户获取输入的表单有关。当他们输入流派时,它会更新该列中的所有记录,而不是他们选择的特定记录。

第一个代码是有效的原始语句,但是它编辑了整个列。因此,我一直在尝试其他条款,因此它仅更改了具有匹配album_id的条款,但没有任何运气。 Sample Table data

$sql = "UPDATE album 
    SET genre_id = (SELECT genre_id
    FROM genre
    WHERE genreName='" . $_POST['lstGenre'] . "'
    )";

以上是我刚开始并继续讨论的内容。 Result from code above changes genre in entire column

$sql = "UPDATE album 
    SET genre_id = (SELECT genre_id
    FROM genre
    WHERE genreName='" . $_POST['lstGenre'] . "'
    )
        FROM album
        WHERE album_id='" . $_POST['album_id'] . "'";

那是我尝试过的一个版本,但是它没有更新任何内容。 这是我在寻找的东西: Different genre for each case

我解决了这个问题:

$sql = "UPDATE album 
        SET genre_id = (SELECT genre_id
        FROM genre
        WHERE genreName='" . $_POST['lstGenre'] . "'
        )
        FROM album
        WHERE album_id='" . $thisAlbum['album_id'] . "'";

2 个答案:

答案 0 :(得分:0)

几乎,但是data <- c('JENNIFER [Day 1, 9:00 A.M.]: Blablablablablablbalbllalbalbalbl. Balalalbablablabl.', 'SAM [Day 2, 10:15 A.M.]: Balblablablabalbalbalblabalblablabl. Balaldfkemfeke.', 'DAN\'S [Day 4, 12:00 P.M.]: DFnerke"dfsdf"') 无效,您只需要摆脱第二部分中的From部分。应该是这样的

Update ... From ... Where ...

编辑:而且,类似的子查询只需要拉一行。确保类型表中没有与提供的genreName相匹配的多行。如果是这种情况,虽然应该出现sql错误。

答案 1 :(得分:0)

您的查询应如下所示:

UPDATE album a       
    SET genre_id = (SELECT g.genre_id
                    FROM genre g
                    WHERE g.genreName = ?
                   )
    WHERE a.album_id = ?;

?参数的占位符。您应该使用参数将值传递给查询,而不是用值来修饰查询字符串。