я хотел бы выбрать только при условии, что другой выбор == 2Выберите только если количество == 2 SQL Server 2008
, например
select field1 from table1 where count((select field2 from table2)) = 2
это возможно?
я хотел бы выбрать только при условии, что другой выбор == 2Выберите только если количество == 2 SQL Server 2008
, например
select field1 from table1 where count((select field2 from table2)) = 2
это возможно?
Вы должны изучить HAVING CLAUSE
SQL's GROUP BY
.
например.
SELECT * FROM TABLE1
WHERE <MYKEY> IN (
SELECT <MYKEY>
FROM TABLE2
GROUP BY <MYKEY> HAVING COUNT(*) = 2 --Better to use > 1
)
select field1 from table1 where (select count(field2) from table2)=2
Это будет работать, но вы принимаете то, что хочет OP. Кроме того, это возвращает либо все строки в 'table1', если' table2' имеет ровно две строки, либо ничего не возвращает. – Brad
Вы предполагаете, чего хочет OP. Слишком рискованно. – Brad
@Brad сказал: «Вы предполагаете, чего хочет OP. Слишком рискованно. «OP не ясно, что они хотят, и код, который они дают, не работает, но, похоже, пытается подсчитать строки в таблице2. –
попробовать:
SET NOCOUNT ON
declare @a table (RowID int)
insert @a values(1);insert @a values(2);insert @a values(3);
declare @b table (RowID int)
insert @b values(10);insert @b values(20)
SET NOCOUNT OFF
select a.RowID FROM @a a WHERE 2=(SELECT COUNT(RowID) FROM @b)
delete @b where RowID=20
select a.RowID FROM @a a WHERE 2=(SELECT COUNT(RowID) FROM @b)
ВЫВОД:
RowID
-----------
1
2
3
(3 row(s) affected)
(1 row(s) affected)
RowID
-----------
(0 строк (ы) пострадавших)
Там нет никакой связи между table1.field1 и table2.field2 перечисленных в вашем вопросе ... – JNK
Все жалуются на ответы, в которых они предполагают то, что вы пытаетесь сделать. Короткий ответ: нет. ** Однако **, мы можем предложить что-то, если бы знали, что вы пытаетесь. – Brad
Можете ли вы прояснить свою цель этим? Основание выбора в таблице 1 на основе подсчета другой таблицы без отношения является бессмысленным на поверхности ... – JNK