我有一個表如下我想找到我的地方所有標籤可應用於
我想找到一個u_t_upload_id行,其中既u_t_tag_id - 1和2是applied.That在這情況下,它爲1,因爲u_t_tag_id - 1和2被施加到u_t_upload_id 1.
是否有任何簡單的查詢來解決這一問題
上面給出的是一個示例,真正想要的是顯示u_t_upload_id,其中應用了所有給定的u_t_tag_id。即1和2是輸入示例。
我有一個表如下我想找到我的地方所有標籤可應用於
我想找到一個u_t_upload_id行,其中既u_t_tag_id - 1和2是applied.That在這情況下,它爲1,因爲u_t_tag_id - 1和2被施加到u_t_upload_id 1.
是否有任何簡單的查詢來解決這一問題
上面給出的是一個示例,真正想要的是顯示u_t_upload_id,其中應用了所有給定的u_t_tag_id。即1和2是輸入示例。
您可以使用下面的查詢:
SELECT u_t_upload_id
FROM uploads_tags
WHERE u_t_tag_id IN (1, 2)
GROUP BY u_t_upload_id
HAVING COUNT(DISTINCT u_t_tag_id) = 2
的HAVING
子句檢查u_t_upload_id
組有2個不同u_t_tag_id
值。由於WHERE
子句篩選出的記錄不是u_t_tag_id IN (1, 2)
以外的記錄,因此查詢將保證返回那些與相關的u_t_upload_id
值,這兩個值都是u_t_tag_id
值。
我發現了一個簡單的查詢來解決這個問題
SELECT u_t_upload_id FROM uploads_tags WHERE (u_t_tag_id=1 OR u_t_tag_id=2) GROUP BY u_t_upload_id HAVING COUNT(*)=2
該查詢還將返回與*只有一個*'u_t_tag_id'值相關的'u_t_upload_id'值。 –
試試這個:
SELECT Distinct(u_t_upload_id) FROM table WHERE u_t_upload_id = 1 AND u_t_upload_id = 2
我還在學習關係司,所以我不是100%有信心下面的代碼。但在這裏不用...
SELECT *
FROM tblTable AS X
WHERE NOT EXISTS (SELECT *
FROM tblTable AS Y
WHERE Y.u_t_tag_id IN (1, 2)
AND NOT EXISTS (SELECT *
FROM tblTable AS Z
WHERE Z.u_t_upload_id = X.u_t_upload_id
AND Z.u_t_tag_id = Y.u_t_tag_id)
)
ORDER BY u_t_upload_id;
我對測試使用下面的腳本創建的測試數據庫上面的代碼...
CREATE DATABASE RelationalDivision002;
USE RelationalDivision002;
CREATE TABLE tblTable
(
u_t_id INT,
u_t_upload_id INT,
u_t_tag_id INT
);
INSERT INTO tblTable(u_t_id,
u_t_upload_id,
u_t_tag_id)
VALUES (1, 1, 1),
(2, 1, 2),
(3, 2, 3),
(4, 3, 4),
(5, 3, 5),
(6, 3, 6),
(7, 2, 1),
(7, 3, 1);
我測試使用的最內SELECT
任意組合代碼在哪裏條件。以上是唯一產生所需輸出的產品。
我幾乎找出了原因。
如果您有任何問題或意見,請隨時與我聯繫。
謝謝。
我已將代碼更新爲經過測試的有效代碼片段。 – toonice