2014-05-17 3 views
0

Таблица Название: TESTВЫБРАТЬ положение с группой выражением

//TEST 
A#  NAME  
------------ 
1  CHIRS 
2  MAY 
3  JOHN 

//APPLIES 
A#  P# 
--------------------- 
1   HELLO 
2   YES 
1   HAPPY 

Если когда-нибудь я использую этот запрос:

SELECT DISTINCT * FROM TEST t INNER JOIN APPLIES ap 
on t.A#=ap.A# WHERE count(*)>1; 

Я хочу, чтобы показать дисплей только 1 или несколько записей, найденные в данной статье относится где TEST. A # = APPLEIS.A #

Ожидаемый результат:

A#  NAME 
------------- 
1  CHIRS 
+0

«Дайте ошибку» --- мы должны угадать, что ошибка это? 'GROUP BY t. *' --- что вы хотели выразить этим? 't. *' ** не ** выражение – zerkms

+0

Покажите свой ожидаемый результат с образцами данных. – bgs

+0

1. Используйте 'GROUP BY', а не' DISTINCT'; 2. Используйте 'HAVING', а не' WHERE', чтобы фильтровать после агрегации –

ответ

1

Вы должны указать имена столбцов отдельно в своем коде. Попробуйте это:

SELECT t.A#, t.NAME, t.ADDRESS, t.ACOMMENT 
FROM TEST t INNER JOIN APPLIES ap 
on t.A#=ap.A# GROUP BY t.A#, t.NAME, t.ADDRESS, t.ACOMMENT; 
+0

. Я попробовал byt acomment в формате LONG. я не могу его группировать. – user3553846

+0

Значит, вы должны удалить его из sql, no? – Guneli

+0

да нет. проверьте мой обновленный код – user3553846

0

Группировка по всем полям, по существу, такой же, как с помощью distinct:

SELECT  DISTINCT * 
FROM  test t 
INNER JOIN applies ap ON t.A#=ap.A#; 
+0

Но он заявил, что это не одна групповая функция. как? – user3553846

Смежные вопросы