在我的选择查询中编写相关的子查询

时间:2013-04-04 21:39:14

标签: mysql correlated-subquery

我有一个时髦的查询,可以正常使用静态数据,但我需要我的数据是动态的。所以静态数据就像这样

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。

这是否可能,如果没有,我的方法应该是什么才能得到我需要的结果?

2 个答案:

答案 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,但是处理遗留数据库肯定不是很有趣。