我有一个时髦的查询,可以正常使用静态数据,但我需要我的数据是动态的。所以静态数据就像这样
SELECT c.my_name, c.my_id, (SELECT count(d.friendship_id) FROM another_table d WHERE d.my_id = 1 AND d.my_friends_id = 2) as count FROM myprofile c WHERE c.my_id = 1;
这会返回我想要的数据:
my_name my_id count parijat 123 1 (OR 0 if the row doesn't exist)
作为参考,another_table.my_id(外键),another_table.my_friends_id引用myprofile.my_id(主键)。 another_table.friendship_id是此处的主键,并自动递增。
现在问题是:
我希望我的子查询是这样的: (SELECT count(d.friendship_id)FROM another_table d WHERE d.my_id = 1 AND d.my_friends_id = CURRENT_ROW_ID)
其中CURRENT_ROW_MY_ID是在主查询中选择的c.my_id。
这是否可能,如果没有,我的方法应该是什么才能得到我需要的结果?
答案 0 :(得分:0)
您可以执行子查询来获取该表的当前auto_increment值:
select auto_increment from information_schema.tables where table_schema = 'you_db_name' and table_name = 'your_table_name'
HTH
旧金山
答案 1 :(得分:0)
在我完全探讨这个选项之前,我有时会问。刚刚发现相关子查询即使在select语句中也能正常工作。以下是我为实现目标所做的工作:
SELECT c.my_name,c.my_id,(SELECT count(d.friendship_id)FROM another_table d WHERE d.my_id = 1 AND d.my_friends_id = c.my_id)count from myprofile c WHERE c.my_id = 1;
my_id有点含糊不清。更好的说法是profile_id,但是处理遗留数据库肯定不是很有趣。