gpt4 book ai didi

mysql - 在一个查询中选择同一个表的两个条件的结果

转载 作者:行者123 更新时间:2023-11-29 15:45:21 25 4
gpt4 key购买 nike

我正在努力为此获得正确的结果。我想测试两者是否存在或其中一个存在。在 results 表中,“michael”存在,而“mike”不存在。

$stmt = $dbnet->prepare("
SELECT * FROM
(SELECT cats AS cats1 FROM results WHERE name = :original) AS a,
(SELECT cats AS cats2 FROM results WHERE name = :parsed) AS b
");

$binding = array(
'original' => 'michael',
'parsed' => 'mike'
);
$stmt->execute($binding);

$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

//if there was a result then output
if($results)
{
echo '<pre>'.print_r($results,1).'</pre>';
}

即使“michael”在数据库中,我也没有得到任何结果。

如果我测试 'original' => 'michael', 'parsed' => 'michael' 我会得到结果...当然都是相同的,因为我为每个测试了相同的值:

Array
(
[0] => Array
(
[cats1] => 6,11
[cats2] => 6,11
)

)

我期望的是以下之一:

  • 没有结果意味着 michael 或 mike 都不存在
  • cats1 结果为空,cats2 为空(michael 存在,mike 不存在)
  • cats1 为空,cats2 结果为空(mike 存在,michael 不存在)

不,我不能使用 WHERE name = 'michael' OR name = 'mike' 因为我在更改后所做的操作取决于两者是否都有结果或只有其中之一。

最佳答案

这按预期工作...两者始终需要一个结果,即使该结果为空才能正确返回。

$stmt = $dbnet->prepare("
SELECT
IFNULL( (SELECT cats AS cats1 FROM results WHERE name = :original), '') AS a,
IFNULL( (SELECT cats AS cats2 FROM results WHERE name = :parsed), '') AS b
");

关于mysql - 在一个查询中选择同一个表的两个条件的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57117908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com