【问题标题】:how to get this result如何得到这个结果
【发布时间】:2011-12-14 13:30:37
【问题描述】:

当用户从中选择任何值时,我在页面上有一个下拉列表;我正在传递该值并过滤结果。 假设如果用户从下拉列表中选择任何自行车,那么从用户表中只有那些记录应该有 自行车,这些记录也应该出现在用户没有自行车的地方。

   username               vehicleID 
   =========              =======
   john                   1
   peter                  1
   maria                  2
   raso                 
   pritam                 4

如果用户选择vehicleID 2,那么raso 也应该与maria 一起出现。 我不想为此使用 UNION。

如果用户没有选择任何东西,所有数据都应该默认出现在页面上

任何其他想法。提前致谢

【问题讨论】:

  • 如果你可以说 SELECT * FROM USERS WHERE VEHICLEID=2 OR VEHICLEID IS NULL,我不明白你为什么需要联合。这是 SQL 必须做的最基本的事情。
  • 根据表大小和索引,union 可能运行得更快,因为您可以消除 OR
  • 所以您的设计支持只有 0 或 1 辆车的用户?还是有用户表、userVehicle 表和 Vehicle 表?如果有多辆车,那么左连接就变得合理了。

标签: sql sql-server


【解决方案1】:

使用以下查询,其中@VehicleIDdropdownlistSelectedValue

SELECT Username
FROM Table
WHERE @VehicleID IS NULL
OR VehicleID=@VehicleID
OR VehicleID IS NULL

【讨论】:

  • +1 :这实际上完成了 OP 要求的所有操作。带有 NULL 车辆 ID 的记录总是通过,而不是提供一个值 @parameter 导致整个表被返回。
猜你喜欢
  • 2020-11-15
  • 2016-12-10
  • 2013-03-21
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
相关资源
最近更新 更多