0

これが私のコードで、次のコードがエラー Operand should contain 1 column(s) を返す理由がわかりません。私は、両方のクエリが以下のクエリとは独立して機能することを知っています。任意の助けをいただければ幸いです

SELECT * 
FROM 2014_summary, 2014_profiles 
WHERE 2014_summary.player_id = 2014_profiles.player_id AND tournament_id = 'bec904c4-b2a3-4eba-a2bc-335aca680a40' AND 2014_summary.player_id 
NOT IN
(SELECT 
    T1.*, 
    T2.player_id as primary_player_id 
FROM (SELECT id, lead_id, form_id, MAX(case when field_number = 1 then value end) display_name, 
    MAX(case when field_number = 7 then value end) email, 
    MAX(case when field_number = 6 then value end) tournament_name, 
    MAX(case when field_number = 3 then value end) primary_golfer, 
    MAX(case when field_number = 4 then value end) backup_golfer, 
    MAX(case when field_number = 5 then value end) date, 
    MAX(case when field_number = 8 then value end) tournament_id 
FROM `wp_rg_lead_detail` 
GROUP BY lead_id)T1 
INNER JOIN (SELECT CONCAT(first_name, ' ', last_name) as player_name, player_id FROM 2014_profiles)T2 ON T1.primary_golfer = T2.player_name
WHERE display_name = "Hosker" AND tournament_id != 'bec904c4-b2a3-4eba-a2bc-335aca680a40')
ORDER BY (last_name) ASC
4

1 に答える 1

0

あなたnot inは:

2014_summary.player_id NOT IN
    (SELECT  T1.*, T2.player_id as primary_player_id 

selectMySQL は、 for との比較で使用する列を認識していませんplayer_id。したがって、エラーが返されます。実際、これは ANSI 標準の SQL 機能であり、すべてのデータベースがこのように機能します。のサブクエリは、in1 つの列のみを返す必要があります。

私はあなたが欲しいと思います:

2014_summary.player_id NOT IN
    (SELECT TT2.player_id
     . . .
于 2014-02-02T18:11:48.800 に答える