菜鸟类型的问题:
假设我有两张桌子,糖果和颜色。颜色表只包含代码/值对,如 01 黄色、02 蓝色、03 绿色等,并在糖果表中按代码引用。
如何在没有显式连接的情况下查询所有蓝色糖果的糖果表?两年来,我一直在用连接编写这些查询,例如:
SELECT * FROM candies a JOIN colors o ON(a.color_code = o.color_code)
WHERE o.color_value = 'blue';
我确定每次我都带着枪去打刀,但我的谷歌搜索没有结果。
谢谢。
“我确信每次我都带着枪去打刀,但我的谷歌搜索一直没有结果。” 什么让你有那个想法?RDBMS 旨在“加入”
如果您的目标是让您的 SQL 更具可读性,那么您可能更喜欢 ' using ' 语法:
或者,当您将“蓝色”硬编码到查询中时,您可以考虑对代码进行硬编码:
但这会降低可读性,除非在您的实际场景中代码是描述性的(例如蓝色的“BLU”)
你可以把它写成:
但应该没有任何区别。实际上连接方法更健壮一些。
更重要的是 - 考虑完全摆脱颜色表,只使用 color_values 而不是代码。它实际上更有效率。