php - 左连接同一字段选择所有行

标签 php mysql sql pdo

如何选择 UsrArticle 表中 UsrId = 1 的行? 我刚开始使用 join,下面是我的代码是否有问题它只打印空数组?

表用户

id    UsrId
0     0
1     1
2     2
3     3

表 UsrArticle

ArticleId   UsrId
0           1
1           0
2           1
3           1
4           1
5           3

PHP

$UsrId = 1;

$sth = $db->prepare("SELECT * FROM Usr LEFT JOIN UsrArticle ON (Usr.UsrId = UsrArticle.UsrId) WHERE UsrId = :UsrId");
$sth->bindParam(':UsrId',$UsrId,PDO::PARAM_INT);
$sth->setFetchMode(PDO::FETCH_ASSOC);
$sth->execute();

$ArticleRows = $sth->fetchAll();
print_r($ArticleRows);

最佳答案

它将失败,因为 UsrID 不明确(您指的是哪一列有多种可能性)。我知道这很愚蠢,因为您的条件指定它们应该相同,但这就是 SQL 的工作原理。将表别名添加到该字段名称的前缀:

... WHERE Usr.UsrId = :UsrId

关于php - 左连接同一字段选择所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20461785/

相关文章:

php - 具有获取值的表单

mysql - SQL UPDATE、WHERE条件限制(索引停止工作)

sql - 如何编写一个 T-Sql 查询,如果表 A 中的列中的值与表 B 中的列中的值匹配,则输出 1,否则输出 0?

php - 如何在 php 中限制和翻转(交换)字符串的元素?

php - Doctrine 命名策略不映射默认值

php - 自动生成复合主键的一个字段的 Doctrine

MySQL WHERE 在 IF 语句中的查看

mysql - Docker 撰写 MySql 初始化脚本不执行

mysql - vb.net datagridview 最后一列设置为只读

MySql 查询字符串部分