gpt4 book ai didi

php - MySql 为每个 id 查找多行

转载 作者:行者123 更新时间:2023-11-29 06:59:01 24 4
gpt4 key购买 nike

我有一个包含 3 列的表格

---QID---TEXT---CID---

我想为每个不同的 CID 找到 20 行(QID 和 TEXT)。我已经准备好字符串 $cid 以便我可以使用 WHERE IN 语句。

SELECT * FROM questions q1
WHERE cid=(SELECT cid
FROM questions q2
WHERE q2.cid IN ($cids)
GROUP BY q2.cid)
ORDER BY q1.qid LIMIT 20

谢谢!

最佳答案

简单查询:

$query = 'SELECT QID, TEXT FROM yourDb.yourTable WHERE CID = '.$cid;

或者,如果 $cid 是一个数组:

$query = 'SELECT QID, TEXT FROM yourDb.yourTable WHERE CID IN('.implode(',',$cid).')';

获取结果:

$pdo = new PDO('mysql:host=yourDBServer','login','password');
if (!$stmt = $pdo->query($query))
{
die('query failed');
}
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

有关您可以使用 PDO 对象执行的操作的更多信息,请参阅 the manual

一个快速修复(但不是一个好的)可能是:

$q = 'SELECT QID, TEXT FROM yourDB.yourTB WHERE CID = '.$cid.' LIMIT 20';

CID IN(1,2,3) 的情况下,我不确定是否有一种简单的方法可以做到这一点。我能想到的就是使用工会。梅比this page可以帮你解决这个问题。

一个错误的修复可能是 ORDER BY CID ASC,而不是使用 fetchAll(),这样做:

$query = 'SELECT CID,QID, TEXT FROM yourDb.yourTable WHERE CID IN('.implode(',',$cid).')';

//execute query, same as above: $stmt holds results
$results = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
if (!is_array($results[$row['CID']))
{
$results[$row['CID']] = array();
}
if (count($results[$row['CID']]) < 20)
{
$results[$row['CID']][] = $row;
}
}

这样,$results 数组将为找到的每个 CID 设置一个键,该键的值将是一个最多包含 20 条记录的数组。 ..

关于php - MySql 为每个 id 查找多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171588/

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