1

私はSQL文を持っています:

$sql = "SELECT * FROM user_events WHERE userID =" . $uid . " OR groupID = (IN ($gId) WHERE userID IS NULL) ORDER BY timestamp DESC";

これを印刷すると次のようになります。

SELECT * FROM user_events WHERE userID = 34 OR groupID =(IN (44,45) WHERE uID IS NULL) ORDER BY timestamp DESC

私がやろうとしているのはuserId、 が特定の変数に一致する行、または が でgroupIDある CSV 変数に一致する行をデータベースから選択することuserIDですNULL

ここで私が間違っていることを誰かが説明できますか? 私はかなり立ち往生しています!

4

3 に答える 3

9

INは演算子であり、... ではありません。あなたも欲しいAND、ではありませんWHERE

$sql = "SELECT * FROM user_events
        WHERE userID = $uid
           OR groupID IN ($gId) AND userID IS NULL
        ORDER BY timestamp DESC";
于 2012-08-29T14:43:09.380 に答える
1
$sql = "SELECT * FROM user_events 
       WHERE userID =" . $uid . " 
       OR (groupID IN ($gId) AND userID IS NULL) ORDER BY timestamp DESC";
于 2012-08-29T14:44:11.423 に答える
0

次のようなものが欲しいと思います:

SELECT * FROM user_events 
WHERE (userID = 34 OR groupID IN (44,45)) and uID IS NULL
ORDER BY timestamp DESC

PHP では、これは次のようになります。

$sql = "SELECT * FROM user_events WHERE (userID =". $uid . " OR groupID IN ($gId)) AND userID IS NULL ORDER BY timestamp DESC"; 
于 2012-08-29T14:44:59.540 に答える