簡體   English   中英

mysql-從表中選擇值從另一個表中選擇值

[英]mysql - select values from tables LIKE values from another table

我有兩個表的MySQL數據庫:用戶和項目。 它們看起來像這樣:

用戶:

id | user_name | desc
--------------------------
1  | john      | tall
2  | dave      | fat
3  | maria     | pretty

項目:

id | item_name | color
--------------------------
1  | trousers  | red
2  | shoes     | blue
3  | shoes     | red

我想從數據庫列表中選擇具有特定ID的項目,並且其名稱就像一個關鍵字。 用於簡單的搜索引擎。 我在做這樣的查詢:

SELECT id, user_name, ( SELECT item_name FROM items WHERE id = u.id ) as desc FROM users u WHERE desc LIKE "%shoes%" AND color LIKE "%blue%"

結果,我希望其中一行包含id = 2,username = dave和itemname = shoes,因為它是滿足我的查詢的唯一一行。 不幸的是,我收到一條消息,說沒有“ desc”列。 我知道在“用戶”中沒有這樣的列,但是如何告訴MySQL從名為desc的子查詢中獲取它呢?

另一個問題:是否可以在WHERE ... LIKE命令和數組樣式(例如IN(val1,val2,val3))中使用? 我的意思是不用笨拙的查詢:

SELECT name 
FROM users 
WHERE name 
LIKE "%john%" OR name 
LIKE "%steven%" OR name LIKE "bob%"

縮短:

SELECT name FROM users WHERE name LIKE IN ( "%john%", "%steven%", "%bob%")

提前致謝。

嘗試這個 :

SELECT 
    u.id, u.user_name, i.item_name, i.color
FROM
    users AS u,
    items AS i
WHERE
    i.id = u.id
AND
    i.item_name LIKE "%shoes%" 
AND 
    i.color LIKE "%blue%"

對於第二部分,如果您在MySQL開發站點上查看此頁面,將會看到可以使用REGEXP匹配結果而不是LIKE因此我認為您可以使用類似

REGEXP 'john|steven|bob'

您需要與項目建立內部連接。 我也不認為您可以使用desc。 在我的答案中使用了descr

尚未測試,請嘗試以下方法

SELECT u.id, u.user_name, i.item_name as descr 
FROM users u INNER JOIN items i
ON i.id = u.id
WHERE i.item_name LIKE '%shoes%' 
AND i.color LIKE '%blue%'

經過數小時的無跳搜索正確語法后,我找到了我想要的東西。 最好的方法,而不是使用正則表達式並使查詢復雜化,我建議使用concat將所有列名都存儲在字符串中,然后通過與我們具有關鍵字一樣多的LIKE進行搜索。 也許那看起來並不優雅,但對我來說已經足夠了。 例:

SELECT user_name, item_name FROM table WHERE CONCAT(user_name, item_name) LIKE '%keyword1%' 

注意NULL記錄-如果只合並一個字段為null,結果也將變為null,因此請使用IFNULL(null_record,'')。

希望它能幫助任何人。

SELECT *
FROM users u
WHERE
   u.id IN (SELECT id
               FROM items
               WHERE
                  items.id=u.id
               AND
                  color LIKE '%$search%'
               AND
                  item_name LIKE '%$search%'
            )

暫無
暫無

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

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