假设我有一个数据集
A B
-- --
a 1
b 1
c 1
d 2
e 1
f 2
g 1
如果列B的列A中的相同值的值为1和2,我将如何排除B列中的结果为1?
我希望我的结果看起来像这样
def generate_token
self.password_token = SecureRandom.hex
self.save
end
答案 0 :(得分:0)
在此明确检查值1和2,并使用其中恰好有两个的事实。如果可以安全地假设您总是想要最高价值,那么您可能会减少这种麻烦。
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]
ERROR DATE: Kindly check Weld Date or NDE Date...
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeUpdate(Unknown Source)
at dao.EmployeeTmsDao.updateJointNoStatus(EmployeeTmsDao.java:76)
答案 1 :(得分:0)
对于示例数据和所需结果,实现结果的最简单查询是GROUP BY
操作和聚合函数。
SELECT d.A
, MAX(d.B) AS B
FROM my_data_set d
GROUP BY d.A
ORDER BY d.A
如果我们只对列1
中2
或B
的行感兴趣,我们可以添加WHERE
子句
SELECT d.A
, MAX(d.B) AS B
FROM my_data_set d
WHERE d.B IN (1,2)
GROUP BY d.A
ORDER BY d.A
使用示例数据,输出相同。
这两个语句都达到了指定的结果。 (A
中的每个不同值只返回单个行。)
或者,对于相同的示例数据,我们可以使用更为文字的规范实现返回相同的结果集。
如果对于1
的相同值,2
行有A
行时,要排除NOT EXISTS
行,我们可以使用 SELECT d.A
, d.B
FROM my_data_set d
WHERE ( d.B = 2 )
OR ( d.B = 1 AND
NOT EXISTS ( SELECT 1
FROM my_data_set e
WHERE e.A = d.A
AND e.B = 2
)
)
ORDER BY d.A, d.B
谓词和相关子查询。< / p>
latest_assembly_versions
答案 2 :(得分:0)
{{1}}