我有一张像这样的桌子:
Mobs
========
Name Room
-----------
a cat 2
fido 2
human 1
我试图设置一个sql查询语句,如果每一行的room值相同,则该语句将提取名称。
这是到目前为止我的代码,但它返回一个空列表:
class DBConnect(object):
gamedb = 'game.db'
def __init__(self):
pass
############ TABLE PlayerInfo ###################
def modify_data(self, string, dbfile, mode='get', fetch='all'):
db = sqlite3.connect(dbfile)
db.row_factory = lambda cursor, row: row[0]
c = db.cursor()
data = ''
if mode == 'get':
c.execute(string)
if fetch == 'all':
data = c.fetchall()
elif fetch == 'one':
data = c.fetchone()
db.close()
return data
elif mode == 'update' or mode == 'insert':
# update data
c.execute(string)
db.commit()
db.close()
else:
print 'Something went wrong\nAborting Program...'
sys.exit()
def mob_getname(self, value, using="id"):
if using == "id":
query = "SELECT name FROM Mobs WHERE ID=%s" % value
return DBConnect().modify_data(query, DBConnect.gamedb)[0]
elif using == "room":
query = "SELECT name, room from Mobs " \
"GROUP BY name, room " \
"HAVING COUNT(name) > 1"
return DBConnect().modify_data(query, DBConnect.gamedb)
else:
print 'Wrong value of using'
return None
尝试:
print Mobs().mob_getname(2, using="room")
会有一个空名单?
我想得到一份清单
['a cat', 'fido']
非常感谢。
更新E:::
我已经尝试将执行的查询替换为:
query = "SELECT COUNT(*), room FROM Mobs GROUP BY Mobs " \
"SELECT COUNT(*), room FROM Mobs GROUP BY room HAVING COUNT(*)>1 " \
"SELECT name FROM Mobs WHERE room=%s " % value
现在我得到一个错误: sqlite3。操作错误:靠近“选择”:语法错误
要获得您所给出的所需结果列表,您的查询只需:
select Name from Mobs where Room = 2
不能一个接一个地放置多个独立的SELECT查询。
您需要一个GROUP BY来确定具有多个条目的房间,然后您需要一个单独的查询来返回这些房间的所有条目:
SELECT Name, Room
FROM Mobs
WHERE Room IN (SELECT Room
FROM Mobs
GROUP BY Room
HAVING COUNT(*) > 1);
您没有正确使用group by和HAVE子句。Group by将尝试对该列匹配的所有列进行分组。因此,如果按名称分组,则没有一行将折叠,也没有一行符合计数标准
如果我在读你的问题,你只需要
SELECT name FROM mobs WHERE room = %s
因为你提前知道房间号码。
注意,您的第二次尝试失败了,因为您需要;在查询之间
DB有一个表,即。这些字段包括,,。 我需要得到属于某个且具有相同值的行的数量总和。 例如,表中有值:(2,3,4),(2,1,5),( 1 2,2,4),然后我需要获得以及第一行和第三行中其他列的总和。第二行也将出现在结果中。 让我们假设控制器名称为,模型名称为。 我应该如何编写查询? 编辑:表格有以下值:(2,3,4),(2,1,5),( 1 2,2,4)
问题内容: 在pandas中,给定一个DataFrame D: 当三列或更多列返回以下内容时,如何返回其所有列具有相同内容的行: 请注意,当所有值均为NaN时,它将跳过行。 如果这仅仅是两列,我通常会这样做,但是我不知道如何针对两列以上的DataFrames进行概括。 问题答案: 与Andy Hayden的答案类似,检查min是否等于max(然后所有行元素都是重复的):
问题内容: 因此,我有一个包含几个列表的列表,这些列表都首先包含三个字符串,然后是一个浮点数,例如: 如何制作一个返回最大值的函数(此处为9.1931)?我试过了 但这只是给我一个清单。 编辑:此外,以任何方式我可以获取值来自何处的索引?喜欢,来自哪个子列表? 问题答案: 循环浏览外部列表,然后选择每个子列表的最后一个元素: 最好将所有与函数相关的变量保留在范围内(将列表作为参数传递,并且不要通过
问题内容: 请告诉我如何获取特定行的列值= 123的列名。 问题答案: 结果
我有一个DenseVectors作为行的dataframe: 我想用UDF找到每一行的最大值。我就是这么做的: 文件“C:\programdata\anaconda3\envs\python2\lib\site-packages\pyspark\sql\utils.py”,第63行,deco格式返回f(*a,**kw) 文件“C:\programdata\anaconda3\envs\python