我正在做一个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`");
答案 0 :(得分:4)
你的意思是这样的:
SELECT * FROM `faq` WHERE `section` NOT IN (SELECT `sectionname` FROM `sections`)
会选择所有faq项目,这些项目没有与sections表格中任何sectionname共享名称的部分?如果没有那么也许juergen发布的是你需要的。有点不清楚你的目标是什么,所以请随意澄清,我会更新。
答案 1 :(得分:2)
我认为应该是,
$result = mysqli_query ($con, "SELECT * FROM faq WHERE section NOT IN
(SELECT sectionname FROM sections)");
答案 2 :(得分:1)
您可以使用left join
获取1个查询中的数据
SELECT *
FROM sections s
left join faq f on f.section = s.sectionname
ORDER BY s.`order`, f.`order`
答案 3 :(得分:1)
SELECT section FROM Faq
LEFT JOIN Sections
ON Faq.section = Sections.sectionname
WHERE Sections.sectionname IS NULL