我正在尝试选择具有相同session_id的记录,并且以下mysql语句有效:
SELECT session_id, COUNT(session_id) AS NumOccurrences
FROM my_table
GROUP BY session_id
HAVING COUNT(*) > 0
但是我只能访问session_id,而不能访问任何其他字段。我试过像:
SELECT session_id, other_filed COUNT(session_id) AS NumOccurrences
FROM my_table
GROUP BY session_id
HAVING COUNT(*) > 0
但它不起作用。也试过*,但也不起作用:
SELECT * COUNT(session_id) AS NumOccurrences
FROM my_table
GROUP BY session_id
HAVING COUNT(*) > 0
你能帮我解决这个问题吗?
答案 0 :(得分:2)
您的查询生成聚合结果集,并且您尝试同时显示详细信息值(原始表中的值,而不是聚合值)。
所以,如果你试试这个,你会得到一些东西。对于 <script language="JavaScript" type="text/javascript">
function changeUrl(el) {
var el = document.getElementById('inputid').value;
var im = document.getElementsByTagName(img);
im.src = el;
}
</script>
<input type="text" id="inputid" value="" onBlur="changeUrl(this.value)"/>
的每个值,other_field
为ANY_VALUE()
tells MySQL explicitly to choose some single value。
session_id
小心the ANY_VALUE()
function:它应该被称为SELECT COUNT(session_id) AS NumOccurrences,
ANY_VALUE(other_field)
FROM my_table
GROUP BY session_id
。它返回SURPRISE_ME()
组中某行的值。它返回哪一行完全取决于MySQL服务器。它不是一个随机值,它比这更糟糕。每次运行查询时它都会返回相同的值,直到它没有。当表增长或缩小时,或者当服务器具有更多或更少的RAM,或者当服务器版本发生变化,或者当火星逆行时,它可以改变或不改变,无论这意味着什么。你被警告了。
您也可以
GROUP BY
获取SELECT COUNT(session_id) AS NumOccurrences,
GROUP_CONCAT(DISTINCT other_field ORDER BY other_field)
FROM my_table
GROUP BY session_id
的值列表。
此外,other_field
是多余的。您的结果集中无法显示特定HAVING COUNT(*) > 0
值,除非它出现在您表格的至少一行中。