1

我正在做一个 foreach 循环并选择等于该部分名称的每一行。但是,我还需要显示所有不等于任何部分名称的结果。下面是我的代码的一部分,它选择与节名相同的行。

$result2 = mysqli_query($con, "SELECT * FROM sections ORDER BY `order`");
$sectionnames = array();
while($row = mysqli_fetch_array($result2)) {
    $sectionnames[] = $row['sectionname'];
}

foreach ($sectionnames as $sectionname) {
    $result = mysqli_query($con,"SELECT * FROM faq WHERE section = '$sectionname' ORDER BY `order`");
4

4 回答 4

4

你的意思是这样的:

SELECT * FROM `faq` WHERE `section` NOT IN (SELECT `sectionname` FROM `sections`)

这将选择所有没有与sections 表中的任何sectionname 共享名称的部分的常见问题解答项目?如果不是,那么也许 juergen d 发布的内容就是您所需要的。有点不清楚你的最终目标是什么,所以请随时澄清,我会更新。

于 2013-07-10T00:34:41.563 回答
2

我觉得应该是

$result = mysqli_query ($con, "SELECT * FROM faq WHERE section NOT IN 
                        (SELECT sectionname FROM sections)");
于 2013-07-10T00:39:16.220 回答
1

您可以使用 aleft join在 1 个查询中获取数据

SELECT * 
FROM sections s
left join faq f on f.section = s.sectionname
ORDER BY s.`order`, f.`order`
于 2013-07-10T00:33:35.420 回答
1
SELECT section FROM Faq
    LEFT JOIN Sections 
       ON Faq.section = Sections.sectionname
 WHERE Sections.sectionname IS NULL
于 2013-07-10T00:34:58.687 回答