#groovy
#groovy
Вопрос:
Есть ли простой и лаконичный способ проверить, что две строки данной таблицы содержат одинаковые данные во всех столбцах?
Комментарии:
1. gist.github.com/272110 показан пример пользовательского dbunit, но не чистого groovy sql
2. Вы имеете в виду, что у вас есть две строки, и вы хотите их сравнить, или вы хотите найти все повторяющиеся строки в таблице базы данных?
3. @tim_yates У меня есть две строки, и я хочу их сравнить
4. И
a == b
не работает? Какой-нибудь пример того, что вы пробовали и не смогли заставить работать, может помочь, если вы добавите его в вопрос… Или, я подозреваю, что у Дона есть ответ ниже
Ответ №1:
Я не тестировал это, но это кажется наиболее очевидным решением:
// get an Sql instance
def db = [url:'jdbc:hsqldb:mem:testDB', user:'sa', password:'',
driver:'org.hsqldb.jdbcDriver']
def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
// Get 2 rows
GroovyRowResults row1 = sql.firstRow("select * from user where id = 4")
GroovyRowResults row2 = sql.firstRow("select * from user where email = 'me@example.org'")
// compare them
boolean identical = row1.equals(row2)
Ответ №2:
Не особенно Groovy, но я бы заставил SQL выполнить подъем a la что-то вроде:
db.firstRow("SELECT COUNT(DISTINCT CONCAT(city,state,zip)) FROM Candidates WHERE id IN (1,2)")[0] == 0