所以我刚开始学习SQL,并遇到了以下问题.假设我有一个包含3列的表,如下所示:
ID | Property_Name | Property_Value 1 | Color | "Blue" 1 | Size | "Large" 2 | Color | "Red" 3 | Color | "Orange" 3 | Size | "Small" 4 | Color | "Blue" 4 | Size | "Large" ...
现在,假设我想找到具有Color = Blue和Size = Large(又名.ID 1和4)的ID,我最好如何做到这一点.我提出的最好的方法是以下,但它似乎笨重......
SELECT ID FROM PropertyTable
WHERE
ID IN (
SELECT ID FROM PropertyTable WHERE
Property_Name='Color' AND Property_Value='blue' )
AND
(Property_Name='Size' AND Property_Value='Large')
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
编辑:忘记将预格式标签添加到示例表文本.刚刚这样做了.
自我加入怎么样?
SELECT T1.ID
FROM PropertyTable T1
JOIN PropertyTable T2 ON T1.ID = T2.ID
WHERE
T1.PropertyName = 'Color' AND T1.PropertyValue = 'Blue'
AND
T2.PropertyName = 'Size' AND T2.PropertyValue = 'Large'
Run Code Online (Sandbox Code Playgroud)
这是一个SQLFiddle
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |