我有这些数据
idhouse year
7 2016
2 2018
2 2017
3 2017
4 2015
14 2003
3 2018
5 2018
4 2017
4 2018
我想计算属于两年的房屋数量。
我尝试使用mysql select但没有工作。 我应该怎么做?
EDITED
对不起我的不好解释。
我只有一个mysql表。
在2017年和2018年过滤并计算这些房子的麻木,我应该得到这些匹配:
idhouse year
7 2016
2 2018*
2 2017*
3 2017*
4 2015
14 2003
3 2018*
5 2018
4 2017*
4 2018*
SELECT应显示3
答案 0 :(得分:0)
我认为一所房子一年只能出现一次。试试这个:
SELECT
COUNT(*) nb_houses
FROM (SELECT house
FROM yourTable
GROUP BY house
HAVING COUNT(*)>1) A;
请参阅此run on SQL Fiddle。
答案 1 :(得分:0)
假设PK(房子,年份),如果你只是想知道多少房子被列出多次,你可以这样做......
SELECT COUNT(DISTINCT x.house) total
FROM my_table x
JOIN my_table y
ON y.house = x.house
AND y.year <> x.year;
答案 2 :(得分:0)
我认为您正在使用此问题进行网络应用
SELECT house, COUNT(year) as count_year FROM table GROUP BY house HAVING COUNT(year) = 2
通过使用上面的数据,结果将是
房子| count_year
____2 | _______ 2
然后,如果您使用像PHP这样的服务器端脚本,请使用mysqli_num_rows
来获取行数。
或者如果您使用其他语言,只需调整算法以获取行数
答案 3 :(得分:0)
通过这个选择我得到它:
select count(*) from (select house from yourTable Where year = 2018 and house in (select house from yourTable where year = '2017')) A;
但是我们可以在效率方面改进这个选择吗?
您可以尝试here
感谢。