Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从SQL查询中获取重复项?_Mysql_Sql - Fatal编程技术网

Mysql 从SQL查询中获取重复项?

Mysql 从SQL查询中获取重复项?,mysql,sql,Mysql,Sql,我正在使用这个sql查询,但是我得到了重复的查询。如何确保每个inst_id只能获取一个帖子?我猜是我的组由main_posts.c_p_id实现的,但是如果我没有它,我会得到一个错误,因为我是按它排序的。基本上,我会先在main_posts.c_p_id中对匹配的帖子进行排序和放置 SELECT main_posts.c_p_id, insts.inst_id, insts.inst_title FROM insts LEFT JOIN inst_posts ON inst_p

我正在使用这个sql查询,但是我得到了重复的查询。如何确保每个inst_id只能获取一个帖子?我猜是我的组由main_posts.c_p_id实现的,但是如果我没有它,我会得到一个错误,因为我是按它排序的。基本上,我会先在main_posts.c_p_id中对匹配的帖子进行排序和放置

SELECT main_posts.c_p_id, insts.inst_id, insts.inst_title
  FROM insts
  LEFT JOIN inst_posts
    ON inst_posts.instp_inst_id = insts.inst_id
  LEFT JOIN main_posts
    ON main_posts.c_id = insts.instp_c_id
  GROUP BY insts.inst_id, main_posts.c_p_id
  ORDER BY main_posts.c_p_id DESC, insts.inst_title ASC
如何确保每个inst_id只能获取一个帖子

因为,您没有提供任何示例数据,但是您提到您将获得重复的行。然后,您可以使用
DISTINCT
来显示不同的行

SELECT DISTINCT main_posts.c_p_id, insts.inst_id, insts.inst_title
  FROM insts
  LEFT JOIN inst_posts
    ON inst_posts.instp_inst_id = insts.inst_id
  LEFT JOIN main_posts
    ON main_posts.c_id = insts.instp_c_id
  GROUP BY insts.inst_id, main_posts.c_p_id
  ORDER BY main_posts.c_p_id DESC, insts.inst_title ASC
我猜是我的团队通过main_posts.c_p_id实现的

可能吧

但是如果我没有它,我会得到一个错误,因为我是按它排序的


不,您得到的是错误,因为您在
分组依据
中提到了
main\u posts.c\u p\u id
列。
ORDER BY
只会对记录进行排序,无论您是否选择此列。

警告:这有一些严重的问题,因为查询中使用了用户数据。尽可能使用事先准备好的陈述。在任何用户提供的数据都指定有
:name
指示符的情况下,这些操作非常简单,稍后将根据您使用的是哪个指示符,使用
绑定参数或
执行
填充指示符。千万不要直接在你的查询中放入
$\u POST
$\u GET
或任何用户数据。我明白了,但是,谁说过关于POST或GET的任何内容?任何形式的用户数据都是危险的。
$p_id
来自哪里?什么是
$taged
?如果不明显它逃逸了,那么我们唯一能推测的就是它没有逃逸。占位符值使所有操作都正确,错误无法隐藏。@tadman更新了占位符值。您需要至少向我们显示示例数据和预期输出!我以前试过,但这过滤掉了一些来自main_posts的匹配项,这就是为什么我把
main_posts.c_p_id DESC
,但这需要一组
main_posts.c_p_id
,这又给了我重复项。很抱歉,我不太擅长这一点。@SeaBass,那么,你需要至少显示你的数据和预期的输出。如果我按main_post保留顺序,但按group将其从组中删除,我需要运行此命令以使其工作
mysqli_查询($db_link,“SET SESSION sql_mode='TRADITIONAL')
,但它也会过滤掉main_post中的匹配项。这就像它找到了两个匹配项,但选择显示一个不是来自主论坛的帖子。我看看我能不能想出办法给你数据。我对不同的表格以及如何呈现感到困惑。