谁能解决这个mysql语句WHERE COUNT问题?

时间:2018-11-22 18:25:46

标签: mysql sql group-by aggregate-functions

我将两个表连接在一起,我只想列出那些行,这些行的分组计数与表A的件数不匹配。

table A
id     name    pieces
1      name_1    6
2      name_2    2

table B
a_id
1
1
2
2

所以我想要的是获取所有a.name,其中a.piece <>分组行计数。
像这样的东西:

SELECT a.name
FROM   a
       INNER JOIN b
               ON a.id = b.a_id
WHERE  a.pieces <> Count(*)
GROUP  BY id  

这导致无效使用组功能
也尝试过这个:

SELECT a.name,
       Count(*) AS count
FROM   a
       INNER JOIN b
               ON a.id = b.a_id
WHERE  a.pieces <> count
GROUP  BY id 
  

错误:未知列“ count”

在这种情况下,结果是,我只想接收这样的1行:

name     count
name_1     2

因为name_1具有table.b中的2行分组,并且与a.piece不匹配,即6。

2 个答案:

答案 0 :(得分:1)

您可以在MAX()上使用pieces,因为它只是一个标量值,所以不会有所不同。这也将使查询符合only_full_group_by模式

SELECT a.id, a.name, COUNT(*) AS count
FROM   a
       INNER JOIN b
               ON a.id = b.a_id
GROUP  BY a.id, a.name 
HAVING MAX(a.pieces) <> COUNT(*) 

答案 1 :(得分:1)

您可以聚合来自tableb的数据并将其与tablea结合:

jQuery(function(){
$(document).on("click", '.item', function(index, element) {
var index = $('.item').index(this);
var singleurl = 'single_' + index + '.html';
var $instance = $('#backstretch').data('backstretch');
$instance.destroy('preserveBackground');
$('#singleview').fadeIn(1500).load(singleurl);    
});