Один очень поздний вклад ... в случае, если он помогает любому waaaaaay вниз по линии ... У меня была задача найти соответствующие пары транзакций (на самом деле обе стороны передачи от учетной записи к учетной записи) в банковском приложении, чтобы определите, какие из них были «from» и «to» для каждой транзакции между транзакциями, поэтому мы закончили с этим:
SELECT
LEAST(primaryid, secondaryid) AS transactionid1,
GREATEST(primaryid, secondaryid) AS transactionid2
FROM (
SELECT table1.transactionid AS primaryid,
table2.transactionid AS secondaryid
FROM financial_transactions table1
INNER JOIN financial_transactions table2
ON table1.accountid = table2.accountid
AND table1.transactionid <> table2.transactionid
AND table1.transactiondate = table2.transactiondate
AND table1.sourceref = table2.destinationref
AND table1.amount = (0 - table2.amount)
) AS DuplicateResultsTable
GROUP BY transactionid1
ORDER BY transactionid1;
. Результатом является то, что DuplicateResultsTable
предоставляет строки, содержащие совпадение (т. е. дублировать), но он также предоставляет идентичный идентификатор транзакции в обратном порядке во второй раз, когда он совпадает с одной и той же парой, поэтому внешний SELECT
должен группироваться по первому идентификатору транзакции, который выполняется с помощью LEAST
и GREATEST
, чтобы убедиться, что два транзакционных файла всегда находятся в одном порядке в результатах, что делает его безопасным для GROUP
первым, что устраняет все повторяющиеся совпадения. Прошел почти миллион записей и определил 12 000+ матчей всего за 2 секунды. Конечно, transactionid - это основной индекс, который действительно помог.
Да! можно сделать так, не пишущий кода Java/Kotlin, только XML при помощи этой небольшой библиотеки, которую я создал, который делает так в buildtime, таким образом, приложение не будет затронуто им: https://использование github.com/LikeTheSalad/android-string-reference
Ваши строки:
<resources>
<string name="app_name">My App Name</string>
<string name="template_welcome_message">Welcome to ${app_name}</string>
</resources>
сгенерированная строка после здания:
<!--resolved.xml-->
<resources>
<string name="welcome_message">Welcome to My App Name</string>
</resources>