簡體   English   中英

MySQL在同一表中存在對應行的地方獲取行

[英]MySQL get rows where corresponding row in same table exists

我試圖根據一些基本的where子句從表中獲取行,現在我想在末尾添加一個“ AND EXISTS”子句。 我的代碼如下:

$stmt = $mysqli->prepare("SELECT object_id FROM ".
          $db_table_prefix."user_events
          WHERE LPAD(start_timestamp,15,'0') < LPAD(?,15,'0')
          AND event_id = ?
          AND EXISTS ( 
            SELECT * FROM ".$db_table_prefix."user_events
              WHERE LPAD(start_timestamp,15,'0') > LPAD(?,15,'0')
              AND event_id = ? )
        ");

我遇到的問題是,我不知道如何從AND EXISTS子查詢中的主查詢中指定列值。

我正在尋找一種方法可以將此內容添加到子查詢中:

AND object_id = **object_id from main query**

任何幫助表示贊賞

另外,為子查詢的表添加別名以避免混淆

$stmt = $mysqli->prepare("SELECT object_id FROM ".
      $db_table_prefix."user_events
      WHERE LPAD(start_timestamp,15,'0') < LPAD(?,15,'0')
      AND event_id = ?
      AND EXISTS ( 
        SELECT * FROM ".$db_table_prefix."user_events AS u
          WHERE LPAD(u.start_timestamp,15,'0') > LPAD(?,15,'0')
          AND u.object_id = " .$db_table_prefix.".object_id
          AND u.event_id = ? )
    ");

EXISTS相比,您可能會發現自連接語法在這里更清晰,我無法從代碼中確切推斷出您想要的內容,而是獲取在特定時間之前啟動並在以后再次啟動的事件的object_id

SELECT  ue1.object_id 
FROM    user_events ue1 join user_events ue2
WHERE   ue1.event_id = ue2.event_id AND
        ue1.object_id = ue2.object_id AND
        ue1.event_id = ? AND 
        LPAD(ue1.start_timestamp, 15, '0') < LPAD(ue2.start_timestamp, 15, '0') AND 
        LPAD(ue1.start_timestamp, 15, '0') < LPAD(?, 15, '0')

和object_id in(從...中選擇object_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM