0

我在 MYSQL 数据库中有这张表(见附图)

数据库

我想检索三个不同公寓的“电缆”列。到目前为止,这就是我的代码中的内容,但它不起作用,知道为什么吗?

try
{
        //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        //Connection connection=DriverManager.getConnection("jdbc:odbc:db1","","");
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection connection=DriverManager.getConnection("jdbc:mysql://localhost/etoolsco_VecinetSM?user=etoolsco&password=g7Xm2heD41");
        Statement statement=connection.createStatement();
        String query;
        query="SELECT cable FROM flatene2013 WHERE Apto='5C' JOIN SELECT cable FROM flatene2013 WHERE Apto='5Cest1' JOIN SELECT cable FROM flatene2013 WHERE Apto='5Cest2'";            
        ResultSet resultSet=statement.executeQuery(query);
        while(resultSet.next())
    {%>
    <tr>

    <td>&nbsp;</td>
    <td align="right"><font size="-1"><%out.println(resultSet.getBigDecimal(1)+"");%></font></td>
    <td align="right"><font size="-1"><%out.println(resultSet.getBigDecimal(2)+"");%></font></td>
    <td align="right"><font size="-1"><%out.println(resultSet.getBigDecimal(3)+"");%></font></td>
    </tr>
    <%
    }
4

2 回答 2

2

使用UNION而不是JOIN

SELECT  cable , Apto
FROM    flatene2013 
WHERE   Apto='5C' 
UNION
SELECT  cable , Apto 
FROM    flatene2013 
WHERE   Apto='5Cest1' 
UNION
SELECT  cable  , Apto
FROM    flatene2013 
WHERE   Apto='5Cest2'

或者如果你不介意Apto

SELECT  cable , Apto
FROM    flatene2013 
WHERE   Apto IN ('5C' , '5Cest1', '5Cest2')

更新

SELECT  MAX(CASE WHEN Apto = '5C' THEN  Cable ELSE NULL END) as `5c`,
        MAX(CASE WHEN Apto = '5Cest1' THEN  Cable ELSE NULL END) as `5Cest1`,
        MAX(CASE WHEN Apto = '5Cest2' THEN  Cable ELSE NULL END) as `5Cest2`
FROM
        (
            SELECT  cable , Apto
            FROM    flatene2013 
            WHERE   Apto IN ('5C' , '5Cest1', '5Cest2')
        ) s
于 2013-01-21T15:36:57.857 回答
1

尝试使用 WHERE IN:

SELECT cable FROM flatene2013 WHERE Apto IN ('5C','5Cest1','5Cest2')
于 2013-01-21T15:37:38.477 回答