Если вы выбрали 4 столбца, и ни один из них не является частью функции агрегирования, вам нужно поместить их все в предложение group by. Так что это будет код без ошибок:
select table1.column1
, table1.column2
, table2.column1
, table2.column2
from table1
join table2 on table1.column1=table2.column1
where table1.column2 in ('data1','data2','data3')
and table2.column1 <> 1
group by table1.column1
, table1.column2
, table2.column1
, table2.column2 ;
Также, когда вы делаете соединение, пожалуйста, не делайте это так:
from table1,table2
where table1.column1=table2.column1
Делайте это так:
from table1
join table2 on table1.column1 = table2.column1
Также настоятельно рекомендуется использовать псевдонимы в вашем запросе:
select t1.column1
, t1.column2
, t2.column1
, t2.column2
from table1 t1
join table2 t2 on t1.column1 = t2.column1
where t1.column2 in ('data1','data2','data3')
and t2.column1 <> 1
group by t1.column1
, t1.column2
, t2.column1
, t2.column2;
Если вы хотите выбрать «Я хочу получить строки, которые содержат различные значения table1.column1», но вы Хотите также показать другие столбцы, тогда вам нужно решить, что вы хотите с другими столбцами? Например:
select t1.column1
, max(t1.column2)
, sum(t2.column1)
, min(t2.column2)
from table1 t1
join table2 t2 on t1.column1 = t2.column1
where t1.column2 in ('data1','data2','data3')
and t2.column1 <> 1
group by t1.column1;