2015-04-08 2 views
0

Что случилось с:SQL Server "(. А *) выбрать"

select count (a.*, b.*) 
from tableA a, tableB b 
where a.x = 'blah' 
and b.x = 'blah' 

я получаю ошибку:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '*'.

У меня есть куча имен таблиц, чтобы выбрать из так хотели использовать псевдонимы табличных имен? Любая помощь была оценена: я не очень хорошо разбираюсь в sql.

+0

COUNT (*) будет делать хорошо здесь! Или, может быть, count (a.columnname). – jarlh

+0

должен был сделать мой вопрос более ясным, у меня есть куча таблиц для выбора. обновляя мой вопрос, чтобы показать это ... – rstruck

+2

Да, это просто не работает. Пожалуйста, объясните, какой результат вы пытаетесь получить. Примерная таблица результатов будет полезна. – Russ

ответ

4

Вы не можете использовать аргументы multiply в COUNT. В вашем случае вы просите дать вам счет a.col1, a.col2, a.col3 ... COUNT ожидает всего 1 аргумент. Единственным исключением является *, в этом случае он понимает, что он должен рассчитать все записи из таблицы.

Если вы хотите рассчитать все записи из a, тогда сделайте что-то вроде COUNT (a.id) - где id не является нулевым столбцом. Если вы хотите рассчитать уникальные записи таблицы, тогда сделайте COUNT (отличное a.id).

Если вы хотите рассчитать все записи из таблиц a и b, вы можете сделать COUNT (a.id) как количествоOfAtable, COUNT (b.id) как количествоOfBtable. Или вы можете суммировать их COUNT (a.id) + COUNT (b.id).

Еще одна вещь, о которой вам нужно знать о COUNT, что она подсчитывает только строки NOT NULL. Итак, если вы используете LEFT JOIN или столбец, который может быть NULL, тогда он просто вычислит количество записей, в которых этот столбец NOT NULL. Конечно, вы можете использовать DISTINCT для расчета уникальных записей.

0
  • COUNT() функция принимает only one parameter.

отсчет (а *.): count(a.field1,a.field2,a.field3,....) означает, что является invalid.

вы должны использовать кол-во (*): есть count all.

0

Вы должны использовать JOIN синтаксис здесь:

select count(*) 
from tableA a 
inner join tableB b 
    on a.x = b.x 
where a.x = 'blah' 
Смежные вопросы