我写了一个php文件来显示我数据库的最后一篇文章。 我发现上一篇文章,但最后一篇文章没有标题 我想要显示最后一篇文章和ech帖子没有标题副本从帖子有标题和相同的contentid.my数据库是大。我准备了一张pic,这是我的数据库的例子
这是我的php
代码:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "vbtest";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT title , nodeid FROM node where contenttypeid='30' order by nodeid desc limit 10";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "title: " . $row["nodeid"]. " title: " . $row["title"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
有人可以帮助我吗?
答案 0 :(得分:0)
我认为子查询将有助于归档您的目标。在下面的SQL查询中,子查询将从外部查询中找到contentid的第一个标题。
$sql = "
SELECT
(SELECT N2.title FROM node AS N2
WHERE N2.contentid = N.contentid
AND N2.starter = N.starter
ORDER BY N2.nodeid ASC
LIMIT 1) AS title,
N.nodeid
FROM node AS N
WHERE contentid='30'
ORDER BY nodeid DESC LIMIT 10";
答案 1 :(得分:0)
那么,如何只留下一个唯一的标题和第一个带有排序的nodeid。
SELECT * FROM
(SELECT T.title,
MIN(nodeid) AS nodeid
FROM
(SELECT
(SELECT N2.title FROM node AS N2
WHERE N2.contentid = N.contentid
AND N2.starter = N.starter
ORDER BY N2.nodeid ASC
LIMIT 1) AS title,
nodeid
FROM node AS N
WHERE contentid='30'
ORDER BY nodeid DESC LIMIT 10) AS T
GROUP BY title
) AS T2
ORDER BY nodeid DESC