我将两个表连接在一起,我只想列出那些行,这些行的分组计数与表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。
答案 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);
});