То, что у вас есть, очень близко к вашему решению. Попробуйте изменить то, что вы пробовали, как показано ниже.
SELECT DISTINCT Label, FormId
FROM FormFields
WHERE FormId NOT IN
(
SELECT DISTINCT FormId
FROM FormFields
WHERE Label= 'First Name' OR Label= 'Last Name'
)
ORDER By FormId
ИЛИ другое решение:
SELECT * FROM FormFields
WHERE FormId NOT IN
(
SELECT DISTINCT FormId
FROM FormFields
WHERE Label IN ('First Name' , 'Last Name')
)
Есть несколько примеров DZone Snippets , если вы хотите создать свой собственный, который работает с коллекцией. Например:
public static String join(AbstractCollection<String> s, String delimiter) {
if (s == null || s.isEmpty()) return "";
Iterator<String> iter = s.iterator();
StringBuilder builder = new StringBuilder(iter.next());
while( iter.hasNext() )
{
builder.append(delimiter).append(iter.next());
}
return builder.toString();
}
В JDK нет метода для этого, о котором я знаю. Apache Commons Lang имеет различные перегруженные методы join ()
в классе StringUtils
, которые делают то, что вы хотите.
Я получил следующий пример здесь
/*
7) Join Strings using separator >>>AB$#$CD$#$EF
*/
import org.apache.commons.lang.StringUtils;
public class StringUtilsTrial {
public static void main(String[] args) {
// Join all Strings in the Array into a Single String, separated by $#$
System.out.println("7) Join Strings using separator >>>"
+ StringUtils.join(new String[] { "AB", "CD", "EF" }, "$#$"));
}
}
Google также предоставляет класс столяров в своей библиотеке Google Collections: