如何编写一个SQL查询来检索同一列上具有2个条件的所有行?
我有一张桌子,桌子上有一列叫做type的列。 我要做的是列出所有类型的值“名称”。 但是type列也有一个称为text的值。 因此,我想列出所有具有文本值类型的名称。
我该如何实现?
ID Type Value
1 Name Name1
1 Text "Hello"
2 Text "Hello test"
2 Name Name2
3 Name Name3
4 Name Name4
5 Name Name5
我只想返回具有文本类型的名称值。 该表有两种类型,我想做的就是只返回所有具有文本类型的“名称”类型
预期结果:
ID Type Value
1 Name Name1
2 Name Name2
因为这两个是唯一带有值的“文本”类型的一个。
答案 0 :(得分:2)
这是您想要的吗?
admin.py
答案 1 :(得分:2)
进行自我加入:
select t1.*
from tablename t1
join tablename t2 on t1.id = t2.id
where t1.Type = 'Name'
and t2.Type = 'Text'
答案 2 :(得分:0)
我会使用public void addCircleMarker(LatLng latLng) {
Drawable circleDrawable = ContextCompat.getDrawable(getApplicationContext(), R.drawable.ic_blue_circle);
BitmapDescriptor markerIcon = getMarkerIconFromDrawable(circleDrawable, 30, 30);
mGoogleMap.addMarker(new MarkerOptions()
.position(latLng)
.anchor(0.5f, 0.5f)
.icon(markerIcon)
);
}
private BitmapDescriptor getMarkerIconFromDrawable(Drawable drawable, int width, int height) {
Canvas canvas = new Canvas();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
}
:
exists
如果我想使用“文本”行中的任何值,我将使用select t.*
from t
where t.type = 'Name' and
exists (select 1
from t t2
where t2.id = t.id and t2.type = 'Text'
);
。但是,如果我只想要“名称”行,那么我认为join
是逻辑的更直接翻译。