无法为多行过滤 And Or
Cannot filter And Or for multiple rows
目前,我有一个 table(2 列 ColumnName,Value),其数据如下:
ColumnName Value
CustomerName Facebook
CompanyName Google
如何使用 And / Or 条件编写查询来满足请求:
- 与和:
CustomerName = 'YAHOO' 和 CompanyName = 'Google' 将 return 0 条记录
- 与或:
CustomerName = 'Facebook' 或 CompanyName = 'Google' 将 return 2 条记录
我不知道如何开始。
请指教
谢谢。
您可以研究 EAV 数据模型,了解此模型可能无法很好扩展的原因。
您可以这样查询:
declare @YourTable table (ColumnName varchar(100), Value varchar(100) primary key (ColumnName, Value));
insert into @YourTable
select 'CustomerName', 'Facebook' union all
select 'CompanyName', 'Google';
--with And...
select *
from @YourTable
where (ColumnName = 'CustomerName' and Value = 'Yahoo') and
(ColumnName = 'CompanyName' and Value = 'Google')
--with Or...
select *
from @YourTable
where (ColumnName = 'CustomerName' and Value = 'Facebook') or
(ColumnName = 'CompanyName' and Value = 'Google')
目前,我有一个 table(2 列 ColumnName,Value),其数据如下:
ColumnName Value
CustomerName Facebook
CompanyName Google
如何使用 And / Or 条件编写查询来满足请求:
- 与和: CustomerName = 'YAHOO' 和 CompanyName = 'Google' 将 return 0 条记录
- 与或: CustomerName = 'Facebook' 或 CompanyName = 'Google' 将 return 2 条记录
我不知道如何开始。
请指教
谢谢。
您可以研究 EAV 数据模型,了解此模型可能无法很好扩展的原因。
您可以这样查询:
declare @YourTable table (ColumnName varchar(100), Value varchar(100) primary key (ColumnName, Value));
insert into @YourTable
select 'CustomerName', 'Facebook' union all
select 'CompanyName', 'Google';
--with And...
select *
from @YourTable
where (ColumnName = 'CustomerName' and Value = 'Yahoo') and
(ColumnName = 'CompanyName' and Value = 'Google')
--with Or...
select *
from @YourTable
where (ColumnName = 'CustomerName' and Value = 'Facebook') or
(ColumnName = 'CompanyName' and Value = 'Google')