sql - SQL 我可以在 JOIN 子句中有一个 IN 或 CONTAINS 吗?
问题描述
我正在加入两个 SQL 表,我想做这样的事情
LEFT JOIN uscities Ci
ON Customer_State = ci.state_id
-- and Customer_City = ci.city
and Customer_Zip in ci.zips
这有可能吗?
解决方案
你可以IN
在一个JOIN
子句中。事实上,您可以拥有任何您想要的运算符。
但是,您不能IN
在单个字段上使用。事实上,您根本不应该将事物列表存储在字符串中。这是非常糟糕的数据建模。您应该有一个单独的表,每个 zip 和每个实体都有一行。这是 SQLish 做事的方式。
也就是说,我建议string_split()
:
LEFT JOIN uscities Ci
ON c.Customer_State = ci.state_id AND
c.Customer_Zip IN (SELECT value FROM STRING_SPLIT(ci.zips, ' '))
推荐阅读
- mongodb - 如果为空,如何使用 $subtract 和条件来使用数组中的默认值?
- python - initialize_python(required_module, use_environment) 中的错误:未找到 Python 安装,未加载 Python 绑定。R 可视化 Power BI
- wordpress - Wordpress 网站上的严重安全问题警告——“本地文件包含”
- sql-server - SQL - 替换字符串功能未按预期工作
- javascript - 有条件地在列表中显示日期
- laravel - Laravel ENV 配置问题
- javascript - fetch 不发送 post 数据
- c# - 使用正则表达式捕获两个星号之间的所有内容
- pointers - 在 Delphi 5 中,TList 参数是否总是通过引用传递?
- javascript - React-Native Redux 连接组件未调度操作