Insert marriedcouples( male, female )
Select M.id, W.id
From Men As M
Cross Join Women As W
Where ( M.username = 'brad' And W.username = 'jennifer' )
Or ( M.username = 'ken' And W.username = 'barbie' )
Добавление
В комментариях вы спрашивали конкретно о проблемах с вашим исходным запросом. Во-первых, вы могли бы использовать свой оригинальный подход так:
Insert marriedcouples( male, female )
Select ( Select Id From men Where username = 'brad' )
, ( Select Id From women Where username = 'jennifer' )
Union All
Select ( Select Id From men Where username = 'ken' )
, ( Select Id From women Where username = 'barbie' )
Обратите внимание, что каждое значение заключено в круглые скобки как его собственный инкапсулированный подзапрос. Во-вторых, обратите внимание, что я использовал директиву Union All
, чтобы позволить мне сложить два запроса и дать мне две строки. В-третьих, обратите внимание, что я не пытаюсь использовать директиву Values в сочетании с подзапросами. Вы можете использовать предложение Values, чтобы вывести список значений, или вы можете использовать оператор Select, но не оба, как вы это сделали. Очевидно, что этот подход четырех подзапросов не будет работать хорошо, но он помогает понять разбивку синтаксиса.